/* ============================================================
 * receita-brand.css
 * ------------------------------------------------------------
 * Layer 2 of the receita. design system. Loaded *after*
 * receita.css, which owns the token block and the app component
 * library. NEVER redeclare a token in this file.
 *
 *   § 01 · BRAND ........ wordmark, lockups, logo, AI disclosure
 *   § 02 · FURNITURE .... the editorial § system (sec-cab, rotulo, filete)
 *   § 03 · CARD ......... .receita-card — the signature element
 *   § 04 · APP CHROME ... page heads, heroes, splash, sidebar brand
 *   § 05 · LANDING ...... the public landing kit, scoped under .lp
 *
 * Scoping rule for § 05: the design source (design/receita.html)
 * styles bare `nav`, `section`, `footer` and `details` elements.
 * Those would wreck the authenticated app, which shares this
 * stylesheet — so every bare-element rule became a class, the
 * page-level ones were renamed `.lp-*`, and the generic ones
 * (.hero, .btn--filled, .faq, .stat__*) require an ancestor with
 * class `lp`. Put `class="lp"` on <body> of the landing template.
 * ============================================================ */


/* ============================================================
 * § 01 · BRAND
 * ============================================================ */

/* The red full stop — #A62A3A, the signature of the receita.
 * wordmark. Written as a real glyph in markup:
 *     receita<span class="ponto">.</span>
 * so it is selectable, copyable and read by assistive tech. */
.ponto {
  color: var(--filete);
  font-weight: 500;
  font-style: normal;
}


/* ---------- Logo mark ----------
 * Wraps the SVG (inline or <img>). The mark is drawn in Barro;
 * `color` is honoured by inline SVG that uses currentColor. */
.receita-logo {
  display: inline-block;
  width: 48px;
  height: 48px;
  color: var(--barro);
  flex-shrink: 0;
  line-height: 0;
}
.receita-logo svg,
.receita-logo img {
  display: block;
  width: 100%;
  height: 100%;
}

.receita-logo--sm { width: 26px;  height: 26px; }
.receita-logo--md { width: 48px;  height: 48px; }
.receita-logo--lg { width: 96px;  height: 96px; }
.receita-logo--xl { width: 160px; height: 160px; }

/* Reversed: for use on Barro, Barro escuro or Tinta grounds. */
.receita-logo--reversed { color: var(--bg); }


/* ---------- Wordmark ----------
 * Two accepted forms, and they must never double up:
 *   1. explicit  → <span class="receita-wordmark">receita<span class="ponto">.</span></span>
 *   2. text-only → <span class="receita-wordmark receita-wordmark--auto">receita</span>
 * The pseudo-dot lives only on the --auto modifier. */
.receita-wordmark {
  font-family: var(--display);
  font-weight: 400;
  font-size: 28px;
  letter-spacing: -0.01em;
  line-height: 1;
  color: var(--ink);
  display: inline-flex;
  align-items: baseline;
  text-decoration: none;
}
.receita-wordmark .ponto {
  color: var(--filete);
  font-weight: 500;
}
.receita-wordmark--auto::after {
  content: ".";
  color: var(--filete);
  font-weight: 500;
}

.receita-wordmark--xs      { font-size: 22px; }
.receita-wordmark--sm      { font-size: 28px; }
.receita-wordmark--md      { font-size: 40px; }
.receita-wordmark--lg      { font-size: 64px; }
.receita-wordmark--xl      { font-size: 96px; }
.receita-wordmark--display { font-size: 140px; }

/* On Barro / Tinta. The stop stays Filete — the family signal
 * is constant across every ground. */
.receita-wordmark--reversed { color: var(--bg); }


/* ---------- Lockup (mark + word + tag) ---------- */
.receita-lockup {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
}
.receita-stack {
  display: flex;
  flex-direction: column;
  line-height: 1;
  gap: 5px;
  min-width: 0;
}
.receita-name {
  font-family: var(--display);
  font-weight: 400;
  font-size: 24px;
  letter-spacing: -0.01em;
  line-height: 1;
  color: var(--ink);
  display: inline-flex;
  align-items: baseline;
}
.receita-name .ponto {
  color: var(--filete);
  font-weight: 500;
}
.receita-name--auto::after {
  content: ".";
  color: var(--filete);
  font-weight: 500;
}
.receita-tag {
  font-family: var(--mono);
  font-size: 9px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--muted);
}

.receita-lockup--sm .receita-logo { width: 22px; height: 22px; }
.receita-lockup--sm .receita-name { font-size: 19px; }
.receita-lockup--sm .receita-tag  { font-size: 8px; }

.receita-lockup--md .receita-logo { width: 32px; height: 32px; }
.receita-lockup--md .receita-name { font-size: 26px; }

.receita-lockup--lg .receita-logo { width: 56px; height: 56px; }
.receita-lockup--lg .receita-name { font-size: 44px; }
.receita-lockup--lg .receita-tag  { font-size: 10px; }

