/* Escola Bolacha — the front page. Same materials as the app: warm greys, one signal orange,
   Archivo for words and IBM Plex Mono for numbers. */
:root {
  --ground: #C4C3BD; --face: #DFDED8; --well: #EAE9E4; --field: #F5F4F0;
  --ink: #16171A; --ink2: #5F615E; --ink3: #8A8B85;
  --rule: #B4B3AC; --rule2: #CDCCC5;
  --signal: #DF5211; --signal-ink: #FFFFFF; --go: #1F7A4D;
  --sans: 'Archivo', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, monospace;
  --wrap: 1080px;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --ground: #0E0F10; --face: #1C1D1F; --well: #242527; --field: #17181A;
    --ink: #EDECE6; --ink2: #9A9B97; --ink3: #75766F;
    --rule: #37383A; --rule2: #2C2D2F; --signal: #F2701F; --signal-ink: #131313; --go: #47B37C;
  }
}
:root[data-theme="dark"] {
  --ground: #0E0F10; --face: #1C1D1F; --well: #242527; --field: #17181A;
  --ink: #EDECE6; --ink2: #9A9B97; --ink3: #75766F;
  --rule: #37383A; --rule2: #2C2D2F; --signal: #F2701F; --signal-ink: #131313; --go: #47B37C;
}

* { box-sizing: border-box; }
html { background: var(--face); }
body { margin: 0; background: var(--face); color: var(--ink); font-family: var(--sans); -webkit-font-smoothing: antialiased; line-height: 1.5; }
img { max-width: 100%; display: block; }
a { color: inherit; }
:focus-visible { outline: 2px solid var(--signal); outline-offset: 3px; }
.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 24px; }

/* Header */
.top { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 22px 0; }
.wordmark { font-weight: 700; letter-spacing: 0.22em; font-size: 15px; text-decoration: none; text-transform: uppercase; white-space: nowrap; }
.wordmark span { color: var(--signal); }
.top nav { display: flex; align-items: center; gap: 22px; font-size: 14px; }
.top nav a { text-decoration: none; color: var(--ink2); }
.top nav a:hover { color: var(--ink); }
.top nav .btn { color: var(--signal-ink); }

/* Buttons */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 0; cursor: pointer;
  background: var(--signal); color: var(--signal-ink); font: inherit; font-weight: 600; letter-spacing: 0.04em;
  padding: 14px 22px; border-radius: 4px; text-decoration: none; transition: transform 0.1s, filter 0.15s;
}
.btn:hover { filter: brightness(1.06); }
.btn:active { transform: translateY(1px); }
.btn.small { padding: 9px 14px; font-size: 13px; }
.btn { white-space: nowrap; }
.btn.ghost { background: transparent; color: var(--ink); border: 1px solid var(--rule); }
.btn.dark { background: var(--ink); color: var(--face); }

/* Hero */
.hero { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 56px; align-items: center; padding: 36px 0 72px; }
.eyebrow { font-family: var(--mono); font-size: 13px; letter-spacing: 0.08em; color: var(--ink2); text-transform: uppercase; margin: 0 0 18px; }
h1 { font-size: clamp(38px, 6vw, 64px); line-height: 1.02; letter-spacing: -0.03em; margin: 0 0 22px; font-weight: 700; }
h1 em { font-style: normal; color: var(--signal); }
.lede { font-size: 19px; color: var(--ink2); max-width: 32em; margin: 0 0 30px; }
.lede strong { color: var(--ink); font-weight: 600; }
.cta-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.facts { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 18px; padding: 0; margin: 22px 0 0; font-size: 14px; color: var(--ink2); }
.facts li::before { content: '✓ '; color: var(--go); font-weight: 700; }

/* Phone frames around real screenshots */
.phone {
  position: relative; width: 100%; max-width: 330px; margin: 0 auto; aspect-ratio: 390 / 844;
  border-radius: 38px; padding: 10px; background: var(--ink);
  box-shadow: 0 30px 60px -20px rgba(22, 23, 26, 0.45), 0 0 0 1px rgba(0, 0, 0, 0.2);
}
.phone img { width: 100%; height: 100%; object-fit: cover; object-position: top; border-radius: 29px; }
.hero-art { position: relative; }
.tag {
  position: absolute; left: -12px; bottom: 16%; background: var(--field); border: 1px solid var(--rule);
  padding: 12px 16px; border-radius: 6px; box-shadow: 0 12px 30px -12px rgba(0, 0, 0, 0.35); max-width: 230px;
}
.tag b { display: block; font-family: var(--mono); font-size: 26px; letter-spacing: -0.02em; }
.tag span { font-size: 14px; color: var(--ink2); }
.tag.right { left: auto; right: -14px; top: 12%; bottom: auto; }
.tag.right b { font-size: 15px; color: var(--go); font-family: var(--sans); letter-spacing: 0; }

