/* ─────────────────────────────────────────────────────────────────────────
   CORTICEIRA ATAÍDE · main.css
   Palette (oklch): bark · suberina · vinho · sap
   Type: Marcellus (display) · Spectral (body/italic) · JetBrains Mono (UI)
   Layout: editorial grid, no cards, flowing rules, asymmetric rhythm
   ───────────────────────────────────────────────────────────────────────── */

:root {
  --bark: oklch(0.22 0.030 55);
  --bark-deep: oklch(0.15 0.025 50);
  --suberina: oklch(0.95 0.018 80);
  --suberina-2: oklch(0.91 0.022 75);
  --paper: oklch(0.97 0.012 85);
  --vinho: oklch(0.34 0.110 25);
  --vinho-soft: oklch(0.44 0.090 28);
  --sap: oklch(0.55 0.060 70);

  --rule: oklch(0.22 0.030 55 / 0.14);
  --rule-light: oklch(0.95 0.018 80 / 0.16);

  --display: 'Marcellus', 'Times New Roman', serif;
  --body: 'Spectral', Georgia, serif;
  --mono: 'JetBrains Mono', ui-monospace, monospace;

  --gut: clamp(18px, 2.4vw, 36px);
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: auto;
  -webkit-font-smoothing: antialiased;
}

body {
  font-family: var(--body);
  font-size: 17px;
  font-weight: 400;
  line-height: 1.6;
  color: var(--bark);
  background: var(--suberina);
  overflow-x: hidden;
}

img,
svg {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
  text-decoration: none;
}

button {
  font: inherit;
  color: inherit;
  background: none;
  border: 0;
  padding: 0;
}

::selection {
  background: var(--vinho);
  color: var(--suberina);
}

/* ── Typography primitives ─────────────────────────────────────────────── */

.eyebrow {
  font-family: var(--mono);
  font-size: 10.5px;
  font-weight: 400;
  letter-spacing: 0.24em;
  text-transform: uppercase;
}

.display {
  font-family: var(--display);
  font-weight: 400;
  letter-spacing: -0.018em;
  line-height: 0.92;
}

/* ── Top bar ────────────────────────────────────────────────────────────── */

.topbar {
  position: fixed;
  inset: 0 0 auto 0;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 22px;
  z-index: 50;
  background-color: #7b634d4b; 
  /*mix-blend-mode: difference (a navbar adapta-se as cores no layout mantendo a transparência e mudançad e cores)*/
}

/* Logo na navbar — imagem ou fallback texto */
.site-logo {
  display: flex;
  align-items: center;
  text-decoration: none;
  color: inherit;
}

.site-logo img {
  height: 32px;
  width: auto;
  display: block;
  /* difference blend inverte o logo sobre qualquer fundo */
  mix-blend-mode: difference;
  filter: brightness(10);
}

.topbar .mark {
  font-family: var(--display);
  font-size: 18px;
  letter-spacing: 0.02em;
  color: var(--suberina);
}

.topbar .mark span {
  font-style: italic;
  font-family: var(--body);
  opacity: 0.65;
}

/* Logo no footer */
.footer-logo-wrap {
  padding: clamp(40px, 6vh, 64px) var(--gut) 0;
}

.footer-logo-link {
  display: inline-flex;
  align-items: center;
}

.footer-logo {
  height: 40px;
  width: auto;
  display: block;
  /* Logo a branco sobre fundo escuro */
  filter: brightness(10);
  opacity: 0.85;
}

.topbar nav {
  display: flex;
  gap: 28px;
  justify-content: center;
}

.topbar nav a {
  color: var(--paper);
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  position: relative;
  padding-bottom: 2px;
  transition: opacity 0.2s;
}

/* Underline que cresce da esquerda */
.topbar nav a::after {
  content: '';
  position: absolute;
  inset: auto 0 -1px 0;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.35s var(--ease);
}

.topbar nav a:hover {
  opacity: 1;
}

.topbar nav a:hover::after {
  transform: scaleX(1);
}

.topbar .lang {
  display: flex;
  gap: 14px;
  justify-content: flex-end;
  align-items: center;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.18em;
  color: aliceblue;
  padding-right: 20px;
}

.topbar .lang button {
  opacity: 0.45;
  transition: opacity 0.2s;
}

.topbar .lang button.on,
.topbar .lang button:hover {
  opacity: 1;
}

/* ── Hero ───────────────────────────────────────────────────────────────── */

.hero {
  position: relative;
  min-height: 100vh;
  background: var(--bark-deep);
  color: var(--suberina);
  overflow: hidden;
  display: grid;
  grid-template-rows: 1fr auto;
}

.hero-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.hero-media img,
.hero-media video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.hero-media video {
  /* Vídeo sem controlos — puramente decorativo */
  pointer-events: none;
}

/* Dois gradientes sobrepostos para profundidade */
.hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(110% 75% at 50% 55%, transparent 35%, rgba(0, 0, 0, 0.6) 100%),
    linear-gradient(180deg, rgba(0, 0, 0, 0.4) 0%, transparent 28%, transparent 72%, rgba(0, 0, 0, 0.55) 100%);
  pointer-events: none;
}

.hero-inner {
  position: relative;
  z-index: 2;
  padding: 0 var(--gut) clamp(44px, 8vh, 96px);
  align-self: end;
}

.hero-kicker {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 24px;
  flex-wrap: wrap;
  margin-bottom: clamp(32px, 5.5vh, 64px);
}

.hero-kicker .meta {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.65;
  display: flex;
  gap: 28px;
  flex-wrap: wrap;
}

.hero-kicker .meta b {
  font-weight: 500;
  opacity: 1;
}

.hero-title {
  font-family: var(--display);
  font-size: clamp(72px, 17vw, 290px);
  line-height: 0.87;
  letter-spacing: -0.026em;
  margin: 0;
  overflow: visible;
  white-space: nowrap;
}

.hero-title .l1 {
  display: block;
}

.hero-title .l2 {
  display: block;
  font-style: italic;
  font-family: var(--body);
  font-weight: 300;
  font-size: 0.9em;
  /* padding-left em vez de text-indent — text-indent ignora spans inline-block */
  padding-left: 11vw;
  letter-spacing: -0.016em;
}

.hero-title .glyph {
  display: inline-block;
  will-change: transform;
}

.hero-foot {
  position: relative;
  z-index: 2;
  border-top: 1px;
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.hero-foot>div {
  padding: 18px var(--gut);
  border-left: 1px;
  display: flex;
  align-items: center;
  gap: 14px;
}

.hero-foot>div:first-child {
  border-left: 0;
}

.hero-foot .num {
  font-family: var(--display);
  font-size: 22px;
  letter-spacing: 0;
  text-transform: none;
}

.scroll-cue {
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--suberina);
  opacity: 0.6;
  margin-bottom: clamp(20px, 3vh, 40px);
}

.scroll-cue .line {
  width: 60px;
  height: 1px;
  background: var(--suberina);
  position: relative;
  overflow: hidden;
}

/* Bloco escuro que varre — cria ilusão de wipe */
.scroll-cue .line::after {
  content: '';
  position: absolute;
  left: -30px;
  top: 0;
  width: 30px;
  height: 100%;
  background: var(--bark-deep);
  animation: cue-sweep 2.6s infinite var(--ease);
}