.receita-lockup--xl .receita-logo { width: 88px; height: 88px; }
.receita-lockup--xl .receita-name { font-size: 64px; }
.receita-lockup--xl .receita-tag  { font-size: 11px; }

/* Stacked vertical variant */
.receita-lockup--stacked {
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 14px;
}

/* Reversed lockup — on Barro / Tinta */
.receita-lockup--reversed .receita-logo { color: var(--bg); }
.receita-lockup--reversed .receita-name { color: var(--bg); }
.receita-lockup--reversed .receita-tag  { color: rgba(239, 235, 224, 0.7); }


/* ---------- App-icon tile ---------- */
.receita-tile {
  display: grid;
  place-items: center;
  border-radius: 24px;
  width: 132px;
  height: 132px;
}
.receita-tile .receita-logo { width: 70%; height: 70%; }
.receita-tile--sm { width: 56px;  height: 56px;  border-radius: 12px; }
.receita-tile--md { width: 96px;  height: 96px;  border-radius: 18px; }
.receita-tile--lg { width: 132px; height: 132px; border-radius: 24px; }

.receita-tile--papel { background: var(--bg);          border: 1px solid var(--line); }
.receita-tile--claro { background: var(--paper);       border: 1px solid var(--line); }
.receita-tile--barro { background: var(--barro); }
.receita-tile--barro .receita-logo { color: var(--bg); }
.receita-tile--tinta { background: var(--ink); }
.receita-tile--tinta .receita-logo { color: var(--bg); }
.receita-tile--filete { background: var(--filete); }
.receita-tile--filete .receita-logo { color: var(--bg); }


/* ---------- AI disclosure — required wherever the model's output is shown ----
 * Recipes, meal plans, nutrition estimates and chat answers are produced by an
 * LLM and that has to be said plainly. This is a quiet mono line, never an
 * alert box — the brand is serene and a scare banner would fight it.
 *
 *   <p class="ai-disclosure">Recipes on this site are generated by AI.</p>
 *   <p class="ai-disclosure ai-disclosure--inline">Sugestão gerada por IA</p>
 */
.ai-disclosure {
  font-family: var(--mono);
  font-size: 10.5px;
  line-height: 1.5;
  letter-spacing: 0.08em;
  color: var(--muted);
  margin: 10px 0 0;
  padding-left: 12px;
  position: relative;
}
.ai-disclosure::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.5em;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--filete);
}
.ai-disclosure a {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px solid var(--line-strong);
}
.ai-disclosure a:hover { color: var(--barro); border-bottom-color: var(--barro); }

/* Inside a card, next to the content it qualifies. */
.ai-disclosure--inline {
  margin-top: 12px;
  padding-top: 10px;
  padding-left: 12px;
  border-top: 1px solid var(--line);
  text-transform: uppercase;
  font-size: 9.5px;
  letter-spacing: 0.14em;
}
.ai-disclosure--inline::before { top: calc(10px + 0.45em); }


/* ============================================================
 * § 02 · EDITORIAL FURNITURE — the § system
 * Generalised from design/receita.html so app pages can use it.
 * ============================================================ */

/* Mono uppercase micro-label. Always Filete on a light ground. */
.rotulo {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--filete);
}

/* The family rule — a 60x6 Filete bar used as a section/card marker. */
.filete {
  display: block;
  width: 60px;
  height: 6px;
  background: var(--filete);
  border: 0;
  flex-shrink: 0;
}
.filete--inline { display: inline-block; vertical-align: middle; }
.filete--wide   { width: 96px; }
.filete--thin   { height: 3px; }

/* Section header grid: § number rail on the left, title block right. */
.sec-cab {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  margin-bottom: 56px;
}
.sec-num {
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.sec-num__hash { color: var(--filete); }
.sec-num__nome { color: var(--muted); }

.sec-titulo {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(38px, 6vw, 64px);
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--ink);
  max-width: 900px;
  margin: 0;
}
.sec-titulo em {
  color: var(--barro);
  font-style: italic;
}

.sec-intro {
  font-size: 18px;
  line-height: 1.55;
  color: var(--ink);
  max-width: 620px;
  margin-top: 12px;
}
.sec-intro em { color: var(--barro); font-style: italic; }

@media (min-width: 900px) {
  .sec-cab { grid-template-columns: 240px 1fr; gap: 64px; }
  .sec-cab .sec-num { align-self: start; padding-top: 8px; }
}

/* ---------- Inversion: the same furniture on a Barro / Tinta ground ----------
 * `.on-barro` paints the ground itself; `section.dark` and
 * `.lp-section.dark` are the landing's own dark blocks. */
.on-barro {
  background: var(--barro);
  color: var(--bg);
}
.on-tinta {
  background: var(--ink);
  color: var(--bg);
}

:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .sec-titulo {
  color: var(--bg);
}
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .sec-titulo em,
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .sec-intro em {
  color: var(--fervura);
}
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .sec-intro {
  color: rgba(239, 235, 224, 0.85);
}
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .rotulo {
  color: var(--fervura);
}
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .sec-num__nome {
  color: rgba(239, 235, 224, 0.5);
}
/* Hairlines go to --linha-barro; the Filete marker keeps its colour. */
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) hr,
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .sec-cab,
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .regua {
  border-color: var(--linha-barro);
}
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .ai-disclosure {
  color: rgba(239, 235, 224, 0.6);
}
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .ai-disclosure a {
  border-bottom-color: var(--linha-barro);
}
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .ai-disclosure a:hover {
  color: var(--fervura);
  border-bottom-color: var(--fervura);
}
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .receita-wordmark,
:is(.on-barro, .on-tinta, section.dark, .lp-section.dark, .cta-final, .lp-footer) .receita-name {
  color: var(--bg);
}


/* ============================================================
 * § 03 · THE RECEITA CARD — the signature element
 * Spec: design brief § 06 + contract § 4.
 * Not scoped to .lp: the same class is available anywhere a
 * recipe is the subject.
 * ============================================================ */
.receita-card {
  position: relative;
  background: var(--bg);          /* papel — contrasts against a Barro hero */
  color: var(--ink);
  padding: 32px;
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: var(--r-md);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
  transform: rotate(-1deg);
}
.receita-card::before {
  content: "";
  position: absolute;
  top: -12px;
  left: 24px;
  width: 60px;
  height: 6px;
  background: var(--filete);
}

/* In-app variant: a tilted, shadowed card would be wrong beside
 * the rest of the UI, so drop the theatre and keep the anatomy. */
.receita-card--flat {
  transform: none;
  box-shadow: none;
  background: var(--paper);
  border-color: var(--line);
}
.receita-card--flat::before {
  top: 0;
  left: 0;
}

.receita-card__head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  padding-bottom: 12px;
  margin-bottom: 20px;
  border-bottom: 1px solid var(--line);
}
.receita-card__rotulo {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--filete);
}
.receita-card__meta {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.06em;
  color: var(--muted);
  white-space: nowrap;
}
.receita-card__titulo {
  font-family: var(--display);
  font-weight: 400;
  font-size: 34px;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--ink);
  margin: 0 0 12px;
}
.receita-card__titulo em { color: var(--barro); font-style: italic; }
.receita-card__descricao {
  font-family: var(--display);
  font-style: italic;
  font-size: 14px;
  line-height: 1.5;
  color: var(--muted);
  margin: 0 0 20px;
}
.receita-card__seccao { margin-bottom: 16px; }
.receita-card__seccao h4,
.receita-card__seccao-titulo {
  display: block;
  font-family: var(--mono);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--barro);
  margin: 0 0 8px;
}
.receita-card__ingredientes {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px 16px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--ink);
}
.receita-card__ingredientes li {
  position: relative;
  padding-left: 12px;
}
.receita-card__ingredientes li::before {
  content: "\00B7";
  position: absolute;
  left: 2px;
  color: var(--filete);
  font-weight: bold;
}
.receita-card__footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding-top: 16px;
  margin-top: 16px;
  border-top: 1px solid var(--line);
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.06em;
  color: var(--muted);
}
.receita-card__badge {
  background: rgba(139, 68, 35, 0.08);   /* Barro @ 8% */
  color: var(--barro);
  padding: 3px 8px;
  border-radius: var(--r-lg);
  font-weight: 500;
  white-space: nowrap;
}


/* ============================================================
 * § 04 · APP CHROME — page heads, heroes, splash, sidebar brand
 * Carried over from the previous system and repainted in Barro.
 * ============================================================ */

/* ---------- Editorial page header ---------- */
.brand-pageheader {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 32px;
}
.brand-pageheader .left { flex: 1; min-width: 0; }
.brand-pageheader .eyebrow { margin-bottom: 6px; }
.brand-pageheader h1 {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(34px, 5vw, 52px);
  line-height: 1;
  margin: 0;
  letter-spacing: -0.02em;
}
.brand-pageheader h1 em { font-style: italic; color: var(--barro); }
.brand-pageheader .sub {
  color: var(--muted);
  margin: 12px 0 0;
  max-width: 520px;
  line-height: 1.55;
}
.brand-pageheader .actions { display: flex; gap: 8px; flex-shrink: 0; }

/* ---------- Section header between content blocks ---------- */
.brand-sectionhead {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  margin: 56px 0 18px;
}
.brand-sectionhead h2 {
  font-family: var(--display);
  font-weight: 400;
  font-size: 28px;
  line-height: 1;
  margin: 0;
  letter-spacing: -0.01em;
}
.brand-sectionhead h2 em { font-style: italic; color: var(--barro); }
.brand-sectionhead .meta {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--muted);
}

/* ---------- Card header inside .card ---------- */
.brand-cardhead {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 18px 22px 0;
}
.brand-cardhead .eyebrow { margin-bottom: 4px; display: block; }
.brand-cardhead h3 {
  font-family: var(--display);
  font-weight: 400;
  font-size: 22px;
  line-height: 1.05;
  margin: 0;
}

