/* ═══════════════════════════════════════════════════════════════════════
   O site público do CMS-modelo — anatomia do tema frontapp sobre os
   tokens --sf-* que a Aparência do CMS pinta. ESTÁTICO de propósito:
   sem build, corre em qualquer hospedagem, e o ZIP de entrega leva-o tal
   e qual. Mobile-first; motion respeita prefers-reduced-motion.
   ═══════════════════════════════════════════════════════════════════════ */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    background: var(--sf-bg);
    color: var(--sf-text);
    font-family: var(--sf-font-body);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
}
h1, h2, h3 { font-family: var(--sf-font-heading); line-height: 1.12; margin: 0; }
h1 { font-size: clamp(2.1rem, 6vw, 3.6rem); font-weight: 800; letter-spacing: -0.02em; text-wrap: balance; }
h2 { font-size: clamp(1.6rem, 4vw, 2.4rem); font-weight: 800; letter-spacing: -0.015em; text-wrap: balance; }
h3 { font-size: 1.1rem; font-weight: 700; }
img { max-width: 100%; display: block; }
a { color: inherit; }
p { margin: 0; }
ul { margin: 0; padding: 0; list-style: none; }

/* ── movimento ──
   VISÍVEL POR OMISSÃO: sem JS (leitores, bots, JS bloqueado) a página está
   inteira. O script marca .sf-prep só no que está ABAIXO da dobra, e o
   IntersectionObserver troca por .sf-in ao entrar — o mesmo efeito, sem
   nunca apostar o conteúdo no JavaScript. */
.sf-reveal { transition: opacity .5s ease, transform .55s cubic-bezier(.22,.9,.3,1); }
.sf-prep { opacity: 0; transform: translateY(26px); }
.sf-prep.sf-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
    .sf-prep { opacity: 1; transform: none; transition: none; }
    html { scroll-behavior: auto; }
    .sf-marquee-fita { animation: none !important; }
}

/* ── botões ── */
.sf-btn {
    display: inline-flex; align-items: center; gap: .5rem;
    border-radius: 999px; border: 1px solid transparent;
    padding: .62rem 1.25rem; font-size: .92rem; font-weight: 600;
    text-decoration: none; cursor: pointer;
    transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.sf-btn:hover { transform: translateY(-1px); }
.sf-btn-lg { padding: .8rem 1.7rem; font-size: 1rem; }
.sf-btn-primary { background: var(--sf-primary); color: var(--sf-on-primary); box-shadow: 0 8px 24px color-mix(in srgb, var(--sf-primary) 35%, transparent); }
.sf-btn-contorno { border-color: var(--sf-line); background: var(--sf-surface); color: var(--sf-text); }
.sf-btn-claro { background: var(--sf-on-primary); color: var(--sf-primary); }

/* ── topbar + header ── */
.sf-topbar {
    display: flex; justify-content: center; gap: 1rem; flex-wrap: wrap;
    background: var(--sf-text); color: var(--sf-bg);
    font-size: .8rem; padding: .45rem 1rem;
}
.sf-topbar a { color: inherit; font-weight: 600; }
.sf-header { position: sticky; top: 0; z-index: 50; background: color-mix(in srgb, var(--sf-bg) 82%, transparent); backdrop-filter: blur(12px); border-bottom: 1px solid color-mix(in srgb, var(--sf-line) 60%, transparent); }
.sf-header-inner { max-width: 72rem; margin: 0 auto; display: flex; align-items: center; gap: 1.5rem; padding: .7rem 1.25rem; }
.sf-brand { display: flex; align-items: center; text-decoration: none; font-family: var(--sf-font-heading); font-size: 1.15rem; }
.sf-brand img { height: 2.1rem; width: auto; }
.sf-nav { display: none; gap: 1.4rem; margin-inline: auto; }
.sf-nav a { text-decoration: none; font-size: .92rem; color: var(--sf-muted); transition: color .15s; }
.sf-nav a:hover { color: var(--sf-text); }
.sf-header-cta { margin-left: auto; }
@media (min-width: 900px) { .sf-nav { display: flex; } .sf-header-cta { margin-left: 0; } }

/* ── hero ── */
.sf-hero { position: relative; overflow: hidden; padding: 5.5rem 1.25rem 2.5rem; text-align: center; }
.sf-hero-glow { position: absolute; inset: 0 0 auto; height: 520px; opacity: .35; pointer-events: none;
    background: radial-gradient(60% 55% at 50% 0%, var(--sf-primary) 0%, transparent 70%); }
.sf-hero-inner { position: relative; max-width: 46rem; margin: 0 auto; }
.sf-kicker { display: inline-block; border: 1px solid color-mix(in srgb, var(--sf-line) 50%, transparent);
    background: color-mix(in srgb, var(--sf-surface) 70%, transparent); backdrop-filter: blur(8px);
    border-radius: 999px; padding: .35rem 1rem; font-size: .78rem; color: var(--sf-muted); margin-bottom: 1.1rem; }
.sf-realce { font-style: normal; color: var(--sf-primary); }
.sf-sub { max-width: 36rem; margin: 1.1rem auto 0; color: var(--sf-muted); font-size: 1.02rem; text-wrap: pretty; }
.sf-hero-accoes { margin-top: 1.9rem; display: flex; justify-content: center; gap: .8rem; flex-wrap: wrap; }
.sf-hero-phones { position: relative; display: flex; align-items: flex-end; justify-content: center; margin-top: 3rem; }
.sf-phone { width: 15rem; border-radius: 2rem; box-shadow: 0 24px 60px rgba(0,0,0,.25); }
.sf-phone-0, .sf-phone-2 { display: none; width: 12.5rem; }
@media (min-width: 760px) {
    .sf-phone-0 { display: block; transform: translate(2rem, 1.4rem) rotate(-6deg); }
    .sf-phone-2 { display: block; transform: translate(-2rem, 1.4rem) rotate(6deg); }
}
.sf-hero-base { position: absolute; inset: auto 0 0; height: 9rem; pointer-events: none;
    background: linear-gradient(to top, var(--sf-bg) 20%, transparent); }
.sf-hero-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; margin-top: 1.8rem; padding-inline: 1rem; }
.sf-chip { display: inline-flex; align-items: center; gap: .5rem;
    border: 1px solid color-mix(in srgb, var(--sf-line) 55%, transparent);
    background: color-mix(in srgb, var(--sf-surface) 85%, transparent);
    border-radius: 999px; padding: .45rem 1rem; font-size: .78rem; font-weight: 500;
    box-shadow: 0 8px 20px rgba(0,0,0,.06); }
