/* Astral Livre · o estilo do gerador do mapa (gerar-mapa-astral.html).
   Até a v1.49 morava dentro da página; saiu para o navegador guardar à parte (v1.50). */
    /* ── Header ── */
    .lp-header {
      position: fixed; top: 0; left: 0; right: 0; z-index: 50;
      padding: 1rem 1.5rem;
      background: rgb(var(--noite, 2 17 51) / 0.72);
      backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
      border-bottom: 1px solid rgba(212,175,55,0.1);
      display: flex; align-items: center; justify-content: space-between;
      transition: all 300ms ease;
    }
    .lp-header.scrolled { background: rgba(0,0,0,0.92); border-bottom-color: rgba(212,175,55,0.22); padding-top: 0.65rem; padding-bottom: 0.65rem; }
    .lp-back { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.78rem; letter-spacing: 0.1em; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); transition: color 250ms ease; }
    .lp-back:hover { color: var(--gold-100); }

    /* ── Hero ── */
    .gma-hero { padding: 9rem 0 2.5rem; text-align: center; }
    .gma-hero-title { font-size: clamp(2.6rem, 8vw, 4.4rem); font-family: "Cormorant Garamond", serif; font-weight: 600; line-height: 1.05; }
    .gma-hero-sub { font-size: clamp(0.72rem, 2vw, 0.9rem); letter-spacing: 0.28em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); margin: 0.4rem 0 1.25rem; }
    .gma-hero-desc { font-size: 1rem; color: rgb(var(--tinta, 255 255 255) / calc(0.7 * var(--realce, 1))); max-width: 540px; margin: 0 auto; font-weight: 300; line-height: 1.7; }
    .gma-private { display: inline-flex; align-items: center; gap: 0.5rem; margin-top: 1.25rem; font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gold-300); border: 1px solid rgba(212,175,55,0.3); border-radius: 999px; padding: 0.4rem 1rem; }

    /* ── Form ── */
    .gma-wrap { max-width: 940px; margin: 0 auto; padding: 0 1.5rem 5rem; }
    .gma-form { max-width: 620px; margin: 0 auto; }
    .gma-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
    .gma-grid .full { grid-column: 1 / -1; }
    /* O seletor de casas tem opções longas ("Placidus — o mais usado…") e,
       sem isto, esticava a página inteira para 451px num celular de 375. */
    .gma-grid > * { min-width: 0; }
    .gma-grid select { max-width: 100%; }
    .field input[type="date"], .field input[type="time"] { color-scheme: dark; }
    .gma-checkline { display: flex; align-items: center; gap: 0.55rem; font-size: 0.82rem; color: rgb(var(--tinta, 255 255 255) / calc(0.65 * var(--realce, 1))); margin-top: 0.25rem; }
    .gma-checkline input { width: 16px; height: 16px; accent-color: var(--gold-100); }
    .gma-manual { display: none; }
    .gma-manual.show { display: grid; }
    .gma-error { display: none; color: var(--erro, #ff8c8c); font-size: 0.85rem; text-align: center; margin-top: 1rem; }
    .gma-error.show { display: block; }
    .gma-loading { display: none; text-align: center; color: var(--gold-100); font-size: 0.9rem; margin-top: 1.5rem; letter-spacing: 0.1em; }
    .gma-loading.show { display: block; }

    /* ── Result ── */
    /* ── Aproximar ── */
    .zoom-barra { display: flex; align-items: center; gap: 0.5rem; justify-content: center; margin: 0.75rem 0 0.25rem; flex-wrap: wrap; }
    .zoom-btn { width: 34px; height: 34px; border-radius: 50%; border: 1px solid rgba(212,175,55,0.4);
      background: rgb(var(--tinta, 255 255 255) / 0.04); color: var(--gold-100); font-size: 1rem; line-height: 1; cursor: pointer; font-family: inherit; }
    .zoom-btn:hover { background: rgba(212,175,55,0.15); }
    .zoom-nivel { font-size: 0.72rem; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); min-width: 44px; text-align: center; }
    .zoom-dica { font-size: 0.68rem; color: rgb(var(--tinta, 255 255 255) / calc(0.35 * var(--realce, 1))); margin-left: 0.3rem; }

    /* Seletores: o que aparece na mandala */
    .sel-dobra { margin: 0.75rem 0; }
    .sel-dobra summary { cursor: pointer; font-size: 0.78rem; color: var(--gold-100); list-style: none; display: flex; align-items: center; gap: 0.4rem; }
    .sel-dobra summary::-webkit-details-marker { display: none; }
    .sel-dobra summary::before { content: '▸'; transition: transform 180ms ease; }
    .sel-dobra[open] summary::before { transform: rotate(90deg); }
    .sel-grupo { margin-top: 0.7rem; }
    .sel-grupo h5 { font-size: 0.62rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.4 * var(--realce, 1))); margin-bottom: 0.45rem; }
    .sel-chips { display: flex; flex-wrap: wrap; gap: 0.35rem; }
    .sel-chip { font-size: 0.72rem; border-radius: 999px; padding: 0.28rem 0.7rem; cursor: pointer; font-family: inherit;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.13); color: rgb(var(--tinta, 255 255 255) / calc(0.55 * var(--realce, 1))); }
    .sel-chip.on { background: rgba(212,175,55,0.14); border-color: rgba(212,175,55,0.5); color: var(--gold-100); }
    .sel-acoes { display: flex; gap: 0.6rem; margin-top: 0.5rem; }
    .sel-acoes button { font-size: 0.68rem; background: none; border: none; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); cursor: pointer; text-decoration: underline; font-family: inherit; padding: 0; }
    .sel-acoes button:hover { color: var(--gold-100); }

    /* ── Tela cheia ──
       A mandala é o que se lê; num monitor grande ela merece a página
       inteira, com os aspectos descendo para baixo dela. */
    /* Some tudo o que nao e mapa: cabecalho, hero, formulario, estante,
       os tres cards do topo, a leitura, as tabelas e o rodape de venda.
       Fica a mandala grande, e a grade de aspectos logo abaixo dela. */
    body.mapa-cheio .lp-header, body.mapa-cheio .gma-hero, body.mapa-cheio .gma-form,
    body.mapa-cheio .est, body.mapa-cheio .gma-cta, body.mapa-cheio #gma-leitura,
    body.mapa-cheio .big3, body.mapa-cheio #gma-name-title, body.mapa-cheio #gma-warn,
    body.mapa-cheio .gma-table-card:not(.aspectos-card),
    body.mapa-cheio .gma-block-title:not(.tit-aspectos),
    body.mapa-cheio .gma-result > div[style*="text-align:center"],
    body.mapa-cheio footer { display: none !important; }
    body.mapa-cheio .mapa-dupla { grid-template-columns: 1fr; gap: 0.75rem; }
    body.mapa-cheio .gma-wrap { max-width: 100%; padding: 0.75rem 1rem 4rem; }
    body.mapa-cheio .gma-chart-wrap { max-width: 100%; }
    body.mapa-cheio #roda-palco { height: 72vh !important; }
    body.mapa-cheio .aspectos-card { max-width: 1100px; margin: 0 auto; }
    body.mapa-cheio #grade-palco { height: 300px; }
    .btn-cheio { position: fixed; right: 14px; bottom: 14px; z-index: 70; border-radius: 999px; cursor: pointer;
      padding: 0.55rem 1.1rem; font-size: 0.78rem; font-family: inherit;
      background: rgb(var(--superficie, 4 15 42) / 0.95); border: 1px solid rgba(212,175,55,0.5); color: var(--gold-100); }
    .btn-cheio:hover { background: rgba(212,175,55,0.18); }
    /* A apostila nas Legendas dos Estudos */
    .leg-apo { font-size: 0.76rem; color: rgb(var(--tinta, 255 255 255) / calc(0.72 * var(--realce, 1))); line-height: 1.55; margin-top: 0.3rem; }
    .leg-apo strong { color: rgb(var(--tinta, 255 255 255)); font-weight: 600; }
    .leg-apo .pt b { color: var(--lilas, #c9b8ff); font-weight: 600; }
    .leg-apo .td { color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); font-size: 0.72rem; margin-top: 0.15rem; }
    /* O mapa natal grande (v1.31, pedido do Chris): sai da coluna de 940px
       e usa quase a tela toda — a roda com ~70% e os aspectos numa coluna
       menor ao lado. No celular, um embaixo do outro. */
    /* v1.74 · A LARGURA QUE SAI DA COLUNA, descontada a barra lateral.
       Era min(96vw, 1560px), centrada na coluna de 940px: com a barra das
       seções à esquerda (216px, modo aplicativo) o conteúdo começa 216px
       mais à direita, e a ponta direita — a grade dos aspectos, o comando
       dos trânsitos — saía da tela (anexo do Chris, 12/10). Agora a conta
       desconta a barra (--app-lateral) e deixa uma folga para a barra de
       rolagem. Vale para o mapa natal e para os estudos. */
    .gma-wrap { --largo: min(calc(100vw - var(--app-lateral, 0px) - 3.5rem), 1560px); }
    .mapa-dupla { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(320px, 1fr); gap: 1.25rem; align-items: start;
      width: var(--largo); margin: 0 0 2.5rem calc(50% - var(--largo) / 2); }
    .mapa-dupla > * { min-width: 0; }
    /* width + margin 0: com "margin: 0 auto" o item da grade encolhe até
       o tamanho do desenho (760px) e a roda nunca cresce */
    .mapa-dupla .gma-chart-wrap { max-width: none; width: 100%; margin: 0; }
    #roda-palco { height: min(90vh, 62vw); }
    /* A roda vai até a altura da tela, menos o cabeçalho */
    .mapa-dupla #chart svg { width: 100%; height: auto; max-width: min(100%, calc(100vh - 120px)); }
    @media (max-width: 900px) {
      .mapa-dupla { grid-template-columns: 1fr; width: 100%; margin-left: 0; }
      #roda-palco { height: 94vw; }
      .mapa-dupla #chart svg { max-width: 100%; }
    }
    /* ── O caderno de atendimento (v1.34) ── */
    .est-busca { flex: 0 1 260px; padding: 0.42rem 0.9rem; border-radius: 999px; font-size: 0.8rem; font-family: inherit;
      background: rgb(var(--tinta, 255 255 255) / 0.05); border: 1px solid rgba(212,175,55,0.25); color: rgb(var(--tinta, 255 255 255)); }
    .est-busca::placeholder { color: rgb(var(--tinta, 255 255 255) / calc(0.38 * var(--realce, 1))); }
    .cad { font-size: 0.86rem; line-height: 1.6; }
    .cad-topo { display: flex; align-items: baseline; justify-content: space-between; gap: 0.6rem; flex-wrap: wrap; margin-bottom: 0.4rem; }
    .cad-titulo { font-family: "Cormorant Garamond", serif; font-size: 1.2rem; color: var(--gold-100); }
    .cad-rot { font-size: 0.66rem; letter-spacing: 0.14em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.4 * var(--realce, 1))); margin: 0.8rem 0 0.35rem; }
    .cad textarea, .cad input[type=date] { width: 100%; box-sizing: border-box; padding: 0.55rem 0.75rem; border-radius: 10px;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgba(212,175,55,0.25); color: rgb(var(--tinta, 255 255 255)); font-family: inherit; font-size: 0.84rem; line-height: 1.55; }
    .cad input[type=date] { color-scheme: dark; }
    .cad textarea { min-height: 72px; resize: vertical; }
    .cad-nova { display: grid; grid-template-columns: 160px 1fr; gap: 0.5rem; align-items: start; }
    .cad-nova .acoes { grid-column: 1 / -1; display: flex; gap: 0.6rem; align-items: center; flex-wrap: wrap; }
    .cad-sessoes { display: grid; gap: 0.55rem; }
    .cad-sessao { padding: 0.6rem 0.85rem; border-radius: 12px; background: rgb(var(--tinta, 255 255 255) / 0.035); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.07); }
    .cad-sessao .dt { font-size: 0.72rem; color: var(--link, #7fd4ff); letter-spacing: 0.06em; text-transform: uppercase; display: flex; justify-content: space-between; gap: 0.5rem; }
    .cad-sessao .dt button { background: none; border: none; color: rgb(var(--tinta, 255 255 255) / calc(0.3 * var(--realce, 1))); cursor: pointer; font-size: 0.95rem; line-height: 1; }
    .cad-sessao .dt button:hover { color: var(--erro, #ff9d9d); }
    .cad-sessao .tx { white-space: pre-wrap; color: rgb(var(--tinta, 255 255 255) / calc(0.86 * var(--realce, 1))); margin-top: 0.25rem; }
    .cad-sessao .ceu { font-size: 0.72rem; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); margin-top: 0.35rem; }
    .cad-vazio { font-size: 0.8rem; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); }
    .cad-msg { font-size: 0.74rem; color: rgb(var(--suave, 143 232 176) / calc(0.9 * var(--realce, 1))); }
    .cad-fechar { background: none; border: none; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); cursor: pointer; font-size: 0.78rem; font-family: inherit; }
    .est-cad { flex-basis: 100%; width: 100%; padding: 0.9rem 1rem; border-radius: 14px; background: rgb(var(--superficie, 10 13 38) / 0.9); border: 1px solid rgba(212,175,55,0.28); }
    @media (max-width: 560px) { .cad-nova { grid-template-columns: 1fr; } }
    /* ── A cidade do aniversário na Revolução (v1.39) ── */
    .rs-lugar { margin-top: 0.7rem; }
    .rs-lugar-campos { display: flex; gap: 0.6rem; flex-wrap: wrap; align-items: center; margin-top: 0.5rem; }
    .rs-cidade { flex: 1 1 260px; max-width: 420px; }
    .rs-cidade input { width: 100%; box-sizing: border-box; padding: 0.5rem 0.8rem; border-radius: 10px; font: inherit; font-size: 0.85rem;
      background: rgb(var(--tinta, 255 255 255) / 0.05); border: 1px solid rgba(212,175,55,0.3); color: rgb(var(--tinta, 255 255 255)); }
    /* ── As páginas a mais do PDF (v1.39) ── */
    .pdf-rot { font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.55 * var(--realce, 1))); margin: 0.2rem 0 0.4rem; }
    .pdf-extras .pdf-check { margin-bottom: 0.45rem !important; }
    .pdf-status { font-size: 0.78rem; color: var(--link, #7fd4ff); min-height: 1.1em; margin: 0.3rem 0 0; }
    .pdf-extra { display: none; }
    /* ── A capa do PDF (v1.37): a janela que pede os dados e a folha ── */
    .pdf-modal { position: fixed; inset: 0; z-index: 200; display: flex; align-items: center; justify-content: center;
      padding: 1rem; background: rgb(var(--superficie, 2 6 24) / 0.78); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
    .pdf-modal[hidden] { display: none; }
    .pdf-caixa { width: min(460px, 100%); max-height: 92vh; overflow-y: auto; border-radius: 20px; padding: 1.4rem 1.5rem;
      background: var(--superficie-cor, #0b1234); border: 1px solid rgba(212,175,55,0.4); box-shadow: 0 20px 60px -20px rgba(0,0,0,0.8); }
    .pdf-caixa h3 { font-family: "Cormorant Garamond", serif; font-size: 1.5rem; color: var(--gold-100); margin: 0 0 0.3rem; }
    .pdf-nota { font-size: 0.78rem; color: rgb(var(--tinta, 255 255 255) / calc(0.55 * var(--realce, 1))); line-height: 1.55; margin: 0 0 0.9rem; }
    .pdf-caixa label { display: block; font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.55 * var(--realce, 1))); margin-bottom: 0.75rem; }
    .pdf-caixa label small { text-transform: none; letter-spacing: 0; color: rgb(var(--tinta, 255 255 255) / calc(0.35 * var(--realce, 1))); }
    .pdf-caixa input[type=text], .pdf-caixa input[type=date] { display: block; width: 100%; box-sizing: border-box; margin-top: 0.3rem;
      padding: 0.6rem 0.8rem; border-radius: 10px; font: inherit; font-size: 0.9rem; text-transform: none; letter-spacing: 0;
      background: rgb(var(--tinta, 255 255 255) / 0.05); border: 1px solid rgba(212,175,55,0.3); color: rgb(var(--tinta, 255 255 255)); color-scheme: dark; }
    .pdf-caixa .pdf-check { display: flex; align-items: center; gap: 0.5rem; text-transform: none; letter-spacing: 0; font-size: 0.82rem; color: rgb(var(--tinta, 255 255 255) / calc(0.75 * var(--realce, 1))); }
    .pdf-acoes { display: flex; gap: 0.6rem; justify-content: flex-end; flex-wrap: wrap; margin-top: 0.4rem; }
    .pdf-capa { display: none; }
    /* O PDF da Revolução (v1.41): a mesma janela, com os campos do ano */
    .pdf-modal[data-modo="natal"] .so-rs, .pdf-modal[data-modo="natal"] .so-sin, .pdf-modal[data-modo="natal"] .so-cliente,
    .pdf-modal[data-modo="rs"] .so-natal, .pdf-modal[data-modo="rs"] .so-sin,
    .pdf-modal[data-modo="sin"] .so-natal, .pdf-modal[data-modo="sin"] .so-rs,
    .pdf-modal[data-modo="rc"] .so-natal, .pdf-modal[data-modo="rc"] .so-rs, .pdf-modal[data-modo="rc"] .so-sin { display: none !important; }
    .rs-pdf-acoes { margin-top: 1rem; }
    /* ── A leitura completa em PDF (v1.33, Plus) ──
       É a própria página, impressa: só o resultado (a roda, a Leitura
       inteira com os blocos abertos e as tabelas), no escuro do site. O
       "Salvar como PDF" do navegador sai com o texto de verdade — dá para
       copiar e buscar —, sem biblioteca nenhuma. */
    @media print {
      /* A4, o papel do Brasil: a capa é medida para ele (v1.37) */
      @page { size: A4; margin: 12mm 11mm; }
      body.imprimindo-leitura { background: var(--superficie-cor, #0a0d26) !important; }
      body.imprimindo-leitura, body.imprimindo-leitura * {
        -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important;
        animation: none !important; transition: none !important; }
      body.imprimindo-leitura > *:not(.gma-wrap) { display: none !important; }
      body.imprimindo-leitura .gma-wrap > *:not(#gma-result) { display: none !important; }
      body.imprimindo-leitura .gma-wrap { max-width: none !important; padding: 0 !important; margin: 0 !important; }
      body.imprimindo-leitura #gma-estudos, body.imprimindo-leitura .zoom-barra, body.imprimindo-leitura .gma-acoes,
      body.imprimindo-leitura .lt-sint-acoes, body.imprimindo-leitura .mapa-dupla > div:nth-child(2),
      body.imprimindo-leitura .am-dica, body.imprimindo-leitura .lt-plus, body.imprimindo-leitura #gma-warn,
      body.imprimindo-leitura #gma-caderno { display: none !important; }
      /* O script da página faz os cartões aparecerem ao rolar: no papel, todos já visíveis */
      body.imprimindo-leitura .glass-card { opacity: 1 !important; transform: none !important;
        background: #141a3d !important; backdrop-filter: none !important; box-shadow: none !important; }
      body.imprimindo-leitura .mapa-dupla { display: block !important; width: auto !important; margin: 0 0 6mm !important; }
      body.imprimindo-leitura .gma-chart-wrap { max-width: none !important; }
      body.imprimindo-leitura #roda-palco { height: auto !important; overflow: visible !important; }
      body.imprimindo-leitura #roda-alvo { transform: none !important; }
      body.imprimindo-leitura .mapa-dupla #chart svg { max-width: 160mm !important; width: 100% !important; margin: 0 auto !important; display: block; }
      body.imprimindo-leitura .lt-casa, body.imprimindo-leitura .lt-astro, body.imprimindo-leitura .lt-asp,
      body.imprimindo-leitura .lt-trad, body.imprimindo-leitura .lt-sintese p, body.imprimindo-leitura .big3-card,
      body.imprimindo-leitura tr { break-inside: avoid; }
      body.imprimindo-leitura .gma-block-title { break-after: avoid; }
      /* O motor (alcione-maps.js) tem a sua própria folha de impressão, a da
         roda sozinha: papel branco e texto #111 forçado em p, td, li e
         títulos. A leitura sai no escuro do site, então aqui essas tags
         voltam a herdar a cor da tela. */
      body.imprimindo-leitura { color: rgb(var(--tinta, 255 255 255)) !important; }
      body.imprimindo-leitura p, body.imprimindo-leitura td, body.imprimindo-leitura th, body.imprimindo-leitura li,
      body.imprimindo-leitura h1, body.imprimindo-leitura h2, body.imprimindo-leitura h3, body.imprimindo-leitura h4 { color: unset !important; }
      body.imprimindo-leitura .text-gold { color: var(--ouro-claro, #f3dc8a) !important; }
      body.imprimindo-leitura .gma-table-card { border-color: rgba(212,175,55,0.25) !important; }
      /* Texto pintado com gradiente (background-clip) some no papel: dourado chapado */
      body.imprimindo-leitura .gma-block-title, body.imprimindo-leitura .gma-block-title *,
      body.imprimindo-leitura .big3-ico { color: var(--ouro-claro, #f3dc8a) !important; -webkit-text-fill-color: #f3dc8a !important; background: none !important; }
      body.imprimindo-leitura details > summary { list-style: none; }
      /* A linha da vida e o ano no céu vão ao papel só se já foram calculados */
      body.imprimindo-leitura .sem-imprimir { display: none !important; }
      /* ── A capa (v1.37): a primeira folha inteira ── */
      body.imprimindo-leitura .pdf-capa { display: flex !important; flex-direction: column; justify-content: space-between; align-items: center;
        text-align: center; height: 248mm; box-sizing: border-box; padding: 4mm 0 2mm; break-after: page; page-break-after: always;
        background: radial-gradient(ellipse at 50% 42%, #16225a 0%, #0a0d26 62%) !important; border-radius: 0; }
      body.imprimindo-leitura .capa-marca { width: 20mm; height: auto; display: block; margin: 0 auto 2mm; }
      body.imprimindo-leitura .capa-marca-nome { font-family: "Cormorant Garamond", serif; font-size: 15pt; letter-spacing: 0.42em; color: var(--ouro-claro, #f3dc8a) !important; }
      body.imprimindo-leitura .capa-marca-sub { font-size: 7.5pt; letter-spacing: 0.22em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))) !important; margin-top: 1mm; }
      body.imprimindo-leitura .capa-tipo { font-size: 8.5pt; letter-spacing: 0.3em; text-transform: uppercase; color: var(--link, #7fd4ff) !important; }
      body.imprimindo-leitura .capa-nome { font-family: "Cormorant Garamond", serif; font-size: 34pt; font-weight: 600; color: rgb(var(--tinta, 255 255 255)) !important; line-height: 1.1; margin: 3mm 0 2mm; }
      body.imprimindo-leitura .capa-nasc { font-size: 10pt; color: rgb(var(--tinta, 255 255 255) / calc(0.75 * var(--realce, 1))) !important; }
      body.imprimindo-leitura .capa-big3 { font-size: 10pt; color: var(--ouro-claro, #f3dc8a) !important; margin-top: 1.5mm; }
      body.imprimindo-leitura .capa-roda-caixa { margin-top: 5mm; }
      body.imprimindo-leitura .capa-roda-caixa svg { width: 108mm !important; height: auto !important; max-width: none !important; display: block; margin: 0 auto; }
      body.imprimindo-leitura .capa-pe { font-size: 9.5pt; color: rgb(var(--tinta, 255 255 255) / calc(0.75 * var(--realce, 1))) !important; line-height: 1.6; }
      body.imprimindo-leitura .capa-sessao { font-family: "Cormorant Garamond", serif; font-size: 15pt; color: var(--ouro-claro, #f3dc8a) !important; }
      body.imprimindo-leitura .capa-autor { color: rgb(var(--tinta, 255 255 255)) !important; }
      body.imprimindo-leitura .capa-ceu { font-size: 8pt; color: rgb(var(--tinta, 255 255 255) / calc(0.55 * var(--realce, 1))) !important; max-width: 150mm; margin: 1mm auto 0; }
      body.imprimindo-leitura .capa-site { font-size: 8pt; letter-spacing: 0.18em; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))) !important; margin-top: 3mm; }
      /* ── As páginas a mais (v1.39): cada uma começa numa folha ── */
      body.imprimindo-leitura .pdf-extra.ativo { display: block !important; break-before: page; page-break-before: always; }
      body.imprimindo-leitura .pdf-rs-roda svg { width: 135mm !important; height: auto !important; max-width: none !important; display: block; margin: 0 auto 5mm; }
      body.imprimindo-leitura h3.sec-ciclos, body.imprimindo-leitura h3.sec-ano { break-before: page; page-break-before: always; }
      body.imprimindo-leitura .cv-acoes, body.imprimindo-leitura .cv-filtro { display: none !important; }
      body.imprimindo-leitura .cv-item, body.imprimindo-leitura .an-lista li { break-inside: avoid; }
      /* ── O PDF só da Revolução (v1.41): a capa do ano, a página do ano e,
         se pedido, o ano no céu a partir do aniversário ── */
      body.imprimindo-leitura.so-revolucao #gma-result > *:not(#pdf-capa):not(#pdf-rs-pagina):not(.sec-ano) { display: none !important; }
      body.imprimindo-leitura.so-revolucao #pdf-rs-pagina { break-before: auto !important; page-break-before: auto !important; }
      body.imprimindo-leitura .capa-dedic { font-family: "Cormorant Garamond", serif; font-style: italic; font-size: 13pt; line-height: 1.35;
        color: rgb(var(--tinta, 255 255 255)) !important; max-width: 150mm; margin: 0 auto 2.5mm; }
      body.imprimindo-leitura .rs-astros { width: 100%; margin: 0 0 5mm; font-size: 9.5pt; }
      body.imprimindo-leitura .rs-pdf-acoes { display: none !important; }
      /* ── O PDF da sinastria (v1.42): a capa do encontro e as páginas dele ── */
      body.imprimindo-leitura.so-sinastria #gma-result > *:not(#pdf-capa):not(#pdf-rs-pagina),
      body.imprimindo-leitura.so-relocacao #gma-result > *:not(#pdf-capa):not(#pdf-rs-pagina) { display: none !important; }
      body.imprimindo-leitura.so-sinastria #pdf-rs-pagina,
      body.imprimindo-leitura.so-relocacao #pdf-rs-pagina { break-before: auto !important; page-break-before: auto !important; }
      body.imprimindo-leitura .rel-tira { display: none !important; }
      body.imprimindo-leitura .rel-tabela-rola { overflow: visible !important; }
      body.imprimindo-leitura .pdf-nova-folha { break-before: page; page-break-before: always; }
      body.imprimindo-leitura .rel-roda { max-width: 115mm !important; break-inside: avoid; }
      body.imprimindo-leitura .rel-roda svg { width: 100% !important; height: auto !important; }
    }
    .asp-grade-palco { margin-bottom: 0.5rem; }
    .asp-dobra { margin-top: 0.9rem; border-top: 1px solid rgb(var(--tinta, 255 255 255) / 0.08); padding-top: 0.7rem; }
    .asp-dobra summary { cursor: pointer; font-size: 0.8rem; color: var(--gold-100); list-style: none; display: flex; align-items: center; gap: 0.4rem; }
    .asp-dobra summary::-webkit-details-marker { display: none; }
    .asp-dobra summary::before { content: '▸'; transition: transform 180ms ease; }
    .asp-dobra[open] summary::before { transform: rotate(90deg); }
    .asp-dobra summary span { color: rgb(var(--tinta, 255 255 255) / calc(0.35 * var(--realce, 1))); font-size: 0.72rem; }
    .asp-dobra .asp-lista { margin-top: 0.8rem; max-height: 420px; overflow-y: auto; padding-right: 0.3rem; }

    /* ── Filtro de orbe ── */
    .orbe-barra { display: flex; align-items: center; gap: 0.75rem; justify-content: center; flex-wrap: wrap; margin-bottom: 0.9rem; }
    .orbe-barra label { font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); }
    .orbe-rot { font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); }
    .orbe-seta { width: 30px; height: 30px; border-radius: 50%; cursor: pointer; font-family: inherit;
      background: rgb(var(--tinta, 255 255 255) / 0.05); border: 1px solid rgba(212,175,55,0.4); color: var(--gold-100); font-size: 0.7rem; }
    .orbe-seta:hover { background: rgba(212,175,55,0.16); }
    .orbe-seta:disabled { opacity: 0.3; cursor: default; }
    .orbe-valor { font-size: 1rem; color: var(--gold-100); min-width: 42px; text-align: center; font-weight: 600; }

    /* ── Estante: os mapas que o Portador guardou ── */
    .est { display: none; margin-bottom: 1.75rem; }
    .est.show { display: block; }
    /* ── A estante arrumada (v1.75) ──
       Em cima: o título com a contagem, as sessões da semana, a busca, a
       ordem e o filtro por signo. Embaixo: uma ficha por mapa, em grade. */
    .est-topo { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem 1rem; margin-bottom: 0.8rem; flex-wrap: wrap; }
    .est-titulo { font-family: "Cormorant Garamond", serif; font-size: 1.6rem; font-weight: 600; color: var(--gold-100); margin: 0; line-height: 1.1; }
    .est-conta { font-family: "Inter", system-ui, sans-serif; font-size: 0.74rem; font-weight: 400; letter-spacing: 0.04em; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); margin-left: 0.4rem; }
    .est-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 0.9rem; margin-bottom: 0.8rem; }
    .est-barra .est-busca { flex: 1 1 240px; max-width: 360px; }
    .est-ordem { display: flex; flex-wrap: wrap; align-items: center; gap: 0.3rem; }
    .est-rot { font-size: 0.62rem; letter-spacing: 0.16em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); margin-right: 0.15rem; }
    .est-ord, .est-signos-bt { font: inherit; font-size: 0.74rem; padding: 0.3rem 0.75rem; border-radius: 999px; cursor: pointer;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.14); color: rgb(var(--tinta, 255 255 255) / calc(0.75 * var(--realce, 1))); }
    .est-ord:hover, .est-signos-bt:hover { border-color: rgba(212,175,55,0.45); color: var(--gold-100); }
    .est-ord.on { background: rgba(212,175,55,0.16); border-color: rgba(212,175,55,0.6); color: var(--gold-100); }
    .est-signos-bt.ativo, .est-signos-bt[aria-expanded="true"] { border-color: rgba(127,212,255,0.6); color: var(--link, #7fd4ff); }
    .est-signos-n:not(:empty) { display: inline-grid; place-items: center; min-width: 1.2rem; height: 1.2rem; margin-left: 0.25rem; padding: 0 0.3rem; border-radius: 999px;
      background: rgba(127,212,255,0.2); font-size: 0.66rem; color: rgb(var(--tinta, 255 255 255)); }
    .est-signos { margin: 0 0 0.8rem; padding: 0.85rem 1rem; border-radius: 16px; background: rgb(var(--superficie, 10 13 38) / 0.85); border: 1px solid rgba(127,212,255,0.28); }
    .est-signos[hidden] { display: none; }
    .est-signos-nota { font-size: 0.72rem; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); margin: 0 0 0.6rem; }
    .est-signos-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(170px, 100%), 1fr)); gap: 0.55rem 0.8rem; margin-bottom: 0.7rem; }
    .est-sig { display: flex; flex-direction: column; gap: 0.25rem; font-size: 0.74rem; color: rgb(var(--tinta, 255 255 255) / calc(0.7 * var(--realce, 1))); }
    .est-sig b { color: var(--gold-100); font-weight: 600; margin-right: 0.15rem; }
    .est-sig select { padding: 0.38rem 0.5rem; border-radius: 10px; border: 1px solid rgba(212,175,55,0.25); background: rgb(var(--abismo, 0 28 85) / 0.35);
      color: rgb(var(--tinta, 255 255 255)); font: inherit; font-size: 0.8rem; }
    .est-signos-ativos { display: flex; flex-wrap: wrap; gap: 0.35rem; margin: 0 0 0.6rem; }
    .est-signos-ativos:empty { display: none; }

    .est-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(285px, 100%), 1fr)); gap: 0.75rem; align-items: start; }
    .est-lista > .est-cad, .est-lista > .est-selo-det, .est-lista > .est-nada, .est-lista > .vazio-guia { grid-column: 1 / -1; }
    .est-item { display: flex; flex-direction: column; gap: 0.45rem; min-width: 0; padding: 0.85rem 0.95rem 0.7rem; border-radius: 16px;
      background: rgb(var(--tinta, 255 255 255) / 0.035); border: 1px solid rgba(212,175,55,0.22); transition: border-color 160ms ease, background 160ms ease; }
    .est-item:hover { border-color: rgba(212,175,55,0.45); background: rgb(var(--tinta, 255 255 255) / 0.05); }
    .est-cab { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.5rem; }
    .est-item button.abrir { background: none; border: none; padding: 0; cursor: pointer; text-align: left; min-width: 0;
      font-family: "Cormorant Garamond", serif; font-size: 1.25rem; font-weight: 600; line-height: 1.15; color: rgb(var(--tinta, 255 255 255) / calc(0.92 * var(--realce, 1)));
      overflow-wrap: anywhere; }
    .est-item button.abrir:hover { color: var(--gold-100); }
    .est-dados { display: flex; flex-wrap: wrap; gap: 0.15rem 0.6rem; font-size: 0.76rem; color: rgb(var(--tinta, 255 255 255) / calc(0.62 * var(--realce, 1))); font-variant-numeric: tabular-nums; }
    .est-dados > span + span::before { content: '·'; margin-right: 0.6rem; color: rgb(var(--tinta, 255 255 255) / calc(0.3 * var(--realce, 1))); }
    /* O lugar numa linha só dele: a data · a hora em cima, a cidade embaixo */
    .est-lugar { flex-basis: 100%; min-width: 0; overflow-wrap: anywhere; }
    .est-dados > .est-lugar::before { content: none; }
    .est-big3 { display: flex; flex-wrap: wrap; gap: 0.25rem 0.75rem; font-size: 0.78rem; color: var(--gold-50, #FFE680); }
    .est-big3:empty, .est-extra:empty { display: none; }
    .est-big3 .fraco, .est-extra .fraco { color: rgb(var(--tinta, 255 255 255) / calc(0.4 * var(--realce, 1))); }
    .est-extra { font-size: 0.74rem; line-height: 1.45; color: var(--link, #7fd4ff); }
    .est-extra-an { color: var(--gold-50, #FFE680); }
    .est-acoes { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; margin-top: 0.15rem; padding-top: 0.55rem; border-top: 1px solid rgb(var(--tinta, 255 255 255) / 0.07); }
    .est-ac { font: inherit; font-size: 0.72rem; padding: 0.28rem 0.65rem; border-radius: 999px; cursor: pointer;
      background: none; border: 1px solid rgb(var(--tinta, 255 255 255) / 0.16); color: rgb(var(--tinta, 255 255 255) / calc(0.75 * var(--realce, 1))); }
    .est-ac:hover { border-color: rgba(212,175,55,0.5); color: var(--gold-100); }
    .est-ac-abrir { background: rgba(212,175,55,0.14); border-color: rgba(212,175,55,0.5); color: var(--gold-100); }
    .est-ac.nota-b.tem { border-color: rgba(212,175,55,0.45); color: var(--gold-100); }
    .est-item button.tirar { margin-left: auto; background: none; border: none; color: rgb(var(--tinta, 255 255 255) / calc(0.3 * var(--realce, 1))); cursor: pointer; font-size: 1.05rem; line-height: 1; padding: 0.15rem 0.3rem; }
    .est-item button.tirar:hover { color: var(--erro, #ff9d9d); }
    .est-vazia { font-size: 0.82rem; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); }
    /* Os selos do céu e a próxima sessão na estante (v1.43) */
    .est-item .marcas { display: inline-flex; gap: 0.3rem; }
    .est-item .marcas:empty { display: none; }
    .est-item .marca { background: rgba(127,212,255,0.1); border: 1px solid rgba(127,212,255,0.35); color: var(--celeste, #cfeeff); border-radius: 999px;
      font-size: 0.72rem; line-height: 1.35; padding: 0.08rem 0.45rem; cursor: pointer; font-family: inherit; white-space: nowrap; }
    .est-item .marca.sess { background: rgba(212,175,55,0.12); border-color: rgba(212,175,55,0.45); color: var(--gold-100); }
    .est-selo-det { flex-basis: 100%; width: 100%; box-sizing: border-box; padding: 0.7rem 0.9rem; border-radius: 14px; background: rgb(var(--superficie, 10 13 38) / 0.9);
      border: 1px solid rgba(127,212,255,0.3); font-size: 0.8rem; color: rgb(var(--tinta, 255 255 255) / calc(0.84 * var(--realce, 1))); line-height: 1.6; }
    .est-selo-det ul { margin: 0.25rem 0 0; padding-left: 1.1rem; }
    .est-selo-det .nt { font-size: 0.7rem; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); margin: 0.35rem 0 0; }
    .est-legenda { font-size: 0.72rem; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); margin: 0.6rem 0 0; }
    .est-legenda:empty { display: none; }
    /* A próxima sessão no caderno (v1.43) */
    .cad-prox { display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center; }
    .cad-prox input[type=datetime-local] { padding: 0.5rem 0.7rem; border-radius: 10px; background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgba(212,175,55,0.25);
      color: rgb(var(--tinta, 255 255 255)); font-family: inherit; font-size: 0.84rem; color-scheme: dark; }
    .cad-prox-ceu { flex-basis: 100%; font-size: 0.8rem; color: rgb(var(--tinta, 255 255 255) / calc(0.72 * var(--realce, 1))); line-height: 1.55; }
    .cad-prox-ceu b { color: var(--gold-100); font-weight: 600; }
    /* Os filtros dos selos e as sessões da semana (v1.44) */
    .est-filtros { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 0 0 0.75rem; }
    .est-filtros[hidden], .est-semana[hidden], .cad-zap[hidden] { display: none; }
    .est-filtro { background: rgb(var(--tinta, 255 255 255) / 0.03); border: 1px solid rgba(127,212,255,0.3); color: rgb(var(--tinta, 255 255 255) / calc(0.75 * var(--realce, 1))); border-radius: 999px;
      font: inherit; font-size: 0.74rem; padding: 0.22rem 0.7rem; cursor: pointer; }
    .est-filtro.on { background: rgba(127,212,255,0.18); border-color: rgba(127,212,255,0.75); color: rgb(var(--tinta, 255 255 255)); }
    .est-sem-bt { background: rgba(212,175,55,0.1); border: 1px solid rgba(212,175,55,0.4); color: var(--gold-100); border-radius: 999px;
      font: inherit; font-size: 0.76rem; padding: 0.3rem 0.85rem; cursor: pointer; }
    .est-sem-bt:hover { background: rgba(212,175,55,0.2); }
    .est-semana { margin: 0 0 1rem; padding: 1rem 1.1rem; border-radius: 16px; background: rgb(var(--superficie, 10 13 38) / 0.92); border: 1px solid rgba(212,175,55,0.3); }
    .sw-topo { display: flex; justify-content: space-between; align-items: baseline; gap: 0.6rem; flex-wrap: wrap; margin-bottom: 0.4rem; }
    .sw-titulo { font-family: "Cormorant Garamond", serif; font-size: 1.2rem; color: var(--gold-100); font-weight: 600; }
    .sw-topo .acoes { display: flex; gap: 0.6rem; align-items: center; }
    .sw-item { padding: 0.8rem 0 0.7rem; border-top: 1px solid rgb(var(--tinta, 255 255 255) / 0.08); }
    .sw-quando { font-size: 0.76rem; color: var(--link, #7fd4ff); letter-spacing: 0.04em; }
    .sw-nome { font-size: 1rem; color: rgb(var(--tinta, 255 255 255)); font-weight: 600; margin: 0.1rem 0 0.3rem; }
    .sw-linha { font-size: 0.8rem; color: rgb(var(--tinta, 255 255 255) / calc(0.78 * var(--realce, 1))); line-height: 1.55; margin: 0.18rem 0; }
    .sw-linha b { color: var(--gold-100); font-weight: 600; }
    .sw-acoes { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-top: 0.5rem; }
    /* O aviso ao cliente (v1.44) */
    .cad-zap { flex-basis: 100%; display: flex; flex-direction: column; gap: 0.45rem; margin-top: 0.4rem; }
    .cad-zap textarea { width: 100%; box-sizing: border-box; min-height: 160px; padding: 0.55rem 0.75rem; border-radius: 10px; resize: vertical;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgba(212,175,55,0.25); color: rgb(var(--tinta, 255 255 255)); font-family: inherit; font-size: 0.84rem; line-height: 1.5; }
    .cad-zap .zap-linha { display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center; }
    .cad-zap input[type=tel] { padding: 0.45rem 0.7rem; border-radius: 10px; background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgba(212,175,55,0.25);
      color: rgb(var(--tinta, 255 255 255)); font-family: inherit; font-size: 0.84rem; min-width: 220px; }
    .cad-zap .zap-nota { font-size: 0.72rem; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); }
    /* As melhores cidades do Brasil (v1.46) */
    .rc-busca { margin-top: 0.4rem; }
    .rc-achadas { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(220px, 100%), 1fr)); gap: 0.4rem; }
    .rc-achada { display: flex; flex-direction: column; gap: 0.15rem; text-align: left; font: inherit; cursor: pointer; border-radius: 12px; padding: 0.55rem 0.75rem;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgba(212,175,55,0.25); color: rgb(var(--tinta, 255 255 255) / calc(0.85 * var(--realce, 1))); }
    .rc-achada b { color: var(--gold-100); font-weight: 600; font-size: 0.86rem; }
    .rc-achada span { font-size: 0.74rem; color: rgb(var(--tinta, 255 255 255) / calc(0.6 * var(--realce, 1))); }
    .rc-achada:hover, .rc-achada.on { border-color: rgba(212,175,55,0.65); background: rgba(212,175,55,0.1); }
    .gma-result { display: none; margin-top: 3rem; }
    .gma-result.show { display: block; }
    .gma-warn { background: rgba(245,158,11,0.1); border: 1px solid rgba(245,158,11,0.35); color: var(--ouro-claro, #ffd9a0); border-radius: 14px; padding: 0.9rem 1.2rem; font-size: 0.85rem; line-height: 1.5; margin-bottom: 2rem; text-align: center; }

    .big3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-bottom: 2.5rem; }
    .big3-card { border-radius: 20px; padding: 1.6rem 1rem; text-align: center; }
    .big3-ico { font-size: 1.6rem; line-height: 1; }
    .big3-label { font-size: 0.62rem; letter-spacing: 0.28em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); margin: 0.6rem 0 0.35rem; }
    .big3-sign { font-family: "Cormorant Garamond", serif; font-size: 1.5rem; font-weight: 600; color: var(--gold-100); line-height: 1.15; }
    .big3-deg { font-size: 0.78rem; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); margin-top: 0.2rem; }

    .gma-chart-wrap { max-width: 620px; margin: 0 auto; }
    #chart { width: 100%; }
    #chart svg { max-width: 100%; height: auto; display: block; margin: 0 auto; }
    /* A roda dos Estudos sai com 700px e não encolhia: no celular só um
       quarto dela cabia na tela, nos quatro estudos. Mesma regra da roda
       principal. */
    #est-roda { width: 100%; }
    /* A largura sai de --roda-lado, que o "Tamanho da roda" muda (700px
       é o de sempre); nunca passa da largura da caixa. */
    #est-roda svg { width: min(100%, var(--roda-lado, 700px)); max-width: 100%; height: auto; display: block; margin: 0 auto; }

    /* ── Aparência da roda dos Estudos (v1.23) ── */
    .ap-caixa { max-width: 780px; margin: 0.9rem auto 0; border-radius: 14px;
      border: 1px solid rgba(212,175,55,0.2); background: rgb(var(--tinta, 255 255 255) / 0.03); }
    .ap-caixa > summary { cursor: pointer; list-style: none; padding: 0.55rem 0.9rem; font-size: 0.78rem;
      color: rgb(var(--tinta, 255 255 255) / calc(0.75 * var(--realce, 1))); text-align: center; }
    .ap-caixa > summary::-webkit-details-marker { display: none; }
    .ap-caixa > summary:hover { color: var(--gold-100); }
    .ap-caixa[open] > summary { border-bottom: 1px solid rgba(212,175,55,0.15); color: var(--gold-100); }
    .ap-grade { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(170px, 100%), 1fr)); gap: 0.8rem 1.2rem; padding: 0.8rem 1rem 0.3rem; }
    .ap-campo { display: flex; flex-direction: column; gap: 0.35rem; font-size: 0.7rem; letter-spacing: 0.06em;
      text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); }
    .ap-campo em { font-style: normal; color: var(--gold-100); letter-spacing: 0; margin-left: 0.25rem; }
    .ap-campo input[type="range"] { accent-color: #d4af37; width: 100%; }
    .ap-campo select { padding: 0.4rem 0.55rem; border-radius: 10px; border: 1px solid rgba(212,175,55,0.25);
      background: rgb(var(--abismo, 0 28 85) / 0.35); color: rgb(var(--tinta, 255 255 255)); font-family: inherit; font-size: 0.8rem; text-transform: none; letter-spacing: normal; }
    .ap-amostra { display: flex; gap: 0.55rem; font-size: 1.05rem; letter-spacing: 0; text-transform: none; }
    .ap-linha { display: flex; flex-wrap: wrap; gap: 0.5rem 1.1rem; align-items: center; justify-content: center; padding: 0.4rem 1rem 0.85rem; }
    /* ── Casas, planetas e aspectos (v1.25) ── */
    .op-topo { display: flex; flex-wrap: wrap; gap: 0.5rem 0.9rem; justify-content: center; padding: 0.8rem 1rem 0.2rem; }
    .op-seg { display: inline-flex; flex-wrap: wrap; justify-content: center; gap: 0.3rem; }
    .op-seg-b, .op-mapa, .op-aba, .op-chip { font-family: inherit; cursor: pointer; border-radius: 999px;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.14); color: rgb(var(--tinta, 255 255 255) / calc(0.72 * var(--realce, 1))); }
    .op-seg-b { font-size: 0.72rem; padding: 0.32rem 0.8rem; }
    .op-mapa { font-size: 0.72rem; padding: 0.22rem 0.75rem 0.22rem 0.28rem; display: inline-flex; align-items: center; gap: 0.35rem; max-width: 220px; }
    .op-mapa b { display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; font-size: 0.72rem;
      background: rgba(127,212,255,0.16); color: var(--celeste, #bfe8ff); flex-shrink: 0; }
    .op-mapa span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .op-seg-b:hover, .op-mapa:hover, .op-aba:hover, .op-chip:hover { border-color: rgba(212,175,55,0.45); color: var(--gold-100); }
    .op-seg-b.on, .op-mapa.on, .op-aba.on, .op-chip.on { background: rgba(212,175,55,0.16); border-color: rgba(212,175,55,0.6); color: var(--gold-100); }
    .op-mapa.on b { background: rgba(212,175,55,0.35); color: rgb(var(--tinta, 255 255 255)); }
    .op-mapa:disabled { opacity: 0.35; cursor: default; }
    .op-abas { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.3rem; padding: 0.6rem 1rem 0.2rem; }
    .op-aba { font-size: 0.74rem; padding: 0.34rem 0.85rem; border-radius: 10px; }
    .op-corpo { padding: 0.6rem 1rem 0.2rem; }
    .op-nota { font-size: 0.72rem; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); text-align: center; line-height: 1.6; margin: 0 0 0.6rem; }
    .op-nota strong { color: var(--gold-100); font-weight: 600; }
    .op-lista { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.35rem; }
    .op-chip { font-size: 0.76rem; padding: 0.36rem 0.8rem; }
    /* Os astros em grade, cinco por linha, como no Astrodox */
    .op-astros { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0.35rem; max-width: 460px; margin: 0 auto; }
    .op-astros .op-chip { border-radius: 12px; padding: 0.4rem 0.2rem 0.3rem; display: flex; flex-direction: column; align-items: center; gap: 0.1rem; min-width: 0; }
    .op-astros .op-chip .g { font-size: 1.15rem; line-height: 1; }
    .op-astros .op-chip small { font-size: 0.58rem; letter-spacing: 0.02em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
    .op-astros .op-chip.fora-da-roda { opacity: 0.3; cursor: not-allowed; }
    .op-asps .op-chip { display: inline-flex; align-items: center; gap: 0.35rem; }
    .op-asps .op-chip .g { font-size: 0.95rem; min-width: 1.1em; text-align: center; }
    .op-asps .op-chip b { font-weight: 600; font-variant-numeric: tabular-nums; }
    .op-atalhos { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.35rem; margin-top: 0.6rem; }

    /* Na tabela dos Estudos, o lado de cada coluna escrito em cima do nome */
    .est-lado { display: block; font-size: 0.55rem; letter-spacing: 0.18em; color: rgb(var(--tinta, 255 255 255) / calc(0.42 * var(--realce, 1))); margin-bottom: 0.1rem; }

    /* ── Dois mapas ou um mapa só (v1.24) ── */
    .tv-modo { display: flex; justify-content: center; gap: 0.4rem; margin-bottom: 0.8rem; }
    .tv-modo-b { font-size: 0.76rem; border-radius: 999px; padding: 0.38rem 0.95rem; cursor: pointer; font-family: inherit;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.16); color: rgb(var(--tinta, 255 255 255) / calc(0.72 * var(--realce, 1))); }
    .tv-modo-b:hover { border-color: rgba(212,175,55,0.45); color: var(--gold-100); }
    .tv-modo-b.on { background: rgba(212,175,55,0.16); border-color: rgba(212,175,55,0.6); color: var(--gold-100); }
    .tv-comando.um-so [data-tv-trocar] { display: none; }

    /* ── Legendas e palavras-chave (v1.24) ── */
    .leg-caixa > summary { cursor: pointer; list-style: none; text-align: center; font-size: 0.82rem;
      color: var(--gold-100); padding-bottom: 0.2rem; }
    .leg-caixa > summary::-webkit-details-marker { display: none; }
    .leg-abas { display: flex; justify-content: center; flex-wrap: wrap; gap: 0.35rem; margin: 0.6rem 0 0.4rem; }
    .leg-aba { font-size: 0.72rem; border-radius: 999px; padding: 0.3rem 0.8rem; cursor: pointer; font-family: inherit;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.14); color: rgb(var(--tinta, 255 255 255) / calc(0.7 * var(--realce, 1))); }
    .leg-aba.on { background: rgba(212,175,55,0.16); border-color: rgba(212,175,55,0.6); color: var(--gold-100); }
    .leg-metodo { text-align: center; font-size: 0.72rem; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); margin: 0.2rem 0 0.8rem; }
    .leg-astros { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(290px, 100%), 1fr)); gap: 0.6rem; }
    .leg-astro { padding: 0.65rem 0.8rem; border-radius: 12px; background: rgb(var(--tinta, 255 255 255) / 0.03); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.07); }
    .leg-topo { font-size: 0.92rem; color: rgb(var(--tinta, 255 255 255)); }
    .leg-topo .g { color: var(--gold-100); margin-right: 0.2rem; }
    .leg-chave { display: block; font-size: 0.72rem; color: var(--lilas, #c9b8ff); margin: 0.1rem 0 0.3rem; letter-spacing: 0.02em; }
    .leg-linha { font-size: 0.78rem; color: rgb(var(--tinta, 255 255 255) / calc(0.78 * var(--realce, 1))); line-height: 1.5; margin-top: 0.25rem; }
    .leg-linha b { color: var(--gold-100); font-weight: 600; }
    .leg-linha i { color: var(--verde, #8fe8b0); font-style: normal; }
    .leg-sub { font-family: "Cormorant Garamond", serif; font-size: 1.1rem; color: var(--gold-100); text-align: center; margin: 1.1rem 0 0.5rem; }
    .leg-tipos { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.35rem 1rem; font-size: 0.74rem; color: rgb(var(--tinta, 255 255 255) / calc(0.7 * var(--realce, 1))); margin-bottom: 0.6rem; }
    .leg-asp { font-size: 0.78rem; color: rgb(var(--tinta, 255 255 255) / calc(0.78 * var(--realce, 1))); line-height: 1.5; padding: 0.35rem 0; border-bottom: 1px solid rgb(var(--tinta, 255 255 255) / 0.05); }
    .leg-asp:last-child { border-bottom: none; }
    .leg-asp em { color: rgb(var(--tinta, 255 255 255) / calc(0.4 * var(--realce, 1))); font-style: normal; }
    .est-chave-asp { display: block; font-size: 0.66rem; color: var(--lilas, #c9b8ff); opacity: 0.85; }

    .gma-block-title { text-align: center; font-family: "Cormorant Garamond", serif; font-size: 1.7rem; font-weight: 600; margin: 0 0 1.25rem; }
    .gma-block-title .text-gold { color: var(--gold-100); }

    .gma-table-card { border-radius: 20px; padding: 1.5rem; overflow-x: auto; margin-bottom: 2.5rem; }
    table.gma-table { width: 100%; border-collapse: collapse; font-size: 0.88rem; }
    table.gma-table th { text-align: left; font-size: 0.6rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--gold-100); font-weight: 600; padding: 0.5rem 0.75rem; border-bottom: 1px solid rgba(212,175,55,0.25); }
    table.gma-table td { padding: 0.55rem 0.75rem; border-bottom: 1px solid rgb(var(--tinta, 255 255 255) / 0.06); color: rgb(var(--tinta, 255 255 255) / calc(0.82 * var(--realce, 1))); }
    table.gma-table tr:last-child td { border-bottom: none; }
    .gma-pglyph { font-size: 1.05rem; margin-right: 0.4rem; color: var(--gold-300); }
    .gma-retro { color: var(--laranja, #ff9d6e); font-size: 0.78rem; }
    .gma-sign-strong { color: rgb(var(--tinta, 255 255 255)); font-weight: 500; }

    .gma-cols2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; align-items: start; }
    .gma-cta { text-align: center; margin-top: 3rem; }
    .btn-wa {
      display: inline-flex; align-items: center; gap: 0.55rem;
      background: linear-gradient(135deg, #1a6b2e, #25a646);
      color: rgb(var(--tinta, 255 255 255)); font-family: "Inter", sans-serif; font-weight: 600;
      font-size: 0.9rem; letter-spacing: 0.04em; padding: 1rem 2rem;
      border-radius: 999px; text-decoration: none;
      box-shadow: 0 0 24px rgba(37,166,70,0.3);
      transition: transform 0.2s, box-shadow 0.2s;
    }
    .btn-wa:hover { transform: translateY(-2px); box-shadow: 0 0 40px rgba(37,166,70,0.5); color: rgb(var(--tinta, 255 255 255)); }
    .btn-wa svg { width: 18px; height: 18px; flex-shrink: 0; }

    /* ── Footer ── */
    .lp-footer { padding: 3rem 1.5rem; text-align: center; border-top: 1px solid rgba(212,175,55,0.15); }
    .lp-footer .brand { font-family: "Cormorant Garamond", serif; font-size: 0.82rem; letter-spacing: 0.22em; color: var(--gold-300); margin-bottom: 0.5rem; }
    .lp-footer .tagline { font-size: 0.7rem; color: rgb(var(--tinta, 255 255 255) / calc(0.3 * var(--realce, 1))); letter-spacing: 0.14em; text-transform: uppercase; }

    @media (max-width: 720px) {
      .gma-grid { grid-template-columns: 1fr; }
      .big3 { grid-template-columns: 1fr; }
      .gma-cols2 { grid-template-columns: 1fr; }
    }
    /* ── Estudos do mapa (Anexo 3) ── */
    .est-bloco { margin-top: 2.5rem; }
    .est-abas { display: flex; gap: 0.5rem; flex-wrap: wrap; justify-content: center; margin-bottom: 1.1rem; }
    .est-aba { font-size: 0.78rem; border-radius: 999px; padding: 0.45rem 1rem; cursor: pointer; font-family: inherit;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.14); color: rgb(var(--tinta, 255 255 255) / calc(0.7 * var(--realce, 1))); }
    .est-aba:hover { border-color: rgba(212,175,55,0.4); color: var(--gold-100); }
    .est-aba.on { background: rgba(212,175,55,0.14); border-color: rgba(212,175,55,0.5); color: var(--gold-100); }
    .est-painel { max-width: 720px; margin: 0 auto; }
    .est-nota { font-size: 0.82rem; color: rgb(var(--tinta, 255 255 255) / calc(0.55 * var(--realce, 1))); line-height: 1.7; text-align: center; margin-bottom: 0.9rem; }
    .est-controles { display: flex; gap: 0.75rem; flex-wrap: wrap; align-items: flex-end; justify-content: center; }
    .est-controles label { font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1)));
      display: flex; flex-direction: column; gap: 0.25rem; }
    .est-controles select, .est-controles input { padding: 0.5rem 0.7rem; border-radius: 10px; border: 1px solid rgba(212,175,55,0.25);
      background: rgb(var(--abismo, 0 28 85) / 0.35); color: rgb(var(--tinta, 255 255 255)); font-family: inherit; font-size: 0.86rem; text-transform: none; letter-spacing: normal; }
    .est-resumo { text-align: center; font-size: 0.9rem; color: rgb(var(--tinta, 255 255 255) / calc(0.75 * var(--realce, 1))); line-height: 1.8; margin-top: 1.25rem; }
    .est-resumo strong { color: var(--gold-100); }
    .est-asp-g { font-size: 1.05rem; }
    .est-linha { cursor: pointer; }
    .est-linha:hover { background: rgba(212,175,55,0.10); }
    .est-linha.am-sel { background: rgba(212,175,55,0.22); box-shadow: inset 0 0 0 1px rgba(212,175,55,0.55); }
    /* A nota que cada mapa guardado carrega */
    .est-nota-campo { width: 100%; margin-top: 0.5rem; padding: 0.5rem 0.7rem; border-radius: 10px;
      border: 1px solid rgba(212,175,55,0.22); background: rgb(var(--abismo, 0 28 85) / 0.3); color: rgb(var(--tinta, 255 255 255));
      font-family: inherit; font-size: 0.82rem; resize: vertical; min-height: 46px; }

    /* ── Trânsitos em movimento (v1.22) ──
       Os dois mapas ficam no painel da aba; o passo, a velocidade e as
       opções logo acima da roda; e o relógio com os botões numa barra
       que gruda no topo, para o dedo não perder o botão enquanto o
       olho acompanha a roda. */
    .tv-mapas { display: flex; align-items: stretch; justify-content: center; gap: 0.6rem; flex-wrap: wrap; margin-bottom: 1rem; }
    .tv-lado { display: flex; flex-direction: column; gap: 0.4rem; flex: 1 1 220px; max-width: 300px;
      padding: 0.7rem 0.85rem; border-radius: 14px; border: 1px solid rgba(212,175,55,0.16); background: rgb(var(--tinta, 255 255 255) / 0.03);
      transition: border-color 200ms ease, box-shadow 200ms ease; }
    .tv-lado.anda { border-color: rgba(212,175,55,0.6); box-shadow: inset 0 0 0 1px rgba(212,175,55,0.22); }
    .tv-lado-tit { font-size: 0.64rem; letter-spacing: 0.16em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); }
    .tv-lado select { padding: 0.5rem 0.6rem; border-radius: 10px; border: 1px solid rgba(212,175,55,0.25);
      background: rgb(var(--abismo, 0 28 85) / 0.35); color: rgb(var(--tinta, 255 255 255)); font-family: inherit; font-size: 0.84rem; width: 100%; }
    .tv-anda { font-size: 0.76rem; color: rgb(var(--tinta, 255 255 255) / calc(0.65 * var(--realce, 1))); display: inline-flex; gap: 0.4rem; align-items: center; cursor: pointer; }
    .tv-lado.anda .tv-anda { color: var(--gold-100); }
    .tv-trocar { align-self: center; width: 42px; height: 42px; border-radius: 50%; cursor: pointer; font-size: 1.1rem; font-family: inherit;
      background: rgba(212,175,55,0.1); border: 1px solid rgba(212,175,55,0.45); color: var(--gold-100); }
    .tv-trocar:hover { background: rgba(212,175,55,0.22); }

    /* ══ O tempo dos trânsitos (v1.45) ══════════════════════════
       Antes a barra grudava no topo e cobria a roda. Agora:
         · no computador largo, a roda e o comando ficam lado a lado,
           saindo da coluna de 940px como o mapa natal — a roda à
           esquerda, do tamanho da tela, e o comando numa coluna à
           direita que acompanha a rolagem;
         · no celular e no tablet, a parte de cima do comando (a data,
           as setas e os passos) vira uma barra presa embaixo da tela
           enquanto o estudo está à vista, e o resto fica abaixo da roda. */
    .tv-rot { font-size: 0.62rem; letter-spacing: 0.16em; text-transform: uppercase; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); }
    .tv-linha { display: flex; flex-wrap: wrap; gap: 0.4rem 0.6rem; align-items: center; }
    .tv-chips { display: flex; flex-wrap: wrap; gap: 0.3rem; }
    .tv-chip { font-size: 0.72rem; border-radius: 999px; padding: 0.32rem 0.72rem; cursor: pointer; font-family: inherit;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.14); color: rgb(var(--tinta, 255 255 255) / calc(0.72 * var(--realce, 1))); }
    .tv-chip:hover { border-color: rgba(212,175,55,0.4); color: var(--gold-100); }
    .tv-chip.on { background: rgba(212,175,55,0.16); border-color: rgba(212,175,55,0.6); color: var(--gold-100); }
    .tv-check { font-size: 0.76rem; color: rgb(var(--tinta, 255 255 255) / calc(0.72 * var(--realce, 1))); display: inline-flex; align-items: center; gap: 0.35rem; cursor: pointer; }
    .tv-check input { accent-color: #d4af37; }
    .tv-painel input[type="datetime-local"] { padding: 0.35rem 0.55rem; border-radius: 10px; border: 1px solid rgba(212,175,55,0.25);
      background: rgb(var(--abismo, 0 28 85) / 0.35); color: rgb(var(--tinta, 255 255 255)); font-family: inherit; font-size: 0.8rem; color-scheme: dark; max-width: 100%; }
    .tv-mini { font-size: 0.72rem; border-radius: 999px; padding: 0.32rem 0.75rem; cursor: pointer; font-family: inherit;
      background: none; border: 1px solid rgb(var(--tinta, 255 255 255) / 0.18); color: rgb(var(--tinta, 255 255 255) / calc(0.7 * var(--realce, 1))); }
    .tv-mini:hover { border-color: rgba(212,175,55,0.45); color: var(--gold-100); }

    .tv-comando { border-radius: 18px; background: rgb(var(--noite, 2 17 51) / 0.94); border: 1px solid rgba(212,175,55,0.3);
      box-shadow: 0 10px 30px -18px rgba(0,0,0,0.9); padding: 0.9rem 1rem; margin: 1rem 0; }
    .tv-fixo { display: flex; flex-direction: column; gap: 0.6rem; }
    .tv-painel { display: grid; gap: 0.6rem; margin-top: 0.85rem; padding-top: 0.85rem; border-top: 1px solid rgb(var(--tinta, 255 255 255) / 0.08); }
    .tv-quando { min-width: 0; }
    .tv-data { font-size: 1.2rem; font-weight: 600; color: var(--gold-100); font-variant-numeric: tabular-nums; letter-spacing: 0.02em; }
    .tv-fuso { font-size: 0.62rem; letter-spacing: 0.12em; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); margin-left: 0.3rem; }
    .tv-quem { display: block; font-size: 0.7rem; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); margin-top: 0.1rem; }
    .tv-comando.vivo .tv-data::before { content: "● "; color: var(--erro, #ff6b6b); animation: tv-pulso 1.2s ease-in-out infinite; }
    @keyframes tv-pulso { 50% { opacity: 0.25; } }
    .tv-botoes { display: flex; gap: 0.35rem; align-items: center; flex-wrap: wrap; }
    .tv-b { min-width: 44px; height: 44px; padding: 0 0.6rem; border-radius: 12px; cursor: pointer; font-family: inherit; font-size: 0.95rem;
      background: rgb(var(--tinta, 255 255 255) / 0.05); border: 1px solid rgba(212,175,55,0.3); color: rgb(var(--tinta, 255 255 255) / calc(0.88 * var(--realce, 1)));
      touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none;
      transition: background 120ms ease, transform 120ms ease; }
    .tv-b:hover { border-color: rgba(212,175,55,0.6); color: var(--gold-100); }
    .tv-b-grande { min-width: 58px; font-size: 1.15rem; background: rgba(212,175,55,0.12); color: var(--gold-100); }
    .tv-b.segurando, .tv-passo.segurando { background: rgba(212,175,55,0.34); transform: scale(0.96); }
    .tv-b.on { background: rgba(212,175,55,0.3); border-color: rgba(212,175,55,0.8); color: rgb(var(--tinta, 255 255 255)); }
    /* Os passos-botões (v1.45) */
    .tv-passos-topo { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; flex-wrap: wrap; }
    .tv-sentido { display: inline-flex; border: 1px solid rgba(212,175,55,0.3); border-radius: 999px; overflow: hidden; }
    .tv-sent { font: inherit; font-size: 0.7rem; padding: 0.26rem 0.65rem; cursor: pointer; background: none; border: 0; color: rgb(var(--tinta, 255 255 255) / calc(0.6 * var(--realce, 1))); }
    .tv-sent.on { background: rgba(212,175,55,0.2); color: var(--gold-100); }
    .tv-passos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.35rem; }
    .tv-passo { font: inherit; font-size: 0.78rem; font-variant-numeric: tabular-nums; border-radius: 10px; padding: 0.5rem 0.3rem; cursor: pointer;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.14); color: rgb(var(--tinta, 255 255 255) / calc(0.82 * var(--realce, 1))); white-space: nowrap;
      user-select: none; -webkit-user-select: none; -webkit-touch-callout: none;
      transition: background 120ms ease, transform 120ms ease; }
    .tv-passo:hover { border-color: rgba(212,175,55,0.5); color: var(--gold-100); }
    .tv-passo.on { background: rgba(212,175,55,0.16); border-color: rgba(212,175,55,0.65); color: var(--gold-100); }
    .tv-vivo-chip { position: relative; display: inline-flex; align-items: center; gap: 0.3rem; user-select: none; }
    .tv-vivo-chip input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
    .tv-vivo-chip::before { content: "●"; font-size: 0.7rem; color: rgba(255,107,107,0.45); }
    .tv-vivo-chip:focus-within { outline: 2px solid rgba(212,175,55,0.7); outline-offset: 2px; }
    .tv-comando.vivo .tv-vivo-chip { background: rgba(255,107,107,0.14); border-color: rgba(255,107,107,0.65); color: rgb(var(--tinta, 255 255 255)); }
    .tv-comando.vivo .tv-vivo-chip::before { color: var(--erro, #ff6b6b); animation: tv-pulso 1.2s ease-in-out infinite; }
    .tv-stories { font: inherit; font-size: 0.8rem; border-radius: 12px; padding: 0.6rem 0.9rem; cursor: pointer; text-align: center;
      background: linear-gradient(135deg, rgba(212,175,55,0.22), rgba(127,212,255,0.14)); border: 1px solid rgba(212,175,55,0.5); color: var(--gold-100); }
    .tv-stories:hover { background: linear-gradient(135deg, rgba(212,175,55,0.32), rgba(127,212,255,0.2)); }
    .tv-stories:disabled { opacity: 0.6; cursor: wait; }
    .tv-dica { font-size: 0.66rem; color: rgb(var(--tinta, 255 255 255) / calc(0.4 * var(--realce, 1))); margin: 0; line-height: 1.5; }
    .tv-evento { font-size: 0.8rem; color: var(--gold-50, #FFE680); display: none; line-height: 1.45; }
    .tv-evento.show { display: block; }
    .tv-evento strong { color: rgb(var(--tinta, 255 255 255)); }
    .tv-precisao { font-size: 0.74rem; color: rgba(255,230,128,0.85); text-align: center; margin: 0.6rem auto 0; max-width: 640px; line-height: 1.6; }

    /* ── Os estudos como o mapa natal (v1.74) ──
       A roda grande à esquerda; à direita, o comando do tempo (só nos
       trânsitos) e a grade dos aspectos. Sai da coluna de 940px com a
       mesma largura do mapa natal (--largo, que desconta a barra lateral). */
    .est-dupla { margin: 1rem 0 0; }
    .est-roda-col { min-width: 0; }
    #est-palco { min-height: 220px; }
    .est-lateral { min-width: 0; }
    .est-grade-card { margin: 1rem 0; padding: 1.1rem; }
    .est-grade-card .tit-aspectos { font-size: 1.3rem; margin: 0 0 0.5rem; }
    .est-grade-leg { text-align: center; font-size: 0.76rem; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); margin: 0 0 0.6rem; }
    @media (min-width: 1100px) {
      .est-dupla { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(340px, 1fr); gap: 1.25rem; align-items: start;
        width: var(--largo); margin-left: calc(50% - var(--largo) / 2); }
      .est-dupla > .est-lateral > .tv-comando { margin: 0 0 1rem; }
      .est-dupla .est-grade-card { margin: 0 0 1rem; }
      /* As seis setas numa linha só */
      .est-dupla .tv-botoes { flex-wrap: nowrap; justify-content: space-between; }
      .est-dupla .tv-b { min-width: 0; flex: 1 1 0; padding: 0 0.3rem; }
      .est-dupla .tv-b-grande { flex-grow: 1.3; }
      /* A roda do tamanho da tela, inteira à vista — como a do mapa natal
         (o "Tamanho da roda" da Aparência vira a escala) */
      .est-dupla #est-roda svg { width: min(100%, calc((100vh - var(--app-topo, 80px) - 3rem) * var(--roda-escala, 1))); }
    }
    /* ── Celular e tablet: a barra embaixo ── */
    @media (max-width: 1099.98px) {
      .tv-grade.com-tempo .tv-comando { max-width: 640px; margin: 1rem auto; }
      body.tv-barra-baixo .tv-fixo { position: fixed; left: 50%; transform: translateX(-50%); bottom: 0; z-index: 65;
        width: min(100vw, 640px); box-sizing: border-box; padding: 0.55rem 0.7rem calc(0.6rem + env(safe-area-inset-bottom, 0px));
        background: rgb(var(--noite, 2 17 51) / 0.97); border: 1px solid rgba(212,175,55,0.35); border-bottom: 0; border-radius: 18px 18px 0 0;
        box-shadow: 0 -12px 30px -14px rgba(0,0,0,0.9); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); gap: 0.4rem; }
      body.tv-barra-baixo .tv-painel { margin-top: 0; padding-top: 0; border-top: 0; }
      body.tv-barra-baixo .gma-wrap { padding-bottom: calc(var(--tv-fixo-alt, 190px) + 2rem); }
      /* O "tela cheia" é do mapa natal: com a barra do tempo à vista, ele sai */
      body.tv-barra-baixo .btn-cheio { display: none; }
      body.tv-barra-baixo .tv-fixo .tv-quando { display: flex; align-items: baseline; gap: 0.3rem; flex-wrap: wrap; justify-content: center; }
      body.tv-barra-baixo .tv-fixo .tv-data { font-size: 1rem; }
      body.tv-barra-baixo .tv-fixo .tv-quem { display: none; }
      body.tv-barra-baixo .tv-fixo .tv-botoes { justify-content: center; flex-wrap: nowrap; }
      /* Os passos numa fileira só, que corre de lado */
      body.tv-barra-baixo .tv-passos { display: flex; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; gap: 0.3rem; padding-bottom: 0.1rem; }
      body.tv-barra-baixo .tv-passos::-webkit-scrollbar { display: none; }
      body.tv-barra-baixo .tv-passo { flex: 0 0 auto; padding: 0.42rem 0.7rem; }
      body.tv-barra-baixo .tv-passos-topo .tv-rot { display: none; }
      body.tv-barra-baixo .tv-passos-topo { justify-content: center; }
    }
    /* No tablet a barra é larga: os doze passos em duas fileiras inteiras */
    @media (min-width: 600px) and (max-width: 1099.98px) {
      body.tv-barra-baixo .tv-passos { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); overflow: visible; }
      body.tv-barra-baixo .tv-passo { padding: 0.42rem 0.2rem; }
    }
    @media (max-width: 560px) {
      /* A roda dos estudos ganha a largura que a moldura comia */
      .est-roda-card { padding: 0.5rem !important; }
      .tv-b { min-width: 40px; height: 42px; padding: 0 0.45rem; }
      .tv-b-grande { min-width: 52px; }
      .tv-trocar { transform: rotate(90deg); }
    }

    /* ══ A gaveta da Aparência (v1.74, gerador/7-gavetas.js) ══════════
       Por cima da página, sem esconder a roda: no computador, uma coluna
       à direita, do cabeçalho até o pé da tela; no celular e no tablet,
       uma folha que sobe até a barra de baixo. Sem fundo escuro por trás
       — a roda muda enquanto se mexe, e é isso que se quer ver. */
    .gaveta { position: fixed; z-index: 80; top: var(--app-topo, 76px); right: 0; bottom: 0; width: min(440px, 100vw);
      display: flex; flex-direction: column; box-sizing: border-box;
      background: rgb(var(--superficie, 4 12 38) / 0.97); border-left: 1px solid rgba(212,175,55,0.3);
      box-shadow: -18px 0 40px -20px rgba(0,0,0,0.9); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
      animation: gaveta-entra 220ms ease-out; }
    .gaveta[hidden] { display: none; }
    @keyframes gaveta-entra { from { transform: translateX(28px); opacity: 0; } }
    .gaveta-topo { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; padding: 0.9rem 1.1rem 0.6rem; }
    .gaveta-tit { font-family: "Cormorant Garamond", serif; font-size: 1.45rem; font-weight: 600; color: var(--gold-100); margin: 0; }
    .gaveta-x { width: 38px; height: 38px; flex-shrink: 0; border-radius: 50%; cursor: pointer; font: inherit; font-size: 1.3rem; line-height: 1;
      background: rgb(var(--tinta, 255 255 255) / 0.05); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.16); color: rgb(var(--tinta, 255 255 255) / calc(0.75 * var(--realce, 1))); }
    .gaveta-x:hover { border-color: rgba(212,175,55,0.55); color: var(--gold-100); }
    .gaveta-abas { display: flex; flex-wrap: wrap; gap: 0.35rem; padding: 0 1.1rem 0.75rem; border-bottom: 1px solid rgba(212,175,55,0.15); }
    .gaveta-aba { font: inherit; font-size: 0.76rem; padding: 0.4rem 0.9rem; border-radius: 10px; cursor: pointer;
      background: rgb(var(--tinta, 255 255 255) / 0.04); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.14); color: rgb(var(--tinta, 255 255 255) / calc(0.72 * var(--realce, 1))); }
    .gaveta-aba:hover { border-color: rgba(212,175,55,0.45); color: var(--gold-100); }
    .gaveta-aba.on { background: rgba(212,175,55,0.16); border-color: rgba(212,175,55,0.6); color: var(--gold-100); }
    .gaveta-corpo { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 0.4rem 0 1.4rem; }
    .gaveta-nota { font-size: 0.74rem; line-height: 1.55; color: rgb(var(--tinta, 255 255 255) / calc(0.5 * var(--realce, 1))); margin: 0.5rem 1.1rem 0.2rem; }
    .gaveta .ap-caixa { max-width: none; margin: 0; border: 0; border-radius: 0; background: none; }
    .gaveta .ap-caixa[hidden] { display: none; }
    .gaveta .ap-linha { justify-content: flex-start; }
    .gaveta .op-topo, .gaveta .op-abas { justify-content: flex-start; }
    @media (max-width: 1099.98px) {
      .gaveta { top: auto; left: 0; right: 0; width: auto; bottom: var(--app-barra-h, 0px); max-height: 66vh;
        border-left: 0; border-top: 1px solid rgba(212,175,55,0.35); border-radius: 18px 18px 0 0;
        box-shadow: 0 -16px 40px -18px rgba(0,0,0,0.9); animation-name: gaveta-sobe; }
      @keyframes gaveta-sobe { from { transform: translateY(28px); opacity: 0; } }
      /* Com a gaveta aberta, a barra do tempo dos trânsitos sai da frente */
      body.gaveta-aberta.tv-barra-baixo .tv-fixo { display: none; }
    }
    @media print { .gaveta { display: none !important; } }
    /* v1.74: ao abrir um estudo, a página rola até ele — sem deixar a data
       dos trânsitos escondida embaixo do cabeçalho fixo */
    #est-saida { scroll-margin-top: calc(var(--app-topo, 80px) + 0.75rem); }

    /* ── v1.75 · A estante usa mais da tela no computador ── */
    @media (min-width: 1100px) {
      .est { width: min(var(--largo), 1240px); margin-left: calc(50% - min(var(--largo), 1240px) / 2); }
    }
    /* ── v1.75 · Os dados do mapa embaixo do nome, e o "Editar dados" ── */
    .gma-dados { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 0.3rem 0.9rem; margin: -0.6rem auto 1.6rem; max-width: 820px;
      font-size: 0.86rem; color: rgb(var(--tinta, 255 255 255) / calc(0.75 * var(--realce, 1))); text-align: center; font-variant-numeric: tabular-nums; }
    .gma-dados[hidden] { display: none; }
    .gma-dados .gd-item + .gd-item::before { content: '·'; margin-right: 0.9rem; color: rgb(var(--tinta, 255 255 255) / calc(0.3 * var(--realce, 1))); }
    .gma-dados .gd-fraco { flex-basis: 100%; font-size: 0.72rem; color: rgb(var(--tinta, 255 255 255) / calc(0.45 * var(--realce, 1))); }
    .gd-editar { font: inherit; font-size: 0.74rem; padding: 0.28rem 0.8rem; border-radius: 999px; cursor: pointer;
      background: rgba(212,175,55,0.1); border: 1px solid rgba(212,175,55,0.45); color: var(--gold-100); }
    .gd-editar:hover { background: rgba(212,175,55,0.2); }
    .gd-aviso { flex-basis: 100%; font-size: 0.76rem; color: rgb(var(--suave, 143 232 176) / calc(0.95 * var(--realce, 1))); }
    .gd-aviso:empty { display: none; }
    .gd-aviso.erro { color: var(--erro, #ff9d9d); }
    /* ── v1.75 · Editando um mapa guardado ── */
    .gma-editando { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 0.9rem; margin: 0 0 1.25rem;
      padding: 0.75rem 1rem; border-radius: 14px; background: rgba(212,175,55,0.1); border: 1px solid rgba(212,175,55,0.45);
      font-size: 0.84rem; line-height: 1.5; color: rgb(var(--tinta, 255 255 255) / calc(0.86 * var(--realce, 1))); }
    .gma-editando[hidden] { display: none; }
    .gma-editando strong { color: var(--gold-100); }
    /* ── v1.75 · A linha dos orbes em cada estudo ── */
    .est-orbes { flex-basis: 100%; margin: 0.3rem 0 0; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 0.3rem 0.7rem;
      font-size: 0.76rem; color: rgb(var(--tinta, 255 255 255) / calc(0.6 * var(--realce, 1))); }
    .est-orbes strong { color: var(--gold-100); font-weight: 600; }
    .est-orbes-bt { font: inherit; font-size: 0.72rem; padding: 0.22rem 0.7rem; border-radius: 999px; cursor: pointer;
      background: none; border: 1px solid rgb(var(--tinta, 255 255 255) / 0.18); color: rgb(var(--tinta, 255 255 255) / calc(0.72 * var(--realce, 1))); }
    .est-orbes-bt:hover { border-color: rgba(127,212,255,0.55); color: var(--link, #7fd4ff); }
    /* ── v1.75 · A gaveta das Configurações: a tabela dos orbes ── */
    .gaveta-larga { width: min(720px, 100vw); }
    .cf-secao { padding: 0 0 0.5rem; }
    .cf-tit { font-family: "Cormorant Garamond", serif; font-size: 1.15rem; font-weight: 600; color: var(--gold-100); margin: 0.8rem 1.1rem 0; }
    .cf-rolagem { overflow-x: auto; margin: 0.6rem 0.6rem 0.4rem; -webkit-overflow-scrolling: touch; }
    .cf-tabela { border-collapse: separate; border-spacing: 0; width: 100%; min-width: 560px; font-size: 0.78rem; }
    .cf-tabela th, .cf-tabela td { padding: 0.32rem 0.3rem; text-align: center; border-bottom: 1px solid rgb(var(--tinta, 255 255 255) / 0.06); transition: background 300ms ease; }
    .cf-tabela thead th { position: sticky; top: 0; font-size: 0.62rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gold-100); font-weight: 600;
      background: rgb(var(--superficie, 4 12 38) / 0.98); border-bottom-color: rgba(212,175,55,0.3); }
    .cf-tabela tbody th { text-align: left; font-weight: 400; white-space: nowrap; color: rgb(var(--tinta, 255 255 255) / calc(0.82 * var(--realce, 1))); padding-left: 0.5rem; }
    .cf-tabela tbody th .g { display: inline-block; min-width: 1.2em; text-align: center; font-size: 0.95rem; }
    .cf-tabela tbody th small { color: rgb(var(--tinta, 255 255 255) / calc(0.4 * var(--realce, 1))); font-size: 0.66rem; margin-left: 0.15rem; }
    .cf-tabela tr.cf-maior th { color: rgb(var(--tinta, 255 255 255)); font-weight: 500; }
    .cf-tabela input { width: 3.9rem; box-sizing: border-box; padding: 0.3rem 0.25rem; border-radius: 8px; text-align: center; font: inherit; font-size: 0.8rem;
      font-variant-numeric: tabular-nums; background: rgb(var(--abismo, 0 28 85) / 0.35); border: 1px solid rgb(var(--tinta, 255 255 255) / 0.16); color: rgb(var(--tinta, 255 255 255)); color-scheme: dark; }
    .cf-tabela input:focus { outline: none; border-color: rgba(212,175,55,0.7); }
    .cf-tabela input.mexido { border-color: rgba(127,212,255,0.65); color: var(--link, #7fd4ff); }
    .cf-tabela .cf-nao { color: rgb(var(--tinta, 255 255 255) / calc(0.25 * var(--realce, 1))); }
    .cf-tabela .cf-acesa { background: rgba(127,212,255,0.14); }
    .cf-msg { font-size: 0.74rem; color: rgb(var(--suave, 143 232 176) / calc(0.95 * var(--realce, 1))); }
    @media (max-width: 1099.98px) { .gaveta-larga { width: auto; } }
    /* v1.75: o formulário (editando) e o resultado aparecem inteiros, sem o
       aviso e os dados do nascimento embaixo do cabeçalho fixo */
    #gma-form, #gma-result { scroll-margin-top: calc(var(--app-topo, 80px) + 1rem); }