@keyframes cue-sweep {
  0% {
    left: -30px;
  }

  100% {
    left: 60px;
  }
}

/* ── Manifest ───────────────────────────────────────────────────────────── */

.manifest {
  position: relative;
  background: var(--paper);
  padding: clamp(88px, 13vh, 168px) 0;
  overflow: hidden;
}

.manifest .stripe-eyebrow {
  display: flex;
  justify-content: space-between;
  padding: 0 var(--gut);
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--bark);
  opacity: 0.55;
  margin-bottom: clamp(64px, 10vh, 136px);
}

.manifest .pull {
  font-family: var(--display);
  font-size: clamp(36px, 5.8vw, 96px);
  line-height: 1.04;
  letter-spacing: -0.02em;
  padding: 0 var(--gut);
  max-width: 1500px;
  margin: 0 auto;
}

.manifest .pull em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  color: var(--vinho);
}

/* Dim toggled por JS — reveal palavra a palavra ao scroll */
.manifest .pull .word {
  display: inline-block;
}

.manifest .pull .word.dim {
  color: oklch(0.22 0.030 55 / 0.16);
  transition: color 0.7s var(--ease);
}

.manifest .col-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  border-top: 1px solid var(--rule);
  margin-top: clamp(88px, 13vh, 148px);
}

.manifest .col-row>div {
  padding: 40px var(--gut);
  border-left: 1px solid var(--rule);
}

.manifest .col-row>div:first-child {
  border-left: 0;
}

.manifest .col-row .n {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.5;
  margin-bottom: 20px;
}

.manifest .col-row h4 {
  font-family: var(--display);
  font-size: clamp(22px, 1.8vw, 30px);
  font-weight: 400;
  letter-spacing: -0.012em;
  margin: 0 0 14px;
}

.manifest .col-row p {
  margin: 0;
  font-size: 15.5px;
  opacity: 0.82;
  max-width: 36ch;
  line-height: 1.6;
}

/* ── Stopper — rolha pinned em scroll ──────────────────────────────────── */

.stopper {
  position: relative;
  background: var(--suberina-2);
  color: var(--bark);
  /* 480vh dá runway suficiente para a rotação 540° completa */
  height: 480vh;
}

.stopper-pin {
  position: sticky;
  top: 0;
  height: 100vh;
  display: grid;
  grid-template-columns: 1fr 1.1fr 1fr;
  align-items: center;
  overflow: hidden;
}

.stopper .sect-label {
  position: absolute;
  top: 28px;
  left: var(--gut);
  right: var(--gut);
  display: flex;
  justify-content: space-between;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.55;
}

.stopper .stage {
  position: relative;
  grid-column: 2;
  height: 100%;
  display: grid;
  place-items: center;
}

/* model-viewer ocupa toda a coluna central — fundo transparente para ver o suberina-2 */
#corkViewer {
  width: clamp(200px, 28vw, 400px);
  height: clamp(400px, 56vw, 800px);
  background: transparent;
  --poster-color: transparent;
}

.stopper .anno {
  position: relative;
  padding: 0 var(--gut);
  align-self: center;
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 0.85s var(--ease), transform 0.85s var(--ease);
}

.stopper .anno.show {
  opacity: 1;
  transform: translateY(0);
}

.stopper .anno .label {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.55;
  margin-bottom: 14px;
}

.stopper .anno h3 {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(26px, 2.6vw, 46px);
  line-height: 1.06;
  letter-spacing: -0.016em;
  margin: 0 0 18px;
}

.stopper .anno h3 em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
}

.stopper .anno p {
  margin: 0;
  max-width: 30ch;
  opacity: 0.82;
  font-size: 16px;
  line-height: 1.58;
}

.stopper .anno .stat {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin-top: 24px;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.stopper .anno .stat b {
  font-family: var(--display);
  font-size: 40px;
  letter-spacing: 0;
  text-transform: none;
  font-weight: 400;
}

.stopper .anno-left {
  grid-column: 1;
  text-align: right;
}

.stopper .anno-right {
  grid-column: 3;
  text-align: left;
}

/* Rail de progresso — preenche com vinho conforme o scroll */
.stopper-rail {
  position: absolute;
  top: 14vh;
  bottom: 14vh;
  right: 24px;
  width: 1px;
  background: var(--rule);
}

.stopper-rail::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 1px;
  height: var(--p, 0%);
  background: var(--vinho);
  transition: height 0.12s linear;
}

.stopper-rail .label {
  position: absolute;
  right: 10px;
  top: 0;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  opacity: 0.45;
}

/* ── Products ───────────────────────────────────────────────────────────── */

.products {
  background: var(--bark-deep);
  color: var(--suberina);
  padding: clamp(104px, 14vh, 168px) 0 64px;
  position: relative;
  overflow: hidden;
}

.products .head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  padding: 0 var(--gut);
  margin-bottom: clamp(64px, 9vh, 108px);
  align-items: end;
}

.products .head .eyebrow {
  opacity: 0.55;
}

.products .head h2 {
  font-family: var(--display);
  font-size: clamp(50px, 7.2vw, 128px);
  line-height: 0.9;
  letter-spacing: -0.022em;
  font-weight: 400;
  margin: 26px 0 0;
}

.products .head h2 em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  opacity: 0.65;
}

.products .head .right {
  font-size: 16px;
  opacity: 0.72;
  max-width: 38ch;
  justify-self: end;
  line-height: 1.6;
}

.prod {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) auto;
}

/* Homepage — só nome, sem desc e spec */
.prod.prod--teaser {
  grid-template-columns: 1fr;
  align-items: stretch;
  border-top: 1px solid var(--rule-light);
  position: relative;
  
  transition: background-color 0.5s;
}

.prod>* {
  padding: 28px var(--gut);
}

.prod .name {
  display: flex;
  align-items: center;
  font-family: var(--display);
  font-size: clamp(32px, 4.4vw, 76px);
  line-height: 1;
  letter-spacing: -0.016em;
}

.prod .name em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
}

.prod .name .arrow {
  font-size: 0.52em;
  opacity: 0;
  transform: translateX(-14px);
  transition: opacity 0.38s var(--ease), transform 0.38s var(--ease);
  margin-left: 20px;
}

.prod:hover .name .arrow {
  opacity: 1;
  transform: translateX(0);
}

.prod .desc {
  display: flex;
  align-items: center;
  font-size: 15px;
  opacity: 0.72;
  max-width: 42ch;
  line-height: 1.55;
}

.prod .spec {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.65;
}

.prod .spec span {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
  align-items: baseline;
}

.prod .spec b {
  font-weight: 500;
  opacity: 1;
  font-family: var(--display);
  font-size: 13px;
  letter-spacing: 0;
  text-transform: none;
  text-align: right;
  white-space: nowrap;
}

/* Imagem dentro do produto — apenas visível em mobile via accordion */
.prod-img { display: none; }

.prod-preview {
  position: fixed;
  pointer-events: none;
  z-index: 30;
  width: 280px;
  height: 360px;
  min-width: 280px;
  min-height: 360px;
  max-width: 280px;
  max-height: 360px;
  opacity: 0;
  transform: translate(-50%, -50%) scale(0.88);
  transition: opacity 0.32s var(--ease), transform 0.32s var(--ease);
  overflow: hidden;
  background: var(--bark);
}

