/* Portal público v2: composição do protótipo portal-publico-v2/styles.css,
   escopada à landing e ligada aos tokens oficiais do Portal. */
.portal-v2 {--pv-bg: var(--portal-bg);--pv-surface: var(--portal-surface);--pv-surface-2: var(--portal-surface-2);--pv-text: var(--portal-ink);--pv-muted: var(--portal-muted);--pv-border: var(--portal-border);--pv-brand: var(--portal-brand);color: var(--pv-text);overflow: clip;}
.portal-v2 .wrap {margin-inline: auto;}
html.light .portal-v2 {color-scheme:light;}
html:is(.dark,.dark-blue,.all-black) .portal-v2 {color-scheme:dark;}

.portal-v2 .hero-pill {min-height: 34px;}

.portal-v2 .tier {display: inline-flex;align-items: center;min-height: 23px;padding: 2px 8px;border-radius: 999px;font-size: 10px;font-weight: 800;letter-spacing: .04em;white-space: nowrap;}
.portal-v2 .tier-free {background: color-mix(in srgb, var(--pv-brand) 15%, var(--pv-surface));color: var(--pv-brand);}
.portal-v2 .tier-plus, .portal-v2 .tier-pro {background: var(--pv-surface-2);color: var(--pv-text);}
.portal-v2 .tier-soon {background: #242b30;color: #fff;}
.portal-v2 .tier-sale {background: #193625;color: #b6f5c8;}

.portal-v2 .hero-lead {line-height: 1.55;}

.portal-v2 .hero-proof i {color: var(--pv-brand);}

.portal-v2 .portal-catalog-frame {position: relative;height: clamp(300px, 46vw, 600px);border: 1px solid var(--pv-border);border-bottom: 0;border-radius: 14px 14px 0 0;background: var(--pv-surface);overflow: hidden;box-shadow: 0 28px 80px -35px rgba(0,0,0,.48);}
.portal-v2 .portal-catalog-frame > img {position: absolute;left: 0;width: 100%;object-fit: cover;object-position: top;}
.portal-v2 .portal-catalog-frame > iframe {position: absolute;inset: 0;width: 100%;height: 100%;border: 0;background: var(--pv-bg);opacity: 0;transition: opacity .3s ease;pointer-events: none;}
.portal-v2 .portal-catalog-frame > iframe.is-ready {opacity: 1;}
.portal-v2 .hero-fade {inset: auto 0 0;}
.portal-v2 .portal-open-links {padding-bottom: 8px;}
.portal-v2 .portal-open-links a {min-height: 36px;}

.portal-v2 .portal-open-links i {color: var(--pv-brand);}
.portal-v2 .pv-sec {border-top: 1px solid var(--pv-border);}

.portal-v2 .pv-eyebrow {color: var(--pv-brand);font-size: 12px;font-weight: 800;letter-spacing: .1em;text-transform: uppercase;}

.portal-v2 .pv-step {color: inherit;}
.portal-v2 .pv-step-n {margin-inline: auto;font: 700 15px ui-monospace, monospace;}
.portal-v2 .pv-step-card, .portal-v2 .pv-lib-card, .portal-v2 .pv-eco-card {border: 1px solid var(--pv-border);border-radius: 14px;background: var(--pv-surface);overflow: hidden;text-decoration: none;color: inherit;}

.portal-v2 .pv-step-cover, .portal-v2 .pv-lib-media {position: relative;aspect-ratio: 16/9;background: var(--pv-surface-2);overflow: hidden;}
.portal-v2 .pv-step-cover img, .portal-v2 .pv-lib-media img {width: 100%;height: 100%;object-fit: cover;}
.portal-v2 .pv-step-cover .tier, .portal-v2 .pv-lib-media .tier {position: absolute;top: 10px;left: 10px;}

.portal-v2 .pv-step-body, .portal-v2 .pv-lib-body {padding: 16px;display: flex;flex-direction: column;gap: 7px;flex: 1;}
.portal-v2 .pv-step-body h3, .portal-v2 .pv-lib-body h3 {margin: 0;font-size: 16px;line-height: 1.3;}
.portal-v2 .pv-step-body p, .portal-v2 .pv-lib-body p {margin: 0;color: var(--pv-muted);font-size: 13.5px;line-height: 1.5;}

.portal-v2 .pv-lib-card:hover, .portal-v2 .pv-step:hover .pv-step-card, .portal-v2 .pv-eco-card:hover {border-color: var(--pv-brand);}

.portal-v2 .pv-lib-foot {margin-top: auto;padding-top: 12px;color: var(--pv-brand);font-size: 13px;font-weight: 650;}

.portal-v2 .pv-eco-strip i {color: var(--pv-brand);}
/* Seletor oficial do Terminal public-site.css, com tokens locais. */
.portal-v2 .plans-billing {display: flex;justify-content: center;margin: 22px 0 32px;}
.portal-v2 .plans-billing-toggle {position: relative;overflow: visible;display: inline-grid;grid-template-columns: repeat(2, minmax(112px, 1fr));padding: 4px;border: 1px solid var(--pv-border);border-radius: 12px;background: var(--pv-surface);}
.portal-v2 .plans-billing-option {min-height: 44px;padding: .55rem 1.25rem;border: 0;border-radius: 9px;background: transparent;color: var(--pv-muted);font-size: 14px;font-weight: 600;transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;}
.portal-v2 .plans-billing-option:hover {color: var(--pv-text);}
.portal-v2 .plans-billing-option[aria-pressed="true"] {background: var(--pv-brand);color: var(--portal-brand-ink);box-shadow: 0 1px 2px rgba(0,0,0,.25);}
.portal-v2 .plans-billing-option:focus-visible {outline: 2px solid var(--pv-brand);outline-offset: 3px;}
.portal-v2 .plans-annual-discount {position: absolute;z-index: 3;top: -12px;right: -12px;display: inline-flex;align-items: center;justify-content: center;min-width: 44px;height: 22px;padding: 0 .55rem;overflow: hidden;border: 1px solid var(--pv-border);border-radius: 999px;background: var(--pv-surface);color: var(--pv-muted);box-shadow: 0 1px 2px rgba(0,0,0,.2);font-size: 12px;font-weight: 700;line-height: 1;letter-spacing: .02em;white-space: nowrap;isolation: isolate;transition: color .15s ease, border-color .15s ease, background-color .15s ease, box-shadow .15s ease;}
.portal-v2 .plans-annual-discount__label {position: relative;z-index: 1;}
.portal-v2 .plans-annual-discount::after {content: "";position: absolute;z-index: 0;top: -80%;bottom: -80%;left: -75%;width: 48%;transform: skewX(-16deg) translate3d(-240%,0,0);background: linear-gradient(105deg,transparent 0%,color-mix(in srgb,white 10%,transparent) 30%,color-mix(in srgb,white 78%,transparent) 50%,color-mix(in srgb,white 10%,transparent) 70%,transparent 100%);opacity: 0;pointer-events: none;}
.portal-v2 .plans-billing[data-current-billing="yearly"] .plans-annual-discount {border-color: color-mix(in srgb,var(--pv-brand) 72%,var(--pv-border));background: color-mix(in srgb,var(--pv-brand) 22%,var(--pv-surface));color: var(--pv-text);box-shadow: 0 0 0 1px color-mix(in srgb,var(--pv-brand) 24%,transparent),0 0 16px color-mix(in srgb,var(--pv-brand) 38%,transparent);}
.portal-v2 .plans-billing[data-current-billing="yearly"] .plans-annual-discount::after {opacity: .82;animation: pv-annual-sheen 3.6s linear infinite;}
@keyframes pv-annual-sheen { from { transform: skewX(-16deg) translate3d(-240%,0,0); } to { transform: skewX(-16deg) translate3d(470%,0,0); } }
/* Geometria da seção Planos do ZIP original. */

.portal-v2 .plan-list i {color: var(--pv-brand);margin-top: 4px;}
.portal-v2 .plan-list .is-limit {color: var(--portal-danger);}
.portal-v2 .plan-list .is-unlimited, .portal-v2 .brand-txt {color: var(--pv-brand);}

.portal-v2 .plan-more:hover {text-decoration: underline;}

@keyframes pv-shine-text { from { background-position: 100% 0; } to { background-position: -150% 0; } }
@media (max-width:960px) { .portal-v2 .plans {grid-template-columns: 1fr;max-width:520px;margin-inline:auto;} .portal-v2 .plan-price,.portal-v2 .plan-desc {min-height:0;} }
@media (max-width:575.98px) { .portal-v2 .plans-billing-toggle {width:min(100%,320px);grid-template-columns:repeat(2,minmax(0,1fr));} .portal-v2 .plans-annual-discount {right:-8px;} }

.portal-v2 .pv-validator-row input {min-width: 0;}
.portal-v2 .pv-validator p {margin: 8px 0 0;font-size: 12px;color: var(--pv-muted);}
.portal-v2 .pv-cert-tilt {box-shadow: 0 35px 80px -35px rgba(0,0,0,.55);}
.portal-v2 .pv-cert-tilt svg {width: 100%;height: auto;display: block;border-radius: 10px;}

.portal-v2 .portal-preview-stage {position: relative;}
.portal-v2 .portal-preview-gate {z-index: 3;place-content: center;gap: 10px;color: #fff;}
.portal-v2 .portal-preview-gate[hidden] {display: none;}

.portal-v2 .portal-preview-gate .btn {justify-self: center;}
.portal-v2 .portal-preview-timer {position: absolute;left: 0;right: 0;bottom: 0;height: 3px;z-index: 2;background: rgba(255,255,255,.2);}
.portal-v2 .portal-preview-timer span {display: block;height: 100%;width: 0;background: var(--pv-brand);}
.portal-v2 .portal-preview-timer.is-running span {width: 100%;transition: width 8s linear;}
@media (max-width: 1024px) { .portal-v2 .pv-track {grid-template-columns: repeat(2,minmax(0,1fr));} .portal-v2 .pv-track::before {display: none;} .portal-v2 .pv-step-n {margin-left: 0;} }
@media (max-width: 768px) { .portal-v2 .pv-lib, .portal-v2 .pv-eco {grid-template-columns: 1fr;} .portal-v2 .hero {padding-top: 44px;} .portal-v2 .pv-sec {padding: 70px 0;} }
@media (max-width: 560px) { .portal-v2 .wrap {width: min(100% - 28px,1180px);} .portal-v2 .hero-pill .txt-long {display: none;} .portal-v2 .hero-cta .btn {width: 100%;} .portal-v2 .hero-frame {margin-top: 36px;} .portal-v2 .pv-track {grid-template-columns: 1fr;} }


/* Fidelity audit: declarations ported from the supplied preview. */
.portal-v2 {--bg:var(--pv-bg);--bg-2:color-mix(in srgb,var(--pv-bg) 50%,var(--pv-surface));--surface:var(--pv-surface);--surface-2:var(--pv-surface-2);--surface-3:var(--portal-surface-3,var(--pv-surface-2));--border:var(--pv-border);--border-strong:var(--portal-border-strong,var(--pv-border));--text:var(--pv-text);--text-2:var(--pv-muted);--text-3:var(--pv-muted);--brand:var(--pv-brand);--brand-ink:var(--portal-brand-ink);--brand-soft:color-mix(in srgb,var(--pv-brand) 12%,transparent);--brand-line:color-mix(in srgb,var(--pv-brand) 35%,var(--pv-border));--glow:radial-gradient(60% 60% at 50% 0%,color-mix(in srgb,var(--pv-brand) 16%,transparent),transparent 70%);--shadow-frame:0 40px 120px -40px color-mix(in srgb,var(--pv-brand) 25%,transparent);--frame-bar:var(--pv-surface-2);}
/* ---------- Seções ---------- */
.portal-v2 .pv-sec{padding: 104px 0;position: relative;}
.portal-v2 .pv-sec + .pv-sec{border-top: 1px solid var(--border);}
.portal-v2 .pv-sec-alt{background: var(--bg-2);}
.portal-v2 .pv-sec-head{text-align: center;max-width: 760px;margin: 0 auto 48px;}
.portal-v2 .pv-sec-head h2{margin: 12px 0 12px;font-size: clamp(1.9rem, 3.6vw, 2.75rem);line-height: 1.12;letter-spacing: -0.03em;font-weight: 800;text-wrap: balance;}
.portal-v2 .pv-sec-head p{margin: 0 auto;color: var(--text-2);font-size: 16.5px;max-width: 640px;text-wrap: pretty;}
@media (max-width: 640px) { .portal-v2 .pv-sec{padding: 72px 0;} .portal-v2 .pv-sec-head{margin-bottom: 32px;} }

/* ---------- Hero ---------- */
.portal-v2 .hero{position: relative;padding: 72px 0 0;overflow: hidden;}
.portal-v2 .hero::before{content: "";position: absolute;inset: 0;background: var(--glow);pointer-events: none;}
.portal-v2 .portal-open-links{position: relative;z-index: 3;display: flex;flex-wrap: wrap;align-items: center;justify-content: center;gap: 8px 10px;margin: -18px auto 0;padding: 0 0 8px;}
.portal-v2 .portal-open-links > span{font-size: 12px;font-weight: 600;letter-spacing: .08em;text-transform: uppercase;color: var(--text-3);margin-right: 4px;}
.portal-v2 .portal-open-links a{display: inline-flex;align-items: center;gap: 7px;height: 34px;padding: 0 13px;border-radius: 999px;border: 1px solid var(--border-strong);background: var(--surface);color: var(--text);font-size: 13.5px;font-weight: 600;text-decoration: none;transition: border-color .15s ease, background-color .15s ease;}
.portal-v2 .portal-open-links a:hover{border-color: var(--brand-line);background: var(--surface-3);}
.portal-v2 .portal-open-links svg{color: var(--brand);}
.portal-v2 .hero-in{position: relative;z-index: 1;text-align: center;}
.portal-v2 .hero-pill{display: inline-flex;align-items: center;gap: 10px;height: 34px;padding: 0 6px 0 12px;border-radius: 999px;border: 1px solid var(--border-strong);background: color-mix(in srgb, var(--surface) 80%, transparent);color: var(--text-2);font-size: 13.2px;text-decoration: none;max-width: 100%;}
.portal-v2 .hero-pill b{color: var(--text);font-weight: 600;}
.portal-v2 .hero-pill .go{display: inline-flex;align-items: center;gap: 4px;height: 24px;padding: 0 10px;border-radius: 999px;background: var(--brand-soft);color: var(--brand);font-weight: 600;white-space: nowrap;}
.portal-v2 .hero-pill:hover{border-color: var(--brand-line);}
.portal-v2 .hero h1{margin: 24px auto 18px;font-size: clamp(2.5rem, 6vw, 4.5rem);line-height: 1.1;letter-spacing: -0.03em;font-weight: 800;max-width: 900px;text-wrap: balance;}
.portal-v2 .hero h1 .accent{background: linear-gradient(92deg, var(--brand), color-mix(in srgb, var(--brand) 55%, var(--text)));-webkit-background-clip: text;background-clip: text;color: transparent;}
.portal-v2 .hero-lead{margin: 0 auto;max-width: 660px;color: var(--text-2);font-size: clamp(16px, 1.6vw, 18.5px);text-wrap: pretty;}
.portal-v2 .hero-cta{display: flex;justify-content: center;flex-wrap: wrap;gap: 12px;margin-top: 30px;}
.portal-v2 .hero-proof{display: flex;justify-content: center;flex-wrap: wrap;gap: 8px 22px;margin: 22px 0 0;padding: 0;list-style: none;color: var(--text-2);font-size: 13.5px;}
.portal-v2 .hero-proof li{display: inline-flex;align-items: center;gap: 7px;}
.portal-v2 .hero-proof svg{color: var(--brand);}
@media (max-width: 560px) { .portal-v2 .hero{padding-top: 44px;} .portal-v2 .hero-pill .txt-long{display: none;} .portal-v2 .hero-cta .btn{width: 100%;} }

/* ---------- Moldura de tela real ---------- */
.portal-v2 .frame{position: relative;border-radius: 14px;background: var(--surface);box-shadow: var(--shadow-frame);overflow: hidden;}
.portal-v2 .pv-frame-bar{display: flex;align-items: center;gap: 12px;height: 38px;padding: 0 14px;background: var(--frame-bar);border-bottom: 1px solid var(--border);}
.portal-v2 .pv-frame-dots{display: flex;gap: 6px;}
.portal-v2 .pv-frame-dots i{width: 10px;height: 10px;border-radius: 50%;background: var(--border-strong);}
.portal-v2 .pv-frame-url{flex: 1;max-width: 420px;margin: 0 auto;height: 24px;border-radius: 7px;background: var(--bg);border: 1px solid var(--border);display: flex;align-items: center;justify-content: center;gap: 6px;font-size: 12px;color: var(--text-3);white-space: nowrap;overflow: hidden;}
.portal-v2 .pv-frame-url b{color: var(--text-2);font-weight: 500;}
.portal-v2 .pv-frame-live{display: inline-flex;align-items: center;gap: 6px;font-size: 11.5px;color: var(--text-3);white-space: nowrap;}
.portal-v2 .frame-view{position: relative;overflow: hidden;background: var(--bg);}
.portal-v2 .frame-view iframe{position: absolute;left: 0;top: 0;border: 0;transform-origin: 0 0;background: var(--bg);opacity: 0;transition: opacity .35s ease;}
.portal-v2 .frame-view iframe.is-ready{opacity: 1;}
.portal-v2 .frame-skel{position: absolute;inset: 0;padding: 22px;display: grid;gap: 14px;align-content: start;}
.portal-v2 .frame-skel span{display: block;height: 14px;border-radius: 6px;background: linear-gradient(90deg, var(--surface-2), var(--surface-3), var(--surface-2));background-size: 200% 100%;animation: shimmer 1.4s linear infinite;}
.portal-v2 .frame-skel .row{display: grid;grid-template-columns: repeat(5, 1fr);gap: 12px;height: auto;background: none;animation: none;}
.portal-v2 .frame-skel .row span{height: 110px;border-radius: 10px;}
@keyframes shimmer { to { background-position: -200% 0; } }
.portal-v2 .frame-note{margin: 12px 0 0;text-align: center;font-size: 12.5px;color: var(--text-3);}
.portal-v2 .hero-frame{margin: 56px auto 0;max-width: 1180px;position: relative;z-index: 1;}
.portal-v2 .hero-frame .frame{border-bottom-left-radius: 0;border-bottom-right-radius: 0;}
.portal-v2 .hero-frame .frame-view{height: clamp(300px, 46vw, 600px);}
.portal-v2 .hero-fade{position: absolute;left: 0;right: 0;bottom: 0;height: 140px;background: linear-gradient(transparent, var(--bg));pointer-events: none;z-index: 2;}
@media (max-width: 640px) { .portal-v2 .pv-frame-url{display: none;} .portal-v2 .hero-frame{margin-top: 36px;} }

/* ---------- Primeira aula (spotlight) ---------- */
.portal-v2 .pv-spot{display: grid;grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);gap: 24px;align-items: start;}
.portal-v2 .pv-player{position: relative;aspect-ratio: 16 / 9;border-radius: 14px;overflow: hidden;background: #000;box-shadow: var(--shadow-frame);cursor: pointer;border: 0;padding: 0;width: 100%;display: block;color: #fff;text-align: left;}
.portal-v2 .pv-player img{position: absolute;inset: 0;width: 100%;height: 100%;object-fit: cover;transition: opacity .25s ease;}
.portal-v2 .pv-player .scrim{position: absolute;inset: 0;background: linear-gradient(180deg, transparent 45%, rgba(0,0,0,.72));}
.portal-v2 .pv-player .play{position: absolute;left: 50%;top: 50%;width: 76px;height: 76px;margin: -38px 0 0 -38px;border-radius: 50%;background: rgba(0,0,0,.5);border: 1px solid rgba(255,255,255,.28);backdrop-filter: blur(8px);display: grid;place-items: center;font-size: 26px;transition: transform .15s ease, background-color .15s ease;}
.portal-v2 .pv-player:hover .play{transform: scale(1.06);background: var(--brand);color: var(--brand-ink);border-color: transparent;}
.portal-v2 .pv-player .cap{position: absolute;left: 20px;right: 20px;bottom: 18px;display: flex;align-items: end;justify-content: space-between;gap: 16px;}
.portal-v2 .pv-player .cap strong{display: block;font-size: 18px;letter-spacing: -0.01em;}
.portal-v2 .pv-player .cap small{color: rgba(255,255,255,.75);font-size: 13px;}
.portal-v2 .pv-player .badge-prev{position: absolute;top: 14px;left: 14px;display: inline-flex;align-items: center;gap: 6px;height: 26px;padding: 0 10px;border-radius: 999px;background: rgba(0,0,0,.55);backdrop-filter: blur(6px);font-size: 12px;font-weight: 600;}
.portal-v2 .pv-player .prog{position: absolute;left: 0;right: 0;bottom: 0;height: 3px;background: rgba(255,255,255,.18);}
.portal-v2 .pv-player .prog span{display: block;height: 100%;width: 0;background: var(--brand);}
.portal-v2 .portal-preview-gate{position: absolute;inset: 0;display: grid;place-items: center;text-align: center;padding: 24px;background: rgba(0,0,0,.74);backdrop-filter: blur(4px);cursor: default;}
.portal-v2 .portal-preview-gate h3{margin: 0 0 6px;font-size: 22px;letter-spacing: -0.02em;color: #fff;}
.portal-v2 .portal-preview-gate p{margin: 0 auto 18px;color: rgba(255,255,255,.78);max-width: 420px;}
.portal-v2 .portal-preview-gate .btns{flex-wrap: wrap;}
.portal-v2 .pv-spot-meta{display: flex;flex-wrap: wrap;gap: 8px 18px;margin-top: 16px;color: var(--text-2);font-size: 13.5px;}
.portal-v2 .pv-spot-meta span{display: inline-flex;align-items: center;gap: 6px;}
.portal-v2 .pv-spot-meta svg{color: var(--brand);}
.portal-v2 .pv-lessons{border: 1px solid var(--border);border-radius: 14px;background: var(--surface);overflow: hidden;display: flex;flex-direction: column;max-height: 520px;}
.portal-v2 .pv-lessons-head{display: flex;align-items: center;justify-content: space-between;gap: 12px;padding: 14px 16px;border-bottom: 1px solid var(--border);}
.portal-v2 .pv-lessons-head strong{font-size: 14.5px;}
.portal-v2 .pv-lessons-head span{font-size: 12.5px;color: var(--text-3);}
.portal-v2 .pv-lessons ol{list-style: none;margin: 0;padding: 6px;overflow-y: auto;scrollbar-width: thin;}
.portal-v2 .pv-lesson-row{width: 100%;display: grid;grid-template-columns: 72px 1fr auto;gap: 12px;align-items: center;padding: 7px 8px;border: 0;border-radius: 10px;background: transparent;text-align: left;}
.portal-v2 .pv-lesson-row:hover, .portal-v2 .pv-lesson-row.is-active{background: var(--surface-3);}
.portal-v2 .pv-lesson-row .th{position: relative;width: 72px;aspect-ratio: 16/9;border-radius: 6px;overflow: hidden;background: var(--surface-3);}
.portal-v2 .pv-lesson-row .th img{width: 100%;height: 100%;object-fit: cover;}
.portal-v2 .pv-lesson-row .th b{position: absolute;left: 4px;bottom: 3px;font-family: "JetBrains Mono", monospace;font-size: 10px;font-weight: 700;color: #fff;text-shadow: 0 1px 2px rgba(0,0,0,.8);}
.portal-v2 .pv-lesson-row .t{font-size: 13.5px;font-weight: 500;line-height: 1.3;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;overflow: hidden;}
.portal-v2 .pv-lesson-row.is-active .t{color: var(--text);font-weight: 600;}
.portal-v2 .pv-lesson-row .d{font-family: "JetBrains Mono", monospace;font-size: 12px;color: var(--text-3);}
@media (max-width: 960px) { .portal-v2 .pv-spot{grid-template-columns: 1fr;} .portal-v2 .pv-lessons{max-height: 420px;} }

/* ---------- Trilha ---------- */
.portal-v2 .pv-track{display: grid;grid-template-columns: repeat(4, minmax(0, 1fr));gap: 16px;position: relative;}
.portal-v2 .pv-track::before{content: "";position: absolute;left: 12%;right: 12%;top: 22px;height: 2px;background: linear-gradient(90deg, var(--brand) 0%, var(--brand) 38%, var(--border-strong) 52%, var(--border-strong) 100%);}
.portal-v2 .pv-step{position: relative;display: flex;flex-direction: column;gap: 14px;text-decoration: none;}
.portal-v2 .pv-step-n{position: relative;z-index: 1;width: 46px;height: 46px;margin: 0 auto;border-radius: 50%;display: grid;place-items: center;font-family: "JetBrains Mono", monospace;font-weight: 700;background: var(--bg);border: 2px solid var(--border-strong);color: var(--text-2);}
.portal-v2 .pv-sec-alt .pv-step-n{background: var(--bg-2);}
.portal-v2 .pv-step.is-open .pv-step-n{border-color: var(--brand);color: var(--brand);}
.portal-v2 .pv-step-card{flex: 1;border: 1px solid var(--border);border-radius: 14px;background: var(--surface);overflow: hidden;display: flex;flex-direction: column;transition: border-color .15s ease;}
.portal-v2 .pv-step:hover .pv-step-card{border-color: var(--border-strong);}
.portal-v2 .pv-step-cover{position: relative;aspect-ratio: 16/9;background: var(--surface-3);overflow: hidden;}
.portal-v2 .pv-step-cover img{width: 100%;height: 100%;object-fit: cover;transition: transform .4s ease;}
.portal-v2 .pv-step:hover .pv-step-cover img{transform: scale(1.03);}
.portal-v2 .pv-step.is-soon .pv-step-cover img{filter: grayscale(.85) brightness(.7);}
.portal-v2 .pv-step-cover .tier{position: absolute;top: 10px;left: 10px;}
.portal-v2 .pv-step-body{padding: 14px 16px 16px;display: flex;flex-direction: column;gap: 6px;flex: 1;}
.portal-v2 .pv-step-body h3{margin: 0;font-size: 16.5px;letter-spacing: -0.01em;line-height: 1.3;}
.portal-v2 .pv-step-body p{margin: 0;color: var(--text-2);font-size: 13.5px;line-height: 1.5;}
.portal-v2 .pv-step-foot{margin-top: auto;padding-top: 10px;display: flex;align-items: center;justify-content: space-between;gap: 8px;font-size: 12.5px;color: var(--text-3);}
.portal-v2 .pv-step-foot .mono{font-size: 12px;}
@media (max-width: 1024px) { .portal-v2 .pv-track{grid-template-columns: repeat(2, minmax(0, 1fr));} .portal-v2 .pv-track::before{display: none;} .portal-v2 .pv-step-n{margin: 0;} }
@media (max-width: 560px) { .portal-v2 .pv-track{grid-template-columns: 1fr;} }

/* ---------- Biblioteca ---------- */
.portal-v2 .pv-lib{display: grid;grid-template-columns: repeat(4, minmax(0, 1fr));gap: 16px;}
.portal-v2 .pv-lib-card{border: 1px solid var(--border);border-radius: 14px;background: var(--surface);overflow: hidden;display: flex;flex-direction: column;text-decoration: none;transition: border-color .15s ease;}
.portal-v2 .pv-lib-card:hover{border-color: var(--border-strong);}
.portal-v2 .pv-lib-media{position: relative;aspect-ratio: 16/10;background: var(--surface-3);overflow: hidden;display: grid;place-items: center;}
.portal-v2 .pv-lib-media img{width: 100%;height: 100%;object-fit: cover;}
.portal-v2 .pv-lib-media .tier{position: absolute;top: 12px;left: 12px;}
.portal-v2 .pv-lib-media.is-book{background: radial-gradient(80% 90% at 50% 100%, var(--brand-soft), transparent 70%), var(--surface-2);}
.portal-v2 .pv-lib-media.is-book img{width: auto;height: 84%;object-fit: contain;border-radius: 4px;box-shadow: 0 18px 40px -12px rgba(0,0,0,.6);transform: rotate(-3deg);}
.portal-v2 .pv-lib-body{padding: 16px 18px 18px;display: flex;flex-direction: column;gap: 8px;flex: 1;}
.portal-v2 .pv-lib-body h3{margin: 0;font-size: 17px;letter-spacing: -0.01em;}
.portal-v2 .pv-lib-body p{margin: 0;color: var(--text-2);font-size: 14px;line-height: 1.55;}
.portal-v2 .pv-platforms{margin-top: auto;padding-top: 12px;display: flex;align-items: center;gap: 10px;font-size: 12px;color: var(--text-3);}
.portal-v2 .pv-platforms img{width: 22px;height: 22px;object-fit: contain;border-radius: 5px;background: #fff;padding: 2px;}
@media (max-width: 960px) { .portal-v2 .pv-lib{grid-template-columns: 1fr 1fr;} }
@media (max-width: 640px) { .portal-v2 .pv-lib{grid-template-columns: 1fr;} }

/* ---------- Certificado ---------- */
.portal-v2 .pv-cert{display: grid;grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);gap: 48px;align-items: center;}
.portal-v2 .pv-cert-art{position: relative;padding: 18px 8px;touch-action: pan-y;}
.portal-v2 .pv-cert-tilt{position: relative;border-radius: 10px;transform-style: preserve-3d;will-change: transform;transform-origin: 50% 50%;}
.portal-v2 .pv-cert-svg{display: block;width: 100%;height: auto;border-radius: 10px;overflow: hidden;text-rendering: geometricPrecision;}
.portal-v2 .pv-cert-tilt .pv-cert-svg{width: 100%;height: auto;border-radius: 10px;box-shadow: 0 50px 90px -40px rgba(0,0,0,.65), 0 18px 40px -24px rgba(0,0,0,.5), 0 0 0 1px var(--border);image-rendering: auto;}
.portal-v2 .pv-cert-glare{position: absolute;inset: 0;border-radius: 10px;pointer-events: none;mix-blend-mode: soft-light;opacity: .55;transition: opacity .4s ease;background: radial-gradient(60% 55% at var(--gx, 30%) var(--gy, 20%), rgba(255,255,255,.75), rgba(255,255,255,0) 60%);}
.portal-v2 .pv-cert-art.is-hover .pv-cert-glare{opacity: .9;}
.portal-v2 .pv-cert-art::after{content: "";position: absolute;left: 12%;right: 12%;bottom: 0;height: 30px;border-radius: 50%;background: radial-gradient(closest-side, color-mix(in srgb, var(--brand) 28%, transparent), transparent);filter: blur(8px);pointer-events: none;}
.portal-v2 .pv-cert-art figcaption{margin-top: 14px;text-align: center;font-size: 12.5px;color: var(--text-3);}
.portal-v2 .pv-cert-copy h2{margin: 12px 0 12px;font-size: clamp(1.9rem, 3.4vw, 2.6rem);line-height: 1.12;letter-spacing: -0.03em;font-weight: 800;}
.portal-v2 .pv-cert-copy > p{margin: 0 0 22px;color: var(--text-2);font-size: 16px;}
.portal-v2 .pv-validator{border: 1px solid var(--border);border-radius: 14px;background: var(--surface);padding: 18px;}
.portal-v2 .pv-validator label{display: block;font-size: 13px;font-weight: 600;margin-bottom: 8px;}
.portal-v2 .pv-validator-row{display: flex;gap: 8px;}
.portal-v2 .pv-validator input{flex: 1;min-width: 0;height: 44px;padding: 0 14px;border-radius: 10px;border: 1px solid var(--border-strong);background: var(--bg);font-family: "JetBrains Mono", monospace;font-size: 13px;}
.portal-v2 .pv-validator input:focus{outline: 2px solid var(--brand-line);border-color: var(--brand);}
.portal-v2 .pv-validator .btn{--h: 44px;--r: 10px;}
.portal-v2 .validator-help{margin: 8px 0 0;font-size: 12.5px;color: var(--text-3);}
.portal-v2 .v-result{margin-top: 14px;border-radius: 12px;border: 1px solid var(--brand-line);background: var(--brand-soft);padding: 14px;display: grid;gap: 8px;animation: rise .25s ease;}
.portal-v2 .v-result.is-bad{border-color: color-mix(in srgb, var(--down) 45%, transparent);background: color-mix(in srgb, var(--down) 10%, transparent);}
.portal-v2 .v-result header{display: flex;align-items: center;gap: 8px;font-weight: 700;}
.portal-v2 .v-result header svg{color: var(--brand);font-size: 18px;}
.portal-v2 .v-result.is-bad header svg{color: var(--down);}
.portal-v2 .v-row{display: flex;justify-content: space-between;gap: 12px;font-size: 13.5px;}
.portal-v2 .v-row span{color: var(--text-2);}
.portal-v2 .v-row strong{text-align: right;font-weight: 600;}
.portal-v2 .pv-cert-perks{display: grid;gap: 10px;margin: 20px 0 0;padding: 0;list-style: none;}
.portal-v2 .pv-cert-perks li{display: flex;gap: 10px;align-items: flex-start;color: var(--text-2);font-size: 14.5px;}
.portal-v2 .pv-cert-perks svg{color: var(--brand);margin-top: 4px;}
@keyframes rise { from { opacity: 0; transform: translateY(4px); } }
@media (max-width: 960px) { .portal-v2 .pv-cert{grid-template-columns: 1fr;gap: 32px;} }

/* ---------- Ecossistema ---------- */
.portal-v2 .pv-eco{display: grid;grid-template-columns: repeat(3,minmax(0,1fr));gap: 16px;}
.portal-v2 .pv-eco-card{border: 1px solid var(--border);border-radius: 14px;background: var(--surface);padding: 22px;display: flex;flex-direction: column;gap: 10px;text-decoration: none;}
.portal-v2 .pv-eco-card.is-here{border-color: var(--brand-line);background: linear-gradient(180deg, var(--brand-soft), transparent 60%), var(--surface);}
.portal-v2 .pv-eco-top{display: flex;align-items: center;gap: 12px;}
.portal-v2 .pv-eco-top img{width: 40px;height: 40px;border-radius: 10px;box-shadow: 0 0 0 1px var(--border);}
.portal-v2 .pv-eco-top strong{font-size: 16.5px;}
.portal-v2 .pv-eco-top small{display: block;color: var(--text-3);font-size: 12.5px;}
.portal-v2 .pv-eco-card p{margin: 0;color: var(--text-2);font-size: 14.5px;}
.portal-v2 .pv-eco-card .when{margin-top: auto;padding-top: 10px;font-size: 12px;font-weight: 600;letter-spacing: .08em;text-transform: uppercase;color: var(--text-3);}
.portal-v2 .pv-eco-strip{margin: 22px auto 0;display: flex;justify-content: center;flex-wrap: wrap;gap: 10px 26px;color: var(--text-2);font-size: 14px;}
.portal-v2 .pv-eco-strip span{display: inline-flex;align-items: center;gap: 8px;}
.portal-v2 .pv-eco-strip svg{color: var(--brand);}
@media (max-width: 960px) { .portal-v2 .pv-eco{grid-template-columns: 1fr;} }

/* ---------- Planos ---------- */
/* Igual ao Terminal público v2 (styles.css, seção Planos). */
.portal-v2 #planos .plans-billing{margin: 0 0 32px;}
.portal-v2 .plans{display: grid;grid-template-columns: repeat(3,minmax(0,1fr));gap: 16px;align-items: stretch;}
.portal-v2 .plan{border: 1px solid var(--border);border-radius: 18px;background: var(--surface);padding: 26px;display: flex;flex-direction: column;gap: 18px;position: relative;}
.portal-v2 .plan.is-pro{border-color: var(--brand-line);background: linear-gradient(180deg, var(--brand-soft), var(--surface) 55%);}
.portal-v2 .plan-top{display: flex;align-items: center;justify-content: space-between;gap: 8px;min-height: 22px;}
.portal-v2 .plan-name{font-family: "JetBrains Mono", monospace;font-weight: 700;letter-spacing: .1em;font-size: 12.5px;}
.portal-v2 .plan-badge{font-size: 11.5px;font-weight: 600;color: var(--brand);border: 1px solid var(--brand-line);padding: 2px 9px;border-radius: 999px;}
.portal-v2 .plan-price{display: grid;gap: 4px;min-height: 104px;align-content: start;}
.portal-v2 .plan-price .big{display: flex;align-items: baseline;gap: 6px;}
.portal-v2 .plan-price .big b{font-size: 2.6rem;font-weight: 800;letter-spacing: -0.03em;line-height: 1;font-variant-numeric: tabular-nums;}
.portal-v2 .plan-price .big span{color: var(--text-2);font-size: 14px;}
.portal-v2 .plan-price small{color: var(--text-2);font-size: 13px;line-height: 1.45;}
.portal-v2 .plan-price s{color: var(--text-3);}
.portal-v2 .brand-txt{color: var(--brand);}
.portal-v2 .plan-desc{margin: 0;color: var(--text-2);font-size: 14px;min-height: 44px;}
.portal-v2 .plan-list{list-style: none;margin: 0;padding: 18px 0 0;border-top: 1px solid var(--border);display: grid;gap: 10px;font-size: 14px;}
.portal-v2 .plan-list li{display: grid;grid-template-columns: 18px 1fr auto;gap: 10px;align-items: start;}
.portal-v2 .plan-list svg{color: var(--brand);margin-top: 4px;}
.portal-v2 .plan-list em{font-style: normal;font-family: "JetBrains Mono", monospace;font-size: 12px;color: var(--text);font-weight: 600;white-space: nowrap;}
.portal-v2 .plan-list em.em-limit{color: var(--down);}
.portal-v2 .plan-list em.em-up{color: var(--up);}
.portal-v2 .plan-list .head{grid-template-columns: 1fr;font-size: 11.5px;font-weight: 700;letter-spacing: .08em;text-transform: uppercase;color: var(--text-3);}
.portal-v2 .plan-more{display: inline-flex;align-items: center;gap: 6px;margin-top: auto;padding: 0;border: 0;background: none;color: var(--brand);font-weight: 600;font-size: 13.5px;align-self: flex-start;text-decoration: none;}
.portal-v2 .plan-more svg.lucide{width: 15px;height: 15px;transition: transform .2s ease;}
.portal-v2 .plan-more:hover span{text-decoration: underline;}
.portal-v2 .plan-more:hover svg.lucide{transform: translateY(2px);}
.portal-v2 .plans-note{display: flex;align-items: center;justify-content: center;gap: 8px;text-align: center;color: var(--text-2);font-size: 13.5px;margin-top: 22px;}
.portal-v2 .plans-note svg{color: var(--brand);width: 16px;height: 16px;}
.portal-v2 .shine{font-weight: 700;background: linear-gradient(100deg, var(--text) 0%, var(--text) 38%, var(--brand) 50%, var(--text) 62%, var(--text) 100%);background-size: 250% 100%;-webkit-background-clip: text;background-clip: text;color: transparent;animation: shineText 3.2s linear infinite;}
@keyframes shineText { from { background-position: 100% 0; } to { background-position: -150% 0; } }
@media (prefers-reduced-motion: reduce) { .portal-v2 .shine{animation: none;color: var(--brand);background: none;} }
@media (max-width: 960px) { .portal-v2 .plans{grid-template-columns: 1fr;max-width: 520px;margin-inline: auto;} .portal-v2 .plan-price, .portal-v2 .plan-desc{min-height: 0;} }

/* ---------- FAQ ---------- */
.portal-v2 .pv-faq{max-width: 820px;margin: 0 auto;display: grid;gap: 10px;}
.portal-v2 .pv-faq-item{border: 1px solid var(--border);border-radius: 12px;background: var(--surface);}

.portal-v2 .pv-faq-q{width: 100%;display: flex;align-items: center;justify-content: space-between;gap: 16px;padding: 18px 20px;border: 0;background: transparent;text-align: left;font-weight: 600;font-size: 15.5px;}
.portal-v2 .pv-faq-q svg{transition: transform .25s ease;color: var(--text-3);font-size: 18px;}
.portal-v2 .pv-faq-item.is-open .pv-faq-q svg{transform: rotate(45deg);color: var(--brand);}
.portal-v2 .pv-faq-a{display: grid;grid-template-rows: 0fr;transition: grid-template-rows .3s ease;}
.portal-v2 .pv-faq-item.is-open .pv-faq-a{grid-template-rows: 1fr;}
.portal-v2 .pv-faq-a > div{overflow: hidden;}
.portal-v2 .pv-faq-a p{margin: 0;padding: 0 20px 20px;color: var(--text-2);}

/* ---------- CTA final ---------- */
.portal-v2 .pv-final{text-align: center;padding: 112px 0;position: relative;overflow: hidden;}
.portal-v2 .pv-final::before{content: "";position: absolute;inset: 0;background: radial-gradient(50% 70% at 50% 100%, var(--brand-soft), transparent 70%);pointer-events: none;}
.portal-v2 .pv-final h2{position: relative;margin: 0 auto 14px;max-width: 760px;font-size: clamp(2rem, 4.4vw, 3.3rem);line-height: 1.1;letter-spacing: -0.03em;font-weight: 800;text-wrap: balance;}
.portal-v2 .pv-final p{position: relative;margin: 0 auto;max-width: 560px;color: var(--text-2);font-size: 16.5px;}
.portal-v2 .pv-final .hero-cta{position: relative;}

.portal-v2 .wrap {width:100%;max-width:1240px;padding-inline:24px;}
.portal-v2 .portal-spotlight {padding:104px 0;}
.portal-v2 .portal-preview.pv-player {padding:0;border:0;}
.portal-v2 .portal-preview-list {display:block;margin:0;padding:6px;}
.portal-v2 .portal-preview-list li {margin:0;}
.portal-v2 .portal-preview-item.pv-lesson-row {color:var(--pv-text);min-height:0;}
.portal-v2 .portal-preview-gate .btns {display:flex;justify-content:center;gap:10px;}
.portal-v2 .portal-preview-gate .btn-outline-primary {color:#fff;border-color:rgba(255,255,255,.35);}
.portal-v2 .portal-preview-gate {border-radius:14px;}
.portal-v2 .portal-preview-gate[hidden], .portal-v2 [data-preview-play][hidden], .portal-v2 [data-pricing-plan][hidden] {display:none !important;}
.portal-v2 .pv-step-cover, .portal-v2 .pv-lib-media {display:grid;}
.portal-v2 .portal-cert {padding:104px 0;border-top:1px solid var(--pv-border);}
.portal-v2 .portal-cert-grid.pv-cert {grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:48px;}
.portal-v2 .portal-cert-art {order:-1;margin:0;}
.portal-v2 .portal-cert h2 {margin:12px 0;font-size:clamp(1.9rem,3.4vw,2.6rem);line-height:1.12;font-weight:800;letter-spacing:-.03em;}
.portal-v2 .pricing-section {padding:104px 0 !important;border-top:1px solid var(--pv-border);}
.portal-v2 .portal-section-intro {max-width:760px;margin:0 auto 48px;text-align:center;}
.portal-v2 .portal-section-intro h2 {font-size:clamp(1.9rem,3.6vw,2.75rem);line-height:1.12;font-weight:800;letter-spacing:-.03em;}
.portal-v2 .portal-section-intro p {max-width:640px;margin-inline:auto;}
.portal-v2 .pv-faq-q {box-shadow:none;color:var(--pv-text);}
.portal-v2 .pv-faq-item h3 {margin:0;}
.portal-v2 .pv-faq .accordion-body {padding:0 0 22px;background:transparent;color:var(--pv-muted);}
.portal-v2 .pv-faq .accordion-button {background:transparent;}
.portal-v2 .pv-frame-dots i {display:block;}
.portal-v2 .portal-catalog-frame > img {top:0;height:100%;}
.portal-v2 .portal-catalog-frame > iframe {transform-origin:0 0;}
.portal-v2 .portal-final-cta .container {max-width:1240px;}
@media(max-width:960px) { .portal-v2 .portal-cert-grid.pv-cert {grid-template-columns:1fr;gap:32px;} }
@media(max-width:640px) { .portal-v2 .wrap {padding-inline:16px;} .portal-v2 .portal-spotlight,.portal-v2 .portal-cert {padding:72px 0;} .portal-v2 .pricing-section {padding:72px 0 !important;} }
@media(prefers-reduced-motion:reduce) { .portal-v2 .pv-step-cover img {transition:none;} .portal-v2 .pv-step:hover .pv-step-cover img {transform:none;} }

.portal-v2 .portal-faq-list .pv-faq-item {border:0;border-bottom:1px solid var(--pv-border);border-radius:0;margin:0;background:transparent;}
@media (prefers-reduced-motion: reduce) { .portal-v2 .portal-catalog-frame > iframe, .portal-v2 .portal-preview-timer span {transition: none;} .portal-v2 .shine {animation: none;background: none;color: var(--pv-brand);} .portal-v2 .plans-annual-discount::after { animation:none; opacity:0; } }
