/* ECM Digital — site institucional
   Layout: dark hero with the funnel panel, then alternating paper/ink sections on a 12-col wrap.
   Signature: the blue square "period" from the ecm. logo closes every section title. */
/* Fontes hospedadas no próprio site (SIL Open Font License, ver assets/fonts) */
@font-face { font-family: "Archivo"; font-style: normal; font-display: swap; font-weight: 100 900; font-stretch: 62% 125%; src: url(../fonts/archivo-latin-wdth-normal.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Archivo"; font-style: normal; font-display: swap; font-weight: 100 900; font-stretch: 62% 125%; src: url(../fonts/archivo-latin-ext-wdth-normal.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Hanken Grotesk"; font-style: normal; font-display: swap; font-weight: 100 900; src: url(../fonts/hanken-grotesk-latin-wght-normal.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Hanken Grotesk"; font-style: normal; font-display: swap; font-weight: 100 900; src: url(../fonts/hanken-grotesk-latin-ext-wght-normal.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "JetBrains Mono"; font-style: normal; font-display: swap; font-weight: 500; src: url(../fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "JetBrains Mono"; font-style: normal; font-display: swap; font-weight: 600; src: url(../fonts/jetbrains-mono-latin-600-normal.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

:root {
  --ink: #09090A;
  --ink-2: #151518;
  --ink-3: #232328;
  --paper: #F4F4F4;
  --white: #FFFFFF;
  --blue: #1673B9;
  --blue-hi: #3A8DD0;
  --text: #16161A;
  --muted: #5F616A;
  --muted-dark: #9C9EA7;
  --line: #DDDDE2;
  --line-dark: #2A2B31;

  --display: "Archivo", "Arial Black", "Helvetica Neue", sans-serif;
  --body: "Hanken Grotesk", "Segoe UI", system-ui, -apple-system, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;

  --gutter: clamp(16px, 4vw, 40px);
  --maxw: 1200px;
  --section-y: clamp(72px, 10vw, 128px);
  color-scheme: light;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; background: var(--paper); color: var(--text); font: 400 17px/1.6 var(--body); -webkit-font-smoothing: antialiased; }
img, svg { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
:focus-visible { outline: 2px solid var(--blue-hi); outline-offset: 3px; border-radius: 2px; }
[hidden] { display: none !important; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.mono { font-family: var(--mono); font-weight: 500; letter-spacing: 0; }
.skip { position: absolute; left: 12px; top: -48px; background: var(--blue); color: var(--white); padding: 10px 14px; z-index: 50; text-decoration: none; }
.skip:focus { top: 12px; }

.wrap { width: 100%; max-width: calc(var(--maxw) + 2 * var(--gutter)); margin: 0 auto; padding-inline: var(--gutter); }

/* ---------- type ---------- */
.eyebrow { font: 600 12.5px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--blue); margin: 0 0 18px; display: flex; align-items: center; gap: 10px; }
.eyebrow::before { content: ""; width: 18px; height: 2px; background: currentColor; }
.eyebrow--dark { color: var(--blue-hi); }
.h2 { font-family: var(--display); font-stretch: 118%; font-weight: 800; font-size: clamp(2rem, 4.6vw, 3.6rem); line-height: 1.02; letter-spacing: -.025em; margin: 0; text-wrap: balance; }
.dot { display: inline-block; width: .2em; height: .2em; background: var(--blue); margin-left: .06em; vertical-align: baseline; }
.head { max-width: 760px; margin-bottom: clamp(40px, 6vw, 64px); }
.head__lead { font-size: clamp(1.02rem, 1.4vw, 1.15rem); color: var(--muted); margin: 20px 0 0; max-width: 60ch; }
.head--split { max-width: none; display: grid; grid-template-columns: 1.2fr 1fr; gap: 32px; align-items: end; }
.head--split .head__lead { margin: 0; }
@media (max-width: 820px) { .head--split { grid-template-columns: 1fr; } }

/* ---------- buttons ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; font: 600 16px/1 var(--body); padding: 16px 22px; border-radius: 2px; text-decoration: none; border: 1.5px solid transparent; cursor: pointer; transition: background .15s, color .15s, border-color .15s, transform .15s; }
.btn--blue { background: var(--blue); color: var(--white); }
.btn--blue:hover { background: #0F5F9C; }
.btn--blue::after { content: ""; width: 7px; height: 7px; background: currentColor; }
.btn--ghost { border-color: var(--line-dark); color: var(--paper); }
.btn--ghost:hover { border-color: var(--paper); }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: .6; cursor: default; }

/* ---------- header ---------- */
.top { position: sticky; top: 0; z-index: 30; background: rgba(9, 9, 10, .92); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-bottom: 1px solid var(--line-dark); padding-top: env(safe-area-inset-top, 0px); }
.top__in { display: flex; align-items: center; justify-content: space-between; height: 68px; }
.brand { color: var(--paper); display: block; }
.brand__logo { width: 84px; }
.nav__list { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 30px; }
.nav__list a { color: var(--muted-dark); text-decoration: none; font-size: 15px; font-weight: 500; transition: color .15s; }
.nav__list a:hover { color: var(--paper); }
.nav__list .nav__cta { color: var(--paper); border: 1.5px solid var(--blue); padding: 10px 14px; border-radius: 2px; }
.nav__list .nav__cta:hover { background: var(--blue); }
.nav__toggle { display: none; background: none; border: 0; width: 44px; height: 44px; padding: 12px 10px; cursor: pointer; flex-direction: column; justify-content: center; gap: 7px; }
.nav__toggle i { display: block; height: 2px; background: var(--paper); transition: transform .2s; }
.nav__toggle i:last-of-type { width: 60%; margin-left: auto; background: var(--blue-hi); }
@media (max-width: 860px) {
  .nav__toggle { display: flex; }
  .nav__list { position: absolute; left: 0; right: 0; top: 100%; flex-direction: column; align-items: stretch; gap: 0; background: var(--ink); border-bottom: 1px solid var(--line-dark); padding: 8px var(--gutter) 20px; display: none; }
  .nav__list.is-open { display: flex; }
  .nav__list li a { display: block; padding: 14px 0; border-bottom: 1px solid var(--line-dark); font-size: 17px; }
  .nav__list .nav__cta { margin-top: 16px; text-align: center; border-bottom: 1.5px solid var(--blue); }
  .nav__toggle[aria-expanded=true] i:nth-of-type(1) { transform: translateY(4.5px) rotate(45deg); }
  .nav__toggle[aria-expanded=true] i:last-of-type { width: 100%; margin-left: 0; background: var(--paper); transform: translateY(-4.5px) rotate(-45deg); }
}

/* ---------- hero ---------- */
.hero { background: var(--ink); color: var(--paper); padding-block: clamp(56px, 8vw, 104px) clamp(64px, 9vw, 120px); position: relative; overflow: hidden; }
.hero::after { content: ""; position: absolute; inset: auto 0 0 0; height: 6px; background: var(--blue); }
.hero__grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(40px, 6vw, 80px); align-items: center; }
.hero__title { font-family: var(--display); font-stretch: 122%; font-weight: 850; font-size: clamp(2.7rem, 6.6vw, 5.6rem); line-height: .96; letter-spacing: -.035em; margin: 0; text-wrap: balance; }
.hero__lead { font-size: clamp(1.05rem, 1.5vw, 1.22rem); color: #C9CAD0; max-width: 54ch; margin: 28px 0 0; }
.hero__ctas { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 36px; }
@media (max-width: 900px) { .hero__grid { grid-template-columns: 1fr; } }

/* funnel panel */
.funnel { margin: 0; background: var(--ink-2); border: 1px solid var(--line-dark); padding: clamp(20px, 3vw, 28px); min-width: 0; }
.funnel__cap { display: flex; justify-content: space-between; gap: 12px; font: 600 12px/1 var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--muted-dark); padding-bottom: 18px; border-bottom: 1px solid var(--line-dark); margin-bottom: 18px; }
.funnel__cap .mono { text-transform: none; letter-spacing: 0; color: #6F717A; }
.funnel__rows { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.funnel__rows li { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 48px; padding: 0 12px; }
.funnel__bar { position: absolute; left: 0; top: 0; bottom: 0; width: var(--w); background: linear-gradient(90deg, rgba(22, 115, 185, .55), rgba(22, 115, 185, .18)); border-left: 3px solid var(--blue); transform-origin: left; animation: grow .9s cubic-bezier(.2, .7, .2, 1) both; }
.funnel__rows li:nth-child(2) .funnel__bar { animation-delay: .08s; }
.funnel__rows li:nth-child(3) .funnel__bar { animation-delay: .16s; }
.funnel__rows li:nth-child(4) .funnel__bar { animation-delay: .24s; }
.funnel__rows li:nth-child(5) .funnel__bar { animation-delay: .32s; }
.funnel__rows li.is-end .funnel__bar { background: var(--blue); }
.funnel__rows b { position: relative; font: 700 15px/1.2 var(--body); color: var(--paper); }
.tags { position: relative; display: flex; gap: 6px; }
.tags em { font: 600 11.5px/1 var(--mono); font-style: normal; color: var(--paper); border: 1px solid #3A3B42; background: rgba(9, 9, 10, .6); padding: 6px 7px; }
.funnel__note { margin: 18px 0 0; font-size: 12px; color: #6F717A; }
@keyframes grow { from { transform: scaleX(.05); opacity: .4; } to { transform: scaleX(1); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .funnel__bar { animation: none; } }
@media (max-width: 420px) { .tags em:nth-child(2) { display: none; } }

/* ---------- platforms strip ---------- */
.stack { background: var(--white); border-bottom: 1px solid var(--line); }
.stack__in { display: flex; align-items: center; gap: 28px; padding-block: 26px; }
.stack__label { flex: none; font-size: 12.5px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
.stack__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px 28px; }
.stack__list li { font: 700 15px/1.3 var(--display); font-stretch: 110%; color: var(--text); letter-spacing: -.01em; }
@media (max-width: 700px) { .stack__in { flex-direction: column; align-items: flex-start; gap: 14px; } .stack__list { gap: 8px 20px; } }

/* ---------- sections ---------- */
.section { padding-block: var(--section-y); }
.section--ink { background: var(--ink); color: var(--paper); }
.section--ink .head__lead { color: #B9BAC1; }
.section--paper { background: var(--white); }

/* services */
.services { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--line); background: var(--white); }
.svc { padding: clamp(24px, 3vw, 36px); border-right: 1px solid var(--line); display: flex; flex-direction: column; min-width: 0; }
.svc:last-child { border-right: 0; }
.svc--feature { background: var(--ink); color: var(--paper); border-right-color: var(--ink); }
.svc__kicker { font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--blue); margin: 0 0 14px; }
.svc--feature .svc__kicker { color: var(--blue-hi); }
.svc__title { font: 800 clamp(1.5rem, 2.2vw, 1.85rem)/1.05 var(--display); font-stretch: 115%; letter-spacing: -.02em; margin: 0 0 14px; }
.svc__text { margin: 0 0 22px; color: var(--muted); }
.svc--feature .svc__text { color: #B9BAC1; }
.svc__list { list-style: none; margin: auto 0 0; padding: 18px 0 0; border-top: 1px solid var(--line); display: grid; gap: 10px; font-size: 15.5px; }
.svc--feature .svc__list { border-top-color: var(--line-dark); }
.svc__list li { display: grid; grid-template-columns: 7px 1fr; gap: 12px; align-items: baseline; }
.svc__list li::before { content: ""; width: 7px; height: 7px; background: var(--blue); transform: translateY(-1px); }
@media (max-width: 960px) {
  .services { grid-template-columns: 1fr; }
  .svc { border-right: 0; border-bottom: 1px solid var(--line); }
  .svc:last-child { border-bottom: 0; }
}

/* steps */
.steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); border-top: 1px solid var(--line-dark); }
.step { padding: 26px 22px 6px 0; position: relative; min-width: 0; }
.step + .step { padding-left: 22px; border-left: 1px solid var(--line-dark); }
.step::before { content: ""; position: absolute; top: -4px; left: 0; width: 7px; height: 7px; background: var(--blue); }
.step + .step::before { left: -4px; }
.step__n { display: block; color: var(--blue-hi); font-size: 13px; margin-bottom: 26px; }
.step__title { font: 800 1.35rem/1.1 var(--display); font-stretch: 112%; letter-spacing: -.015em; margin: 0 0 10px; }
.step p { margin: 0; color: #B9BAC1; font-size: 15.5px; }
@media (max-width: 1000px) {
  .steps { grid-template-columns: 1fr; border-top: 0; border-left: 1px solid var(--line-dark); }
  .step, .step + .step { padding: 0 0 30px 28px; border-left: 0; }
  .step::before, .step + .step::before { top: 4px; left: -4px; }
  .step__n { margin-bottom: 8px; }
}

/* promises */
.promises { margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; border-top: 2px solid var(--ink); }
.promise { padding: 26px 26px 32px 0; border-bottom: 1px solid var(--line); min-width: 0; }
.promise:not(:nth-child(3n + 1)) { padding-left: 26px; border-left: 1px solid var(--line); }
.promise dt { font: 800 1.2rem/1.2 var(--display); font-stretch: 110%; letter-spacing: -.01em; margin-bottom: 10px; }
.promise dd { margin: 0; color: var(--muted); font-size: 16px; }
@media (max-width: 900px) {
  .promises { grid-template-columns: 1fr 1fr; }
  .promise, .promise:not(:nth-child(3n + 1)) { padding: 24px 22px 28px 0; border-left: 0; }
  .promise:nth-child(2n) { padding-left: 22px; border-left: 1px solid var(--line); }
}
@media (max-width: 600px) {
  .promises { grid-template-columns: 1fr; }
  .promise, .promise:nth-child(2n) { padding: 22px 0 24px; border-left: 0; }
}

/* faq */
.faq { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr); gap: clamp(32px, 6vw, 80px); align-items: start; }
.faq .head { margin-bottom: 0; position: sticky; top: 100px; }
.faq__list { border-top: 2px solid var(--ink); }
.faq__list details { border-bottom: 1px solid var(--line); }
.faq__list summary { list-style: none; cursor: pointer; padding: 22px 44px 22px 0; position: relative; font: 700 1.12rem/1.35 var(--body); }
.faq__list summary::-webkit-details-marker { display: none; }
.faq__list summary::after { content: ""; position: absolute; right: 6px; top: 50%; width: 12px; height: 12px; margin-top: -6px; background: linear-gradient(var(--blue), var(--blue)) center/12px 2px no-repeat, linear-gradient(var(--blue), var(--blue)) center/2px 12px no-repeat; transition: transform .2s; }
.faq__list details[open] summary::after { transform: rotate(45deg); }
.faq__list details p { margin: -6px 0 24px; color: var(--muted); max-width: 62ch; }
@media (max-width: 860px) { .faq { grid-template-columns: 1fr; } .faq .head { position: static; } }

/* contact */
.contact__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: clamp(40px, 6vw, 80px); align-items: start; }
.contact__direct { list-style: none; margin: 36px 0 0; padding: 0; display: grid; gap: 0; border-top: 1px solid var(--line-dark); }
.contact__direct li { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 12px; padding: 16px 0; border-bottom: 1px solid var(--line-dark); align-items: baseline; }
.contact__direct .mono { font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--muted-dark); }
.contact__direct a { color: var(--paper); text-decoration: none; font-weight: 600; overflow-wrap: anywhere; }
.contact__direct a:hover { color: var(--blue-hi); }
@media (max-width: 900px) { .contact__grid { grid-template-columns: 1fr; } }
@media (max-width: 480px) { .contact__direct li { grid-template-columns: 1fr; gap: 4px; } }

.form { background: var(--ink-2); border: 1px solid var(--line-dark); padding: clamp(20px, 3vw, 32px); display: grid; grid-template-columns: 1fr 1fr; gap: 18px; min-width: 0; }
.field { display: grid; gap: 8px; min-width: 0; border: 0; margin: 0; padding: 0; }
.field--full, fieldset.field { grid-column: 1 / -1; }
.field label, .field legend { font: 600 12px/1.2 var(--mono); text-transform: uppercase; letter-spacing: .05em; color: var(--muted-dark); padding: 0; margin-bottom: 0; }
fieldset.field legend { margin-bottom: 8px; }
.opt { text-transform: none; letter-spacing: 0; color: #6F717A; font-weight: 500; }
.form input[type=text], .form select, .form textarea { width: 100%; min-width: 0; background: var(--ink); color: var(--paper); border: 1px solid #34353C; border-radius: 2px; padding: 13px 14px; font: 400 16px/1.4 var(--body); color-scheme: dark; }
.form textarea { resize: vertical; min-height: 92px; }
.form input:focus, .form select:focus, .form textarea:focus { outline: none; border-color: var(--blue-hi); box-shadow: 0 0 0 3px rgba(58, 141, 208, .25); }
.form [aria-invalid=true] { border-color: #E5604E !important; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chips label { position: relative; cursor: pointer; font: inherit; text-transform: none; letter-spacing: 0; color: inherit; }
.chips input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.chips span { display: inline-block; padding: 10px 14px; border: 1px solid #34353C; font: 500 15px/1 var(--body); color: #C9CAD0; transition: background .15s, border-color .15s, color .15s; }
.chips input:checked + span { background: var(--blue); border-color: var(--blue); color: var(--white); }
.chips input:focus-visible + span { outline: 2px solid var(--blue-hi); outline-offset: 2px; }
.form__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 18px; padding-top: 4px; }
.form__msg { margin: 0; font-size: 14.5px; color: var(--muted-dark); flex: 1 1 220px; }
.form__msg.is-err { color: #F08A7B; }
.form__msg.is-ok { color: #7FD1A4; }
@media (max-width: 560px) { .form { grid-template-columns: 1fr; } .form__foot .btn { width: 100%; } }

/* ---------- footer ---------- */
.foot { background: var(--ink); color: var(--muted-dark); border-top: 1px solid var(--line-dark); padding-block: 48px calc(40px + env(safe-area-inset-bottom, 0px)); }
.foot__grid { display: grid; grid-template-columns: auto 1fr auto; gap: 24px 48px; align-items: end; }
.foot__logo { width: 220px; }
.foot__info p { margin: 0; font-size: 14.5px; line-height: 1.7; }
.foot__info a { color: var(--paper); text-decoration: none; }
.foot__info a:hover { color: var(--blue-hi); }
.foot__copy { margin: 0; font-size: 12.5px; }
@media (max-width: 760px) { .foot__grid { grid-template-columns: 1fr; align-items: start; } .foot__logo { width: 180px; } }