.sf-chip-ponto { width: .5rem; height: .5rem; border-radius: 999px; background: var(--sf-primary); }
.sf-chip-forte { font-weight: 700; }

/* ── secções ── */
.sf-seccao { max-width: 72rem; margin: 0 auto; padding: 4.2rem 1.25rem; }
.sf-seccao-suave { max-width: none; background: var(--sf-tint); }
.sf-seccao-suave > * { max-width: 72rem; margin-inline: auto; }
.sf-seccao-topo { max-width: 44rem; margin: 0 auto 2.4rem; text-align: center; }
.sf-seccao-topo .sf-kicker { margin-bottom: .8rem; }
.sf-seccao-cta { margin-top: 2.2rem; text-align: center; }
.sf-data { font-size: .82rem; color: var(--sf-muted); }
.sf-data a { color: inherit; }

/* grelha de cartões */
.sf-grelha { display: grid; gap: 1.2rem; }
@media (min-width: 700px) { .sf-grelha-3 { grid-template-columns: repeat(3, 1fr); } }
.sf-cartao { display: flex; flex-direction: column; overflow: hidden; text-decoration: none;
    background: var(--sf-surface); border: 1px solid color-mix(in srgb, var(--sf-line) 70%, transparent);
    border-radius: var(--sf-radius-card); transition: transform .2s ease, box-shadow .2s ease; }
.sf-cartao:hover { transform: translateY(-3px); box-shadow: 0 18px 44px rgba(0,0,0,.09); }
.sf-cartao > img { aspect-ratio: 4 / 3; object-fit: cover; }
.sf-cartao-corpo { padding: 1.15rem 1.25rem 1.35rem; display: flex; flex-direction: column; gap: .5rem; }
.sf-cartao-corpo p { color: var(--sf-muted); font-size: .92rem; }
.sf-etiqueta { align-self: flex-start; font-size: .72rem; font-weight: 700; text-transform: uppercase;
    letter-spacing: .05em; color: var(--cartao-tinta, var(--sf-primary)); }