/* ---------- In-app hero block ---------- */
.brand-hero {
  position: relative;
  background: var(--papel-barro);
  border-radius: var(--r-xl);
  border: 1px solid var(--line);
  padding: 72px 56px 64px;
  overflow: hidden;
  isolation: isolate;
}
.brand-hero__eyebrow {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--filete);
  margin-bottom: 18px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.brand-hero__eyebrow::before {
  content: "";
  width: 24px;
  height: 1px;
  background: var(--filete);
}
.brand-hero__title {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(48px, 7vw, 96px);
  line-height: 0.98;
  letter-spacing: -0.03em;
  margin: 0;
  max-width: 14ch;
}
.brand-hero__title em { font-style: italic; color: var(--barro); }
.brand-hero__sub {
  font-size: 18px;
  line-height: 1.55;
  color: var(--ink-2);
  max-width: 560px;
  margin: 28px 0 36px;
}
.brand-hero__actions { display: flex; gap: 10px; flex-wrap: wrap; }

/* Decorative mark in the corner */
.brand-hero__mark {
  position: absolute;
  bottom: -64px;
  right: -64px;
  width: 380px;
  height: 380px;
  color: var(--barro);
  opacity: 0.06;
  z-index: -1;
  pointer-events: none;
}
.brand-hero__mark svg,
.brand-hero__mark img { width: 100%; height: 100%; }

/* Barro hero — the canonical warm surface */
.brand-hero--barro {
  background: var(--barro);
  border-color: var(--barro);
  color: var(--bg);
}
.brand-hero--barro .brand-hero__title    { color: var(--bg); }
.brand-hero--barro .brand-hero__title em { color: var(--fervura); }
.brand-hero--barro .brand-hero__sub      { color: rgba(239, 235, 224, 0.85); }
.brand-hero--barro .brand-hero__eyebrow  { color: var(--fervura); }
.brand-hero--barro .brand-hero__eyebrow::before { background: var(--filete); }
.brand-hero--barro .brand-hero__mark     { color: var(--bg); opacity: 0.1; }

/* Tinta hero — splash / dark CTA */
.brand-hero--reversed {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--bg);
}
.brand-hero--reversed .brand-hero__title    { color: var(--bg); }
.brand-hero--reversed .brand-hero__title em { color: var(--fervura); }
.brand-hero--reversed .brand-hero__sub      { color: rgba(239, 235, 224, 0.78); }
.brand-hero--reversed .brand-hero__eyebrow  { color: var(--fervura); }
.brand-hero--reversed .brand-hero__eyebrow::before { background: var(--filete); }
.brand-hero--reversed .brand-hero__mark     { color: var(--bg); opacity: 0.08; }

.brand-hero--compact { padding: 48px 40px; }
.brand-hero--compact .brand-hero__title { font-size: clamp(34px, 5vw, 56px); }
.brand-hero--compact .brand-hero__sub   { font-size: 15px; margin: 16px 0 22px; }
.brand-hero--compact .brand-hero__mark  { width: 240px; height: 240px; bottom: -40px; right: -40px; }

.brand-hero--centered { text-align: center; padding: 120px 40px; }
.brand-hero--centered .brand-hero__title   { margin-left: auto; margin-right: auto; max-width: none; }
.brand-hero--centered .brand-hero__sub     { margin-left: auto; margin-right: auto; }
.brand-hero--centered .brand-hero__actions { justify-content: center; }
.brand-hero--centered .brand-hero__lockup  { margin-bottom: 32px; }

/* ---------- Legacy in-app photo hero ----------
 * Used by the authenticated recipe generator. Kept so existing
 * markup does not break; the landing hero (§ 05) overrides every
 * property of this rule inside `.lp`. */
