/* ============================================================
   C-MOVA — v5 · mockups de interface "vivos" (data-ui)
   Estado base = final e legível (sem JS / reduced-motion).
   Animações só com .js e só rodam com .is-live (na tela).
   ============================================================ */
.ui{border-radius:15px;background:#07060c;border:1px solid var(--line);overflow:hidden;color:var(--ink);font-size:.9rem;min-height:100%}
.ui-bar{display:flex;align-items:center;gap:6px;padding:.7rem .9rem;border-bottom:1px solid var(--line);color:var(--ink-3);font-size:.8rem}
.ui-bar>i{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.14)}
.ui-bar span{margin-left:.5rem;display:inline-flex;align-items:center;gap:.4rem}
.ui-bar span svg{width:14px;height:14px;color:var(--accent-hi)}
.ui-tag{font-size:.72rem;padding:.2rem .55rem;border-radius:99px;border:1px solid var(--line-2);color:var(--ink-3)}
.ui-foot{padding:.6rem 1rem;color:var(--ink-3);font-size:.75rem;border-top:1px solid var(--line)}
.js [data-ui]:not(.is-live) *,.js [data-ui]:not(.is-live)::before,.js [data-ui]:not(.is-live)::after{animation-play-state:paused!important}

/* ── hero: painel ── */
.ui-dash{display:grid;grid-template-columns:200px 1fr;text-align:left;min-height:420px}
.ui-dash__side{border-right:1px solid var(--line);padding:1rem .8rem;display:grid;align-content:start;gap:.2rem}
.ui-dash__side img{width:110px;height:auto;margin:0 0 1rem .4rem}
.ui-dash__side span{display:flex;align-items:center;gap:.6rem;padding:.55rem .6rem;border-radius:10px;color:var(--ink-3);font-size:.86rem}
.ui-dash__side span svg{width:16px;height:16px}
.ui-dash__side span.on{background:rgba(200,81,240,.12);color:#fff}
.ui-dash__side span.on svg{color:var(--accent-hi)}
.ui-dash__main{padding:1.2rem 1.4rem;display:grid;gap:1rem;align-content:start}
.ui-dash__top{display:flex;justify-content:space-between;align-items:center}
.ui-dash__top b{font-family:var(--f-display);font-weight:600;font-size:1.2rem}
.ui-dash__kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem}
.ui-dash__kpis div{border:1px solid var(--line);border-radius:12px;padding:.8rem 1rem;display:grid;gap:.3rem}
.ui-dash__kpis small{color:var(--ink-3);font-size:.76rem}
.ui-dash__kpis b{font-family:var(--f-display);font-weight:600;font-size:1.7rem;letter-spacing:-.03em;line-height:1}
.ui-dash__grid{display:grid;grid-template-columns:1.4fr 1fr;gap:.7rem}
.ui-dash__list,.ui-dash__chart{border:1px solid var(--line);border-radius:12px;padding:.8rem 1rem;display:grid;gap:.15rem;align-content:start}
.ui-dash__list small,.ui-dash__chart small{color:var(--ink-3);font-size:.76rem;margin-bottom:.3rem}
.ui-dash__list p{display:flex;align-items:center;gap:.55rem;padding:.45rem 0;border-top:1px solid var(--line);font-size:.84rem;color:var(--ink-2)}
.ui-dash__list p svg{width:15px;height:15px;color:var(--accent-hi)}
.st{margin-left:auto;font-style:normal;font-size:.72rem;padding:.15rem .5rem;border-radius:99px;border:1px solid var(--line-2);color:var(--ink-2);white-space:nowrap}
.st--ok{border-color:rgba(54,224,127,.4);color:var(--pos)}
.st--run{border-color:rgba(200,81,240,.5);color:var(--accent-hi)}
.bars{display:flex;align-items:flex-end;gap:6px;height:120px;padding-top:.4rem}
.bars i{flex:1;height:100%;border-radius:6px 6px 2px 2px;background:linear-gradient(180deg,var(--accent),rgba(200,81,240,.2));transform-origin:50% 100%;transform:scaleY(var(--v))}
.js .bars i{animation:barGrow 5s var(--ease) infinite}
.bars i:nth-child(2){animation-delay:.1s}.bars i:nth-child(3){animation-delay:.2s}.bars i:nth-child(4){animation-delay:.3s}.bars i:nth-child(5){animation-delay:.4s}.bars i:nth-child(6){animation-delay:.5s}.bars i:nth-child(7){animation-delay:.6s}
@keyframes barGrow{0%{transform:scaleY(.08)}30%,85%{transform:scaleY(var(--v))}100%{transform:scaleY(.08)}}