#prodPreviewSvg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.prod-preview.show {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}

/* ── Process river ──────────────────────────────────────────────────────── */

.process {
  background: var(--paper);
  padding: clamp(200px, 14vh, 168px) 0;
  position: relative;
  overflow: hidden;
}

.process .head {
  padding: 0 var(--gut);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  align-items: end;
  margin-bottom: 64px;
}

.process .head h2 {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(50px, 7.2vw, 128px);
  line-height: 0.9;
  letter-spacing: -0.022em;
  margin: 26px 0 0;
}

.process .head h2 em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  color: var(--vinho);
}

.process .head .right {
  font-size: 16px;
  opacity: 0.78;
  max-width: 38ch;
  justify-self: end;
}

.process-river {
  position: relative;
  height: 1100px;
  margin: 0 var(--gut);
}

.process-river svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.process-river .step {
  position: absolute;
  width: 280px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 0.8s var(--ease), transform 0.8s var(--ease);
}

.process-river .step.show {
  opacity: 1;
  transform: none;
}

.process-river .step .num {
  font-family: var(--display);
  font-size: 62px;
  line-height: 1;
  color: var(--vinho);
  margin-bottom: 10px;
  font-weight: 400;
}

.process-river .step .title {
  font-family: var(--display);
  font-size: 24px;
  margin-bottom: 8px;
  letter-spacing: -0.012em;
}

.process-river .step .body {
  font-size: 14px;
  opacity: 0.72;
  line-height: 1.55;
  max-width: 28ch;
}

.process-river .dot {
  position: absolute;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--paper);
  border: 1.5px solid var(--vinho);
  transform: translate(-50%, -50%);
}

/* Fill interior anima ao ativar o dot */
.process-river .dot::after {
  content: '';
  position: absolute;
  inset: 3px;
  border-radius: 50%;
  background: var(--vinho);
  transform: scale(0);
  transition: transform 0.42s var(--ease);
}

.process-river .dot.on::after {
  transform: scale(1);
}

/* ── Sustain ────────────────────────────────────────────────────────────── */

.sustain {
  background: var(--vinho);
  color: var(--suberina);
  padding: clamp(104px, 14vh, 168px) 0;
  position: relative;
  overflow: hidden;
}

/* Camada de ruído SVG — data-URI leve, sem HTTP request extra */
.sustain .grain {
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence baseFrequency='0.85' numOctaves='2'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.25'/></svg>");
  opacity: 0.32;
  mix-blend-mode: overlay;
  pointer-events: none;
}

.sustain .pull {
  font-family: var(--display);
  font-size: clamp(40px, 6.2vw, 116px);
  line-height: 1;
  letter-spacing: -0.022em;
  padding: 0 var(--gut);
  position: relative;
}

.sustain .pull em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  color: var(--suberina);
  opacity: 0.68;
  display: block;
  padding-left: 14vw;
}

.sustain .stats {
  margin-top: clamp(64px, 9vh, 108px);
  border-top: 1px solid rgba(244, 235, 222, 0.22);
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}

.sustain .stats>div {
  padding: 40px var(--gut);
  border-left: 1px solid rgba(244, 235, 222, 0.18);
}

.sustain .stats>div:first-child {
  border-left: 0;
}

.sustain .stats .big {
  font-family: var(--display);
  font-size: clamp(48px, 5.2vw, 84px);
  line-height: 1;
  margin-bottom: 16px;
  letter-spacing: -0.022em;
}

.sustain .stats .big sup {
  font-size: 0.38em;
  opacity: 0.6;
  vertical-align: top;
  padding-left: 4px;
}

.sustain .stats .lbl {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.65;
}


/* ── Contact Page ───────────────────────────────────────────────────────── */

.form-section {
  background: var(--paper);
  padding: clamp(150px, 10vh, 130px) 0 clamp(80px, 12vh, 160px);
}

/* Layout 2 colunas: formulário + aside */
.form-grid {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: clamp(40px, 6vw, 100px);
  padding: 0 var(--gut);
  align-items: start;
}

/* Coluna esquerda — lead com headline e form */
.lead h2 {
  font-family: var(--display);
  font-weight: 500;
  font-size: clamp(48px, 6vw, 100px);
  line-height: 0.95;
  letter-spacing: -0.01em;
  margin: 0 0 30px;
}

.lead h2 em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 400;
  color: var(--vinho);
}

.lead p {
  font-size: 17px;
  opacity: 0.85;
  line-height: 1.55;
  max-width: 42ch;
  margin: 0 0 24px;
}

/* Progress de steps */
.steps {
  display: flex;
  gap: 32px;
  margin-bottom: 50px;
  border-top: 1px solid var(--rule);
  padding-top: 24px;
}

.step {
  font-family: var(--mono);
  font-size: 11px;
  opacity: 0.4;
  display: flex;
  align-items: center;
  gap: 10px;
  transition: opacity 0.4s;
}

.step .dot {
  width: 24px; height: 24px;
  border-radius: 50%;
  border: 1px solid currentColor;
  display: grid;
  place-items: center;
  font-family: var(--display);
  font-size: 12px;
}

.step.active { opacity: 1; color: var(--vinho); }
.step.done   { opacity: 0.8; }
.step.done .dot { background: var(--bark); color: var(--paper); border-color: var(--bark); }

/* Linhas do formulário — underline only, igual ao HTML de referência */
.row {
  border-bottom: 1px solid var(--rule);
  padding: 22px 0;
  display: grid;
  grid-template-columns: 140px 1fr;
  align-items: center;
  gap: 24px;
  transition: border-color 0.3s;
  position: relative;
}

.row:focus-within { border-bottom-color: var(--vinho); }

.row label {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.55;
}

.row input,
.row textarea {
  width: 100%;
  background: transparent;
  border: 0;
  outline: none;
  color: var(--bark);
  font-family: var(--body);
  font-size: 18px;
  padding: 0;
  resize: none;
  line-height: 1.5;
}

.row textarea { min-height: 80px; }
.row.tall { align-items: start; }
.row.tall label { padding-top: 6px; }

.row input::placeholder,
.row textarea::placeholder {
  color: oklch(0.22 0.03 55 / 0.35);
  font-style: italic;
}

/* Chips — botões de escolha segmentada */
.seg {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.seg button {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 10px 14px;
  border: 1px solid var(--rule);
  cursor: pointer;
  transition: background-color 0.25s, color 0.25s, border-color 0.25s;
  background: transparent;
  color: var(--bark);
}

.seg button:hover { border-color: var(--bark); }

.seg button.on,
.seg button.selected {
  background: var(--bark);
  color: var(--paper);
  border-color: var(--bark);
}

/* Slider de quantidade */
.quantity { display: grid; gap: 12px; }

.quantity .out {
  font-family: var(--display);
  font-size: 32px;
  letter-spacing: -0.01em;
  line-height: 1;
}

.quantity .out small {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.5;
  margin-left: 14px;
}

.quantity input[type=range] {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  background: transparent;
  height: 24px;
}

.quantity input[type=range]::-webkit-slider-runnable-track {
  height: 1px;
  background: var(--bark);
}

.quantity input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 16px; height: 16px;
  border-radius: 50%;
  background: var(--vinho);
  margin-top: -8px;
  box-shadow: 0 0 0 4px var(--paper), 0 0 0 5px var(--vinho);
  cursor: pointer;
}