.hero {
  position: relative;
  border-radius: var(--r-xl);
  overflow: hidden;
  color: var(--bg);
  background: var(--barro);
  padding: 64px 56px 56px;
  margin-bottom: 40px;
  min-height: 460px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.hero .eyebrow { color: var(--fervura); display: inline-flex; align-items: center; gap: 8px; }
.hero .eyebrow::before { content: ""; width: 24px; height: 1px; background: var(--filete); }
/* `:not([class])` keeps this off the landing's `.hero__titulo`, which
   would otherwise lose on specificity to a bare `.hero h1`. */
.hero h1:not([class]) {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(48px, 7vw, 84px);
  line-height: 1.02;
  margin: 12px 0 14px;
  max-width: 760px;
  color: var(--bg);
  letter-spacing: -0.02em;
}
.hero h1:not([class]) em { font-style: italic; color: var(--fervura); }
.hero .sub {
  color: rgba(239, 235, 224, 0.85);
  max-width: 540px;
  font-size: 16px;
  line-height: 1.55;
  margin: 0 0 28px;
}
.hero .receita-lockup { color: rgba(239, 235, 224, 0.9); margin-bottom: 18px; }
.hero .receita-lockup .receita-name { color: var(--bg); }
.hero .receita-lockup .receita-tag  { color: rgba(239, 235, 224, 0.6); }
.hero .receita-logo { color: var(--bg); }

/* Generator form — papel bar over the Barro hero. */
.gen-form {
  background: var(--bg);
  color: var(--ink);
  border-radius: var(--r-md);
  padding: 8px 8px 8px 22px;
  display: flex;
  align-items: center;
  gap: 12px;
  max-width: 640px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
}
.gen-form input {
  flex: 1;
  background: transparent;
  border: none;
  font-size: 15px;
  font-family: inherit;
  padding: 12px 0;
  outline: none;
  color: var(--ink);
}
.gen-form input::placeholder { color: var(--muted); }
.gen-form button {
  background: var(--barro);
  color: var(--bg);
  border: 1px solid var(--barro);
  border-radius: var(--r-md);
  padding: 12px 22px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition: all .2s;
  cursor: pointer;
}
.gen-form button:hover { background: transparent; color: var(--barro); }

/* Hero secondary link row — "surprise me" etc. */
.hero-secondary {
  margin-top: 18px;
  display: flex;
  align-items: center;
  gap: 8px;
  color: rgba(239, 235, 224, 0.85);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
/* House rule: on a Barro ground links are Papel and go Fervura on hover.
 * Fervura on Barro is only ~3:1 — fine for a large display `em` or a
 * rótulo, not for an 11px mono link. */
.hero-secondary a {
  color: var(--bg);
  text-decoration: none;
  border-bottom: 1px solid rgba(217, 160, 91, 0.5);
}
.hero-secondary a:hover { color: var(--fervura); border-color: var(--fervura); }

/* Disclaimer line below the hero form. */
.disclaimer {
  margin-top: 22px;
  color: rgba(239, 235, 224, 0.6);
  font-size: 11px;
  font-family: var(--mono);
  letter-spacing: 0.04em;
}
.disclaimer a { color: rgba(239, 235, 224, 0.9); }

/* ---------- Splash surface ---------- */
.brand-splash {
  position: fixed;
  inset: 0;
  background: var(--barro);
  color: var(--bg);
  display: grid;
  place-items: center;
  z-index: 100;
}
.brand-splash__inner {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 22px;
  animation: brand-splash-in 600ms ease-out both;
}
.brand-splash__inner .receita-logo { width: 72px; height: 72px; color: var(--bg); }
@keyframes brand-splash-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ---------- Sidebar brand ---------- */
.brand-sidebar-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 6px;
  text-decoration: none;
}
.brand-sidebar-header .receita-logo { width: 28px; height: 28px; }
.brand-sidebar-header .receita-name {
  font-family: var(--display);
  font-weight: 400;
  font-size: 20px;
  letter-spacing: -0.01em;
  display: inline-flex;
  align-items: baseline;
  line-height: 1;
}
.brand-sidebar-header .receita-tag {
  font-family: var(--mono);
  font-size: 9.5px;
  letter-spacing: 0.18em;
  color: var(--muted);
  text-transform: uppercase;
  margin-top: 3px;
  line-height: 1;
}

/* ---------- Editorial flourishes ---------- */
.brand-dropcap::first-letter {
  font-family: var(--display);
  font-size: 5.2em;
  float: left;
  line-height: 0.85;
  margin: 0.05em 0.08em 0 0;
  color: var(--barro);
}

.brand-rule {
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 48px 0;
  color: var(--muted);
}
.brand-rule::before,
.brand-rule::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--line);
}
.brand-rule__symbol {
  font-family: var(--display);
  font-style: italic;
  font-size: 18px;
  color: var(--filete);
}


/* ============================================================
 * § 05 · LANDING KIT
 * ------------------------------------------------------------
 * Ported from design/receita.html. Every bare-element rule in the
 * source became a class:
 *     nav      → .lp-nav
 *     section  → .lp-section   (+ .dark for the Barro block)
 *     footer   → .lp-footer
 *     details  → .lp .faq details
 * Generic names (.hero, .btn--filled, .faq, .stat__*) additionally
 * require an ancestor with class `lp`, so they cannot reach the
 * authenticated app, which shares this stylesheet.
 *
 *     <body class="lp"> … </body>
 * ============================================================ */

.lp {
  background: var(--bg);
  color: var(--ink);
}
.lp img { max-width: 100%; }

/* Escape hatch for the two landing helpers the source used inline. */
.lp .serif { font-family: var(--display); font-weight: 400; }
.lp .mono  { font-family: var(--mono); }


/* ---------- A1 · Sticky Barro nav ---------- */
.lp-nav {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--barro);
  color: var(--bg);
  padding: 14px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  border-bottom: 1px solid var(--linha-barro);
}
.lp-nav__interior {
  flex: 1;
  width: 100%;
  max-width: var(--max-w);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}
.lp-nav__marca,
.lp-nav .nav__marca {
  font-family: var(--display);
  font-weight: 400;
  font-size: 22px;
  line-height: 1;
  color: var(--bg);
  text-decoration: none;
  display: inline-flex;
  align-items: baseline;
  gap: 2px;
}
.lp-nav__marca .ponto,
.lp-nav .nav__marca .ponto { color: var(--filete); font-weight: 500; }