/* Sections */
section { padding: 64px 0; }
section + section { border-top: 1px solid var(--rule2); }
h2 { font-size: clamp(28px, 3.6vw, 40px); letter-spacing: -0.02em; line-height: 1.1; margin: 0 0 18px; }
.kicker { font-family: var(--mono); font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--signal); margin: 0 0 12px; }
.prose { font-size: 18px; color: var(--ink2); max-width: 38em; }
.prose p { margin: 0 0 16px; }
.prose strong { color: var(--ink); }
.quote { font-family: var(--mono); font-size: 15px; background: var(--well); border-left: 3px solid var(--signal); padding: 14px 18px; margin: 22px 0; color: var(--ink); }
.quote small { display: block; font-family: var(--sans); color: var(--ink3); margin-top: 6px; font-size: 13px; }

.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; margin-top: 36px; }
.step { display: flex; flex-direction: column; }
.step .num { font-family: var(--mono); font-size: 13px; color: var(--signal); letter-spacing: 0.08em; }
.step h3 { font-size: 21px; margin: 6px 0 8px; }
.step p { color: var(--ink2); margin: 0 0 22px; flex: 1; }   /* grows, so all three phones start on one line */
.step .phone { max-width: 250px; border-radius: 30px; padding: 8px; }
.step .phone img { border-radius: 23px; }

.why { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; margin-top: 30px; }
.why div { background: var(--well); border: 1px solid var(--rule2); border-radius: 6px; padding: 22px; }
.why h3 { margin: 0 0 6px; font-size: 18px; }
.why p { margin: 0; color: var(--ink2); }