/* ── Diagnóstico: gauge + linhas ── */
.ui-report__body{display:grid;grid-template-columns:170px 1fr;gap:1.4rem;padding:1.4rem;align-items:center}
.gauge{position:relative;display:grid;justify-items:center;text-align:center}
.gauge svg{width:100%;height:auto;overflow:visible}
.gauge path{fill:none;stroke-width:10;stroke-linecap:round}
.gauge__track{stroke:rgba(255,255,255,.08)}
.gauge__val{stroke:var(--accent);stroke-dasharray:100;stroke-dashoffset:38}
.js .gauge__val{animation:gauge 7s var(--ease) infinite}
@keyframes gauge{0%{stroke-dashoffset:100}25%,85%{stroke-dashoffset:38}100%{stroke-dashoffset:100}}
.gauge b{font-family:var(--f-display);font-weight:600;font-size:2.4rem;line-height:1;margin-top:-1.6rem}
.gauge small{color:var(--ink-3);font-size:.78rem}
.ui-rows{display:grid;gap:.5rem}
.ui-rows li{display:grid;grid-template-columns:20px 6.5rem 1fr;gap:.6rem;align-items:center;padding:.6rem .8rem;border:1px solid var(--line);border-radius:10px}
.ui-rows li svg{width:16px;height:16px;color:var(--accent-hi)}
.ui-rows b{font-weight:700;font-size:.88rem}
.ui-rows span{color:var(--ink-3);font-size:.82rem}
.js .ui-rows li{animation:rowIn 7s var(--ease) infinite;animation-delay:calc(var(--d)*.35s)}
@keyframes rowIn{0%{opacity:0;transform:translateX(-10px)}12%,85%{opacity:1;transform:none}100%{opacity:0;transform:translateX(-10px)}}