.lp-nav__links,
.lp-nav .nav__links {
  display: none;
  gap: 28px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.lp-nav__links a,
.lp-nav .nav__links a {
  color: rgba(239, 235, 224, 0.85);
  text-decoration: none;
  transition: color .2s;
}
.lp-nav__links a:hover,
.lp-nav .nav__links a:hover { color: var(--bg); }

.lp-nav__cta,
.lp-nav .nav__cta {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--barro);
  background: var(--fervura);
  border: 1px solid var(--fervura);
  text-decoration: none;
  padding: 8px 14px;
  transition: opacity .2s;
  white-space: nowrap;
}
.lp-nav__cta:hover,
.lp-nav .nav__cta:hover { opacity: 0.85; }

.lp-nav__link-sec,
.lp-nav .nav__link-sec {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(239, 235, 224, 0.85);
  text-decoration: none;
  white-space: nowrap;
}
.lp-nav__link-sec:hover,
.lp-nav .nav__link-sec:hover { color: var(--bg); }

.lp-nav__acoes {
  display: flex;
  align-items: center;
  gap: 18px;
}

@media (min-width: 720px) {
  .lp-nav__links,
  .lp-nav .nav__links { display: flex; }
}


/* ---------- A2 · Hero ----------
 * `.lp` is mandatory here: it is what stops the landing hero from
 * repainting the in-app photo hero of the same name. */
.lp .hero {
  position: relative;
  display: block;
  background: var(--barro);
  color: var(--bg);
  padding: 80px 24px 100px;
  margin: 0;
  min-height: 0;
  border-radius: 0;
  overflow: hidden;
}
.hero__wrap {
  max-width: var(--max-w);
  margin: 0 auto;
}
.hero__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 48px;
  align-items: center;
}
.hero__eyebrow {
  display: inline-block;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(239, 235, 224, 0.7);
  padding-bottom: 8px;
  border-bottom: 1px solid var(--filete);
  margin-bottom: 40px;
}
.hero__eyebrow .ponto { color: var(--filete); font-weight: 500; }
.hero__titulo {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(48px, 8vw, 96px);
  line-height: 0.95;
  letter-spacing: -0.03em;
  color: var(--bg);
  max-width: none;
  margin: 0 0 32px;
}
.hero__titulo em { color: var(--fervura); font-style: italic; }
.hero__lead {
  font-family: var(--display);
  font-style: italic;
  font-size: clamp(20px, 2.8vw, 26px);
  line-height: 1.35;
  max-width: 540px;
  margin: 0 0 40px;
  color: rgba(239, 235, 224, 0.92);
}
.hero__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-bottom: 40px;
}

/* Landing buttons — sized for the hero, on a Barro ground. */
.lp .btn {
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 14px 22px;
  border-radius: 0;
  text-decoration: none;
  transition: all .2s;
  border: 1px solid transparent;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  cursor: pointer;
}
.lp .btn--filled {
  background: var(--fervura);
  color: var(--barro);
  border-color: var(--fervura);
  font-weight: 500;
}
.lp .btn--filled:hover { background: transparent; color: var(--fervura); }
.lp .btn--outline {
  background: transparent;
  color: var(--bg);
  border-color: var(--bg);
}
.lp .btn--outline:hover { background: var(--bg); color: var(--barro); }
/* Outline on a papel ground — dark border, Barro ink. */
.lp .btn--outline-escuro {
  background: transparent;
  color: var(--barro);
  border-color: var(--barro);
}
.lp .btn--outline-escuro:hover { background: var(--barro); color: var(--bg); }

/* Hero statistics rail */
.hero__stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
  margin-top: 32px;
  padding-top: 32px;
  border-top: 1px solid var(--linha-barro);
}
.lp .stat__val {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(32px, 4vw, 44px);
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--bg);
  margin-bottom: 4px;
}
.lp .stat__val .ponto { color: var(--filete); }
.lp .stat__lab {
  font-family: var(--mono);
  font-size: 10.5px;
  color: rgba(239, 235, 224, 0.65);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  line-height: 1.4;
}

@media (min-width: 720px) {
  .hero__stats { grid-template-columns: repeat(4, 1fr); }
}
@media (min-width: 900px) {
  .hero__grid { grid-template-columns: 1.15fr 1fr; gap: 64px; }
}


/* ---------- Landing sections ---------- */
.lp-section {
  padding: 96px 24px;
  max-width: var(--max-w);
  margin: 0 auto;
  border-top: 1px solid var(--line);
}
.lp-section--sem-filete { border-top: none; }

.lp-section.dark,
.lp-section--dark {
  background: var(--barro);
  color: var(--bg);
  max-width: none;
  margin: 0;
  padding: 96px 24px;
  border-top: none;
}
.lp-section__interior,
.lp-section > .interior {
  max-width: var(--max-w);
  margin: 0 auto;
}


/* ---------- A3 · Problema ---------- */
.problema {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
  margin-top: 40px;
}
.problema__par {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(22px, 3.5vw, 30px);
  line-height: 1.35;
  color: var(--ink);
  margin: 0;
}
.problema__par:first-child {
  padding-left: 24px;
  border-left: 2px solid var(--filete);
}
.problema__par strong {
  color: var(--barro);
  font-weight: 400;
  font-style: italic;
}
.problema__par em { color: var(--barro); font-style: italic; }

