/* Camada visual compartilhada. O conteúdo continua visível sem JavaScript. */
:root {
  --glass-border: rgba(255, 255, 255, .82);
  --glass-shadow: 0 16px 45px -28px rgba(24, 64, 87, .28);
  --motion-ease: cubic-bezier(.22, 1, .36, 1);
}

/* Vidro claro, com reflexos discretos nas cores da identidade. */
.site-header {
  background: rgba(255, 255, 255, .79);
  border-bottom-color: rgba(203, 221, 230, .65);
  box-shadow: 0 5px 28px -22px rgba(20, 47, 67, .4);
  -webkit-backdrop-filter: blur(22px) saturate(145%);
  backdrop-filter: blur(22px) saturate(145%);
}
.brand img { mix-blend-mode: multiply; }
.mobile-nav {
  background: rgba(247, 252, 254, .97);
  -webkit-backdrop-filter: blur(22px);
  backdrop-filter: blur(22px);
}
.service-grid, .article-grid, .contact-cities { position: relative; isolation: isolate; }
.service-grid::before, .article-grid::before {
  content: '';
  position: absolute;
  inset: 8% 3% 6%;
  z-index: -1;
  pointer-events: none;
  background: radial-gradient(ellipse at 20% 30%, #cee7f2, transparent 57%), radial-gradient(ellipse at 88% 85%, #d9eaf1, transparent 60%);
  filter: blur(30px);
}
.service-grid .service-card,
.article-card,
.checklist,
.article-index,
.article-takeaway,
.contact-cities > a {
  background: linear-gradient(135deg, rgba(255, 255, 255, .79), rgba(231, 243, 249, .57));
  border: 1px solid var(--glass-border);
  border-radius: 14px;
  box-shadow: var(--glass-shadow), inset 0 1px 0 #fff, 0 0 0 1px rgba(58, 109, 137, .09);
  -webkit-backdrop-filter: blur(16px) saturate(125%);
  backdrop-filter: blur(16px) saturate(125%);
}
.service-grid .service-card {
  transition: transform .4s var(--motion-ease), border-color .4s, box-shadow .4s;
}
.service-grid .service-card:hover, .article-card:hover {
  border-color: rgba(158, 212, 235, .95);
  box-shadow: 0 23px 46px -27px rgba(26, 81, 112, .32), inset 0 1px 0 #fff;
}
.article-card { padding: 28px; transition: box-shadow .4s, border-color .4s; }
.article-card .text-link { padding-bottom: 0; }
.contact-cities > a { padding: 25px 48px 25px 24px; }
.contact-cities > a:hover { background: rgba(238, 248, 252, .9); }
.contact-cities > a > .icon { right: 22px; }
.article-index { padding: 25px; }
.article-checklist { background: rgba(238, 247, 251, .7); border-radius: 9px; padding: 21px 16px; }
.faq-list {
  background: linear-gradient(135deg, rgba(242, 249, 252, .8), rgba(255, 255, 255, .7));
  border: 1px solid rgba(214, 231, 239, .8);
  border-radius: 16px;
  padding: 8px 29px;
  box-shadow: inset 0 1px 0 #fff, var(--glass-shadow);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
}
.faq-item:first-child { border-top: 0; }
.faq-item:last-child { border-bottom: 0; }
.reviews-frame, .map-wrap {
  border-color: rgba(255, 255, 255, .88);
  border-radius: 16px;
  background: rgba(255, 255, 255, .56);
  box-shadow: var(--glass-shadow), 0 0 0 1px rgba(117, 165, 190, .12);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}
.map-wrap iframe { border-radius: 9px; }
.closing-section {
  background: radial-gradient(ellipse at 85% 25%, rgba(132, 202, 230, .3), transparent 48%), linear-gradient(120deg, #e7f2f6, #dbeaf1);
  box-shadow: inset 0 1px 0 #fff;
}
.portrait-caption {
  background: rgba(16, 42, 59, .83);
  border-top: 1px solid rgba(255, 255, 255, .25);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}
.menu-toggle { background: rgba(255, 255, 255, .65); border-color: rgba(153, 186, 203, .5); }

/* O azul-claro ilumina a borda; a base escura mantém o contraste do texto. */
.button, .floating-contact {
  --button-gradient: linear-gradient(110deg, #112b3e 0%, #265773 32%, #326680 53%, #173a50 78%, #112b3e 100%);
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background-image: var(--button-gradient), linear-gradient(120deg, #81cbea, #326680, #c0e7f7, #326680);
  background-origin: border-box;
  background-clip: padding-box, border-box;
  background-size: 260% 100%, 240% 100%;
  border: 1px solid transparent;
  border-radius: 7px;
  box-shadow: 0 7px 20px -13px rgba(26, 74, 99, .7), inset 0 1px 0 rgba(255, 255, 255, .12);
  animation: brand-gradient 8s ease-in-out infinite;
  transition: transform .35s var(--motion-ease), box-shadow .35s, color .25s;
}
.button::after, .floating-contact::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(108deg, transparent 30%, rgba(213, 241, 252, .17) 48%, transparent 64%);
  transform: translateX(-130%);
  animation: button-reflection 8s ease-in-out infinite;
}
.button-primary:hover, .button-primary:focus-visible {
  background-image: var(--button-gradient), linear-gradient(120deg, #81cbea, #326680, #c0e7f7, #326680);
  background-size: 260% 100%, 240% 100%;
  box-shadow: 0 12px 25px -13px rgba(26, 74, 99, .6), inset 0 1px 0 rgba(255, 255, 255, .22);
}
.button .icon { transition: transform .35s var(--motion-ease); }
.button:hover .icon { transform: translateX(3px); }
.button-secondary, .button-secondary:hover {
  --button-gradient: linear-gradient(110deg, rgba(255,255,255,.85), rgba(209,234,245,.7), rgba(247,252,254,.8), rgba(219,239,247,.74));
  background-image: var(--button-gradient), linear-gradient(120deg, #a0cbdc, #e9f8ff, #83bdd6);
  background-size: 260% 100%, 240% 100%;
  color: var(--navy);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
}
.philosophy .button-secondary, .process-section .button-secondary,
.philosophy .button-secondary:hover, .process-section .button-secondary:hover {
  --button-gradient: linear-gradient(110deg, #244e65, #326680, #163a50, #244e65);
  background-image: var(--button-gradient), linear-gradient(120deg, #6dcaee, #326680, #bde5f4);
  background-size: 260% 100%, 240% 100%;
  border-color: transparent;
  color: #fff;
}
.floating-contact {
  position: fixed;
  border-radius: 40px;
  animation: brand-gradient 8s ease-in-out infinite, contact-pulse 4.2s ease-out infinite;
}
.motion-offscreen, .motion-offscreen::after { animation-play-state: paused; }
@keyframes brand-gradient {
  0%, 100% { background-position: 0% 50%, 0% 50%; }
  50% { background-position: 100% 50%, 100% 50%; }
}
@keyframes button-reflection {
  0%, 62% { transform: translateX(-130%); }
  87%, 100% { transform: translateX(130%); }
}
@keyframes contact-pulse {
  0% {
    box-shadow: 0 0 0 0 rgba(109, 202, 238, .24), 0 7px 20px -13px rgba(26, 74, 99, .7), inset 0 1px 0 rgba(255, 255, 255, .12);
  }
  45%, 100% {
    box-shadow: 0 0 0 10px rgba(109, 202, 238, 0), 0 7px 20px -13px rgba(26, 74, 99, .7), inset 0 1px 0 rgba(255, 255, 255, .12);
  }
}

/* Linha do tempo: conteúdo semântico em sequência, com progresso por rolagem. */
section.consultation-timeline { scroll-margin-top: 0; }
.consultation-timeline {
  position: relative;
  background: radial-gradient(ellipse at 90% 20%, rgba(64, 133, 166, .2), transparent 47%), radial-gradient(ellipse at 20% 83%, rgba(53, 105, 138, .16), transparent 50%), var(--deep);
}
.timeline-layout { display: grid; grid-template-columns: .92fr 1.08fr; gap: 100px; align-items: start; }
.timeline-intro { position: sticky; top: 135px; padding-block: 12px; }
.timeline-intro h2 { font-size: clamp(35px, 3.1vw, 46px); line-height: 1.15; }
.timeline-description { color: #adc5d3; font-size: 14px; line-height: 1.8; margin-top: 25px; max-width: 400px; }
.timeline-counter { display: flex; gap: 22px; align-items: center; margin-top: 32px; color: #a8c8da; }
.timeline-counter > [data-timeline-current] { font: 400 65px/1 var(--serif); color: #a4def4; letter-spacing: -.06em; font-variant-numeric: tabular-nums; min-width: 69px; }
.timeline-counter-divider { width: 49px; height: 1px; background: rgba(163, 207, 230, .35); transform: rotate(-52deg); }
.timeline-counter > span:last-child { font-family: var(--serif); font-size: 28px; line-height: 1.1; }
.timeline-counter small { display: block; font: 400 9px/1.7 var(--sans); letter-spacing: .1em; text-transform: uppercase; margin-top: 7px; color: #91afc1; }
.timeline-index { display: grid; gap: 0; margin-block: 24px 30px; }
.timeline-index a { display: flex; align-items: baseline; gap: 15px; color: #a5bece; font-size: 11px; line-height: 1.6; padding: 9px 0; transition: color .3s; }
.timeline-index a > span { font-size: 9px; color: #84afc6; letter-spacing: .06em; }
.timeline-index a[aria-current="step"] { color: #fff; }
.timeline-index a[aria-current="step"] > span { color: #9bdffc; }
.timeline-index a:hover { color: #a8e2f8; }
.timeline-intro > .button { font-size: 12px; max-width: 100%; }
.timeline-track { --track-start: 26px; --track-height: calc(100% - 80px); --timeline-progress: 0; position: relative; list-style: none; padding: 0; margin: 0; }
.timeline-track::before, .timeline-track::after { content: ''; position: absolute; top: var(--track-start); left: 24px; width: 2px; height: var(--track-height); pointer-events: none; }
.timeline-track::before { background: rgba(135, 184, 212, .21); }
.timeline-track::after { background: linear-gradient(#97dff9, #55b9e1); transform: scaleY(var(--timeline-progress)); transform-origin: top; box-shadow: 0 0 16px rgba(97, 202, 246, .3); }
.timeline-step { position: relative; padding-left: 80px; padding-bottom: 66px; scroll-margin-top: 24px; }
.timeline-step:last-child { padding-bottom: 0; }
.timeline-node { position: absolute; left: 0; top: 0; z-index: 2; width: 50px; height: 50px; display: grid; place-items: center; border: 1px solid #49677a; border-radius: 50%; background: #17384c; color: #a2c0d1; font-size: 11px; font-weight: 500; transition: background .45s, color .45s, border-color .45s, box-shadow .45s; }
.timeline-node::after { content: ''; position: absolute; inset: -6px; border: 1px solid transparent; border-radius: 50%; transition: border-color .45s; }
.timeline-card { position: relative; padding: 31px 32px 35px; border: 1px solid rgba(182, 218, 238, .2); border-radius: 17px; background: linear-gradient(125deg, rgba(87, 136, 165, .19), rgba(40, 79, 104, .2)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .09), 0 20px 40px -30px #00101c80; -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); transition: opacity .65s var(--motion-ease), transform .8s var(--motion-ease), filter .65s var(--motion-ease), border-color .5s, box-shadow .5s; }
.timeline-card-top { display: flex; align-items: center; justify-content: space-between; color: #91c7e0; font-size: 9px; letter-spacing: .14em; text-transform: uppercase; margin-bottom: 21px; }
.timeline-card-top > .icon { width: 24px; height: 24px; stroke-width: 1.1; }
.timeline-card h3 { color: #fff; font-family: var(--serif); font-size: 29px; font-weight: 400; line-height: 1.2; margin-bottom: 20px; text-wrap: balance; }
.timeline-card p { color: #c2d4df; font-size: 14px; line-height: 1.85; }
.timeline-step.is-active .timeline-card { border-color: rgba(132, 211, 245, .61); box-shadow: inset 0 1px 0 rgba(210, 241, 255, .16), 0 15px 60px -35px rgba(105, 201, 244, .4); }
.timeline-step.is-active .timeline-node { color: #102e42; background: #a5def3; border-color: #c5efff; box-shadow: 0 0 23px #85d2f32b; }
.timeline-step.is-active .timeline-node::after { border-color: rgba(144, 214, 241, .45); animation: timeline-beacon 3s ease-in-out infinite; }
.timeline-step.is-complete .timeline-node { background: #244f67; border-color: #67adc9; color: #b7e6fa; }
.timeline-step.is-complete .timeline-card { border-color: rgba(128, 186, 216, .3); }
.is-enhanced .timeline-step.is-ahead .timeline-card { opacity: 0; transform: translateY(38px) scale(.985); filter: blur(5px); }
.is-enhanced .timeline-step.is-behind .timeline-card { opacity: 0; transform: translateY(-24px) scale(.985); filter: blur(4px); }
.is-enhanced .timeline-step:focus-within .timeline-card { opacity: 1; transform: none; filter: none; }
.consultation-timeline:not(.is-on-screen) .timeline-node::after { animation-play-state: paused; }
@keyframes timeline-beacon { 0%, 100% { opacity: .6; transform: scale(1); } 50% { opacity: .95; transform: scale(1.07); } }

@media (max-width: 1199px) {
  .timeline-layout { gap: 58px; }
  .timeline-intro { top: 117px; }
  .timeline-step { padding-left: 64px; padding-bottom: 48px; }
  .timeline-card { padding: 26px; }
  .timeline-card h3 { font-size: 26px; }
  .timeline-node { width: 44px; height: 44px; }
  .timeline-track::before, .timeline-track::after { left: 21px; }
  .timeline-counter { margin-top: 24px; }
}
@media (max-width: 1023px) {
  .timeline-layout { grid-template-columns: .92fr 1.08fr; gap: 34px; }
  .timeline-intro h2 { font-size: 34px; }
  .timeline-description { font-size: 13px; }
  .timeline-intro > .button { font-size: 11px; padding-inline: 16px; gap: 14px; }
  .timeline-step { padding-left: 56px; }
  .timeline-card { padding: 24px 21px; }
  .timeline-card h3 { font-size: 25px; }
  .timeline-card p { font-size: 13px; }
  .article-card { padding: 24px; }
}
@media (max-width: 767px) {
  .timeline-layout { display: block; }
  .timeline-intro { position: static; padding: 0; margin-bottom: 43px; }
  .timeline-intro h2 { font-size: 35px; }
  .timeline-description { margin-top: 22px; max-width: 480px; font-size: 14px; }
  .timeline-counter { margin-block: 27px; }
  .timeline-counter > [data-timeline-current] { font-size: 55px; min-width: 57px; }
  .timeline-index { display: none; }
  .timeline-intro > .button { font-size: 12px; }
  .timeline-step { padding-left: 55px; padding-bottom: 33px; scroll-margin-top: 12px; }
  .timeline-node { width: 36px; height: 36px; font-size: 10px; top: 1px; }
  .timeline-track::before, .timeline-track::after { left: 17px; }
  .timeline-node::after { inset: -5px; }
  .timeline-card { border-radius: 13px; padding: 24px 21px 27px; }
  .timeline-card-top { font-size: 9px; margin-bottom: 19px; }
  .timeline-card-top > .icon { width: 21px; height: 21px; }
  .timeline-card h3 { font-size: 26px; line-height: 1.2; margin-bottom: 17px; }
  .timeline-card p { font-size: 14px; line-height: 1.8; }
  .service-grid::before, .article-grid::before { filter: blur(20px); inset-inline: 7%; }
  .article-card { padding: 27px; }
  .faq-list { padding: 4px 21px; }
  .contact-cities { gap: 15px; }
  .contact-cities > a + a { border-top: 1px solid var(--glass-border); }
  .contact-cities > a { padding-left: 21px; }
  .article-index { padding: 24px; }
  .button { animation-duration: 10s; }
  .floating-contact { animation-duration: 10s, 4.2s; }
}
@media (max-width: 374px) {
  .timeline-step { padding-left: 45px; }
  .timeline-node { width: 30px; height: 30px; }
  .timeline-track::before, .timeline-track::after { left: 14px; }
  .timeline-card { padding: 22px 18px; }
  .timeline-card h3 { font-size: 24px; }
  .timeline-card p { font-size: 13px; }
}
@media (max-height: 740px) and (min-width: 768px) {
  .timeline-intro { position: static; }
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .site-header { background: #f7fbfd; }
  .service-grid .service-card, .article-card, .checklist, .faq-list { background: #f0f7fa; }
  .timeline-card { background: #1a3d52; }
}
@media (prefers-reduced-motion: reduce) {
  .button, .floating-contact, .button::after, .floating-contact::after, .timeline-node::after { animation: none !important; }
  .timeline-card, .timeline-node, .service-card, .article-card { transition: none !important; }
  .is-enhanced .timeline-step .timeline-card { opacity: 1; transform: none; filter: none; }
}
@media print {
  [data-reveal], .is-enhanced .timeline-step .timeline-card { opacity: 1 !important; transform: none !important; filter: none !important; }
  .timeline-layout { display: block; }
  .timeline-intro { position: static; }
  .timeline-index, .timeline-counter { display: none; }
  .consultation-timeline { background: #fff; }
  .timeline-card { background: #fff; box-shadow: none; border-color: #999; break-inside: avoid; }
  .timeline-card h3, .timeline-card p, .timeline-intro h2, .timeline-description { color: #222; }
  .timeline-step { padding-bottom: 20px; }
}
