/* ═══════════════════════════════════════════════════════════ BRAND THERAPY — style.css Sistema visual: espelho invertido da Digital Home brandtherapy.pt ═══════════════════════════════════════════════════════════ */ @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;0,900;1,400;1,700;1,900&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,300;1,400&family=Manrope:wght@300;400;500;600&family=DM+Mono:wght@300;400;500&display=swap'); /* ── VARIÁVEIS ── */ :root { --bt-white: #F5F2EE; --bt-ink: #1C1C1A; --bt-forest: #1E3528; --bt-forest-m: #2E5040; --bt-forest-l: #4A7A65; --bt-gold: #B8903A; --bt-gold-l: #D4AA55; --bt-cream: #EDE8DF; --bt-parch: #E4DDD0; --dh-black: #080808; --font-display: 'Playfair Display', Georgia, serif; --font-body: 'Manrope', sans-serif; --font-serif: 'Cormorant Garamond', Georgia, serif; --font-mono: 'DM Mono', monospace; --nav-h: 72px; --max-w: 1200px; --sp-xs: 0.5rem; --sp-sm: 1rem; --sp-md: 2rem; --sp-lg: 4rem; --sp-xl: 7rem; } /* ── RESET ── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; font-size: 16px; } body { font-family: var(--font-body); background: var(--bt-white); color: var(--bt-ink); line-height: 1.7; -webkit-font-smoothing: antialiased; padding-top: var(--nav-h); } img { max-width: 100%; display: block; } a { color: inherit; } /* ══════════════════════════════════════ NAVEGAÇÃO ══════════════════════════════════════ */ .nav { position: fixed; top: 0; left: 0; right: 0; height: var(--nav-h); background: var(--bt-white); border-bottom: 1px solid rgba(28,28,26,.08); z-index: 1000; display: flex; align-items: center; justify-content: space-between; padding: 0 var(--sp-md); transition: box-shadow .3s; } .nav.scrolled { box-shadow: 0 2px 24px rgba(28,28,26,.08); } .nav-logo { font-family: var(--font-display); font-size: 1.25rem; font-weight: 900; letter-spacing: -.01em; color: var(--bt-forest); text-decoration: none; text-transform: uppercase; line-height: 1; } .nav-logo span { color: var(--bt-gold); font-style: italic; } .nav-links { display: flex; align-items: center; gap: 2rem; list-style: none; } .nav-links a { font-family: var(--font-mono); font-size: 10px; letter-spacing: .3em; text-transform: uppercase; text-decoration: none; color: rgba(28,28,26,.55); transition: color .2s; } .nav-links a:hover, .nav-links a.active { color: var(--bt-ink); } .nav-cta { font-family: var(--font-mono); font-size: 10px; letter-spacing: .3em; text-transform: uppercase; text-decoration: none; color: var(--bt-white); background: var(--bt-forest); padding: .6rem 1.5rem; transition: background .2s; } .nav-cta:hover { background: var(--bt-forest-m); } .nav-hamburger { display: none; flex-direction: column; gap: 5px; cursor: pointer; background: none; border: none; padding: 4px; } .nav-hamburger span { display: block; width: 24px; height: 1.5px; background: var(--bt-ink); transition: all .3s; } /* Mobile nav overlay */ .nav-mobile { display: none; position: fixed; inset: 0; background: var(--bt-white); z-index: 999; flex-direction: column; justify-content: center; align-items: flex-start; padding: var(--sp-xl) var(--sp-md); opacity: 0; pointer-events: none; transition: opacity .3s; } .nav-mobile.open { opacity: 1; pointer-events: all; } .nav-mobile a { font-family: var(--font-display); font-size: clamp(2.5rem, 8vw, 4rem); font-weight: 900; text-transform: uppercase; text-decoration: none; color: var(--bt-ink); line-height: 1.1; letter-spacing: -.02em; margin-bottom: .5rem; display: block; } .nav-mobile a:hover { color: var(--bt-forest); } .nav-mobile .nav-mobile-cta { margin-top: var(--sp-md); font-family: var(--font-mono); font-size: 11px; letter-spacing: .3em; background: var(--bt-forest); color: var(--bt-white); padding: .85rem 2rem; text-transform: uppercase; } .nav-mobile-close { position: absolute; top: 1.5rem; right: 1.5rem; background: none; border: none; cursor: pointer; font-family: var(--font-mono); font-size: 10px; letter-spacing: .3em; text-transform: uppercase; color: rgba(28,28,26,.4); } /* ══════════════════════════════════════ BOTÕES ══════════════════════════════════════ */ .btn { display: inline-block; font-family: var(--font-mono); font-size: 10px; letter-spacing: .3em; text-transform: uppercase; text-decoration: none; cursor: pointer; border: none; transition: all .2s; } .btn-primary { background: var(--bt-forest); color: var(--bt-white); padding: .9rem 2.25rem; } .btn-primary:hover { background: var(--bt-forest-m); color: var(--bt-white); } .btn-secondary { background: transparent; color: var(--bt-ink); padding: .85rem 2.25rem; border: 1px solid rgba(28,28,26,.25); } .btn-secondary:hover { border-color: var(--bt-ink); } .btn-ghost { background: transparent; color: var(--bt-white); padding: .85rem 2.25rem; border: 1px solid rgba(245,242,238,.3); } .btn-ghost:hover { border-color: var(--bt-white); background: rgba(245,242,238,.06); } /* ══════════════════════════════════════ TIPOGRAFIA GLOBAL ══════════════════════════════════════ */ .eyebrow { font-family: var(--font-mono); font-size: 9px; letter-spacing: .45em; text-transform: uppercase; color: var(--bt-gold); display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; } .eyebrow::before { content: ''; display: inline-block; width: 2.5rem; height: 1px; background: var(--bt-gold); opacity: .7; flex-shrink: 0; } .display-title { font-family: var(--font-display); font-size: clamp(3.5rem, 9vw, 8rem); font-weight: 900; line-height: .88; letter-spacing: -.025em; text-transform: uppercase; color: var(--bt-forest); } .display-title .hi { color: var(--bt-gold); font-style: italic; } .display-title.on-dark { color: var(--bt-white); } .section-title { font-family: var(--font-display); font-size: clamp(2.5rem, 6vw, 5.5rem); font-weight: 900; line-height: .9; letter-spacing: -.02em; text-transform: uppercase; color: var(--bt-ink); } .section-title .hi { color: var(--bt-gold); font-style: italic; } .section-title .hi-green { color: var(--bt-forest); } .lead-text { font-family: var(--font-serif); font-size: 1.3rem; font-style: italic; line-height: 1.7; color: rgba(28,28,26,.65); max-width: 640px; } .lead-text.on-dark { color: rgba(245,242,238,.6); } p.body-text { font-family: var(--font-body); font-size: 1rem; line-height: 1.85; color: var(--bt-ink); margin-bottom: 1.4rem; } p.body-text:last-child { margin-bottom: 0; } .mono-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .4em; text-transform: uppercase; color: var(--bt-forest); } /* ══════════════════════════════════════ LAYOUT — SECÇÕES ══════════════════════════════════════ */ .section { padding: var(--sp-xl) var(--sp-md); position: relative; } .section-inner { max-width: var(--max-w); margin: 0 auto; } .section-cream { background: var(--bt-cream); } .section-forest { background: var(--bt-forest); color: var(--bt-white); } .section-dark { background: var(--dh-black); color: var(--bt-white); } .section-parch { background: var(--bt-parch); } /* Divisor de secção */ .section-rule { border: none; border-top: 1px solid rgba(28,28,26,.1); margin: var(--sp-lg) 0; } /* ── GRIDS ── */ .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-lg); align-items: start; } .grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-md); } .grid-asymmetric { display: grid; grid-template-columns: 1fr 1.6fr; gap: var(--sp-lg); align-items: start; } /* ── COLUNA CORPO ── */ .body-col { max-width: 660px; } .body-col-narrow { max-width: 520px; } /* ══════════════════════════════════════ COMPONENTES ══════════════════════════════════════ */ /* Callout */ .callout { padding: 1.75rem 2rem; margin: 2rem 0; border-left: 3px solid; } .callout.forest { border-color: var(--bt-forest); background: rgba(30,53,40,.05); } .callout.gold { border-color: var(--bt-gold); background: rgba(184,144,58,.06); } .callout-lbl { font-family: var(--font-mono); font-size: 9px; letter-spacing: .4em; text-transform: uppercase; display: block; margin-bottom: .75rem; opacity: .7; } .callout.forest .callout-lbl { color: var(--bt-forest); } .callout.gold .callout-lbl { color: var(--bt-gold); } /* Blockquote */ .bq { margin: 3rem 0; padding-left: 3rem; border-left: 1px solid var(--bt-forest); } .bq p { font-family: var(--font-serif); font-size: 1.65rem; font-style: italic; font-weight: 300; line-height: 1.45; color: var(--bt-ink); margin-bottom: .75rem; } .bq cite { font-family: var(--font-mono); font-size: 9px; letter-spacing: .3em; text-transform: uppercase; color: var(--bt-forest); opacity: .6; font-style: normal; } /* Cartão de fase / feature */ .phase-card { padding: var(--sp-md) 0; border-top: 1px solid rgba(28,28,26,.1); display: grid; grid-template-columns: 64px 1fr; gap: var(--sp-md); align-items: start; } .phase-card:last-child { border-bottom: 1px solid rgba(28,28,26,.1); } .phase-num { font-family: var(--font-display); font-size: 4.5rem; font-weight: 900; color: var(--bt-forest); opacity: .12; line-height: .9; letter-spacing: -.02em; text-transform: uppercase; } .phase-content {} .phase-title { font-family: var(--font-display); font-size: 1.4rem; font-weight: 900; text-transform: uppercase; letter-spacing: -.01em; color: var(--bt-forest); margin-bottom: .5rem; } .phase-desc { font-family: var(--font-body); font-size: .95rem; line-height: 1.8; color: rgba(28,28,26,.65); } .phase-deliverable { display: inline-flex; align-items: center; gap: .5rem; font-family: var(--font-mono); font-size: 8.5px; letter-spacing: .3em; text-transform: uppercase; color: var(--bt-gold); margin-top: .75rem; } .phase-deliverable::before { content: ''; width: 1.25rem; height: 1px; background: var(--bt-gold); opacity: .7; } /* Cartão de sinal / perfil */ .signal-card { background: var(--bt-white); border: 1px solid rgba(28,28,26,.08); padding: 2rem; position: relative; } .signal-card::after { content: ''; position: absolute; bottom: 0; left: 0; width: 3rem; height: 2px; background: var(--bt-gold); } .signal-card h4 { font-family: var(--font-display); font-size: 1.1rem; font-weight: 900; text-transform: uppercase; letter-spacing: -.01em; color: var(--bt-forest); margin-bottom: .75rem; } .signal-card p { font-family: var(--font-body); font-size: .9rem; line-height: 1.75; color: rgba(28,28,26,.6); } /* Bloco de estatística / destaque */ .stat-block { padding: var(--sp-md) 0; border-top: 1px solid rgba(28,28,26,.1); } .stat-num { font-family: var(--font-display); font-size: clamp(3rem, 6vw, 5rem); font-weight: 900; color: var(--bt-forest); line-height: .9; letter-spacing: -.03em; } .stat-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .35em; text-transform: uppercase; color: rgba(28,28,26,.45); margin-top: .6rem; display: block; } /* Banner DH connection */ .dh-banner { background: var(--dh-black); padding: var(--sp-lg) var(--sp-md); display: flex; align-items: center; justify-content: space-between; gap: var(--sp-md); flex-wrap: wrap; } .dh-banner-text { font-family: var(--font-body); font-size: .95rem; color: rgba(245,242,238,.45); max-width: 560px; line-height: 1.7; } .dh-banner-link { font-family: var(--font-mono); font-size: 10px; letter-spacing: .35em; text-transform: uppercase; color: var(--bt-white); text-decoration: none; border-bottom: 1px solid rgba(245,242,238,.2); padding-bottom: 2px; white-space: nowrap; transition: border-color .2s; } .dh-banner-link:hover { border-color: var(--bt-white); } /* ══════════════════════════════════════ FORMULÁRIO ══════════════════════════════════════ */ .form-group { margin-bottom: 1.75rem; } .form-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .4em; text-transform: uppercase; color: var(--bt-forest); display: block; margin-bottom: .6rem; } .form-label .required { color: var(--bt-gold); } .form-input, .form-textarea, .form-select { width: 100%; font-family: var(--font-body); font-size: .95rem; color: var(--bt-ink); background: var(--bt-white); border: 1px solid rgba(28,28,26,.2); padding: .9rem 1.1rem; outline: none; transition: border-color .2s; appearance: none; border-radius: 0; } .form-input:focus, .form-textarea:focus, .form-select:focus { border-color: var(--bt-forest); } .form-textarea { min-height: 130px; resize: vertical; line-height: 1.7; } .form-hint { font-family: var(--font-mono); font-size: 8.5px; letter-spacing: .25em; text-transform: uppercase; color: rgba(28,28,26,.35); margin-top: .5rem; display: block; } .form-submit { width: 100%; font-family: var(--font-mono); font-size: 11px; letter-spacing: .35em; text-transform: uppercase; background: var(--bt-forest); color: var(--bt-white); border: none; padding: 1.1rem 2rem; cursor: pointer; transition: background .2s; margin-top: .5rem; } .form-submit:hover { background: var(--bt-forest-m); } .form-success { display: none; padding: 2rem; background: rgba(30,53,40,.06); border-left: 3px solid var(--bt-forest); font-family: var(--font-body); font-size: .95rem; line-height: 1.7; color: var(--bt-forest); } /* ══════════════════════════════════════ RODAPÉ ══════════════════════════════════════ */ .footer { background: var(--bt-forest); padding: var(--sp-xl) var(--sp-md) var(--sp-md); color: rgba(245,242,238,.5); } .footer-inner { max-width: var(--max-w); margin: 0 auto; } .footer-top { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: var(--sp-lg); padding-bottom: var(--sp-lg); border-bottom: 1px solid rgba(245,242,238,.1); margin-bottom: var(--sp-md); } .footer-logo { font-family: var(--font-display); font-size: 2.5rem; font-weight: 900; color: var(--bt-white); text-transform: uppercase; letter-spacing: -.02em; line-height: .9; text-decoration: none; } .footer-logo span { color: var(--bt-gold); font-style: italic; } .footer-tagline { font-family: var(--font-serif); font-size: 1rem; font-style: italic; color: rgba(245,242,238,.4); margin-top: .75rem; line-height: 1.5; } .footer-nav-title { font-family: var(--font-mono); font-size: 8.5px; letter-spacing: .4em; text-transform: uppercase; color: rgba(245,242,238,.25); margin-bottom: 1.25rem; } .footer-nav-list { list-style: none; } .footer-nav-list li { margin-bottom: .65rem; } .footer-nav-list a { font-family: var(--font-body); font-size: .9rem; color: rgba(245,242,238,.5); text-decoration: none; transition: color .2s; } .footer-nav-list a:hover { color: var(--bt-white); } .footer-contact-item { font-family: var(--font-body); font-size: .9rem; color: rgba(245,242,238,.5); margin-bottom: .5rem; } .footer-contact-item a { text-decoration: none; color: rgba(245,242,238,.5); transition: color .2s; } .footer-contact-item a:hover { color: var(--bt-gold); } .footer-bottom { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; } .footer-legal { font-family: var(--font-mono); font-size: 8.5px; letter-spacing: .25em; text-transform: uppercase; color: rgba(245,242,238,.2); } .footer-dh-credit { font-family: var(--font-mono); font-size: 8.5px; letter-spacing: .25em; text-transform: uppercase; color: rgba(245,242,238,.2); } .footer-dh-credit a { color: rgba(245,242,238,.35); text-decoration: none; transition: color .2s; } .footer-dh-credit a:hover { color: rgba(245,242,238,.6); } /* ══════════════════════════════════════ ANIMAÇÕES ══════════════════════════════════════ */ .reveal { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; } .reveal.visible { opacity: 1; transform: none; } .reveal-delay-1 { transition-delay: .1s; } .reveal-delay-2 { transition-delay: .2s; } .reveal-delay-3 { transition-delay: .3s; } .reveal-delay-4 { transition-delay: .4s; } /* ══════════════════════════════════════ HERO ESPECÍFICO ══════════════════════════════════════ */ .hero { min-height: calc(100vh - var(--nav-h)); display: grid; grid-template-rows: 1fr auto; position: relative; overflow: hidden; padding: 0; } .hero::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse 70% 50% at 90% 10%, rgba(30,53,40,.04) 0%, transparent 60%), radial-gradient(ellipse 40% 60% at 5% 90%, rgba(184,144,58,.04) 0%, transparent 55%); pointer-events: none; } .hero-rule { position: absolute; top: 0; bottom: 0; left: clamp(2rem, 8%, 8rem); width: 1px; background: linear-gradient(180deg, transparent, rgba(30,53,40,.12) 20%, rgba(30,53,40,.12) 80%, transparent); } .hero-inner { position: relative; z-index: 2; padding: var(--sp-xl) var(--sp-md) var(--sp-lg); padding-left: clamp(var(--sp-md), calc(8% + 3rem), 10rem); display: flex; flex-direction: column; justify-content: flex-end; max-width: var(--max-w); width: 100%; margin: 0 auto; } .hero-eyebrow { font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .45em; text-transform: uppercase; color: var(--bt-gold); margin-bottom: 2.5rem; } .hero-title { font-family: var(--font-display); font-size: clamp(4.5rem, 12vw, 11rem); font-weight: 900; line-height: .88; letter-spacing: -.025em; color: var(--bt-forest); text-transform: uppercase; margin-bottom: 0; } .hero-title .hi { color: var(--bt-gold); font-style: italic; } .hero-sub { font-family: var(--font-body); font-size: 1rem; color: rgba(28,28,26,.5); margin-top: 2.5rem; max-width: 480px; line-height: 1.7; } .hero-actions { display: flex; gap: 1rem; margin-top: 2.5rem; flex-wrap: wrap; } .hero-footer { position: relative; z-index: 2; display: flex; justify-content: space-between; align-items: center; padding: 1.5rem var(--sp-md); padding-left: clamp(var(--sp-md), calc(8% + 3rem), 10rem); border-top: 1px solid rgba(28,28,26,.06); } .hero-footer-tag { font-family: var(--font-mono); font-size: 9px; letter-spacing: .3em; text-transform: uppercase; color: rgba(28,28,26,.25); } /* ══════════════════════════════════════ PAGE HEADER (páginas internas) ══════════════════════════════════════ */ .page-header { padding: var(--sp-xl) var(--sp-md) var(--sp-lg); padding-left: clamp(var(--sp-md), calc(8% + 3rem), 10rem); position: relative; overflow: hidden; min-height: 60vh; display: flex; flex-direction: column; justify-content: flex-end; } .page-header-rule { position: absolute; top: 0; bottom: 0; left: clamp(2rem, 8%, 8rem); width: 1px; background: linear-gradient(180deg, transparent, rgba(30,53,40,.1) 30%, rgba(30,53,40,.1) 70%, transparent); } .page-header-inner { position: relative; z-index: 2; } /* ══════════════════════════════════════ SECÇÃO INTRO / DOIS COLUMNS ══════════════════════════════════════ */ .intro-section { padding: var(--sp-xl) var(--sp-md); } .intro-grid { display: grid; grid-template-columns: 1fr 1.4fr; gap: var(--sp-xl); align-items: start; max-width: var(--max-w); margin: 0 auto; } /* ══════════════════════════════════════ RESPONSIVE ══════════════════════════════════════ */ @media (max-width: 900px) { :root { --sp-xl: 4rem; --sp-lg: 2.5rem; } .nav-links, .nav-cta { display: none; } .nav-hamburger { display: flex; } .nav-mobile { display: flex; } .grid-2, .grid-3, .grid-asymmetric, .intro-grid, .footer-top { grid-template-columns: 1fr; } .footer-top { gap: var(--sp-md); } .hero-inner { padding-left: var(--sp-md); } .hero-rule { display: none; } .page-header { padding-left: var(--sp-md); min-height: 45vh; } .page-header-rule { display: none; } } @media (max-width: 600px) { :root { --sp-xl: 3rem; --sp-lg: 2rem; } .hero-actions { flex-direction: column; align-items: flex-start; } .dh-banner { flex-direction: column; } .phase-card { grid-template-columns: 1fr; gap: .25rem; } .phase-num { font-size: 2.5rem; } .footer-bottom { flex-direction: column; align-items: flex-start; } .bq { padding-left: 1.5rem; } } /* ── UTILIDADES ── */ .mt-sm { margin-top: var(--sp-sm); } .mt-md { margin-top: var(--sp-md); } .mt-lg { margin-top: var(--sp-lg); } .mb-md { margin-bottom: var(--sp-md); } .mb-lg { margin-bottom: var(--sp-lg); } .text-center { text-align: center; } .text-gold { color: var(--bt-gold); } .text-forest { color: var(--bt-forest); } .text-muted { color: rgba(28,28,26,.5); } .on-dark { color: rgba(245,242,238,.6); } .on-dark strong { color: var(--bt-white); }