:host { --brand: #E33DCF; --brand-soft: rgba(227, 61, 207, 0.14); --brand-soft-2: rgba(227, 61, 207, 0.08); --text: #111214; --muted: rgba(17, 18, 20, 0.70); --radius-xl: 22px; --radius-lg: 16px; display: block; } /* ✅ FUNDO GLOBAL (vale para a Home TODA até o footer) */ .home-page { position: relative; min-height: 100vh; overflow: hidden; background: radial-gradient(900px 420px at 20% 10%, var(--brand-soft), transparent 60%), radial-gradient(820px 380px at 80% 30%, var(--brand-soft-2), transparent 60%), linear-gradient(180deg, #ffffff 0%, #f5f5f7 70%); /* névoa suave pra dar sensação de blur */ &::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: rgba(255, 255, 255, 0.25); } } /* ✅ BLOBS FIXOS (continuam no scroll) */ .page-blob { position: fixed; pointer-events: none; border-radius: 999px; filter: blur(34px); opacity: 0.55; z-index: 0; background: radial-gradient(circle at 30% 30%, rgba(227,61,207,0.55), rgba(227,61,207,0.06)); animation: floaty 10s ease-in-out infinite; &.blob-1 { width: 420px; height: 420px; top: -140px; left: -140px; } &.blob-2 { width: 520px; height: 520px; top: -220px; right: -240px; animation-duration: 12s; } &.blob-3 { width: 360px; height: 360px; bottom: -180px; left: 25%; animation-duration: 14s; } &.blob-4 { width: 520px; height: 520px; bottom: -260px; right: -260px; animation-duration: 16s; opacity: .45; } @media (max-width: 992px) { opacity: 0.35; } } /* ✅ garante que o conteúdo fique acima do fundo */ .hero, .features-section, .container { position: relative; z-index: 1; } /* =============================== */ /* HERO */ /* =============================== */ .hero { padding: 56px 0 18px 0; } .hero-inner { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 36px; align-items: center; @media (max-width: 992px) { grid-template-columns: 1fr; gap: 26px; } } /* texto centralizado */ .hero-copy { display: flex; flex-direction: column; align-items: center; text-align: center; } /* badge */ .hero-badge { display: inline-flex; align-items: center; gap: 10px; width: fit-content; padding: 10px 14px; border-radius: 999px; background: rgba(255, 255, 255, 0.78); border: 1px solid rgba(227, 61, 207, 0.22); backdrop-filter: blur(10px); color: var(--text); font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 700; i { color: var(--brand); font-size: 16px; } } .hero-text-section { width: 100%; margin-top: 12px; } /* título */ .main-title { font-family: 'Inter', sans-serif; font-size: 52px; line-height: 1.05; margin: 18px 0 18px 0; display: flex; flex-direction: column; align-items: center; @media (max-width: 1400px) { font-size: 44px; } @media (max-width: 1024px) { font-size: 38px; } @media (max-width: 768px) { font-size: 32px; } @media (max-width: 480px) { font-size: 28px; } } .main-title .first-line, .main-title .second-line { font-weight: 650; display: block; color: var(--text); text-align: center; } .main-title strong { color: var(--brand); position: relative; } .main-title strong::after { content: ''; position: absolute; left: 0; bottom: 6px; width: 100%; height: 10px; border-radius: 999px; background: rgba(227, 61, 207, 0.18); z-index: -1; } /* parágrafo */ .main-paragraph { width: min(980px, 100%); margin: 0 auto 16px auto; font-family: 'Poppins', sans-serif; font-size: 20px; color: var(--muted); line-height: 1.45; @media (max-width: 1400px) { font-size: 19px; } @media (max-width: 1024px) { font-size: 18px; } @media (max-width: 768px) { font-size: 16px; } } .main-paragraph .brand-name { color: var(--text); } .main-paragraph .highlight { color: var(--text); font-weight: 800; } .main-paragraph strong { font-weight: 800; } /* botões */ .hero-actions { display: flex; gap: 14px; align-items: center; justify-content: center; margin-top: 16px; flex-wrap: wrap; } .cta-secondary { height: 44px; padding: 0 14px; border-radius: 12px; background: rgba(255, 255, 255, 0.72); border: 1px solid rgba(17, 18, 20, 0.10); color: var(--text); font-weight: 800; display: inline-flex; align-items: center; gap: 10px; transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease; i { color: var(--brand); } &:hover { transform: translateY(-2px); border-color: rgba(227, 61, 207, 0.28); box-shadow: 0 12px 24px rgba(17, 18, 20, 0.10); } } /* =============================== */ /* MOCK (direita) */ /* =============================== */ .hero-mock { display: flex; justify-content: flex-end; @media (max-width: 992px) { justify-content: center; } } .mock-card { width: min(460px, 100%); border-radius: var(--radius-xl); background: rgba(255, 255, 255, 0.78); border: 1px solid rgba(227, 61, 207, 0.14); backdrop-filter: blur(12px); box-shadow: 0 22px 46px rgba(17, 18, 20, 0.10); overflow: hidden; transform: perspective(900px) rotateY(-6deg) rotateX(2deg); transition: transform 200ms ease; &:hover { transform: perspective(900px) rotateY(-2deg) rotateX(1deg) translateY(-2px); } } .mock-top { display: flex; align-items: center; gap: 8px; padding: 14px 16px; background: linear-gradient(180deg, rgba(227, 61, 207, 0.10), rgba(255, 255, 255, 0.20)); .dot { width: 10px; height: 10px; border-radius: 999px; background: rgba(17, 18, 20, 0.12); } .mock-title { margin-left: 6px; font-weight: 950; font-family: 'Inter', sans-serif; color: var(--text); } } .mock-grid { padding: 16px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; @media (max-width: 380px) { grid-template-columns: 1fr; } } .mock-kpi { border-radius: var(--radius-lg); background: #fff; border: 1px solid rgba(17, 18, 20, 0.08); padding: 12px; .kpi-label { display: block; font-size: 12px; color: rgba(17, 18, 20, 0.65); font-family: 'Inter', sans-serif; font-weight: 800; } .kpi-value { display: block; font-size: 26px; font-family: 'Inter', sans-serif; font-weight: 950; color: var(--text); margin-top: 2px; } .kpi-tag { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; padding: 6px 10px; border-radius: 999px; border: 1px solid rgba(227, 61, 207, 0.20); background: rgba(227, 61, 207, 0.07); color: var(--text); font-size: 12px; font-weight: 900; i { color: var(--brand); } } } .mock-line { grid-column: 1 / -1; border-radius: var(--radius-lg); background: #fff; border: 1px solid rgba(17, 18, 20, 0.08); padding: 12px; display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; .line-icon { width: 40px; height: 40px; border-radius: 12px; background: rgba(227, 61, 207, 0.10); display: grid; place-items: center; i { color: var(--brand); font-size: 18px; } } .line-title { font-weight: 950; font-family: 'Inter', sans-serif; color: var(--text); font-size: 14px; } .line-sub { color: rgba(17, 18, 20, 0.65); font-size: 12px; margin-top: 2px; font-family: 'Inter', sans-serif; } .line-pill { padding: 8px 10px; border-radius: 999px; font-weight: 950; font-size: 12px; background: rgba(227, 61, 207, 0.10); border: 1px solid rgba(227, 61, 207, 0.22); color: var(--text); } } /* =============================== */ /* MÉTRICAS CENTRALIZADAS (MEIO) */ /* =============================== */ .hero-metrics-wide { margin-top: 18px; display: flex; justify-content: center; } .hero-metrics { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; } .metric { display: inline-flex; align-items: center; gap: 10px; padding: 12px 14px; border-radius: 14px; background: rgba(255, 255, 255, 0.78); border: 1px solid rgba(227, 61, 207, 0.16); backdrop-filter: blur(10px); i { color: var(--brand); font-size: 18px; } .metric-title { display: block; font-weight: 900; color: var(--text); font-family: 'Inter', sans-serif; font-size: 14px; line-height: 1.1; } .metric-sub { display: block; font-family: 'Inter', sans-serif; font-size: 12px; color: rgba(17, 18, 20, 0.65); } } /* =============================== */ /* FEATURES */ /* =============================== */ .features-section { padding: 18px 0 60px 0; background: transparent; } .section-head { text-align: center; margin-bottom: 24px; } .section-title { font-family: 'Inter', sans-serif; font-weight: 950; color: var(--text); font-size: 30px; @media (max-width: 768px) { font-size: 24px; } } .section-title .brand { color: var(--brand); } .section-subtitle { margin-top: 10px; color: var(--muted); font-family: 'Poppins', sans-serif; } /* ✅ AQUI: 3 CARDS CENTRALIZADOS LADO A LADO NO NOTEBOOK */ .feature-cards-row { display: flex; justify-content: center; align-items: stretch; gap: 26px; flex-wrap: nowrap; /* ✅ força ficar em 1 linha */ /* notebook / telas médias */ @media (max-width: 1199.98px) { gap: 18px; } /* quando a tela ficar pequena de verdade, aí quebra */ @media (max-width: 992px) { flex-wrap: wrap; } } /* Garante que o col-auto do bootstrap não atrapalhe */ .feature-item { display: flex; justify-content: center; align-items: stretch; margin-bottom: 0 !important; } /* melhora o respiro no botão */ .button-section { margin-top: 18px; } /* faixa de valores */ .value-strip { margin-top: 26px; padding: 14px 16px; border-radius: var(--radius-xl); background: rgba(255, 255, 255, 0.80); border: 1px solid rgba(227, 61, 207, 0.14); backdrop-filter: blur(10px); display: flex; justify-content: center; gap: 18px; flex-wrap: wrap; .value { display: inline-flex; align-items: center; gap: 10px; i { color: var(--brand); font-size: 18px; } span { color: var(--text); font-family: 'Inter', sans-serif; } } } /* =============================== */ /* ✅ ANIMAÇÕES SSR-SAFE */ /* =============================== */ [data-animate] { opacity: 1; transform: none; } .js-animate [data-animate] { opacity: 0; transform: translateY(14px); transition: opacity 600ms ease, transform 600ms ease; will-change: opacity, transform; } .js-animate [data-animate].is-visible { opacity: 1; transform: translateY(0); } /* brilho suave no botão */ :host ::ng-deep app-cta-button .btn, :host ::ng-deep app-cta-button button { position: relative; overflow: hidden; transform: translateZ(0); } :host ::ng-deep app-cta-button .btn::after, :host ::ng-deep app-cta-button button::after { content: ''; position: absolute; inset: 0; transform: translateX(-120%) rotate(12deg); background: linear-gradient(90deg, transparent, rgba(255,255,255,0.55), transparent); animation: shine 3.4s ease-in-out infinite; } @media (prefers-reduced-motion: reduce) { .page-blob { animation: none; } .js-animate [data-animate] { transition: none; transform: none; opacity: 1; } :host ::ng-deep app-cta-button .btn::after, :host ::ng-deep app-cta-button button::after { animation: none; } } @keyframes floaty { 0% { transform: translate(0, 0) scale(1); } 50% { transform: translate(18px, 10px) scale(1.03); } 100% { transform: translate(0, 0) scale(1); } } @keyframes shine { 0%, 65% { transform: translateX(-120%) rotate(12deg); opacity: 0.0; } 75% { opacity: 1; } 100% { transform: translateX(120%) rotate(12deg); opacity: 0.0; } }