/* ===== Hero ===== */
.hero{position:relative;padding:54px 0 70px;min-height:calc(100svh - 70px);display:flex;align-items:center}
.hero-grade{display:grid;grid-template-columns:1.05fr .95fr;gap:30px;align-items:center;width:min(1180px,calc(100% - 40px))}
.hero h1{font-size:clamp(2.8rem,6.6vw,5.4rem);letter-spacing:-.05em;margin:16px 0 18px;background:linear-gradient(180deg,#fff,#b9c6da);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-sub{font-size:clamp(1.05rem,1.8vw,1.35rem);font-weight:600;color:var(--or2);margin:0 0 8px;min-height:2.2em;max-width:34ch}
.cursor{display:inline-block;width:2px;height:1.1em;background:var(--or);margin-left:3px;vertical-align:-.15em;animation:pisca 1s steps(2) infinite}
@keyframes pisca{50%{opacity:0}}
.hero-quote{color:var(--mut);margin:0 0 26px;max-width:46ch;font-style:italic}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:34px}
.hero-fatos{list-style:none;display:flex;gap:30px;flex-wrap:wrap;margin:0;padding:0}
.hero-fatos li{display:flex;flex-direction:column}
.hero-fatos b{font-size:1.7rem;font-weight:800;letter-spacing:-.03em;color:#fff}
.hero-fatos span{font-size:.78rem;color:var(--mut);max-width:16ch;line-height:1.35}
.rolar{position:absolute;bottom:18px;left:50%;width:26px;height:42px;border:2px solid var(--lin2);border-radius:99px;transform:translateX(-50%)}
.rolar span{position:absolute;left:50%;top:8px;width:4px;height:8px;background:var(--or);border-radius:4px;transform:translateX(-50%);animation:rola 1.8s ease-in-out infinite}
@keyframes rola{0%{opacity:0;transform:translate(-50%,0)}30%{opacity:1}100%{opacity:0;transform:translate(-50%,14px)}}
/* órbita de ícones */
.orbita{position:relative;width:min(500px,100%);aspect-ratio:1;margin:0 auto;--px:0;--py:0;transform:translate(calc(var(--px)*8px),calc(var(--py)*8px));transition:transform .2s ease-out}
.orb-anel{position:absolute;border:1px dashed var(--lin2);border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%)}
.a1{width:56%;height:56%}.a2{width:92%;height:92%}
.orb-centro{position:absolute;top:50%;left:50%;width:22%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:#fff;padding:4px;box-shadow:0 0 0 6px rgba(255,138,40,.18),0 0 60px rgba(255,138,40,.35)}
.orb-centro img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.orb{position:absolute;inset:0;pointer-events:none}
.orb .ti{position:absolute;top:50%;left:50%;width:58px;height:58px;margin:-29px 0 0 -29px;border-radius:16px;background:var(--card2);border:1px solid var(--lin2);display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(8px);transition:border-color .2s,box-shadow .2s,scale .2s;padding:0;pointer-events:auto;will-change:transform}
.ti img{width:30px;height:30px}
.ti:hover,.ti:focus-visible{border-color:var(--or);box-shadow:0 0 30px rgba(255,138,40,.45);scale:1.18;z-index:3}
.ti::after{content:attr(data-nome);position:absolute;bottom:-26px;left:50%;transform:translateX(-50%) scale(.9);background:#0b1220;border:1px solid var(--lin2);border-radius:8px;padding:2px 9px;font-size:.7rem;font-weight:700;white-space:nowrap;opacity:0;pointer-events:none;transition:.15s}
.ti:hover::after,.ti:focus-visible::after{opacity:1;transform:translateX(-50%) scale(1)}
.terminal{position:absolute;right:-3%;bottom:-9%;width:min(240px,54%);background:rgba(6,9,16,.9);border:1px solid var(--lin2);border-radius:14px;box-shadow:0 20px 50px rgba(0,0,0,.5);overflow:hidden;z-index:2}
.t-barra{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--lin)}
.t-barra i{width:9px;height:9px;border-radius:50%;background:#334155}.t-barra i:first-child{background:#fb7185}.t-barra i:nth-child(2){background:#fbbf24}.t-barra i:nth-child(3){background:#34d399}
.t-barra span{margin-left:auto;font-size:.62rem;color:var(--mut)}
.t-corpo{padding:10px 12px;font-size:.7rem;line-height:1.7;color:#cbd5e1;min-height:96px}
.t-corpo .ok{color:var(--ok)}.t-corpo .pr{color:var(--or)}
/* ===== Em operação ===== */
.op-grade{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.op-card{padding:26px;position:relative;overflow:hidden}
.op-topo{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.op-card h3{font-size:2rem;letter-spacing:-.04em}
.op-sub{margin:2px 0 14px;color:var(--or2);font-weight:700;font-size:.92rem}
.op-card p{color:#b4c0d3;margin:0 0 14px}
.op-lista{margin:0 0 20px;padding:0;list-style:none;display:grid;gap:7px;color:#cbd5e1;font-size:.9rem}
.op-lista li{padding-left:24px;position:relative}
.op-lista li::before{content:"";position:absolute;left:0;top:.5em;width:12px;height:7px;border-left:2px solid var(--or);border-bottom:2px solid var(--or);transform:rotate(-45deg) scale(.85)}
.op-acoes{display:flex;gap:10px;flex-wrap:wrap}
[data-spot]{--gx:50%;--gy:0%}
[data-spot]::before{content:"";position:absolute;inset:0;background:radial-gradient(420px circle at var(--gx) var(--gy),rgba(255,138,40,.14),transparent 60%);opacity:0;transition:opacity .25s;pointer-events:none;border-radius:inherit}
[data-spot]:hover::before{opacity:1}
[data-spot]{position:relative}
/* ===== Projetos ===== */
.filtros{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}
.filtros button{font:inherit;font-weight:700;font-size:.84rem;min-height:40px;padding:0 17px;border-radius:99px;border:1px solid var(--lin2);background:rgba(255,255,255,.03);color:#b6c3d6;cursor:pointer;transition:.15s}
.filtros button:hover{border-color:var(--or);color:#fff}
.filtros button[aria-selected=true]{background:var(--or);border-color:var(--or);color:#1a0d00}
.filtro-tech{margin:-8px 0 20px;font-size:.88rem;color:var(--or2);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.filtro-tech button{font:inherit;font-weight:800;font-size:.76rem;border:1px solid var(--lin2);border-radius:99px;background:rgba(255,255,255,.05);color:var(--txt);padding:5px 12px;cursor:pointer}
.proj-grade{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.proj{display:flex;flex-direction:column;border-radius:var(--r);background:var(--card);border:1px solid var(--lin);overflow:hidden;position:relative;transition:transform .25s,border-color .25s,box-shadow .25s}
.proj:hover{transform:translateY(-6px);border-color:rgba(255,138,40,.5);box-shadow:0 24px 60px rgba(0,0,0,.5),0 0 0 1px rgba(255,138,40,.2)}
.proj.fora{display:none}
.pv{height:176px;position:relative;overflow:hidden;background:linear-gradient(160deg,#0d1424,#080c16);border-bottom:1px solid var(--lin)}
.proj-corpo{padding:18px 20px 20px;display:flex;flex-direction:column;gap:10px;flex:1}
.proj-topo{display:flex;align-items:center;justify-content:space-between;gap:10px}
.proj h3{font-size:1.3rem}
.proj p{margin:0;color:#aebbd0;font-size:.9rem;flex:1}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:.7rem;font-weight:700;padding:4px 9px;border-radius:99px;background:rgba(255,255,255,.05);border:1px solid var(--lin);color:#c6d2e3}
.chip img{width:13px;height:13px}
.proj-acao{display:flex;gap:8px;margin-top:4px;flex-wrap:wrap}
.proj-acao .btn{flex:1 1 auto}
/* prévias animadas */
.pv-f .q{position:absolute;left:16px;right:16px;top:16px;display:grid;gap:7px}
.pv-f .q b{display:block;height:8px;border-radius:5px;background:#1c2a47}.pv-f .q b:first-child{width:80%}.pv-f .q b:nth-child(2){width:55%}
.pv-f .o{display:flex;align-items:center;gap:8px;height:22px;border:1px solid #1f2d4d;border-radius:8px;padding:0 8px;font-size:.62rem;color:#8ea0b8;margin-top:2px}
.pv-f .o i{width:12px;height:12px;border-radius:4px;background:#1c2a47;flex:none}
.pv-f .o.c{animation:fcerta 5s infinite}
@keyframes fcerta{0%,40%{background:transparent;border-color:#1f2d4d}55%,90%{background:rgba(16,185,129,.18);border-color:#10b981;color:#a7f3d0}100%{background:transparent}}
.pv-f .g{position:absolute;right:16px;bottom:12px;display:flex;align-items:flex-end;gap:5px;height:44px}
.pv-f .g i{width:9px;border-radius:3px 3px 0 0;background:linear-gradient(#38bdf8,#2563a8);animation:barra 3.6s ease-in-out infinite;transform-origin:bottom}
.pv-f .g i:nth-child(2){animation-delay:.3s}.pv-f .g i:nth-child(3){animation-delay:.6s}.pv-f .g i:nth-child(4){animation-delay:.9s}.pv-f .g i:nth-child(5){animation-delay:1.2s}
@keyframes barra{0%,100%{transform:scaleY(.45)}50%{transform:scaleY(1)}}
.pv-d{display:flex;align-items:center;justify-content:center;gap:16px}
.pv-d svg{width:64px;height:64px;transform:rotate(-90deg)}
.pv-d circle{fill:none;stroke-width:8}
.pv-d .tr{stroke:#162036}.pv-d .v{stroke-linecap:round;stroke-dasharray:176;animation:anel 4.5s ease-in-out infinite}
.pv-d .v1{stroke:#ff8a28}.pv-d .v2{stroke:#38bdf8;animation-delay:.4s}.pv-d .v3{stroke:#34d399;animation-delay:.8s}
@keyframes anel{0%{stroke-dashoffset:176}35%,85%{stroke-dashoffset:var(--o)}100%{stroke-dashoffset:176}}
.pv-s{display:flex;align-items:flex-end;gap:12px;padding:20px 22px 16px}
.pv-s i{flex:1;border-radius:6px 6px 0 0;background:linear-gradient(#6366f1,#3b44b5);animation:barra 4s ease-in-out infinite;transform-origin:bottom;height:100%}
.pv-s i:nth-child(1){height:90%}.pv-s i:nth-child(2){height:70%;animation-delay:.4s}.pv-s i:nth-child(3){height:45%;animation-delay:.8s}.pv-s i:nth-child(4){height:38%;animation-delay:1.2s}.pv-s i:nth-child(5){height:78%;animation-delay:1.6s}
.pv-s .tag{position:absolute;top:12px;right:14px;font-family:'JetBrains Mono',monospace;font-size:.6rem;color:#34d399;background:rgba(52,211,153,.1);border:1px solid rgba(52,211,153,.35);border-radius:6px;padding:2px 7px}
.pv-n{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;padding:16px}
.pv-n i{height:34px;border-radius:7px;background:#121b30;border:1px solid #1d2a47;animation:tile 6s infinite}
.pv-n i:nth-child(odd){animation-delay:.5s}.pv-n i:nth-child(3n){animation-delay:1.4s}.pv-n i:nth-child(4n){animation-delay:2.6s}.pv-n i:nth-child(5n){animation-delay:3.5s}
@keyframes tile{0%,80%,100%{background:#121b30;border-color:#1d2a47}88%{background:rgba(56,189,248,.25);border-color:#38bdf8}}
.pv-a{display:flex;align-items:center;justify-content:center;gap:14px}
.pv-a .ar{width:70px;height:96px;border-radius:12px;background:linear-gradient(160deg,#c8a05a,#7a5a22);animation:flutua 5s ease-in-out infinite}
.pv-a .ar:last-child{background:linear-gradient(160deg,#b3202c,#5e1017);animation-delay:-2s;height:80px}
.pv-a .pin{position:absolute;right:26%;top:30%;width:14px;height:14px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:#ff8a28;box-shadow:0 0 0 0 rgba(255,138,40,.6);animation:pulsa 2s infinite}
@keyframes flutua{50%{transform:translateY(-8px)}}
.pv-l{--mx:50%;--my:50%;background:radial-gradient(180px circle at var(--mx) var(--my),rgba(255,160,60,.35),rgba(0,0,0,.92) 70%),repeating-linear-gradient(0deg,#1a1410 0 22px,#0d0a08 22px 24px),repeating-linear-gradient(90deg,transparent 0 22px,#0d0a08 22px 24px);background-color:#0d0a08}
.pv-l .hero-pix{position:absolute;width:14px;height:14px;background:#ff8a28;border-radius:3px;box-shadow:0 0 18px #ff8a28;animation:anda 9s steps(1) infinite}
@keyframes anda{0%{left:12%;top:70%}20%{left:34%;top:70%}35%{left:34%;top:40%}55%{left:62%;top:40%}70%{left:62%;top:18%}85%{left:84%;top:18%}100%{left:12%;top:70%}}
.pv-e{display:grid;place-items:center}
.pv-e svg{width:86%;height:70px}
.pv-e path{fill:none;stroke:#fb7185;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:420;animation:bate 3s linear infinite}
@keyframes bate{from{stroke-dashoffset:420}to{stroke-dashoffset:-420}}
/* ===== Habilidades ===== */
.skills{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:14px;perspective:900px}
.sk{font:inherit;color:inherit;text-align:left;cursor:pointer;background:var(--card);border:1px solid var(--lin);border-radius:18px;padding:18px 16px 16px;display:flex;flex-direction:column;gap:12px;transition:border-color .2s,box-shadow .2s,transform .12s ease-out;position:relative;overflow:hidden;--gx:50%;--gy:0%;transform-style:preserve-3d}
.sk::before{content:"";position:absolute;inset:0;background:radial-gradient(160px circle at var(--gx) var(--gy),rgba(255,138,40,.2),transparent 70%);opacity:0;transition:opacity .2s;pointer-events:none}
.sk:hover::before{opacity:1}
.sk:hover{border-color:rgba(255,138,40,.55);box-shadow:0 14px 40px rgba(0,0,0,.45)}
.sk[aria-pressed=true]{border-color:var(--or);box-shadow:0 0 0 1px var(--or),0 0 36px rgba(255,138,40,.28)}
.sk img{width:40px;height:40px;filter:drop-shadow(0 6px 14px rgba(0,0,0,.5));transition:transform .25s}
.sk:hover img{transform:translateZ(30px) scale(1.12) rotate(-4deg)}
.sk b{font-size:1rem;letter-spacing:-.02em}
.sk small{color:var(--mut);font-size:.74rem;font-weight:600}
.skill-info{margin:16px 0 36px;padding:16px 20px;color:#c3cfdf;min-height:58px}
.skill-info strong{color:var(--or2)}
.dispositivos{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.disp{padding:26px;overflow:hidden}
.disp h3{font-size:1.5rem;margin:14px 0 10px}
.disp ul{margin:0;padding-left:20px;color:#b4c0d3;display:grid;gap:6px;font-size:.92rem}
.disp-ilus{height:130px;display:flex;align-items:center;justify-content:center}
.cel{width:74px;height:124px;border-radius:16px;border:3px solid #2b3855;background:#080c16;padding:12px 8px;display:grid;gap:7px;align-content:start;position:relative}
.cel i{position:absolute;top:5px;left:50%;width:22px;height:4px;border-radius:4px;background:#2b3855;transform:translateX(-50%)}
.cel b{height:14px;border-radius:5px;background:#17223b;animation:tile 5s infinite}
.cel b:nth-of-type(2){animation-delay:1.2s}.cel b:nth-of-type(3){animation-delay:2.4s}
.cel em{position:absolute;bottom:8px;left:8px;right:8px;height:10px;border-radius:4px;background:var(--or);opacity:.85}
.mon{width:190px;height:112px;border-radius:10px;border:3px solid #2b3855;background:#080c16;padding:10px;display:flex;align-items:flex-end;gap:7px}
.mon span{flex:1;border-radius:3px 3px 0 0;background:linear-gradient(#ff8a28,#b4510b);animation:barra 4s ease-in-out infinite;transform-origin:bottom;height:80%}
.mon span:nth-child(2){height:55%;animation-delay:.4s}.mon span:nth-child(3){height:90%;animation-delay:.8s}.mon span:nth-child(4){height:40%;animation-delay:1.2s}.mon span:nth-child(5){height:68%;animation-delay:1.6s}
.disp-desktop{flex-direction:column;gap:0}.disp-desktop .base{width:96px;height:8px;margin-top:6px;border-radius:0 0 8px 8px;background:#2b3855}
/* ===== Trajetória ===== */
.linha{list-style:none;margin:30px 0 0;padding:0 0 0 26px;border-left:2px solid var(--lin2);display:grid;gap:26px}
.linha li{position:relative;padding:0 0 0 8px}
.linha li::before{content:"";position:absolute;left:-35px;top:6px;width:16px;height:16px;border-radius:50%;background:var(--bg);border:3px solid var(--or);box-shadow:0 0 18px rgba(255,138,40,.5)}
.linha b{font-family:'JetBrains Mono',monospace;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--or)}
.linha h3{font-size:1.4rem;margin:4px 0 6px}
.linha p{margin:0;color:var(--mut);max-width:62ch}
/* certificados */
.cert-teaser{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}
.cert-pilha{position:relative;height:340px}
.cp{position:absolute;width:74%;border-radius:12px;overflow:hidden;border:1px solid var(--lin2);box-shadow:0 30px 70px rgba(0,0,0,.6);transition:transform .35s,z-index 0s;background:#fff}
.cp img{width:100%}
.c1{left:0;top:0;transform:rotate(-5deg)}.c2{right:0;bottom:0;transform:rotate(4deg)}
.cp:hover{transform:rotate(0) scale(1.05);z-index:3}
/* contato */
.contato{padding:40px;display:grid;grid-template-columns:1.1fr .9fr;gap:30px;align-items:center;overflow:hidden}
.contato h2{margin-bottom:8px}.contato .lead{margin:0}
.contato-acoes{display:grid;gap:12px}
.contato-acoes .btn{justify-content:flex-start;min-height:52px;font-size:.92rem}
@media (max-width:980px){
  .hero{min-height:0;padding:30px 0 70px}
  .hero-grade{grid-template-columns:1fr}
  .orbita{margin-top:20px;max-width:440px}
  .proj-grade{grid-template-columns:repeat(2,1fr)}
  .cert-teaser,.contato{grid-template-columns:1fr}
}
@media (max-width:700px){
  .op-grade,.dispositivos,.proj-grade{grid-template-columns:1fr}
  .hero-cta .btn{flex:1 1 auto}
  .orb .ti{width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:13px}.ti img{width:24px;height:24px}
  .terminal{right:0;bottom:-6%}
  .cert-pilha{height:300px}
  .contato{padding:26px 20px}
  .rolar{display:none}
}
@media (prefers-reduced-motion:reduce){.pv *,.cursor,.rolar span,.cel b,.mon span{animation:none!important}}

.pv-db{background-color:#0a0810;background-image:radial-gradient(180px circle at var(--mx) var(--my),rgba(180,90,255,.32),rgba(0,0,0,.92) 70%),repeating-linear-gradient(0deg,#17101f 0 22px,#0a0810 22px 24px),repeating-linear-gradient(90deg,transparent 0 22px,#0a0810 22px 24px)}
.pv-db .hero-pix{background:#c084fc;box-shadow:0 0 18px #c084fc}

/* ===== Evolução: antes e depois ===== */
.comp{position:relative;overflow:hidden;aspect-ratio:2/1;max-width:1000px;margin:0 auto;user-select:none;touch-action:pan-y;cursor:ew-resize}
.comp img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:left top;display:block}
.comp-a{position:absolute;inset:0;clip-path:inset(0 50% 0 0)}
.comp-lin{position:absolute;top:0;bottom:0;left:50%;width:3px;background:var(--or);transform:translateX(-50%);box-shadow:0 0 22px rgba(255,138,40,.8);pointer-events:none}
.comp-lin i{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;background:var(--or);color:#1a0d00;display:grid;place-items:center;font-style:normal;font-weight:800;font-size:1.1rem;box-shadow:0 8px 26px rgba(0,0,0,.5)}
.comp-in{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}
.comp-tag{position:absolute;top:14px;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:6px 12px;border-radius:99px;background:rgba(5,7,13,.82);border:1px solid var(--lin2);pointer-events:none}
.comp-tag.t1{left:14px}.comp-tag.t2{right:14px;border-color:var(--or);color:var(--or2)}
.evo-linha{list-style:none;margin:34px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.evo-linha li{padding:20px;border-radius:16px;border:1px solid var(--lin);background:var(--card);position:relative}
.evo-linha b{font-family:'JetBrains Mono',monospace;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--or)}
.evo-linha h3{font-size:1.05rem;margin:6px 0}.evo-linha p{margin:0;color:var(--mut);font-size:.86rem}
@media (max-width:900px){.evo-linha{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.evo-linha{grid-template-columns:1fr}.comp{aspect-ratio:1.5/1}.comp-tag{font-size:.62rem;padding:4px 9px}}
.chip img[src$="oracle.svg"]{width:26px;height:auto}.sk img[src$="oracle.svg"]{width:64px;height:auto;max-height:40px;object-fit:contain}

.op-bol{margin:14px 0 0!important;font-size:.78rem;color:var(--mut)!important}

.esc-grade{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.esc-grade article{padding:22px}.esc-grade h3{font-size:1.1rem;margin:0 0 8px;color:var(--or2)}.esc-grade p{margin:0;color:#aebbd0;font-size:.9rem}
@media (max-width:900px){.esc-grade{grid-template-columns:repeat(2,1fr)}}@media (max-width:560px){.esc-grade{grid-template-columns:1fr}}