@media (min-width: 900px) {
  .problema { grid-template-columns: 1.4fr 1fr; gap: 64px; align-items: start; }
}


/* ---------- A4 · Como funciona ---------- */
.passos {
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
  margin-top: 40px;
}
.passo {
  padding: 32px 28px;
  background: var(--papel-barro);
  border-left: 3px solid var(--barro);
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.passo__num {
  font-family: var(--mono);
  font-size: 10.5px;
  color: var(--filete);
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.passo__nome {
  font-family: var(--display);
  font-weight: 400;
  font-size: 32px;
  line-height: 1.05;
  letter-spacing: -0.01em;
  color: var(--barro);
  margin: 0;
}
.passo__desc {
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink);
  margin: 0;
}
.passo__desc em { color: var(--barro); font-style: italic; }

@media (min-width: 720px) {
  .passos { grid-template-columns: repeat(3, 1fr); gap: 20px; }
}


/* ---------- A5 · O que faz (on Barro) ---------- */
.funcs {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  margin-top: 40px;
}
.func {
  display: grid;
  grid-template-columns: 60px 1fr;
  gap: 24px;
  padding: 28px 0;
  border-bottom: 1px solid var(--linha-barro);
  align-items: baseline;
}
.func:last-child { border-bottom: none; }
.func__num {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--filete);
  letter-spacing: 0.14em;
}
.func__conteudo h3 {
  font-family: var(--display);
  font-size: 28px;
  font-weight: 400;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--bg);
  margin: 0 0 8px;
}
.func__conteudo h3 em { color: var(--fervura); font-style: italic; }
.func__conteudo p {
  font-size: 15.5px;
  line-height: 1.6;
  color: rgba(239, 235, 224, 0.85);
  max-width: 720px;
  margin: 0;
}
.func__conteudo p em { color: var(--fervura); font-style: italic; }


/* ---------- A6 · Preços ---------- */
.precos {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  margin-top: 40px;
}
.preco {
  background: var(--papel-barro);
  border: 1px solid var(--line);
  padding: 32px 28px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.preco--destaque {
  position: relative;
  background: var(--barro);
  color: var(--bg);
  border-color: var(--barro);
}
/* Badge text comes from markup: <div class="preco preco--destaque" data-badge="Mais escolhido"> */
.preco--destaque[data-badge]::before {
  content: attr(data-badge);
  position: absolute;
  top: -12px;
  right: 20px;
  background: var(--fervura);
  color: var(--barro);
  padding: 4px 12px;
  font-family: var(--mono);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  white-space: nowrap;
}
.preco__nome {
  font-family: var(--display);
  font-weight: 400;
  font-size: 32px;
  line-height: 1;
  letter-spacing: -0.01em;
}
.preco__nome .ponto { color: var(--filete); }
.preco--destaque .preco__nome .ponto { color: var(--fervura); }
.preco__sub {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.preco--destaque .preco__sub { color: rgba(239, 235, 224, 0.6); }
.preco__valor {
  display: flex;
  align-items: baseline;
  gap: 6px;
  padding: 16px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.preco--destaque .preco__valor { border-color: var(--linha-barro); }
.preco__valor__num {
  font-family: var(--display);
  font-weight: 400;
  font-size: 52px;
  line-height: 1;
  letter-spacing: -0.02em;
}
.preco__valor__peri {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 0.06em;
}
.preco--destaque .preco__valor__peri { color: rgba(239, 235, 224, 0.7); }
.preco__anual {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--barro);
  letter-spacing: 0.02em;
  padding-top: 4px;
}
.preco--destaque .preco__anual { color: var(--fervura); }
.preco__lista {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  font-size: 13.5px;
  line-height: 1.5;
}
.preco__lista li {
  position: relative;
  padding-left: 20px;
}
.preco__lista li::before {
  content: "\2014";
  position: absolute;
  left: 0;
  color: var(--filete);
}
.preco__cta {
  margin-top: auto;
  padding: 12px 18px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-decoration: none;
  text-align: center;
  transition: all .2s;
  border: 1px solid;
  border-radius: 0;
  cursor: pointer;
}
.preco .preco__cta {
  background: var(--barro);
  color: var(--bg);
  border-color: var(--barro);
}
.preco .preco__cta:hover { background: transparent; color: var(--barro); }
.preco--destaque .preco__cta {
  background: var(--fervura);
  color: var(--barro);
  border-color: var(--fervura);
  font-weight: 500;
}
.preco--destaque .preco__cta:hover { background: transparent; color: var(--fervura); }

@media (min-width: 900px) {
  .precos { grid-template-columns: repeat(3, 1fr); gap: 16px; align-items: stretch; }
}


/* ---------- A7 · FAQ ----------
 * details/summary styling is deliberately confined to `.lp .faq`
 * so it can never touch <details> elsewhere in the app. */
.lp .faq {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  margin-top: 40px;
}
.lp .faq details {
  padding: 24px 0;
  border-bottom: 1px solid var(--line);
}
.lp .faq details summary {
  font-family: var(--display);
  font-weight: 400;
  font-size: 22px;
  color: var(--ink);
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  line-height: 1.2;
}
.lp .faq details summary::-webkit-details-marker { display: none; }
.lp .faq details summary::after {
  content: "+";
  font-family: var(--mono);
  color: var(--filete);
  font-size: 20px;
  flex-shrink: 0;
}
.lp .faq details[open] summary::after { content: "\2212"; }
.lp .faq details p {
  margin: 16px 0 0;
  font-size: 15px;
  line-height: 1.65;
  color: var(--muted);
  max-width: 720px;
}
.lp .faq details p em { color: var(--barro); font-style: italic; }
.lp .faq details p a { color: var(--barro); text-underline-offset: 2px; }


/* ---------- A8 · CTA final ---------- */
.cta-final {
  padding: 120px 24px;
  background: var(--barro);
  color: var(--bg);
  text-align: center;
}
.cta-final__inner {
  max-width: 720px;
  margin: 0 auto;
}
.cta-final__eyebrow {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--fervura);
  margin-bottom: 24px;
}
.cta-final__titulo {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(40px, 7vw, 72px);
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--bg);
  margin: 0 0 20px;
}
.cta-final__titulo em { color: var(--fervura); font-style: italic; }
.cta-final__lead {
  font-size: 18px;
  line-height: 1.55;
  color: rgba(239, 235, 224, 0.85);
  margin: 0 0 40px;
}
.cta-final__lead em { color: var(--fervura); font-style: italic; }
.cta-final__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  justify-content: center;
}