.sf-tags { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .3rem; }
.sf-tags span { font-size: .72rem; border: 1px solid var(--sf-line); border-radius: 999px; padding: .18rem .6rem; color: var(--sf-muted); }

/* passos */
.sf-passos { display: grid; gap: 1.2rem; padding-block: .5rem 4.2rem; }
@media (min-width: 860px) { .sf-passos { grid-template-columns: repeat(3, 1fr); } }
.sf-passo { background: var(--sf-surface); border: 1px solid color-mix(in srgb, var(--sf-line) 70%, transparent);
    border-radius: var(--sf-radius-card); padding: 1.5rem; display: flex; flex-direction: column; gap: .8rem; }
.sf-passo-numero { align-self: flex-start; background: color-mix(in srgb, var(--sf-primary) 12%, var(--sf-surface));
    color: var(--sf-primary); font-weight: 700; font-size: .8rem; border-radius: 999px; padding: .3rem .85rem; }
.sf-passo-corpo { display: flex; flex-direction: column; gap: .45rem; }
.sf-passo-corpo p { color: var(--sf-muted); font-size: .92rem; }
.sf-passo-corpo ul { display: flex; flex-direction: column; gap: .3rem; margin-top: .2rem; }
.sf-passo-corpo li { position: relative; padding-left: 1.1rem; font-size: .88rem; color: var(--sf-muted); }
.sf-passo-corpo li::before { content: ''; position: absolute; left: 0; top: .48em; width: .45rem; height: .45rem; border-radius: 999px; background: var(--sf-primary); }
.sf-passo img { border-radius: calc(var(--sf-radius-card) - 6px); margin-top: auto; }

/* planos */
.sf-planos { display: grid; gap: 1.2rem; align-items: stretch; }
@media (min-width: 860px) { .sf-planos { grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); } }
.sf-plano { background: var(--sf-surface); border: 1px solid color-mix(in srgb, var(--sf-line) 70%, transparent);
    border-radius: var(--sf-radius-card); padding: 1.7rem 1.5rem; display: flex; flex-direction: column; gap: .7rem; }
.sf-plano-forte { border-color: var(--sf-primary); box-shadow: 0 20px 50px color-mix(in srgb, var(--sf-primary) 22%, transparent); }
.sf-plano-preco { font-family: var(--sf-font-heading); font-size: 2rem; font-weight: 800; }
.sf-plano-preco span { font-size: .95rem; font-weight: 500; color: var(--sf-muted); margin-left: .25rem; }
.sf-plano-desc { color: var(--sf-muted); font-size: .92rem; }
.sf-plano ul { display: flex; flex-direction: column; gap: .45rem; margin-block: .4rem .9rem; }
.sf-plano li { position: relative; padding-left: 1.4rem; font-size: .9rem; }
.sf-plano li::before { content: '✓'; position: absolute; left: 0; color: var(--sf-primary); font-weight: 700; }
.sf-plano .sf-btn { margin-top: auto; justify-content: center; }

/* faixa de chamada */
.sf-faixa { background: var(--sf-primary); color: var(--sf-on-primary); }
.sf-faixa-inner { max-width: 72rem; margin: 0 auto; padding: 2.6rem 1.25rem;
    display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap; }
.sf-faixa p { opacity: .85; margin-top: .3rem; }