.quantity .ticks {
  display: flex;
  justify-content: space-between;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.5;
}

/* Submit row */
.submit-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding-top: 36px;
  flex-wrap: wrap;
}

.submit {
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  display: inline-flex;
  align-items: center;
  gap: 18px;
  padding: 22px 32px;
  background: var(--bark);
  color: var(--paper);
  border: 0;
  cursor: pointer;
  transition: background-color 0.3s, transform 0.3s;
}

.submit:hover { background: var(--vinho); transform: translateX(4px); }

.privacy {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  opacity: 0.55;
  max-width: 36ch;
  line-height: 1.6;
}

/* Estado de sucesso */
.success[hidden] { display: none; }
.success {
  text-align: center;
  padding: 80px var(--gut);
}

.success h2 {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(50px, 7vw, 110px);
  letter-spacing: -0.025em;
  margin: 0 0 30px;
}

.success h2 em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  color: var(--vinho);
}

.success p { font-size: 17px; opacity: 0.85; max-width: 50ch; margin: 0 auto; line-height: 1.55; }

/* Aside — coluna direita sticky */
.aside {
  border-left: 1px solid var(--rule);
  padding-left: clamp(20px, 3vw, 50px);
  position: sticky;
  top: 100px;
}

.aside h3 {
  font-family: var(--display);
  font-weight: 400;
  font-size: 26px;
  letter-spacing: -0.01em;
  margin: 0 0 22px;
}

.aside dt {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.55;
  margin-bottom: 6px;
}

.aside dd {
  margin: 0 0 22px;
  font-size: 16px;
  line-height: 1.55;
  word-break: break-word;
  overflow-wrap: break-word;
}

.aside dd a { border-bottom: 1px solid var(--rule); }

/* Mapa — contentor com aspect-ratio fixo */
.contact-map {
  margin-top: 30px;
  aspect-ratio: 1.4 / 1;
  background: var(--bark-deep);
  overflow: hidden;
  position: relative;
}

.contact-map svg,
.contact-map iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* ── Footer partilhado ──────────────────────────────────────────────────── */

.site-footer {
  background: var(--bark-deep);
  color: var(--suberina);
  padding-bottom: clamp(24px, 4vh, 48px);
}

.giga {
  font-family: var(--display);
  font-size: clamp(120px, 28vw, 500px);
  line-height: 0.82;
  text-align: center;
  margin: 0;
  padding-top: clamp(40px, 6vh, 80px);
  letter-spacing: -0.04em;
  color: transparent;
  -webkit-text-stroke: 1px rgba(244, 235, 222, 0.5);
  user-select: none;
}

.giga em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  -webkit-text-stroke: 0;
  color: var(--suberina);
  display: block;
  font-size: 0.44em;
  opacity: 0.7;
  margin-top: -0.08em;
  letter-spacing: 0;
}

/* Corpo do footer: 3 colunas */
.footer-body {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0;
  border-top: 1px solid var(--rule-light);
  margin-top: clamp(40px, 6vh, 80px);
}

.footer-col {
  padding: 40px var(--gut);
  border-left: 1px solid var(--rule-light);
}

.footer-col:first-child { border-left: 0; }

.footer-label {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  opacity: 0.45;
  margin-bottom: 14px;
}

.footer-nav {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.footer-nav a {
  font-family: var(--body);
  font-size: 15px;
  opacity: 0.75;
  transition: opacity 0.2s;
}

.footer-nav a:hover { opacity: 1; }

.footer-col address {
  font-style: normal;
  font-size: 15px;
  line-height: 1.6;
  opacity: 0.75;
  margin-bottom: 28px;
}

.footer-col #footerPhone,
.footer-col #footerEmail,
.footer-col #footerCerts {
  font-size: 15px;
  line-height: 1.6;
  opacity: 0.75;
}

.footer-col #footerEmail a,
.footer-col #footerPhone a {
  color: var(--suberina);
  transition: opacity 0.2s;
}

.footer-col #footerEmail a:hover,
.footer-col #footerPhone a:hover { opacity: 0.6; }

.foot-bot {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 20px;
  padding: 22px var(--gut);
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  opacity: 0.45;
  border-top: 1px solid var(--rule-light);
}

.foot-bot div:nth-child(2) { text-align: center; }
.foot-bot div:nth-child(3) { text-align: right; }

/* ── Hours section ─────────────────────────────────────────────────────── */

.hours-section {
  background: var(--paper);
  color: var(--bark);
  padding: clamp(64px, 9vh, 112px) 0;
  border-top: 1px solid var(--rule);
}

.hours-eyebrow {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.45;
  padding: 0 var(--gut);
  margin-bottom: 20px;
  display: flex;
  justify-content: space-between;
}

.hours-title {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(28px, 3.8vw, 64px);
  letter-spacing: -0.018em;
  line-height: 1;
  margin: 0 0 clamp(48px, 7vh, 80px);
  padding: 0 var(--gut);
  text-align: center;
}

.hours-title em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  color: var(--vinho);
}

/* Grelha de 4 colunas — separadas por regras verticais */
.hours-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid var(--rule);
}

.hours-cell {
  padding: 28px var(--gut);
  border-left: 1px solid var(--rule);
}

.hours-cell:first-child { border-left: 0; }

.hours-cell .period {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.45;
  margin-bottom: 10px;
}

.hours-cell .time {
  font-family: var(--display);
  font-size: clamp(22px, 2.4vw, 38px);
  letter-spacing: -0.015em;
  line-height: 1;
}

/* Valores especiais em vinho (encerrado, com marcação) */
.hours-cell .time.special {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  color: var(--vinho);
  font-size: clamp(18px, 2vw, 30px);
}

@media (max-width: 880px) {
  .hours-grid { grid-template-columns: 1fr 1fr; }
  .hours-cell:nth-child(3) { border-left: 0; }
}

/* ── Eyebrow global — partilhado por todas as secções ──────────────────── */
/* Cobre .stripe-eyebrow onde quer que apareça fora de .manifest ou .contact */

.stripe-eyebrow {
  display: flex;
  justify-content: space-between;
  padding: 0 var(--gut);
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.55;
  margin-bottom: clamp(40px, 6vh, 80px);
}

/* Pull quote global — cobre secções fora de .manifest e .sustain */
.pull {
  font-family: var(--display);
  font-size: clamp(28px, 3.8vw, 64px);
  line-height: 1.04;
  letter-spacing: -0.02em;
  padding: 0 var(--gut);
  max-width: 1200px;
  margin: 0 auto clamp(40px, 6vh, 80px);
}

.pull em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  color: var(--vinho);
}

/* ── Contact Teaser (homepage — secção antes do footer) ─────────────────── */

.contact-teaser {
  background: var(--paper);
  color: var(--bark);
  padding: clamp(88px, 12vh, 148px) 0;
  position: relative;
}

.contact-teaser-inner {
  padding: 0 var(--gut);
  max-width: 900px;
}

.contact-teaser .eyebrow {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  opacity: 0.5;
  margin-bottom: 20px;
}

