/* Vive dentro da barra de abas dos Guias: precisa ser transparente e deixar
   os links se comportarem como os outros botões da pista. */
.custom-navigation {
    display: contents;
}
.custom-navigation[hidden] { display: none; }
.custom-nav-link { text-decoration: none; }
/* A Visão Geral abre a pista de Guias em todo jogo, antes das abas fixas. */
.custom-nav-link[href="#page/visao-geral"] { order: -2; }
/* O Roteiro Principal vem logo depois dela. */
.custom-nav-link[href="#page/roteiro-principal"] { order: -1; }
/* Cards-vitrine (abrem com imagem): logos, capas e telas centralizadas. */
.custom-card--midia .custom-card-body,
.custom-card--midia .custom-rich p { text-align: center; hyphens: manual; }
.custom-card--midia .custom-fields { text-align: left; }
/* Roteiro e Lendários reutilizam `.frontier-tabs.tabs-scroller`, a pista
   canônica de Guias Práticos. Não duplique medidas ou estados aqui: links e
   botões precisam manter a mesma área de toque, borda e resposta visual. */
.custom-page-description { margin: 0 0 24px; }
.custom-menu,
.custom-submenu { min-width: 0; }
.custom-menu-title,
.custom-submenu-title { cursor: pointer; font-weight: 800; list-style-position: inside; }
.custom-menu-title { padding: 10px 12px; color: var(--text-color); }
.custom-submenu-title { padding: 8px 12px; color: var(--text-muted); font-size: .86rem; }
.custom-menu-content,
.custom-submenu-links { display: grid; gap: 6px; margin-top: 5px; }
.custom-menu-content { padding-left: 8px; }
.custom-submenu-links { padding-left: 10px; }
.custom-page-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 18px 0 22px; }
/* Sub-abas: logo abaixo das abas, menores e mais juntas. */
.custom-page-subtabs { margin: -10px 0 18px; padding-left: 12px; border-left: 3px solid var(--primary-color); }
.custom-page-subtabs .custom-page-tab { font-size: .82rem; }
.custom-page-tab {
    padding: 9px 14px;
    border: 1px solid var(--glass-border);
    border-radius: 999px;
    color: var(--text-color);
    text-decoration: none;
    background: var(--glass-bg);
}
.custom-page-tab.active { color: var(--primary-on); background: var(--jogo-degrade) bottom / 100% 3px no-repeat, var(--primary-surface); border-color: transparent; }
.custom-cards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr));
    gap: 20px;
}
/* O card horizontal gasta ~116px da largura com o sprite. Numa coluna de
   270px sobrava uma tira de ~130px para o texto, quase uma palavra por
   linha. Onde ha card horizontal a coluna nasce maior; navegador sem
   :has() apenas mantem o tamanho antigo. */
.custom-cards-grid:has(.custom-card--horizontal) {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 400px), 1fr));
}
.custom-card {
    /* a faixa do topo vem de .faixa-acento, na cor do jogo */
    padding: 28px 24px 24px;
    min-width: 0;
    /* `anywhere` tambem encolhe o min-content da coluna, e o texto acabava
       partido no meio da palavra mesmo havendo uma quebra melhor logo ali.
       `break-word` so parte quando a palavra realmente nao cabe na linha. */
    overflow-wrap: break-word;
}
.custom-card--horizontal {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 20px;
}
.custom-card--destaque { grid-column: 1 / -1; }
.custom-card-image { width: 100%; max-height: 240px; object-fit: contain; margin-bottom: 18px; image-rendering: pixelated; }
.custom-card-image[src*="/items/"] { width: 96px; height: 96px; display: block; margin-inline: auto; }
.custom-card--horizontal .custom-card-image { width: 96px; flex: 0 0 96px; margin-bottom: 0; }
.custom-card-pokemon-stack {
    display: flex;
    flex: 0 0 96px;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    width: 96px;
}
.custom-card-pokemon-stack .custom-card-image {
    width: 96px;
    height: 96px;
    max-height: 96px;
    flex: 0 0 96px;
    margin-bottom: 0;
}
.custom-card-pokemon-stack.is-row {
    flex-basis: auto;
    flex-direction: row;
    justify-content: center;
    width: auto;
    align-self: center;
}
.custom-card-body { min-width: 0; flex: 1; }
.custom-card h3 { margin: 0 0 14px; }
.custom-rich { line-height: 1.7; overflow-x: auto; }
/* Texto corrido justificado. A hifenizacao vem junto porque numa coluna
   estreita a justificacao sozinha abre buracos entre as palavras; o
   `lang` do <html> acompanha o idioma do app, entao ela separa certo em
   portugues e em ingles. */
.custom-rich p,
.custom-rich li {
    text-align: justify;
    hyphens: auto;
}
.custom-rich img { max-width: 100%; height: auto; }
.custom-item { display: flex; align-items: center; gap: 8px; margin: 12px 0; }
.custom-fields { display: grid; grid-template-columns: minmax(70px, auto) 1fr; gap: 8px 16px; }
.custom-fields dt { font-weight: 700; }
.custom-fields dd { margin: 0; }
.story-route {
    margin: 0 0 14px;
    color: var(--text-muted);
    font-weight: 700;
}
.story-checklist { margin: 0; padding-left: 1.25rem; }
.story-checklist li + li { margin-top: 8px; }
.story-alert,
.story-note {
    margin: 16px 0 0;
    padding: 12px 14px;
    border-radius: 12px;
}
.story-alert { background: color-mix(in srgb, var(--danger-color, #d64545) 14%, transparent); }
.story-note { background: color-mix(in srgb, var(--primary-color) 12%, transparent); }
.story-item { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.story-item img { width: 28px; height: 28px; object-fit: contain; image-rendering: pixelated; }
.custom-card .custom-fields {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid color-mix(in srgb, currentColor 16%, transparent);
}
/* Era um link de texto solto no rodapé do card. Como é a ação principal
   ("Abrir Mapa Múndi", "Abrir na Pokédex"), vira botão. */
.custom-card-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    align-self: flex-start;
    min-height: 40px;
    margin-top: 16px;
    padding: 9px 16px;
    border: 1px solid transparent;
    border-radius: 999px;
    background: var(--primary-surface);
    color: var(--primary-on);
    font-weight: 700;
    font-size: 0.88rem;
    text-decoration: none;
    transition: background 0.2s, transform 0.2s;
}

.custom-card-link::after { content: '›'; font-size: 1.15rem; line-height: 1; }
.custom-card-link:hover { background: var(--accent-color); transform: translateY(-2px); }
@media (max-width: 900px) {
    .custom-menu-content { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
}
/* Celulares comuns vao ate 430px de largura. Ate 400px o card horizontal ja
   empilhava, mas entre 400 e 480 ele continuava em duas colunas e o texto
   ficava numa tira de ~215px. No celular o sprite vai para cima. */
@media (max-width: 480px) {
    .custom-card--horizontal { flex-direction: column; }
    .custom-card-pokemon-stack { width: 96px; flex-basis: 96px; align-self: center; }
}
@media (max-width: 400px) {
    .custom-fields { grid-template-columns: 1fr; gap: 3px; }
    .custom-fields dd + dt { margin-top: 8px; }
}