/* Sign-up and the paid version */
.offer { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.card { background: var(--field); border: 1px solid var(--rule); border-radius: 8px; padding: 28px; }
.card.plus { background: var(--ink); color: var(--face); border-color: var(--ink); }
.card.plus b { color: var(--face); }
fieldset.want { flex: 1 1 100%; border: 0; padding: 0; margin: 0 0 4px; display: flex; flex-direction: column; gap: 6px; font-size: 14px; }
fieldset.want legend { padding: 0; margin-bottom: 6px; color: #B8B8B2; }
fieldset.want label { cursor: pointer; }
fieldset.want small { opacity: .7; }
.card.plus .muted, .card.plus .fine { color: #B8B8B2; }
.card h3 { margin: 0 0 8px; font-size: 22px; }
.price { font-family: var(--mono); font-size: 34px; letter-spacing: -0.03em; margin: 6px 0 2px; }
.price small { font-size: 15px; letter-spacing: 0; }
.card ul { padding-left: 18px; margin: 12px 0 20px; }
.card li { margin-bottom: 4px; }
form.signup { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 14px; }
form.signup input[type=email] {
  flex: 1 1 200px; min-width: 0; font: inherit; font-size: 16px; padding: 12px 14px; border-radius: 4px;
  border: 1px solid var(--rule); background: var(--field); color: var(--ink);
}
.card.plus form.signup input[type=email] { background: #232427; border-color: #3a3b3e; color: var(--face); }
.trap { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.fine { font-size: 13px; color: var(--ink3); margin: 10px 0 0; }
.thanks { font-weight: 600; color: var(--go); margin: 14px 0 0; }
.card.plus .thanks { color: #6fd39f; }
.err { color: #b3261e; margin: 10px 0 0; font-size: 14px; }

/* About page */
.about { max-width: 720px; padding: 30px 0 80px; }
.about h1 { font-size: clamp(34px, 5vw, 52px); }
.about h2 { font-size: 26px; margin-top: 44px; }
.about .prose { max-width: none; }
.meaning { display: grid; grid-template-columns: auto 1fr; gap: 6px 18px; background: var(--well); border: 1px solid var(--rule2); border-radius: 8px; padding: 22px; margin: 24px 0; }
.meaning dt { font-weight: 700; font-size: 20px; }
.meaning dd { margin: 0; color: var(--ink2); align-self: center; }
.icon-row { display: flex; align-items: center; gap: 18px; margin: 18px 0; }
.icon-row img { width: 84px; height: 84px; border-radius: 20px; }

/* Footer */
footer { border-top: 1px solid var(--rule2); padding: 30px 0 50px; font-size: 14px; color: var(--ink3); }
footer .wrap { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; }
footer a { color: var(--ink2); }

@media (max-width: 860px) {
  .hero { grid-template-columns: 1fr; gap: 40px; padding-top: 12px; }
  .hero-art { max-width: 300px; margin: 0 auto; }
  .steps { grid-template-columns: 1fr; gap: 44px; }
  .step {
    display: grid; grid-template-columns: 1fr 150px; column-gap: 18px; align-items: start;
    grid-template-areas: "num phone" "title phone" "text phone";
    grid-template-rows: auto auto 1fr;
  }
  .step .num { grid-area: num; }
  .step h3 { grid-area: title; }
  .step p { grid-area: text; }
  .step .phone { grid-area: phone; max-width: 150px; border-radius: 22px; padding: 6px; }
  .step .phone img { border-radius: 17px; }
  .why, .offer { grid-template-columns: 1fr; }
  .top nav .hide-sm { display: none; }
}
@media (max-width: 420px) {
  .wrap { padding: 0 16px; }
  .wordmark { font-size: 13px; letter-spacing: 0.16em; }
  .top nav { gap: 14px; }
  .eyebrow { font-size: 11px; }
  .step { grid-template-columns: 1fr 110px; }
  .step .phone { max-width: 110px; }
  .tag { left: -6px; }
  .tag.right { right: -6px; }
}

/* ---------- Azulejo: an original blue-and-white tile, drawn here, used as a Portuguese accent ---------- */
:root {
  --tile: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Crect width='48' height='48' fill='%23F4F1EA'/%3E%3Cg fill='none' stroke='%231F4E9A' stroke-width='2'%3E%3Ccircle cx='0' cy='0' r='14'/%3E%3Ccircle cx='48' cy='0' r='14'/%3E%3Ccircle cx='0' cy='48' r='14'/%3E%3Ccircle cx='48' cy='48' r='14'/%3E%3Cpath d='M24 10 L38 24 L24 38 L10 24Z'/%3E%3C/g%3E%3Cg fill='%231F4E9A'%3E%3Ccircle cx='24' cy='24' r='4'/%3E%3Cpath d='M24 3q4 4 0 8q-4-4 0-8ZM24 37q4 4 0 8q-4-4 0-8ZM3 24q4-4 8 0q-4 4-8 0ZM37 24q4-4 8 0q-4 4-8 0Z'/%3E%3C/g%3E%3C/svg%3E");
}
.tiles { height: 30px; background: var(--tile) center / 30px 30px repeat-x; border-block: 1px solid var(--rule2); opacity: .9; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .tiles { opacity: .55; } }
:root[data-theme="dark"] .tiles { opacity: .55; }
.hero-art::before {
  content: ''; position: absolute; inset: 9% -6% auto auto; width: 62%; aspect-ratio: 1; z-index: -1;
  background: var(--tile) 0 0 / 44px 44px; border-radius: 6px; opacity: .85;
  transform: rotate(4deg); transition: transform .6s ease;
}
.hero-art { isolation: isolate; }
.hero-art:hover::before { transform: rotate(-2deg) scale(1.03); }

/* ---------- Hover: things you can touch respond ---------- */
.btn { transition: transform .15s, filter .15s, box-shadow .15s, background-color .15s; }
.btn:hover { transform: translateY(-2px); box-shadow: 0 8px 18px -10px rgba(223, 82, 17, .7); }
.btn.ghost:hover { border-color: var(--signal); color: var(--signal); box-shadow: none; }
.why div, .card { transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
.why h3 { transition: color .25s ease; }
@media (hover: hover) {
  .why div:hover { transform: translateY(-4px); border-color: var(--signal); box-shadow: 0 14px 28px -18px rgba(22, 23, 26, .5); }
  .why div:hover h3 { color: var(--signal); }
  .card:hover { transform: translateY(-4px); box-shadow: 0 18px 36px -20px rgba(22, 23, 26, .55); }
  .step .num { transition: letter-spacing .25s ease; }
  .step:hover .num { letter-spacing: .3em; }
  .step h3 { transition: color .25s ease; }
  .step:hover h3 { color: var(--signal); }
}
.phone { cursor: zoom-in; transition: transform .35s cubic-bezier(.2, .8, .2, 1), box-shadow .35s ease; }
@media (hover: hover) {
  .step .phone:hover, .hero-art .phone:hover { transform: scale(1.06) rotate(-1deg); box-shadow: 0 40px 70px -24px rgba(22, 23, 26, .55), 0 0 0 1px rgba(0, 0, 0, .2); }
}

/* ---------- Tap a screenshot to see it large ---------- */
.zoom { position: fixed; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center; padding: 24px;
  background: rgba(14, 15, 16, .78); backdrop-filter: blur(4px); cursor: zoom-out; opacity: 0; transition: opacity .2s; }
.zoom.open { opacity: 1; }
.zoom img { max-height: 92vh; width: auto; border-radius: 28px; border: 10px solid #16171A; box-shadow: 0 30px 80px rgba(0, 0, 0, .5);
  transform: scale(.94); transition: transform .25s cubic-bezier(.2, .8, .2, 1); }
.zoom.open img { transform: none; }

/* ---------- Sections ease in as you scroll (only when JS runs, never for reduced motion) ---------- */
html.js .reveal { opacity: 0; transform: translateY(22px); transition: opacity .7s ease, transform .7s cubic-bezier(.2, .8, .2, 1); }
html.js .reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  html.js .reveal { opacity: 1; transform: none; transition: none; }
  .btn:hover, .why div:hover, .card:hover, .phone:hover, .hero-art:hover::before { transform: none !important; }
}