.contact-teaser-title {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(40px, 6vw, 100px);
  line-height: 0.95;
  letter-spacing: -0.025em;
  margin: 0 0 24px;
}

.contact-teaser-title em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  color: var(--vinho);
}

.contact-teaser-sub {
  font-size: 17px;
  opacity: 0.75;
  line-height: 1.6;
  max-width: 48ch;
  margin: 0 0 36px;
}

.contact-teaser-cta {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 14px 0;
  border-bottom: 1px solid var(--bark);
  transition: color 0.3s, border-color 0.3s;
}

.contact-teaser-cta:hover {
  color: var(--vinho);
  border-color: var(--vinho);
}

/* ── Empresa — eyebrows nas secções sem classe própria ──────────────────── */

.timeline-section .stripe-eyebrow,
.figures .stripe-eyebrow,
.portrait .stripe-eyebrow {
  color: var(--bark);
}

/* ── Page hero (partilhado por todas as páginas interiores) ─────────────── */

.page-hero {
  position: relative;
  min-height: 100vh;
  background: var(--bark-deep);
  color: var(--suberina);
  overflow: hidden;
  display: grid;
  grid-template-rows: 1fr auto;
}

.page-hero-inner {
  position: relative;
  z-index: 2;
  padding: 0 var(--gut) clamp(44px, 8vh, 96px);
  align-self: end;
}

.page-kicker {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 24px;
  flex-wrap: wrap;
  margin-bottom: clamp(32px, 5vh, 60px);
}

.page-kicker .meta {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.65;
  display: flex;
  gap: 28px;
  flex-wrap: wrap;
}

.page-kicker .meta b { font-weight: 500; opacity: 1; }

.page-title {
  font-family: var(--display);
  font-size: clamp(64px, 14vw, 240px);
  line-height: 0.88;
  letter-spacing: -0.026em;
  margin: 0;
  overflow: clip;
}

.page-title .l1 { display: block; }

.page-title .l2 {
  display: block;
  font-style: italic;
  font-family: var(--body);
  font-weight: 300;
  font-size: 0.9em;
  padding-left: 8vw;
  letter-spacing: -0.016em;
}

.page-title .glyph {
  display: inline-block;
  will-change: transform;
}

/* Stat strip igual ao hero da homepage */
.page-foot {
  position: relative;
  z-index: 2;
  border-top: 1px solid var(--rule-light);
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.page-foot > div {
  padding: 18px var(--gut);
  border-left: 1px solid var(--rule-light);
  display: flex;
  align-items: center;
  gap: 14px;
}

.page-foot > div:first-child { border-left: 0; }

.page-foot .num {
  font-family: var(--display);
  font-size: 22px;
  letter-spacing: 0;
  text-transform: none;
}

/* ── Navbar link activo ─────────────────────────────────────────────────── */

.topbar nav a.active { opacity: 1; }
.topbar nav a.active::after { transform: scaleX(1); }

/* ── Timeline (EmpresaPage) ─────────────────────────────────────────────── */

.timeline-section {
  background: var(--paper);
  padding: clamp(80px, 12vh, 160px) 0;
}

.timeline-pull {
  font-size: clamp(28px, 3.4vw, 56px);
  max-width: 1200px;
}

.tl-wrap {
  padding: 0 var(--gut);
  margin-top: clamp(40px, 6vh, 80px);
  border-top: 1px solid var(--rule);
}

.tl-row {
  display: grid;
  grid-template-columns: 200px 1fr 2fr;
  align-items: start;
  gap: 100px;
  padding: 36px 0;
  border-bottom: 1px solid var(--rule);
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.9s var(--ease), transform 0.9s var(--ease);
}

.tl-row.shown { opacity: 1; transform: none; }

.tl-row .year {
  font-family: var(--display);
  font-size: clamp(56px, 6vw, 96px);
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--vinho);
}

.tl-row .tl-head {
  font-family: var(--display);
  font-size: clamp(22px, 1.7vw, 28px);
  letter-spacing: -0.01em;
  line-height: 1.15;
}

.tl-row .tl-body {
  font-size: 16px;
  opacity: 0.85;
  line-height: 1.55;
  max-width: 60ch;
}

/* ── Portrait / Quote (EmpresaPage) ────────────────────────────────────── */

.portrait {
  background: var(--bark-deep);
  color: var(--suberina);
  padding: clamp(80px, 12vh, 160px) 0;
}

.portrait-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  padding: 0 var(--gut);
  gap: clamp(40px, 6vw, 100px);
  align-items: center;
}

.quote {
  font-family: var(--display);
  font-size: clamp(50px, 4vw, 64px);
  line-height: 1.05;
  letter-spacing: -0.02em;
  margin: 0;
  font-weight: 400;
  position: relative;
  padding-left: 0;  /* sem indent — guillemet é inline */
}

/* Guillemet decorativo inline antes do texto */
.quote::before {
  content: '\201C';
  font-family: var(--display);
  font-size: 1.6em;
  line-height: 0;
  vertical-align: -0.35em;
  margin-right: 8px;
  color: var(--vinho-soft);
}

.quote em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  opacity: 0.85;
}

/* Só os parágrafos de texto à direita — não a quote */
.portrait-grid > div > p {
  opacity: 0.85;
  line-height: 1.6;
  font-size: 17px;
  margin: 0 0 24px;
}

.portrait-grid > div > p:last-of-type { margin-bottom: 0; }

.who {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.6;
  margin-top: 36px;
}

.who b {
  font-family: var(--display);
  font-size: 17px;
  letter-spacing: 0;
  text-transform: none;
  opacity: 1;
  display: block;
  margin-bottom: 6px;
}

/* ── Figures (EmpresaPage) ──────────────────────────────────────────────── */

.figures {
  background: var(--suberina);
  padding: clamp(80px, 12vh, 160px) 0;
}

.fig-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  border-top: 1px solid var(--rule);
  margin-top: clamp(40px, 6vh, 80px);
}

.fig-cell {
  padding: 60px var(--gut);
  border-bottom: 1px solid var(--rule);
  border-left: 1px solid var(--rule);
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: end;
  gap: 30px;
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.9s var(--ease), transform 0.9s var(--ease);
}

.fig-cell.shown { opacity: 1; transform: none; }
.fig-cell:nth-child(odd) { border-left: 0; }

.fig-cell .fig-big {
  font-family: var(--display);
  font-size: clamp(80px, 11vw, 200px);
  line-height: 0.85;
  letter-spacing: -0.03em;
}

.fig-cell .fig-big sup {
  font-size: 0.35em;
  opacity: 0.5;
  vertical-align: top;
  padding-left: 4px;
  font-family: var(--body);
}

.fig-cell .fig-lbl {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.6;
  margin-bottom: 12px;
}

.fig-cell .fig-desc {
  font-size: 15px;
  opacity: 0.85;
  line-height: 1.5;
}

/* ── Prods section (RolhaPage) ──────────────────────────────────────────── */

.prods {
  background: var(--bark-deep);
  color: var(--suberina);
  padding: clamp(80px, 12vh, 140px) 0 60px;
}

.prods .head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 30px;
  padding: 0 var(--gut);
  margin-bottom: clamp(60px, 9vh, 100px);
  align-items: end;
}

