/* ═══════════════════════════════════════════════════════════
   GNR — Generador de árbol HTML
   ═══════════════════════════════════════════════════════════ */

/* Headings del generador — scope correcto (no toca al resto de la web) */
.gnr-messages :is(h1, h2, h3) {
    font-family: var(--font-body);
    text-transform: inherit;
    color: var(--black);
}
.gnr-messages h2 { margin-left: 15px; }
.gnr-messages h3 { margin-left: 30px; }

/* ─── Textarea de entrada (editor de código) ─── */
textarea.gnr-code-input {
    width: 100%;
    padding: 16px;
    background: var(--black);
    color: var(--white);
    border: 1px solid var(--black);
    border-radius: var(--radius-sm);
    font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
    font-size: 0.95rem;
    line-height: 1.5;
    resize: vertical;
    transition: border-color var(--t-fast), box-shadow var(--t-base);
}
textarea.gnr-code-input:focus {
    outline: none;
    border-color: var(--main);
    box-shadow: 0 0 0 3px rgb(141 9 107 / 0.2);
}

/* ─── Slider de niveles ─── */
input[type=range] {
    accent-color: var(--main);
    width: 100%;
    max-width: 320px;
    cursor: pointer;
}

/* ═══════════════════════════════════════════════════════════
   ÁRBOL DOM (estilo explorador de archivos)
   Líneas verticales + horizontales + pills por tag
   ═══════════════════════════════════════════════════════════ */

/* Contenedor general */
.gnr-tree,
#post-display .gnr-tree {
    font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
    font-size: 1rem;
    list-style: none;
    padding: 20px 24px;
    margin: 1rem 0 2rem;
    background: var(--white);
    border: 1px solid var(--light-grey);
    border-radius: var(--radius-sm);
    box-shadow: var(--shadow-xs);
    overflow-x: auto;
}

/* Listas anidadas: indentación + línea vertical guía */
.gnr-tree ul,
#post-display .gnr-tree ul {
    position: relative;
    padding-left: 1.75rem;
    margin: 0;
    list-style: none;
}

/* Línea vertical que une los hijos de un mismo padre */
.gnr-tree ul::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 1.1rem;
    left: 0.55rem;
    border-left: 2px solid var(--secondary);
}

/* Cada nodo (reset del estilo anterior) */
.gnr-level {
    position: relative;
    padding: 0.35rem 0 0.35rem 1rem;
    margin: 0;
    background: none;
    border-radius: 0;
}
.gnr-level:hover { background: none; }

/* Línea horizontal conectora hacia el pill */
.gnr-level::before {
    content: "";
    position: absolute;
    top: 1.1rem;
    left: 0.55rem;
    width: 0.75rem;
    height: 0;
    margin: 0;
    border-top: 2px solid var(--secondary);
    background: none;
}

/* Desactivo el circulito anterior */
.gnr-level__item::before {
    display: none !important;
}

/* Nombre del tag → pill con aire */
.gnr-level__item {
    display: inline-block;
    padding: 3px 10px;
    background: var(--main-soft);
    color: var(--main);
    border: 1px solid rgb(141 9 107 / 0.2);
    border-radius: var(--radius-xs);
    font-family: inherit;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    transition: background var(--t-fast), color var(--t-fast), transform var(--t-fast);
}

.gnr-level__item:hover {
    background: var(--secondary);
    color: var(--black);
    border-color: var(--secondary);
    transform: translateY(-1px);
    cursor: help;
}

/* Chevron automático para nodos que tienen hijos */
.gnr-level:has(ul) > .gnr-level__item::after {
    content: " ▾";
    color: var(--secondary);
    margin-left: 4px;
    font-size: 0.9em;
}

/* Override de las listas del post (triangulitos amarillos no deben aparecer) */
#post-display .gnr-tree ul li {
    list-style: none;
    background-image: none;
    margin: 0;
    padding-left: 0;
}
#post-display .gnr-tree ul li::marker { content: none; }

/* ═══════════════════════════════════════════════════════════
   MAPA DE ENCABEZADOS
   ═══════════════════════════════════════════════════════════ */

.gnr-message__content.gnr-message__content--headers-tree {
    display: block;
    padding: 14px 20px;
    margin-bottom: 8px;
    background: var(--secondary);
    color: var(--black);
    font-family: var(--font-heading);
    font-weight: 700;
    border-radius: var(--radius-sm);
    box-shadow: var(--shadow-xs);
    transition: box-shadow var(--t-base), background var(--t-fast);
}

.gnr-message__content.gnr-message__content--headers-tree:hover {
    background: #ffc636;
    box-shadow: var(--shadow-md);
}