/* ── Rating / Limpa Nome: linha do tempo de status ── */
.steps{position:relative;display:grid;gap:.15rem;padding:1.2rem 1.4rem 1.4rem}
.steps::before{content:"";position:absolute;left:calc(1.4rem + 15px);top:1.9rem;bottom:2rem;width:2px;background:rgba(255,255,255,.08)}
.steps li{position:relative;display:flex;align-items:center;gap:.9rem;padding:.55rem 0;color:var(--ink-2);transition:color .4s}
.steps li svg{width:32px;height:32px;padding:7px;border-radius:50%;background:#07060c;border:1px solid var(--line-2);color:var(--ink-3);position:relative;z-index:1;transition:all .4s var(--ease)}
.steps li.done{color:var(--ink)}
.steps li.done svg{border-color:rgba(54,224,127,.5);color:var(--pos)}
.steps li.cur{color:#fff;font-weight:700}
.steps li.cur svg{border-color:var(--accent);color:#14041c;background:var(--accent);box-shadow:0 0 0 6px rgba(200,81,240,.16)}
.steps li.cur::after{content:"agora";margin-left:auto;font-size:.72rem;font-weight:600;padding:.15rem .55rem;border-radius:99px;border:1px solid rgba(200,81,240,.5);color:var(--accent-hi)}

/* ── BACEN: fluxo em três nós ── */
.flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:.4rem;padding:2.4rem 1.2rem}
.flow__node{display:grid;justify-items:center;text-align:center;gap:.45rem}
.flow__node svg{width:52px;height:52px;padding:13px;border-radius:16px;border:1px solid var(--line-2);color:var(--accent-hi);background:rgba(200,81,240,.06)}
.flow__node b{font-size:.9rem}
.flow__node small{color:var(--ink-3);font-size:.75rem;max-width:14ch}
.flow__line{position:relative;width:clamp(28px,4vw,60px);height:2px;background:rgba(255,255,255,.1);overflow:hidden;margin-bottom:3rem}
.flow__line i{position:absolute;inset:0;width:40%;background:linear-gradient(90deg,transparent,var(--accent-hi),transparent)}
.js .flow__line i{animation:pulseLine 1.8s linear infinite}
.flow__line:nth-of-type(4) i{animation-delay:.9s}
@keyframes pulseLine{from{transform:translateX(-100%)}to{transform:translateX(250%)}}

/* ── MOVA AI: chat ── */
.chat{display:grid;gap:.8rem;padding:1.2rem;min-height:300px;align-content:start}
.chat p{max-width:88%;padding:.75rem 1rem;border-radius:14px;font-size:.88rem;line-height:1.5}
.chat__me{justify-self:end;background:rgba(255,255,255,.07);border-bottom-right-radius:4px;color:var(--ink-2)}
.chat__ai{background:rgba(200,81,240,.1);border:1px solid rgba(200,81,240,.25);border-bottom-left-radius:4px;min-height:5.6em}
.chat__ai.typing::after{content:"";display:inline-block;width:7px;height:1em;margin-left:2px;vertical-align:-.15em;background:var(--accent-hi);animation:caret .8s steps(1) infinite}
@keyframes caret{50%{opacity:0}}
.chat__in{display:flex;justify-content:space-between;align-items:center;padding:.7rem 1rem;border-radius:12px;border:1px solid var(--line);color:var(--ink-3);font-size:.84rem}
.chat__in svg{width:16px;height:16px;color:var(--accent-hi)}

/* ── carteira ── */
.wallet{display:grid;padding:.6rem 1rem;min-height:260px;align-content:start}
.wallet li{display:grid;grid-template-columns:34px 1fr auto;gap:.8rem;align-items:center;padding:.8rem 0;border-bottom:1px solid var(--line)}
.wallet li:last-child{border-bottom:0}
.wallet li>svg{width:34px;height:34px;padding:8px;border-radius:10px;background:rgba(200,81,240,.1);color:var(--accent-hi)}
.wallet span{display:grid;font-size:.88rem}
.wallet small{color:var(--ink-3);font-size:.76rem}
.wallet b{color:var(--pos);font-variant-numeric:tabular-nums;font-size:.92rem}
.js .wallet li{animation:rowIn 8s var(--ease) infinite}
.wallet li:nth-child(2){animation-delay:.6s}.wallet li:nth-child(3){animation-delay:1.2s}.wallet li:nth-child(4){animation-delay:1.8s}

/* ── método: radar ── */
.radar{position:relative;width:min(260px,80%);aspect-ratio:1;border-radius:50%;border:1px solid rgba(200,81,240,.35);
  background:radial-gradient(circle,transparent 32%,rgba(200,81,240,.25) 32.5%,transparent 33.5%),radial-gradient(circle,transparent 65%,rgba(200,81,240,.25) 65.5%,transparent 66.5%),linear-gradient(rgba(200,81,240,.18),rgba(200,81,240,.18)) 50% 0/1px 100% no-repeat,linear-gradient(rgba(200,81,240,.18),rgba(200,81,240,.18)) 0 50%/100% 1px no-repeat}
.radar__sweep{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(200,81,240,.45),rgba(200,81,240,0) 70deg,transparent 360deg)}
.js .radar__sweep{animation:spin 3.2s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.radar b{position:absolute;left:var(--x);top:var(--y);width:8px;height:8px;margin:-4px;border-radius:50%;background:var(--accent-hi)}
.js .radar b{animation:blip 3.2s ease-out infinite}
.radar b:nth-of-type(2){animation-delay:.8s}.radar b:nth-of-type(3){animation-delay:1.6s}.radar b:nth-of-type(4){animation-delay:2.4s}
@keyframes blip{0%{opacity:.2;transform:scale(.6)}10%{opacity:1;transform:scale(1.4)}60%,100%{opacity:.35;transform:scale(1)}}
.radar span{position:absolute;left:50%;bottom:-2.2rem;transform:translateX(-50%);white-space:nowrap;color:var(--ink-3);font-size:.8rem}

/* ── método: código ── */
.code{width:100%;font:500 .86rem/1.75 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink-2);white-space:pre;overflow:hidden}
.code em{font-style:normal;color:var(--accent-hi)}
.code s{text-decoration:none;color:var(--pos)}
.code span{display:inline-block}
.js .code span{animation:codeIn 8s var(--ease) infinite;animation-delay:calc(var(--l)*.3s)}
@keyframes codeIn{0%{opacity:0;transform:translateY(6px)}8%,88%{opacity:1;transform:none}100%{opacity:0}}

/* ── método: conexão ── */
.link{position:relative;width:100%;max-width:420px;aspect-ratio:300/160}
.link__svg{position:absolute;inset:0;width:100%;height:100%}
.link__svg path{fill:none;stroke:rgba(200,81,240,.55);stroke-width:1.5;stroke-dasharray:6 6}
.js .link__svg path{animation:dash 1.2s linear infinite}
@keyframes dash{to{stroke-dashoffset:-24}}
.link__you,.link__to{position:absolute;display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .7rem;border-radius:99px;border:1px solid var(--line-2);background:#0b0a11;font-size:.78rem;white-space:nowrap}
.link__you{left:0;top:50%;transform:translate(-20%,-50%);border-color:var(--accent);color:#fff}
.link__to{right:0;top:var(--t);transform:translate(20%,-50%);color:var(--ink-2)}
.link svg.lucide{width:14px;height:14px;color:var(--accent-hi)}

/* ── método: progresso ── */
.prog{width:100%;display:grid;gap:1.3rem;padding:.4rem .6rem}
.prog li{display:grid;gap:.5rem}
.prog span{font-size:.88rem;color:var(--ink-2)}
.prog i{display:block;height:8px;border-radius:99px;background:linear-gradient(90deg,var(--accent-2),var(--accent));transform-origin:0 50%;transform:scaleX(var(--p))}
.prog li{background:linear-gradient(rgba(255,255,255,.07),rgba(255,255,255,.07)) 0 100%/100% 8px no-repeat;border-radius:99px}
.js .prog i{animation:fill 6s var(--ease) infinite}
@keyframes fill{0%{transform:scaleX(.04)}40%,88%{transform:scaleX(var(--p))}100%{transform:scaleX(.04)}}

/* ── método: comparação ── */
.cmp{display:grid;grid-template-columns:1fr auto 1fr;gap:1rem;align-items:center;width:100%}
.cmp>div{display:grid;gap:.5rem;padding:1rem;border:1px solid var(--line);border-radius:14px}
.cmp small{color:var(--ink-3);font-size:.76rem}
.cmp p{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--ink-2)}
.cmp p svg{width:16px;height:16px;color:var(--accent-hi)}
.cmp__arr{color:var(--accent-hi)}
.js .cmp__arr{animation:nudge 1.6s var(--ease) infinite}
@keyframes nudge{50%{transform:translateX(5px)}}

/* ── rede: bônus de indicação ── */
.bonus__vis{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.8rem;padding:1.4rem;border:1px solid var(--line);border-radius:20px}
.bonus__node{display:grid;justify-items:center;gap:.4rem;font-size:.85rem;color:var(--ink-2)}
.bonus__node svg{width:48px;height:48px;padding:12px;border-radius:50%;border:1px solid var(--line-2);color:var(--ink-2)}
.bonus__node--you svg{border-color:var(--accent);color:var(--accent-hi)}
.bonus__line{position:relative;height:2px;background:rgba(255,255,255,.1);margin-bottom:1.6rem}
.bonus__line i{position:absolute;top:-4px;left:0;width:10px;height:10px;border-radius:50%;background:var(--accent-hi)}
.js .bonus__line i{animation:travel 2.4s var(--ease) infinite}
@keyframes travel{from{transform:translateX(0)}to{transform:translateX(calc(var(--len,160px)))}}
.bonus__line em{position:absolute;left:50%;top:-1.9rem;transform:translateX(-50%);font-style:normal;font-weight:700;color:var(--accent-hi);font-size:.9rem}
.bonus__ex{grid-column:1 / -1;display:grid;gap:.2rem;padding-top:1rem;border-top:1px solid var(--line);color:var(--ink-2);font-size:.92rem}
.bonus__ex b{font-family:var(--f-display);font-weight:600;font-size:1.8rem;letter-spacing:-.03em;color:var(--pos)}
.bonus__ex small{color:var(--ink-3);font-size:.78rem}

/* ── responsivo dos mockups ── */
@media (max-width:760px){
  .ui-dash{grid-template-columns:minmax(0,1fr);min-height:0}
  .ui-dash__main{min-width:0}
  .ui-dash__kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem}
  .ui-dash__kpis div{padding:.6rem .6rem}
  .ui-dash__list p{flex-wrap:wrap;font-size:.8rem}
  .ui-dash__top{flex-wrap:wrap;gap:.4rem}
  .ui-dash__side{display:none}
  .ui-dash__main{padding:1rem}
  .ui-dash__kpis b{font-size:1.3rem}
  .ui-dash__kpis small{font-size:.68rem}
  .ui-dash__grid{grid-template-columns:1fr}
  .ui-dash__chart{display:none}
  .ui-report__body{grid-template-columns:1fr;padding:1rem}
  .gauge{max-width:170px;margin-inline:auto}
  .ui-rows li{grid-template-columns:20px 5.6rem 1fr}
  .flow{grid-template-columns:1fr;justify-items:center;gap:.6rem;padding:1.6rem 1rem}
  .flow__line{width:2px;height:28px;margin:0}
  .flow__line i{width:100%;height:40%;background:linear-gradient(180deg,transparent,var(--accent-hi),transparent)}
  .js .flow__line i{animation-name:pulseLineV}
  .cmp{grid-template-columns:1fr}
  .cmp__arr{transform:rotate(90deg);justify-self:center}
  .js .cmp__arr{animation:none}
  .code{font-size:.74rem}
}
@keyframes pulseLineV{from{transform:translateY(-100%)}to{transform:translateY(250%)}}