.prods .head h2 {
  font-family: var(--display);
  font-size: clamp(50px, 7vw, 120px);
  line-height: 0.9;
  letter-spacing: -0.02em;
  margin: 24px 0 0;
  font-weight: 400;
}

.prods .head h2 em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  opacity: 0.7;
}

.prods .head .right {
  font-size: 16px;
  opacity: 0.78;
  max-width: 38ch;
  justify-self: end;
  line-height: 1.55;
}

/* ── Compare table (RolhaPage) — hardcoded ──────────────────────────────── */

.compare {
  background: var(--paper);
  padding: clamp(80px, 12vh, 140px) 0;
}

.compare-pull { font-size: clamp(28px, 3.4vw, 56px); max-width: 1100px; }

.compare-table {
  margin: clamp(40px, 6vh, 80px) var(--gut) 0;
  border-top: 1px solid var(--rule);
}

.compare-row {
  display: grid;
  grid-template-columns: 1.4fr repeat(7, 1fr);
  border-bottom: 1px solid var(--rule);
  align-items: center;
}

.compare-row > div {
  padding: 18px 14px;
  border-left: 1px solid var(--rule);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.compare-row > div:first-child {
  border-left: 0;
  font-family: var(--display);
  font-size: 14px;
  letter-spacing: 0;
  text-transform: none;
}

.compare-row.head > div {
  background: oklch(0.22 0.03 55 / 0.04);
  font-family: var(--display);
  font-size: 13px;
  letter-spacing: 0;
  text-transform: none;
}

.compare-row.head > div:first-child {
  font-family: var(--mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  opacity: 0.5;
}

.compare-row .y { color: var(--vinho); font-family: var(--display); font-size: 18px; letter-spacing: 0; text-transform: none; }
.compare-row .n { opacity: 0.25; font-family: var(--display); font-size: 18px; }

/* ── Apply grid (RolhaPage) ─────────────────────────────────────────────── */

.apply {
  background: var(--suberina-2);
  padding: clamp(80px, 12vh, 140px) 0;
}

.apply-pull { font-size: clamp(28px, 3.4vw, 56px); max-width: 1100px; }

.apply-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid var(--rule);
  margin-top: clamp(40px, 6vh, 80px);
}

.apply-cell {
  border-left: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  padding: 36px var(--gut);
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.9s var(--ease), transform 0.9s var(--ease);
}

.apply-cell.shown { opacity: 1; transform: none; }
.apply-cell:nth-child(4n+1) { border-left: 0; }

.apply-cell .apply-lbl {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.5;
}

.apply-cell h4 {
  font-family: var(--display);
  font-size: 26px;
  font-weight: 400;
  letter-spacing: -0.01em;
  margin: 12px 0 14px;
}

.apply-cell p { margin: 0; font-size: 15px; opacity: 0.8; line-height: 1.5; }

/* ── CTA (RolhaPage) ────────────────────────────────────────────────────── */

.rolha-cta {
  background: var(--suberina);
  padding: clamp(80px, 12vh, 140px) 0;
}

.rolha-cta > * { padding: 0 var(--gut); }

.rolha-cta h2 {
  font-family: var(--display);
  font-size: clamp(40px, 5vw, 88px);
  margin: 0 0 32px;
  letter-spacing: -0.02em;
  line-height: 1;
  font-weight: 400;
  max-width: 800px;
}

.rolha-cta h2 em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  color: var(--vinho);
}

.cta-right {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: end;
  padding: 0 var(--gut);
}

.cta-right p { opacity: 0.85; line-height: 1.55; margin: 0 0 24px; max-width: 36ch; }

.cta-link {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 14px 0;
  border-bottom: 1px solid var(--bark);
  transition: border-color 0.3s, color 0.3s;
}

.cta-link:hover { color: var(--vinho); border-color: var(--vinho); }

/* ── Vermanifesto (SustentabilidadePage) ────────────────────────────────── */

.vermanifesto {
  background: var(--vinho);
  color: var(--suberina);
  padding: clamp(80px, 12vh, 160px) 0;
  position: relative;
  overflow: hidden;
}

.vermanifesto .grain {
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence baseFrequency='0.85' numOctaves='2'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.25'/></svg>");
  opacity: 0.35;
  mix-blend-mode: overlay;
  pointer-events: none;
}

/* Eyebrow e pull herdam a cor branca do .vermanifesto */
.vermanifesto .stripe-eyebrow { opacity: 0.75; }
.vermanifesto .pull em { color: var(--suberina); opacity: 0.8; }

/* prods — fundo escuro, eyebrow e pull brancos */
.prods .stripe-eyebrow,
.prods .eyebrow { color: var(--suberina); opacity: 0.6; }

/* compare e apply — fundo claro, herdam --bark */

/* certs — fundo suberina-2, herdam --bark */

/* commits — fundo paper, herdam --bark */

/* ── Cycle (SustentabilidadePage) ───────────────────────────────────────── */

.cycle {
  background: var(--paper);
  padding: clamp(80px, 12vh, 160px) 0;
  overflow: hidden;
}

.cycle-pull { font-size: clamp(28px, 3.4vw, 56px); max-width: 1100px; }

.cycle-stage {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  padding: 0 var(--gut);
  margin-top: clamp(40px, 6vh, 80px);
  align-items: center;
  min-height: 540px;
}

.cycle-svg svg { width: 100%; height: auto; max-height: 540px; }

.cycle-info h3 {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(34px, 4vw, 64px);
  margin: 0 0 18px;
  letter-spacing: -0.02em;
  line-height: 1.05;
}

.cycle-info h3 em {
  font-family: var(--body);
  font-style: italic;
  font-weight: 300;
  color: var(--vinho);
}

.cycle-info p {
  font-size: 16px;
  opacity: 0.85;
  line-height: 1.6;
  max-width: 50ch;
  margin: 0 0 24px;
}

.cycle-controls {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 32px;
  border-top: 1px solid var(--rule);
  padding-top: 24px;
}

.cycle-controls button {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 12px 18px;
  border: 1px solid var(--rule);
  cursor: pointer;
  transition: background-color 0.3s, color 0.3s, border-color 0.3s;
}

.cycle-controls button.on {
  background: var(--bark);
  color: var(--suberina);
  border-color: var(--bark);
}

/* ── Impact stats (SustentabilidadePage) ────────────────────────────────── */

.impact {
  background: var(--bark-deep);
  color: var(--suberina);
  padding: clamp(80px, 12vh, 160px) 0;
}

.impact .stripe-eyebrow { color: var(--suberina); opacity: 0.6; }
.impact .pull { color: var(--suberina); }
.impact .pull em { color: var(--suberina); opacity: 0.7; }

.stat-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid rgba(244,235,222,0.20);
  margin-top: clamp(40px, 6vh, 80px);
}

.stat-grid > div {
  padding: 60px var(--gut);
  border-left: 1px solid rgba(244,235,222,0.16);
  border-bottom: 1px solid rgba(244,235,222,0.20);
  position: relative;
  overflow: hidden;
}

.stat-grid > div:nth-child(4n+1) { border-left: 0; }

.stat-grid .stat-lbl {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.55;
  margin-bottom: 24px;
}

.stat-grid .stat-big {
  font-family: var(--display);
  font-size: clamp(70px, 8vw, 140px);
  line-height: 0.85;
  letter-spacing: -0.03em;
  margin-bottom: 18px;
}