/* chamada final + marquee */
.sf-cta-final { overflow: hidden; }
.sf-marquee { margin-top: 2.5rem; mask-image: linear-gradient(to right, transparent, #000 12%, #000 88%, transparent); }
.sf-marquee-fita { display: flex; gap: 2.5rem; width: max-content; animation: sf-marquee 22s linear infinite; }
.sf-marquee-fita span { font-family: var(--sf-font-heading); font-size: 1.6rem; font-weight: 800; color: color-mix(in srgb, var(--sf-text) 22%, transparent); white-space: nowrap; }
@keyframes sf-marquee { to { transform: translateX(-50%); } }

/* artigo (item de colecção / página) */
.sf-artigo { max-width: 46rem; }
.sf-artigo .sf-seccao-topo { text-align: left; margin-bottom: 1.6rem; }
.sf-artigo-capa { border-radius: var(--sf-radius-card); margin-bottom: 1.6rem; }
.sf-artigo-corpo { display: flex; flex-direction: column; gap: .9rem; color: var(--sf-text); }
.sf-artigo-corpo a { color: var(--sf-primary); }

/* rodapé */
.sf-footer { border-top: 1px solid color-mix(in srgb, var(--sf-line) 70%, transparent); background: var(--sf-tint); margin-top: 3rem; }
.sf-footer-inner { max-width: 72rem; margin: 0 auto; padding: 3rem 1.25rem 2rem;
    display: grid; gap: 2rem; }
@media (min-width: 860px) { .sf-footer-inner { grid-template-columns: 2fr 1fr 1fr; } }
.sf-footer-sobre { display: flex; flex-direction: column; gap: .8rem; max-width: 24rem; }
.sf-footer-sobre p { color: var(--sf-muted); font-size: .92rem; }
.sf-footer-logo { height: 2rem; width: auto; align-self: flex-start; }
.sf-footer-contactos, .sf-footer-redes { display: flex; flex-direction: column; gap: .5rem; font-size: .92rem; }
.sf-footer-contactos a, .sf-footer-redes a { color: var(--sf-muted); text-decoration: none; }
.sf-footer-contactos a:hover, .sf-footer-redes a:hover { color: var(--sf-text); }
.sf-footer-legal { border-top: 1px solid color-mix(in srgb, var(--sf-line) 60%, transparent);
    display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
    max-width: 72rem; margin: 0 auto; padding: 1.1rem 1.25rem; font-size: .8rem; color: var(--sf-muted); }
.sf-assinatura { color: inherit; text-decoration: none; }
.sf-assinatura:hover { color: var(--sf-text); }

/* botão flutuante do WhatsApp */
.sf-whats { position: fixed; right: 1.1rem; bottom: 1.1rem; z-index: 60;
    display: grid; place-items: center; width: 3.4rem; height: 3.4rem; border-radius: 999px;
    background: #25D366; color: #fff; box-shadow: 0 12px 30px rgba(37,211,102,.4); }
.sf-whats svg { width: 1.9rem; height: 1.9rem; }

/* contacto */
.sf-contacto { display: grid; gap: 2rem; }
@media (min-width: 860px) { .sf-contacto { grid-template-columns: 1fr 1.6fr; } }
.sf-contacto-info { display: flex; flex-direction: column; gap: 1rem; }
.sf-contacto-info p { display: flex; flex-direction: column; gap: .15rem; color: var(--sf-muted); font-size: .95rem; }
.sf-contacto-info strong { color: var(--sf-text); font-size: .82rem; text-transform: uppercase; letter-spacing: .04em; }
.sf-contacto-info a { color: inherit; }
.sf-form { display: flex; flex-direction: column; gap: 1rem; background: var(--sf-surface);
    border: 1px solid color-mix(in srgb, var(--sf-line) 70%, transparent);
    border-radius: var(--sf-radius-card); padding: 1.6rem; }
.sf-form-linha { display: grid; gap: 1rem; }
@media (min-width: 640px) { .sf-form-linha { grid-template-columns: 1fr 1fr; } }
.sf-form label { display: flex; flex-direction: column; gap: .35rem; font-size: .85rem; font-weight: 600; }
.sf-form input, .sf-form select, .sf-form textarea {
    font: inherit; font-weight: 400; color: var(--sf-text); background: var(--sf-bg);
    border: 1px solid var(--sf-line); border-radius: var(--sf-radius-control);
    padding: .6rem .8rem; }
.sf-form input:focus-visible, .sf-form select:focus-visible, .sf-form textarea:focus-visible {
    outline: 2px solid var(--sf-primary); outline-offset: 1px; border-color: var(--sf-primary); }
.sf-form button { align-self: flex-start; }
.sf-form-ok { background: color-mix(in srgb, #16a34a 12%, var(--sf-surface)); color: #166534;
    border-radius: var(--sf-radius-control); padding: .7rem 1rem; font-size: .9rem; }
.sf-form-erro { background: color-mix(in srgb, var(--sf-danger) 10%, var(--sf-surface)); color: var(--sf-danger);
    border-radius: var(--sf-radius-control); padding: .7rem 1rem; font-size: .9rem; }

/* motion desligado no CMS (webfront.motion=false) */
.sf-sem-motion .sf-marquee-fita { animation: none !important; }
.sf-sem-motion .sf-reveal, .sf-sem-motion .sf-prep { opacity: 1 !important; transform: none !important; transition: none !important; }

/* paginação (links() do Laravel) */
nav[role="navigation"] { margin-top: 2rem; display: flex; justify-content: center; }

/* ═══════════════ VARIAÇÃO taxi-go — mobilidade ═══════════════
   Assinaturas: tag rectangular, linha primária sob o header, xadrez táxi,
   hero split c/ telefone rodado, bento grid, rota tracejada, planos em lista. */
.sf-t-taxi-go .sf-header { backdrop-filter: none; background: var(--sf-bg); }
.sf-t-taxi-go .sf-header::after { content: ''; display: block; height: 2px; background: var(--sf-primary); }

.tg-tag { display: inline-block; margin-bottom: 1rem; background: var(--sf-tint); color: var(--sf-primary);
    padding: .35rem .8rem; font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .18em; }
.tg-topo { display: flex; flex-direction: column; gap: 1rem; margin-bottom: 2.4rem; }
@media (min-width: 860px) { .tg-topo { flex-direction: row; align-items: flex-end; justify-content: space-between; } }
.tg-topo h2 { max-width: 34rem; }
.tg-topo-solto { display: block; }
.tg-aside { max-width: 15rem; color: var(--sf-muted); font-size: .9rem; }
@media (min-width: 860px) { .tg-aside { text-align: right; } }

/* hero split */
.tg-hero { position: relative; overflow: hidden; padding: 5.5rem 1.25rem 3rem; }
.tg-xadrez { position: absolute; left: -10%; right: -10%; top: 10rem; height: 6rem; transform: rotate(-3deg);
    background: conic-gradient(color-mix(in srgb, var(--sf-primary) 12%, transparent) 25%, transparent 0 50%,
        color-mix(in srgb, var(--sf-primary) 12%, transparent) 0 75%, transparent 0);
    background-size: 48px 48px; pointer-events: none;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 25%, #000 75%, transparent);
            mask-image: linear-gradient(90deg, transparent, #000 25%, #000 75%, transparent); }
.tg-hero-grelha { position: relative; max-width: 72rem; margin: 0 auto; display: grid; gap: 3rem; align-items: center; }
@media (min-width: 860px) { .tg-hero-grelha { grid-template-columns: 1fr 1fr; } }
.tg-hero-texto h1 { max-width: 30rem; }
.tg-hero-texto .sf-sub { margin-inline: 0; max-width: 26rem; }
.tg-hero-accoes { margin-top: 1.9rem; display: flex; gap: .8rem; flex-wrap: wrap; }
.tg-prova { margin-top: 2.2rem; border-top: 1px solid color-mix(in srgb, var(--sf-line) 60%, transparent);
    padding-top: 1.4rem; font-family: var(--sf-font-heading); font-size: 1.4rem; }
.tg-hero-fone { position: relative; display: flex; justify-content: center; }
.tg-fone { position: relative; z-index: 2; width: 17rem; border-radius: 2.2rem;
    box-shadow: 0 24px 60px rgba(0,0,0,.25); transform: rotate(6deg); }
.tg-fone-tras { position: absolute; left: -2rem; bottom: 1rem; width: 12rem; border-radius: 2rem;
    opacity: .6; filter: blur(2px); display: none; }
@media (min-width: 1100px) { .tg-fone-tras { display: block; } }
.tg-chip { position: absolute; right: 0; top: 2.4rem; z-index: 3; display: inline-flex; align-items: center; gap: .6rem;
    border: 1px solid color-mix(in srgb, var(--sf-line) 60%, transparent); background: var(--sf-surface);
    border-radius: var(--sf-radius-control); padding: .6rem 1rem; font-size: .78rem; font-weight: 500;
    box-shadow: 0 14px 34px rgba(0,0,0,.14); animation: tg-flutua 5s ease-in-out infinite; }
.tg-pulso { width: .6rem; height: .6rem; border-radius: 999px; background: var(--sf-primary); position: relative; }
.tg-pulso::after { content: ''; position: absolute; inset: -4px; border-radius: 999px;
    border: 2px solid var(--sf-primary); animation: tg-pulsa 1.8s ease-out infinite; }
@keyframes tg-flutua { 50% { transform: translateY(-6px); } }
@keyframes tg-pulsa { from { opacity: .8; transform: scale(.6); } to { opacity: 0; transform: scale(1.3); } }

/* bento grid */
.tg-bento { display: grid; gap: 1.2rem; }
@media (min-width: 860px) { .tg-bento { grid-template-columns: repeat(3, 1fr); grid-auto-rows: 15rem; } }
.tg-carta { position: relative; overflow: hidden; border-radius: var(--sf-radius-card);
    border: 1px solid color-mix(in srgb, var(--sf-line) 40%, transparent);
    background: var(--carta, var(--sf-primary)); min-height: 16rem; display: flex; }
.tg-carta-grande { min-height: 26rem; }
@media (min-width: 860px) { .tg-carta-grande { grid-row: span 2; } }
.tg-carta > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .9;
    transition: transform .7s ease; }
.tg-carta:hover > img { transform: scale(1.04); }
.tg-carta-veu { position: absolute; inset: 0;
    background: linear-gradient(to top, color-mix(in srgb, var(--carta) 94%, transparent) 0%,
        color-mix(in srgb, var(--carta) 50%, transparent) 38%, transparent 72%); }
.tg-carta-badge { position: absolute; left: 1.25rem; top: 1.25rem; z-index: 2; display: inline-flex; align-items: center;
    gap: .4rem; background: color-mix(in srgb, var(--sf-bg) 70%, transparent); backdrop-filter: blur(4px);
    border-radius: 999px; padding: .25rem .75rem; font-size: .7rem; font-weight: 700; }
.tg-carta-badge span { width: .4rem; height: .4rem; border-radius: 999px; background: var(--carta); }
.tg-carta-corpo { position: relative; z-index: 1; margin-top: auto; padding: 1.4rem; color: #fff; }
.tg-carta-grande .tg-carta-corpo h3 { font-size: 1.6rem; }
.tg-carta-corpo p { margin-top: .4rem; font-size: .88rem; opacity: .9; }
.tg-carta-tags { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .8rem; }
.tg-carta-tags span { border: 1px solid rgba(255,255,255,.35); background: rgba(255,255,255,.16);
    backdrop-filter: blur(4px); border-radius: 999px; padding: .2rem .7rem; font-size: .7rem; }

/* rota (passos) */
.tg-banda { background: var(--sf-tint); }
.tg-banda-fundo { padding-bottom: .1px; }
.tg-rota { display: flex; flex-direction: column; counter-reset: paragem; }
@media (min-width: 860px) { .tg-rota { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.4rem; } }
.tg-rota > li { position: relative; display: flex; gap: 1.2rem; }
@media (min-width: 860px) { .tg-rota > li { display: block; } }
.tg-rota-no { display: flex; flex-direction: column; align-items: center; flex-shrink: 0; }
@media (min-width: 860px) { .tg-rota-no { flex-direction: row; justify-content: center; margin-bottom: 1.4rem; } }
.tg-rota-num { z-index: 1; display: grid; place-items: center; width: 3rem; height: 3rem; border-radius: 999px;
    background: var(--sf-primary); color: var(--sf-on-primary); font-family: var(--sf-font-heading);
    font-weight: 700; font-size: .9rem; box-shadow: 0 10px 24px color-mix(in srgb, var(--sf-primary) 40%, transparent),
    0 0 0 4px var(--sf-tint); }
.tg-rota-traco { flex: 1; width: 0; margin-block: .5rem; border-left: 2px dashed color-mix(in srgb, var(--sf-primary) 45%, transparent); }
@media (min-width: 860px) {
    .tg-rota-traco { display: none; }
    .tg-rota > li:not(.tg-rota-fim)::after { content: ''; position: absolute; top: 1.5rem;
        left: calc(50% + 2.2rem); right: calc(-50% + 2.2rem);
        border-top: 2px dashed color-mix(in srgb, var(--sf-primary) 45%, transparent); }
}
.tg-rota-carta { flex: 1; background: var(--sf-surface); border: 1px solid color-mix(in srgb, var(--sf-line) 70%, transparent);
    border-radius: var(--sf-radius-card); padding: 1.3rem; margin-bottom: 1.6rem; }
@media (min-width: 860px) { .tg-rota-carta { margin-bottom: 0; } }
.tg-rota-carta img { height: 7rem; width: 100%; object-fit: cover; border-radius: var(--sf-radius-control); margin-bottom: .9rem; }
.tg-rota-carta p { margin-top: .35rem; color: var(--sf-muted); font-size: .9rem; }
.tg-rota-carta ul { margin-top: .8rem; display: flex; flex-direction: column; gap: .45rem; }
.tg-rota-carta li { display: flex; gap: .5rem; font-size: .88rem; align-items: flex-start; }
.tg-rota-carta li svg { width: .9rem; height: .9rem; flex-shrink: 0; margin-top: .2rem; color: var(--sf-primary); }

/* painel CTA com chevrons */
.tg-painel { display: flex; flex-direction: column; gap: 1.4rem; align-items: flex-start;
    background: var(--sf-primary); color: var(--sf-on-primary);
    border-radius: var(--sf-radius-card); padding: 2rem; overflow: hidden; }
@media (min-width: 860px) { .tg-painel { flex-direction: row; align-items: center; padding: 2.5rem; } }
.tg-painel p { margin-top: .4rem; opacity: .85; max-width: 30rem; font-size: .92rem; }
.tg-chevrons { display: none; gap: .3rem; margin-left: auto; }
@media (min-width: 1080px) { .tg-chevrons { display: flex; } }
.tg-chevrons svg { width: 1.7rem; height: 1.7rem; stroke: currentColor; }
.tg-painel .sf-btn { flex-shrink: 0; }
@media (min-width: 860px) { .tg-painel > div:first-child { margin-right: auto; } .tg-chevrons { margin-left: 0; } }

/* planos em lista */
.tg-planos { border: 1px solid color-mix(in srgb, var(--sf-line) 60%, transparent);
    border-radius: var(--sf-radius-card); overflow: hidden; background: var(--sf-surface); }
.tg-plano { display: flex; flex-direction: column; gap: 1rem; padding: 1.6rem; }
.tg-plano + .tg-plano { border-top: 1px solid color-mix(in srgb, var(--sf-line) 60%, transparent); }
@media (min-width: 900px) { .tg-plano { flex-direction: row; align-items: center; gap: 2rem; padding: 2rem; } }
.tg-plano-forte { background: var(--sf-primary); color: var(--sf-on-primary); }
.tg-plano-id { flex-shrink: 0; }
@media (min-width: 900px) { .tg-plano-id { width: 15rem; } }
.tg-plano-id h3 { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.tg-plano-id p { margin-top: .3rem; font-size: .88rem; color: var(--sf-muted); }
.tg-plano-forte .tg-plano-id p { color: color-mix(in srgb, var(--sf-on-primary) 80%, transparent); }
.tg-plano-badge { background: var(--sf-tint); color: var(--sf-primary); border-radius: 999px;
    padding: .15rem .6rem; font-size: .68rem; font-weight: 700; }
.tg-plano-forte .tg-plano-badge { background: rgba(255,255,255,.2); color: var(--sf-on-primary); }
.tg-plano-lista { display: none; flex: 1; flex-wrap: wrap; gap: .5rem 1.5rem; }
@media (min-width: 900px) { .tg-plano-lista { display: flex; } }
.tg-plano-lista li { display: flex; align-items: center; gap: .5rem; font-size: .88rem; }
.tg-plano-lista svg { width: .55rem; height: .55rem; color: var(--sf-primary); }
.tg-plano-forte .tg-plano-lista svg { color: var(--sf-on-primary); }
.tg-plano-fim { display: flex; align-items: center; justify-content: space-between; gap: 1.4rem; }
@media (min-width: 900px) { .tg-plano-fim { margin-left: auto; justify-content: flex-end; } }
.tg-plano-preco { font-family: var(--sf-font-heading); font-size: 1.9rem; font-weight: 800; font-variant-numeric: tabular-nums; }
.tg-plano-preco span { font-size: .85rem; font-weight: 500; opacity: .7; margin-left: .3rem; }
.tg-nota { margin-top: 1.6rem; font-size: .85rem; color: var(--sf-muted); }

/* moldura final */
.tg-moldura { position: relative; overflow: hidden; text-align: center;
    border: 2px solid var(--sf-primary); border-radius: var(--sf-radius-card);
    padding: 3.4rem 1.5rem; }
.tg-moldura-brilho { position: absolute; inset: 0; pointer-events: none;
    background: radial-gradient(70% 55% at 50% 0%, color-mix(in srgb, var(--sf-primary) 16%, transparent), transparent 70%); }
.tg-moldura-logo { position: relative; margin: 0 auto 1.4rem; height: 3.4rem; width: 3.4rem;
    border-radius: 1rem; box-shadow: 0 10px 26px rgba(0,0,0,.18); }
.tg-moldura h2, .tg-moldura .sf-sub { position: relative; }