/* ---------- A9 · Footer ---------- */
.lp-footer {
  background: var(--ink);
  color: var(--bg);
  padding: 56px 24px 40px;
}
.lp-footer__interior,
.lp-footer .interior {
  max-width: var(--max-w);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr;
  gap: 40px;
}
.lp-footer__marca,
.lp-footer .marca {
  font-family: var(--display);
  font-weight: 400;
  font-size: 40px;
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--fervura);
  margin-bottom: 12px;
  display: inline-flex;
  align-items: baseline;
  text-decoration: none;
}
.lp-footer__marca .ponto,
.lp-footer .marca .ponto { color: var(--filete); font-weight: 500; }

.lp-footer__sobre,
.lp-footer .sobre {
  margin-top: 8px;
  color: rgba(239, 235, 224, 0.6);
  font-size: 13px;
  max-width: 320px;
}

.lp-footer__col h4,
.lp-footer .col h4 {
  font-family: var(--mono);
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(239, 235, 224, 0.5);
  margin: 0 0 12px;
}
.lp-footer__col a,
.lp-footer .col a {
  font-size: 13.5px;
  line-height: 1.9;
  color: rgba(239, 235, 224, 0.85);
  text-decoration: none;
  display: block;
}
.lp-footer__col a:hover,
.lp-footer .col a:hover { color: var(--fervura); }

/* `.lp-footer__col a` is (0,2,0) and would otherwise flatten the wordmark and
   the AI notice into 13.5px block links if either sits inside a column. These
   two are (0,2,1), so they win wherever they are nested. Without them the
   brand column has to stay unclassed, which is a trap for the next editor. */
.lp-footer a.lp-footer__marca {
  font-size: 40px;
  line-height: 1;
  display: inline-flex;
  color: var(--fervura);
}
.lp-footer .ai-disclosure a {
  font-size: inherit;
  line-height: inherit;
  display: inline;
  color: inherit;
}

.lp-footer__base,
.lp-footer .base {
  /* Matches `.lp-footer__interior` — without it the baseline runs wider than
     the columns above it on viewports over --max-w. */
  max-width: var(--max-w);
  margin-left: auto;
  margin-right: auto;
  padding-top: 32px;
  margin-top: 40px;
  border-top: 1px solid rgba(239, 235, 224, 0.15);
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  font-family: var(--mono);
  font-size: 10.5px;
  color: rgba(239, 235, 224, 0.5);
  letter-spacing: 0.08em;
}
/* .base is a second .interior in the source markup — it must not
   inherit the 3-column grid. */
.lp-footer__base,
.lp-footer .interior.base { display: flex; }

@media (min-width: 720px) {
  .lp-footer__interior,
  .lp-footer .interior { grid-template-columns: 2fr 1fr 1fr; gap: 48px; }
}


/* ---------- Landing responsive trims ---------- */
@media (max-width: 719px) {
  .lp .hero { padding: 56px 20px 72px; }
  .lp-section { padding: 64px 20px; }
  .lp-section.dark,
  .lp-section--dark { padding: 64px 20px; }
  .cta-final { padding: 80px 20px; }
  .lp .receita-card { padding: 24px; }
  .lp .receita-card__titulo { font-size: 28px; }
  .func { grid-template-columns: 44px 1fr; gap: 16px; }
  .lp-nav { padding: 12px 20px; }
}