.stat-grid .stat-big sup {
  font-size: 0.32em;
  opacity: 0.55;
  vertical-align: top;
  padding-left: 4px;
  font-family: var(--body);
}

.stat-grid .stat-desc {
  font-size: 14.5px;
  opacity: 0.78;
  line-height: 1.5;
  max-width: 32ch;
}

/* ── Certs (SustentabilidadePage) ───────────────────────────────────────── */

.certs {
  background: var(--suberina-2);
  padding: clamp(80px, 12vh, 140px) 0;
}

.certs-pull { font-size: clamp(28px, 3.4vw, 56px); max-width: 1100px; }

.certs-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid var(--rule);
  margin-top: clamp(40px, 6vh, 80px);
}

.cert-cell {
  padding: 36px var(--gut);
  border-left: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.9s var(--ease), transform 0.9s var(--ease);
}

.cert-cell.shown { opacity: 1; transform: none; }
.cert-cell:nth-child(4n+1) { border-left: 0; }

.cert-seal {
  width: 64px; height: 64px;
  margin-bottom: 22px;
  border: 1.5px solid var(--bark);
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-family: var(--display);
  font-size: 22px;
}

.cert-cell h4 {
  font-family: var(--display);
  font-weight: 400;
  font-size: 22px;
  margin: 0 0 8px;
  letter-spacing: -0.01em;
}

.cert-cell p { font-size: 14px; opacity: 0.78; margin: 0; line-height: 1.5; max-width: 30ch; }

.cert-since {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.55;
  margin-top: 14px;
}

/* ── Commitments (SustentabilidadePage) ─────────────────────────────────── */

.commits {
  background: var(--paper);
  padding: clamp(80px, 12vh, 140px) 0;
}

.commits-pull { font-size: clamp(28px, 3.4vw, 56px); max-width: 1100px; }

.commits-list {
  margin: clamp(40px, 6vh, 80px) var(--gut) 0;
  border-top: 1px solid var(--rule);
}

.commit-row {
  display: grid;
  grid-template-columns: 1fr 220px;
  gap: 40px;
  padding: 36px 0;
  border-bottom: 1px solid var(--rule);
  align-items: start;
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.9s var(--ease), transform 0.9s var(--ease);
}

.commit-row.shown { opacity: 1; transform: none; }

.commit-row h4 {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(24px, 2.2vw, 36px);
  letter-spacing: -0.01em;
  margin: 0 0 10px;
}

.commit-row p { margin: 0; font-size: 16px; opacity: 0.85; max-width: 60ch; line-height: 1.55; }

.commit-target {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  opacity: 0.55;
  text-align: right;
}

.commit-target b {
  font-family: var(--display);
  font-size: 24px;
  letter-spacing: 0;
  text-transform: none;
  opacity: 1;
  display: block;
  margin-bottom: 4px;
}

/* ── Responsive (páginas interiores) ────────────────────────────────────── */

@media (max-width: 880px) {
  .page-foot { grid-template-columns: 1fr 1fr; }
  .page-foot > div:nth-child(3) { border-left: 0; }
  .tl-row { grid-template-columns: 1fr; gap: 16px; }
  .portrait-grid { grid-template-columns: 1fr; }
  .fig-grid { grid-template-columns: 1fr; }
  .fig-cell { border-left: 0; grid-template-columns: 1fr; }
  .prods .head { grid-template-columns: 1fr; }
  .compare-table { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .compare-row { grid-template-columns: 140px repeat(7, 72px); min-width: 650px; }
  .compare-row > div { padding: 14px 10px; font-size: 10px; }
  .apply-grid { grid-template-columns: 1fr; }
  .apply-cell { border-left: 0; }
  .cta-right { grid-template-columns: 1fr; }
  .cycle-stage { grid-template-columns: 1fr; }
  .stat-grid { grid-template-columns: 1fr 1fr; }
  .stat-grid > div { border-left: 0; }
  .certs-grid { grid-template-columns: 1fr 1fr; }
  .cert-cell { border-left: 0; }
  .commits-list .commit-row { grid-template-columns: 1fr; gap: 16px; }
  .commit-target { text-align: left; }
}

/* ── Focus (acessibilidade) ─────────────────────────────────────────────── */

:focus-visible {
  outline: 2px solid var(--vinho-soft);
  outline-offset: 3px;
}

/* ── Hamburger + Drawer — só existem em mobile, invisíveis no desktop ────── */

.nav-toggle { display: none; }

.mobile-drawer {
  position: fixed;
  inset: 0 0 0 auto;
  width: min(320px, 85vw);
  background: var(--bark-deep);
  color: var(--suberina);
  z-index: 60;
  display: flex;
  flex-direction: column;
  padding: 88px var(--gut) clamp(40px, 8vh, 72px);
  transform: translateX(100%);
  transition: transform 0.42s var(--ease);
  overflow-y: auto;
  visibility: hidden;
}

.mobile-drawer.open {
  transform: translateX(0);
  visibility: visible;
}

.mobile-drawer nav {
  display: flex;
  flex-direction: column;
  flex: 1;
}

.mobile-drawer nav a {
  font-family: var(--display);
  font-size: clamp(28px, 7vw, 40px);
  line-height: 1.1;
  letter-spacing: -0.015em;
  padding: 16px 0;
  border-bottom: 1px solid var(--rule-light);
  color: var(--suberina);
  opacity: 0.75;
  display: flex;
  align-items: center;
  min-height: 44px;
}

.mobile-drawer nav a:first-child { border-top: 1px solid var(--rule-light); }
.mobile-drawer nav a.active { opacity: 1; }

.drawer-lang {
  display: flex;
  gap: 20px;
  margin-top: 36px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.22em;
}

.drawer-lang button {
  opacity: 0.45;
  min-width: 44px;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.2s;
}

.drawer-lang button.on { opacity: 1; }

.drawer-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  z-index: 55;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s;
}

.drawer-backdrop.open {
  opacity: 1;
  pointer-events: auto;
}

/* ── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 880px) {
  body { cursor: auto; }

  .cursor,
  .cursor-trail { display: none; }

  /* Hamburger visível, nav + lang do topbar escondidos */
  .topbar { grid-template-columns: 1fr auto; padding: 16px var(--gut); }
  .topbar nav { display: none; }
  .topbar .lang { display: none; }

  .nav-toggle {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 44px;
    height: 44px;
    padding: 10px;
    cursor: pointer;
  }
  .nav-toggle span {
    display: block;
    width: 22px;
    height: 1.5px;
    background: var(--suberina);
    transition: transform 0.35s var(--ease), opacity 0.25s;
    transform-origin: center;
  }
  .nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

  /* Hero */
  .hero-title {
    white-space: normal;
    overflow: hidden;
    font-size: clamp(56px, 18vw, 120px);
  }
  .hero-title .l2 { padding-left: 6vw; }

  .hero-kicker .meta { font-size: 9px; gap: 12px; }

  .hero-foot {
    grid-template-columns: 1fr 1fr;
    font-size: 9px;
    letter-spacing: 0.12em;
  }
  .hero-foot > div { padding: 14px var(--gut); gap: 8px; }
  .hero-foot > div:nth-child(3) { border-left: 0; }
  .hero-foot > div:nth-child(n+3) { border-top: 1px solid var(--rule-light); }
  .hero-foot .num { font-size: 18px; }

  /* Manifest */
  .manifest .col-row { grid-template-columns: 1fr; }
  .manifest .col-row > div { border-left: 0; border-top: 1px solid var(--rule); }

  /* Stopper — rolha em cima, annos em baixo lado a lado */
  .stopper { height: auto; }

  .stopper-pin {
    position: relative;
    height: auto;
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto auto auto;
    align-items: start;
    overflow: visible;
  }

  .stopper .sect-label {
    position: relative;
    top: auto; left: auto; right: auto;
    grid-column: 1 / -1;
    grid-row: 1;
    padding: 20px var(--gut) 0;
  }

  /* stage vem a seguir ao eyebrow — anno-left reordenado para row 3 */
  .stopper .anno-left {
    grid-column: 1;
    grid-row: 3;
    order: 3;
  }

  .stopper .stage {
    grid-column: 1 / -1;
    grid-row: 2;
    order: 2;
    height: 65vw;
    min-height: 260px;
    max-height: 400px;
  }

  .stopper .stage #corkViewer {
    width: 100%;
    height: 100%;
  }

  .stopper .anno-left,
  .stopper .anno-right {
    grid-row: 3;
    opacity: 1;
    transform: none;
    transition: none;
    text-align: left;
    padding: clamp(20px, 4vh, 36px) var(--gut);
    border-top: 1px solid var(--rule);
  }
  .stopper .anno-left  { grid-column: 1; border-right: 1px solid var(--rule); }
  .stopper .anno-right { grid-column: 2; grid-row: 3; order: 4; }

  .stopper .anno h3   { font-size: clamp(16px, 4vw, 22px); margin-bottom: 10px; }
  .stopper .anno p    { font-size: 13px; line-height: 1.55; max-width: none; }
  .stopper .anno .stat {
    margin-top: 14px;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }
  .stopper .anno .stat b { font-size: clamp(26px, 6vw, 36px); }
  .stopper .anno .stat span { letter-spacing: 0.16em; line-height: 1.4; }

  .stopper-rail { display: none; }

  /* Products — accordion em mobile */
  .products .head { grid-template-columns: 1fr; }
  .prod { grid-template-columns: 1fr; cursor: pointer; }

  /* desc e spec escondidos por defeito — revelados ao abrir */
  .prod .desc, .prod .spec { display: none; }
  .prod.open .desc { display: flex; border-left: 0; border-top: 1px solid var(--rule-light); padding-top: 16px; font-size: 15px; }
  .prod.open .spec { display: flex; flex-direction: column; border-left: 0; border-top: 1px solid var(--rule-light); padding-top: 12px; padding-bottom: 8px; }

  /* Imagem dentro do accordion — aparece logo após o nome */
  .prod .prod-img {
    display: none;
  }
  .prod.open .prod-img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-top: 1px solid var(--rule-light);
  }

  /* Preview flutuante desactivado em mobile */
  .prod-preview { display: none; }

  /* Seta no nome indica estado aberto/fechado */
  .prod .name .arrow { opacity: 0.4; transform: none; transition: transform 0.3s var(--ease); }
  .prod.open .name .arrow { opacity: 1; transform: rotate(90deg); }

  /* Process river — lista vertical simples */
  .process .head { grid-template-columns: 1fr; }
  .process-river { height: auto; }
  .process-river svg { display: none; }
  .process-river .dot { display: none; }
  .process-river .step {
    position: relative;
    left: auto !important;
    top: auto !important;
    width: 100%;
    opacity: 1;
    transform: none;
    transition: none;
    padding: 28px 0;
    border-bottom: 1px solid var(--rule);
  }
  .process-river .step .num {
    font-size: 40px;
    margin-bottom: 6px;
  }
  .process-river .step .title {
    font-size: 20px;
    margin-bottom: 10px;
  }
  .process-river .step .body {
    font-size: 16px;
    line-height: 1.6;
    max-width: none;
    opacity: 0.82;
  }

  /* Sustain */
  .sustain .stats { grid-template-columns: 1fr 1fr; }

  /* Contact form */
  .form-grid { grid-template-columns: 1fr; }

  .lead h2 { font-size: clamp(32px, 9vw, 56px); }
  .lead p   { max-width: none; font-size: 15px; }

  .steps { gap: 16px; flex-wrap: wrap; margin-bottom: 32px; }
  .step  { font-size: 10px; gap: 8px; }
  .step .dot { width: 20px; height: 20px; font-size: 10px; }

  /* Rows de texto — label em cima, input em baixo */
  .row { display: flex; flex-direction: column; gap: 6px; padding: 16px 0; }
  .row input, .row textarea { font-size: 16px; width: 100%; }

  /* Slider de quantidade — garante largura total e ticks visíveis */
  .quantity { width: 100%; }
  .quantity input[type=range] { width: 100%; }
  .quantity .ticks { display: flex; overflow: hidden; }
  .quantity .ticks span { font-size: 8px; }

  /* Rows com chips — accordion: label é trigger, chips expandem */
  .row--chips {
    display: block;
    padding: 0;
    border-bottom: none;
  }
  .row--chips .row-trigger {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 18px 0;
    border-bottom: 1px solid var(--rule);
    cursor: pointer;
    min-height: 56px;
    transition: border-color 0.3s;
  }
  .row--chips .row-trigger label {
    pointer-events: none;
    font-family: var(--mono);
    font-size: 10px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    opacity: 0.55;
  }
  .row--chips .row-trigger .row-summary {
    font-family: var(--mono);
    font-size: 10px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    opacity: 0.6;
    color: var(--vinho);
    max-width: 55%;
    text-align: right;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .row--chips .row-trigger .row-arrow {
    font-size: 14px;
    opacity: 0.4;
    margin-left: 10px;
    transition: transform 0.3s var(--ease);
    flex-shrink: 0;
  }
  .row--chips.open .row-trigger { border-bottom-color: var(--vinho); }
  .row--chips.open .row-trigger .row-arrow { transform: rotate(180deg); }

  .row--chips .seg {
    display: none;
    flex-wrap: wrap;
    gap: 8px;
    padding: 14px 0 18px;
    border-bottom: 1px solid var(--rule);
  }
  .row--chips.open .seg { display: flex; }
  .seg button { min-height: 44px; font-size: 11px; padding: 10px 14px; }

  /* Submit */
  .submit-row { flex-direction: column; align-items: stretch; gap: 16px; }
  .submit { width: 100%; justify-content: center; min-height: 52px; }
  .privacy { font-size: 10px; max-width: 100%; }

  /* Aside abaixo do form */
  .aside {
    border-left: 0;
    border-top: 1px solid var(--rule);
    padding-left: 0;
    padding-top: clamp(32px, 5vh, 60px);
    position: static;
  }

  /* Footer */
  .footer-body { grid-template-columns: 1fr; }
  .footer-col { border-left: 0; border-top: 1px solid var(--rule-light); }
  .footer-col:first-child { border-top: 0; }
  .foot-bot { grid-template-columns: 1fr; gap: 6px; text-align: left; }
  .foot-bot div:nth-child(2), .foot-bot div:nth-child(3) { text-align: left; }
}