/* ===========================================================================
   css/organigrama.css — UI del Organigrama (Staff + Portal del Socio + Web)
   ---------------------------------------------------------------------------
   ⚠️ IMPORTANTE: css/app-tailwind.css es un build PURGADO y css/input.css NO
   existe en el repo, así que `npm run build:css` no puede regenerarlo.
   Cualquier clase Tailwind NUEVA (ej. sm:rounded-2xl, sm:gap-4, max-h-[92dvh])
   NO está compilada y no haría absolutamente nada.
   Por eso toda la UI nueva se escribe aquí, en CSS plano, con prefijo .orgi-.
   (El prefijo es .orgi- y no .org- porque css/website.css ya define .org-card
    con otro diseño, y ambas hojas conviven en las páginas públicas.)

   Enlazar en: staff.html, portal-socio.html e index.html / nosotros.html
   <link rel="stylesheet" href="./css/organigrama.css">
   =========================================================================== */

/* ---------- 1. Tokens locales (se adaptan solos al modo oscuro) ---------- */
:root{
    --orgi-surface:#ffffff;
    --orgi-surface-alt:#f8fafc;
    --orgi-border:#e5e7eb;
    --orgi-text:#111827;
    --orgi-text-soft:#6b7280;
    --orgi-honor:#b45309;          /* ámbar 700 */
    --orgi-honor-soft:#fffbeb;     /* ámbar 50  */
    --orgi-honor-line:#f59e0b;     /* ámbar 500 */
    --orgi-radius:1rem;
}
html.dark{
    --orgi-surface:#260A0D;
    --orgi-surface-alt:#1A0709;
    --orgi-border:#331015;
    --orgi-text:#fafafa;
    --orgi-text-soft:#a1a1aa;
    --orgi-honor:#fcd34d;
    --orgi-honor-soft:rgba(245,158,11,.10);
    --orgi-honor-line:#f59e0b;
}

/* Esta hoja no depende del preflight de Tailwind: fija su propio box-sizing
   para que width:100% + padding + borde no desborde el contenedor. */
[class^="orgi-"], [class*=" orgi-"],
.orgi-sheet input, .orgi-sheet select, .orgi-sheet textarea{box-sizing:border-box;}

/* El atributo [hidden] debe ganarle a .orgi-btn{display:inline-flex}: sin esto,
   los botones que se ocultan por permisos (Nuevo Puesto, Institución, Eliminar)
   se seguirían viendo. */
[hidden]{display:none !important;}

/* ---------- 2. Encabezado (se desplaza) + barra de herramientas (fija) ---------- */
.orgi-encabezado{min-width:0; padding:.25rem 0 .75rem;}
.orgi-encabezado h2{font-size:1.25rem; font-weight:800; color:var(--orgi-text); margin:0;}
.orgi-encabezado p{font-size:.8rem; color:var(--orgi-text-soft); margin:.15rem 0 0;}

.orgi-toolbar{
    position:sticky; top:0; z-index:20;
    display:flex; flex-wrap:wrap; align-items:center; gap:.75rem;
    padding:.75rem 0 1rem;
    background:var(--orgi-surface-alt);
    border-bottom:1px solid var(--orgi-border);
    margin-bottom:1.25rem;
}
/* Compatibilidad: si algún otro punto del proyecto sigue inyectando el título
   dentro de la barra, no se rompe. */
.orgi-toolbar__title{flex:1 1 100%; min-width:0;}
.orgi-toolbar__title h2{font-size:1.25rem; font-weight:800; color:var(--orgi-text); margin:0;}
.orgi-toolbar__title p{font-size:.8rem; color:var(--orgi-text-soft); margin:.15rem 0 0;}
.orgi-toolbar__tools{display:flex; flex-wrap:wrap; align-items:center; gap:.5rem; width:100%;}
.orgi-search{position:relative; flex:1 1 200px; min-width:0;}
.orgi-search svg{position:absolute; left:.7rem; top:50%; transform:translateY(-50%); width:1rem; height:1rem; color:var(--orgi-text-soft); pointer-events:none;}
.orgi-search input{
    width:100%; padding:.6rem .8rem .6rem 2.2rem;
    border:1px solid var(--orgi-border); border-radius:.75rem;
    background:var(--orgi-surface); color:var(--orgi-text); font-size:.9rem;
}
.orgi-search input:focus{outline:2px solid var(--orgi-honor-line); outline-offset:1px;}
.orgi-btn{
    display:inline-flex; align-items:center; gap:.4rem; white-space:nowrap;
    padding:.6rem .9rem; border-radius:.75rem; font-size:.85rem; font-weight:700;
    border:1px solid var(--orgi-border); background:var(--orgi-surface); color:var(--orgi-text);
    cursor:pointer; transition:filter .15s ease, transform .05s ease;
}
.orgi-btn:hover{filter:brightness(.97);}
.orgi-btn:active{transform:scale(.98);}
.orgi-btn--primary{background:var(--color-primary,#14B8A6); border-color:transparent; color:#fff;}
.orgi-btn svg{width:1.05rem; height:1.05rem; flex:0 0 auto;}
.orgi-btn[disabled]{opacity:.4; cursor:not-allowed;}

/* ---------- 2b. Toolbar en móvil: que deje de comerse media pantalla ----------
   Antes, en un teléfono de 360 px, la barra pegajosa se apilaba en 4 filas
   (título + resumen, buscador, 3 botones de vista, Institución, y "Nuevo
   Puesto" a lo ancho): ~190 px fijos, casi un tercio del alto útil, en un
   módulo que se usa justamente para recorrer una lista larga.
   Ahora sólo el buscador y el selector de vista quedan pegajosos (~92 px);
   el título se va con el scroll y "Nuevo Puesto" pasa a ser un botón flotante. */
@media (max-width:639px){
    .orgi-toolbar{gap:.5rem; padding:.6rem 0 .7rem; margin-bottom:1rem;}
    /* El pseudo-elemento que tapa el hueco mide 17 px hacia arriba: el
       encabezado reserva al menos ese espacio para que no le coma el subtítulo. */
    .orgi-encabezado{padding:0 0 1.2rem;}
    .orgi-encabezado h2{font-size:1.05rem;}
    .orgi-encabezado p{font-size:.74rem;}
    .orgi-toolbar__title h2{font-size:1.05rem;}
    .orgi-toolbar__title p{font-size:.74rem;}
    .orgi-toolbar__tools{gap:.4rem;}
    /* Fila 1: el buscador solo, a lo ancho — con 5 elementos en la misma fila
       quedaba en ~100 px y no cabía ni la palabra que estabas escribiendo. */
    .orgi-search{flex:1 1 100%; order:1;}
    /* Fila 2: las tres vistas repartidas + los dos botones de acción en ícono */
    .orgi-vistas{flex:1 1 auto; order:2;}
    .orgi-vistas .orgi-btn{flex:1 1 0; justify-content:center; padding:.6rem .35rem; font-size:.78rem;}
    #btn-config-institucion, #btn-new-organigrama{order:3; flex:0 0 auto; padding:.6rem .7rem;}
    #btn-config-institucion .orgi-btn__label,
    #btn-new-organigrama .orgi-btn__label{
        /* Sólo para lectores de pantalla: el ícono basta y libera el ancho */
        position:absolute; width:1px; height:1px; overflow:hidden;
        clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap;
    }
    #btn-new-organigrama{gap:0;}
    #btn-new-organigrama svg{width:1.25rem; height:1.25rem;}
}

/* ---------- 3. Secciones por nivel (colapsables) ---------- */
.orgi-section{margin-bottom:1.75rem;}
.orgi-section__head{
    display:flex; align-items:center; gap:.75rem; width:100%;
    padding:.65rem .25rem; background:none; border:0; cursor:pointer; text-align:left;
    border-bottom:2px solid var(--orgi-border);
}
.orgi-section__head h3{margin:0; font-size:1rem; font-weight:800; color:var(--orgi-text);}
.orgi-section__head small{display:block; font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--orgi-text-soft); font-weight:600;}
.orgi-section__count{
    margin-left:auto; font-size:.72rem; font-weight:700; color:var(--orgi-text-soft);
    background:var(--orgi-surface); border:1px solid var(--orgi-border);
    padding:.15rem .5rem; border-radius:999px;
}
.orgi-section__chevron{width:1rem; height:1rem; color:var(--orgi-text-soft); transition:transform .2s ease;}
.orgi-section[data-collapsed="true"] .orgi-section__chevron{transform:rotate(-90deg);}
.orgi-section[data-collapsed="true"] .orgi-grid{display:none;}

/* ---------- 4. Grid fluido (sin depender de breakpoints de Tailwind) ---------- */
.orgi-grid{
    display:grid; gap:.75rem; padding-top:1rem;
    grid-template-columns:repeat(auto-fill, minmax(150px, 1fr));
}
@media (min-width:640px){ .orgi-grid{gap:1rem; grid-template-columns:repeat(auto-fill, minmax(175px, 1fr));} }
/* Vista lista compacta (toggle en la toolbar) — ideal en móvil */
.orgi-wrap[data-vista="lista"] .orgi-grid{grid-template-columns:1fr; gap:.5rem;}
.orgi-wrap[data-vista="lista"] .orgi-card{flex-direction:row; align-items:center; text-align:left; padding:.65rem .75rem;}
.orgi-wrap[data-vista="lista"] .orgi-card__foto{width:44px; height:44px; margin:0 .75rem 0 0;}
.orgi-wrap[data-vista="lista"] .orgi-card__acciones{margin-left:auto; width:auto; border-top:0; padding-top:0;}

/* ---------- 5. Tarjeta de perfil ---------- */
.orgi-card{
    position:relative; display:flex; flex-direction:column; align-items:center; text-align:center;
    padding:1rem .75rem; background:var(--orgi-surface);
    border:1px solid var(--orgi-border); border-radius:var(--orgi-radius);
    transition:box-shadow .18s ease, transform .18s ease;
}
.orgi-card:hover{box-shadow:0 8px 24px rgba(0,0,0,.08); transform:translateY(-2px);}
.orgi-card__foto{
    width:72px; height:72px; border-radius:999px; object-fit:cover; margin-bottom:.6rem;
    border:3px solid var(--orgi-surface); box-shadow:0 2px 8px rgba(0,0,0,.10); background:var(--orgi-surface-alt);
}
.orgi-card__nombre{font-size:.85rem; font-weight:700; color:var(--orgi-text); line-height:1.25; margin:0;}
.orgi-card__cargo{font-size:.75rem; font-weight:600; color:var(--color-primary,#14B8A6); margin:.15rem 0 0;}
.orgi-card__periodo{
    display:inline-block; margin-top:.4rem; font-size:.68rem; font-weight:800; letter-spacing:.04em;
    color:var(--orgi-honor); background:var(--orgi-honor-soft);
    border:1px solid color-mix(in srgb, var(--orgi-honor-line) 40%, transparent);
    padding:.1rem .45rem; border-radius:999px;
}
.orgi-card__meta{font-size:.68rem; color:var(--orgi-text-soft); margin:.25rem 0 .5rem; overflow-wrap:anywhere; line-height:1.35; max-width:100%;}
.orgi-card__badge{
    position:absolute; top:.5rem; right:.5rem; font-size:.6rem; font-weight:700;
    padding:.1rem .35rem; border-radius:.35rem; color:#fff;
}
.orgi-card__badge--pub{background:#16a34a;}
.orgi-card__badge--int{background:#475569;}
.orgi-card__acciones{
    /* margin-top:auto alinea la fila de botones al pie de TODAS las tarjetas
       de la misma fila, aunque unas tengan periodo/correo y otras no. */
    display:flex; gap:.35rem; width:100%; margin-top:auto; padding-top:.6rem;
    border-top:1px solid var(--orgi-border);
}
.orgi-card__acciones .orgi-btn{flex:1 1 auto; justify-content:center; padding:.45rem .5rem; font-size:.75rem;}
.orgi-mover{flex:0 0 auto !important; padding:.45rem .55rem !important;}

/* ---------- 6. Banda honorífica (Nivel Cero — Expresidentes) ---------- */
.orgi-section--honor .orgi-section__head{border-bottom-color:var(--orgi-honor-line);}
.orgi-section--honor .orgi-section__head h3{color:var(--orgi-honor);}
.orgi-section--honor{
    background:var(--orgi-honor-soft);
    border:1px solid color-mix(in srgb, var(--orgi-honor-line) 35%, transparent);
    border-radius:var(--orgi-radius);
    padding:.5rem 1rem 1rem;
}
.orgi-section--honor .orgi-card{border-color:color-mix(in srgb, var(--orgi-honor-line) 45%, transparent);}
.orgi-section--honor .orgi-card::before{
    content:""; position:absolute; inset:0 0 auto 0; height:3px;
    border-radius:var(--orgi-radius) var(--orgi-radius) 0 0;
    background:linear-gradient(90deg, var(--orgi-honor-line), #fde68a);
}
.orgi-section--honor .orgi-card__cargo{color:var(--orgi-honor);}
/* Las tarjetas de la banda se centran en lugar de alinearse a la izquierda:
   como suelen ser pocas, la rejilla auto-fill dejaba huecos vacíos a la derecha. */
.orgi-section--honor .orgi-grid{
    display:flex; flex-wrap:wrap; justify-content:center; align-items:stretch; gap:.75rem;
}
.orgi-section--honor .orgi-card{flex:0 1 160px; max-width:200px;}
/* En pantallas angostas se estrechan para que quepan dos por fila */
@media (max-width:479px){
    .orgi-section--honor .orgi-card{flex-basis:132px; max-width:170px;}
}
@media (min-width:640px){
    .orgi-section--honor .orgi-grid{gap:1rem;}
    .orgi-section--honor .orgi-card{flex-basis:180px;}
}
/* En vista lista la banda también se apila a lo ancho */
.orgi-wrap[data-vista="lista"] .orgi-section--honor .orgi-grid{flex-direction:column;}
.orgi-wrap[data-vista="lista"] .orgi-section--honor .orgi-card{flex-basis:auto; max-width:none; width:100%;}
.orgi-honor-nota{font-size:.72rem; color:var(--orgi-text-soft); margin:.5rem 0 0;}

/* ---------- 7. Modal → hoja inferior (bottom sheet) en móvil ----------
   ⚠️ z-index 90, NO 60: la barra de pestañas del staff (#staff-tabs) vive en
   z-index 80 y es `position:fixed`, igual que esta hoja, y ambas cuelgan del
   mismo contexto de apilamiento (#staff-content no crea uno). Con z-index 60
   la barra de pestañas se pintaba ENCIMA del pie de la hoja — que en móvil se
   ancla abajo — y tapaba justo los botones Guardar / Cancelar / Eliminar.
   90 queda por encima de las pestañas y por debajo de SweetAlert2 (1060). */
.orgi-sheet{position:fixed; inset:0; z-index:90; display:none; align-items:center; justify-content:center; padding:1rem; background:rgba(0,0,0,.5);}
.orgi-sheet.is-open{display:flex;}
/* Con la hoja abierta el fondo dejaba de estar disponible pero seguía
   desplazándose bajo el dedo; en iOS eso mueve la página detrás del teclado. */
body.orgi-sheet-abierta{overflow:hidden;}
.orgi-sheet__panel{
    width:100%; max-width:34rem; max-height:90vh; max-height:90dvh;
    display:flex; flex-direction:column; overflow:hidden;
    background:var(--orgi-surface); color:var(--orgi-text);
    border-radius:var(--orgi-radius); box-shadow:0 25px 50px -12px rgba(0,0,0,.45);
}
/* El <form> es hijo directo del panel: debe repartir el alto igual que el panel,
   si no, el pie con "Guardar" se sale de la pantalla en móvil. */
.orgi-sheet__panel > form{display:flex; flex-direction:column; flex:1 1 auto; min-height:0; overflow:hidden;}
.orgi-sheet__head{
    display:flex; align-items:center; justify-content:space-between; gap:1rem;
    padding:1rem 1.25rem; border-bottom:1px solid var(--orgi-border); flex:0 0 auto;
}
.orgi-sheet__body{padding:1.25rem; overflow-y:auto; flex:1 1 auto; min-height:0; -webkit-overflow-scrolling:touch;}
/* El pie NO scrollea: "Guardar" siempre visible (hoy hay que hacer scroll para verlo) */
.orgi-sheet__foot{
    display:flex; align-items:center; gap:.5rem; flex-wrap:wrap;
    padding:.85rem 1.25rem calc(.85rem + env(safe-area-inset-bottom));
    border-top:1px solid var(--orgi-border); background:var(--orgi-surface); flex:0 0 auto;
}
.orgi-sheet__foot .orgi-sheet__spacer{margin-left:auto;}
@media (max-width:639px){
    .orgi-sheet{align-items:flex-end; padding:0;}
    .orgi-sheet__panel{max-width:none; max-height:92dvh; border-radius:1.25rem 1.25rem 0 0; animation:org-sheet-up .22s cubic-bezier(.16,1,.3,1);}
    .orgi-sheet__foot .orgi-btn{flex:1 1 45%; justify-content:center;}
}
@keyframes org-sheet-up{from{transform:translateY(18px); opacity:0;} to{transform:translateY(0); opacity:1;}}

/* ---------- 8. Campos del formulario ---------- */
.orgi-field{margin-bottom:1rem;}
.orgi-field label{display:flex; align-items:center; gap:.35rem; font-size:.82rem; font-weight:600; color:var(--orgi-text); margin-bottom:.35rem;}
.orgi-field input, .orgi-field select, .orgi-field textarea{
    width:100%; padding:.6rem .75rem; font-size:.9rem;
    border:1px solid var(--orgi-border); border-radius:.65rem;
    background:var(--orgi-surface); color:var(--orgi-text);
}
.orgi-field input:focus, .orgi-field select:focus{outline:2px solid var(--color-primary,#14B8A6); outline-offset:1px;}
.orgi-field--row{display:grid; grid-template-columns:1fr 1fr; gap:.75rem;}
.orgi-field--row > *{min-width:0;}  /* sin esto los <input> desbordan la rejilla */
.orgi-hint{font-size:.72rem; color:var(--orgi-text-soft); margin:.3rem 0 0;}
#org-periodo-wrap[hidden]{display:none;}

/* ---------- 9. Skeleton de carga y estado vacío ---------- */
.orgi-skeleton{height:190px; border-radius:var(--orgi-radius); background:linear-gradient(90deg, var(--orgi-surface-alt) 25%, var(--orgi-border) 37%, var(--orgi-surface-alt) 63%); background-size:400% 100%; animation:org-shimmer 1.3s ease infinite;}
@keyframes org-shimmer{0%{background-position:100% 0;}100%{background-position:0 0;}}
.orgi-empty{text-align:center; padding:2.5rem 1rem; color:var(--orgi-text-soft);}
.orgi-empty h4{font-size:1rem; font-weight:700; color:var(--orgi-text); margin:.75rem 0 .25rem;}

/* ---------- 10. Accesibilidad y motion ---------- */
.orgi-btn:focus-visible, .orgi-section__head:focus-visible{outline:2px solid var(--color-primary,#14B8A6); outline-offset:2px;}
@media (prefers-reduced-motion:reduce){
    .orgi-card, .orgi-sheet__panel, .orgi-skeleton{transition:none !important; animation:none !important;}
}
@media print{
    .orgi-toolbar, .orgi-card__acciones, .orgi-sheet{display:none !important;}
    .orgi-section{break-inside:avoid;}
}


/* ===========================================================================
   11. VISTA PREMIUM — Portal del Socio  (/portal#comunidad/institucion)
   ---------------------------------------------------------------------------
   Construida sobre los tokens del sistema de diseño de css/app.css
   (Navy Executive + Indigo Accent + --canaco-gold), para que se sienta parte
   de la app y no un injerto. Sólo aplica bajo .orgi-premium: el panel Staff y
   nosotros.html no se ven afectados.
   =========================================================================== */

.orgi-premium{
    --p-navy:#0F172A; --p-navy-2:#1E293B; --p-navy-3:#334155;
    --p-gold:#D4AF37; --p-gold-soft:#FEF3C7;
    --p-indigo:#4F46E5; --p-indigo-soft:#EEF2FF;
    --p-line:#E2E8F0; --p-surface:#fff; --p-text:#0F172A; --p-muted:#64748B;
    max-width:64rem; margin:0 auto; padding:1rem 1rem 6rem;
}
html.dark .orgi-premium{
    --p-line:#331015; --p-surface:#260A0D; --p-text:#fafafa; --p-muted:#a1a1aa;
    --p-indigo-soft:rgba(79,70,229,.15);
}
.orgi-premium *{box-sizing:border-box;}

/* ---------- 11.1 Portada ---------- */
.orgi-hero{
    position:relative; overflow:hidden; border-radius:1.5rem;
    padding:2.5rem 1.5rem 2rem; margin-bottom:1.25rem; text-align:center;
    background:linear-gradient(150deg, var(--p-navy) 0%, var(--p-navy-2) 60%, #26324a 100%);
    box-shadow:0 20px 45px -20px rgba(15,23,42,.55);
}
.orgi-hero::before{
    content:""; position:absolute; inset:0; opacity:.14; pointer-events:none;
    background-image:radial-gradient(circle at 1.5px 1.5px, #fff 1px, transparent 0);
    background-size:22px 22px;
}
.orgi-hero::after{
    content:""; position:absolute; left:50%; bottom:0; transform:translateX(-50%);
    width:min(220px,60%); height:3px; border-radius:3px 3px 0 0;
    background:linear-gradient(90deg, transparent, var(--p-gold), transparent);
}
.orgi-hero__seal{
    position:relative; width:64px; height:64px; margin:0 auto 1rem; border-radius:1rem;
    display:flex; align-items:center; justify-content:center;
    background:rgba(255,255,255,.07); border:1px solid rgba(212,175,55,.45);
}
.orgi-hero__seal svg{width:32px; height:32px; color:var(--p-gold);}
.orgi-hero__eyebrow{
    position:relative; display:block; font-size:.68rem; font-weight:800;
    letter-spacing:.22em; text-transform:uppercase; color:var(--p-gold); margin-bottom:.6rem;
}
.orgi-hero__title{
    position:relative; margin:0; color:#fff; font-weight:800; letter-spacing:-.02em;
    font-size:clamp(1.5rem,5.5vw,2.1rem); line-height:1.15;
}
.orgi-hero__sub{
    position:relative; margin:.7rem auto 0; max-width:42ch;
    color:#cbd5e1; font-size:.92rem; line-height:1.6;
}

/* ---------- 11.2 Tarjeta institucional ---------- */
.orgi-info{
    position:relative; overflow:hidden; border-radius:1.25rem; padding:1.5rem;
    background:var(--p-surface); border:1px solid var(--p-line);
    box-shadow:0 12px 30px -18px rgba(15,23,42,.35); margin-bottom:2.25rem;
}
.orgi-info__title{
    display:flex; align-items:center; gap:.6rem; margin:0 0 1.15rem;
    font-size:.72rem; font-weight:800; letter-spacing:.16em; text-transform:uppercase;
    color:var(--p-muted);
}
.orgi-info__title::after{content:""; flex:1; height:1px; background:var(--p-line);}
.orgi-info__grid{display:grid; gap:.6rem; grid-template-columns:1fr;}
@media (min-width:720px){ .orgi-info__grid{grid-template-columns:1fr 1fr;} }

.orgi-contact{
    display:flex; align-items:flex-start; gap:.85rem; padding:.85rem;
    border-radius:.9rem; border:1px solid var(--p-line); background:var(--p-surface);
    color:inherit; text-decoration:none; transition:border-color .18s, transform .18s;
}
.orgi-contact:hover{border-color:var(--p-indigo); transform:translateY(-1px);}
.orgi-contact__icon{
    flex:0 0 auto; width:38px; height:38px; border-radius:.7rem;
    display:flex; align-items:center; justify-content:center;
    background:var(--p-indigo-soft); color:var(--p-indigo);
}
.orgi-contact__icon svg{width:1.15rem; height:1.15rem;}
.orgi-contact__label{
    display:block; font-size:.66rem; font-weight:800; letter-spacing:.1em;
    text-transform:uppercase; color:var(--p-muted); margin-bottom:.1rem;
}
.orgi-contact__value{font-size:.9rem; font-weight:600; color:var(--p-text); overflow-wrap:anywhere; line-height:1.4;}

.orgi-bank{
    margin-top:1rem; border-radius:1rem; padding:1.15rem;
    background:linear-gradient(140deg, var(--p-navy) 0%, var(--p-navy-2) 100%);
    border:1px solid rgba(212,175,55,.3); color:#fff; position:relative; overflow:hidden;
}
.orgi-bank::after{
    content:""; position:absolute; inset:auto -30px -40px auto; width:150px; height:150px;
    border-radius:50%; background:radial-gradient(circle, rgba(212,175,55,.18), transparent 70%);
}
.orgi-bank__title{
    display:flex; align-items:center; gap:.5rem; margin:0 0 .9rem;
    font-size:.68rem; font-weight:800; letter-spacing:.16em; text-transform:uppercase; color:var(--p-gold);
}
/* Los SVG en línea heredan el tamaño del contenedor si no se acotan: sin esto
   el ícono del banco se dibuja gigante junto al título. */
.orgi-bank__title svg, .orgi-info__title svg{width:1.05rem; height:1.05rem; flex:0 0 auto;}
.orgi-bank__row{display:flex; justify-content:space-between; gap:1rem; padding:.45rem 0; border-bottom:1px solid rgba(255,255,255,.08); font-size:.85rem;}
.orgi-bank__row:last-child{border-bottom:0;}
.orgi-bank__row dt{color:#94a3b8; font-weight:600;}
.orgi-bank__row dd{margin:0; font-weight:700; font-variant-numeric:tabular-nums; letter-spacing:.02em; text-align:right; overflow-wrap:anywhere;}
.orgi-wa{
    display:inline-flex; align-items:center; justify-content:center; gap:.5rem; margin-top:1rem;
    width:100%; padding:.8rem 1rem; border-radius:.9rem; text-decoration:none;
    background:#25D366; color:#fff; font-weight:800; font-size:.9rem;
    box-shadow:0 10px 20px -10px rgba(37,211,102,.8); transition:transform .15s;
}
.orgi-wa:hover{transform:translateY(-1px);}
.orgi-wa svg{width:1.15rem; height:1.15rem;}

/* ---------- 11.3 Galería de Expresidentes (banda honorífica) ---------- */
.orgi-gallery{
    position:relative; border-radius:1.5rem; padding:1.5rem 1rem 1.25rem; margin-bottom:2.25rem;
    background:linear-gradient(160deg, #1a1206 0%, var(--p-navy) 55%, #16203a 100%);
    border:1px solid rgba(212,175,55,.35);
    box-shadow:0 22px 45px -24px rgba(15,23,42,.6);
}
.orgi-gallery__head{text-align:center; margin-bottom:1.15rem;}
.orgi-gallery__laurel{display:flex; align-items:center; justify-content:center; gap:.6rem; margin-bottom:.7rem;}
.orgi-gallery__laurel span{display:block; height:1px; width:34px; background:linear-gradient(90deg,transparent,var(--p-gold));}
.orgi-gallery__laurel span:last-child{background:linear-gradient(90deg,var(--p-gold),transparent);}
.orgi-gallery__laurel svg{width:1rem; height:1rem; color:var(--p-gold);}
.orgi-gallery__title{margin:0; color:#fff; font-size:1.12rem; font-weight:800; letter-spacing:-.01em;}
.orgi-gallery__sub{
    margin:.4rem 0 0; color:var(--p-gold); font-size:.66rem;
    font-weight:800; letter-spacing:.2em; text-transform:uppercase;
}
.orgi-gallery__nota{margin:1.1rem 0 0; text-align:center; color:#94a3b8; font-size:.78rem; font-style:italic;}
.orgi-gallery__grid{
    display:flex; flex-wrap:wrap; justify-content:center; gap:.7rem;
}
.orgi-portrait{
    flex:0 1 124px; max-width:148px; border-radius:.85rem; overflow:hidden;
    background:rgba(255,255,255,.045); border:1px solid rgba(212,175,55,.28);
    transition:transform .22s ease, border-color .22s ease, box-shadow .22s ease;
}
.orgi-portrait:hover{transform:translateY(-4px); border-color:var(--p-gold); box-shadow:0 16px 30px -16px rgba(212,175,55,.5);}
.orgi-portrait__frame{position:relative; aspect-ratio:4/5; overflow:hidden; background:#0b1220;}
.orgi-portrait__frame img{width:100%; height:100%; object-fit:cover; display:block;}
.orgi-portrait__frame::after{
    content:""; position:absolute; inset:0;
    background:linear-gradient(to top, rgba(11,18,32,.75) 0%, transparent 45%);
}
.orgi-portrait__body{padding:.6rem .5rem .75rem; text-align:center;}
.orgi-portrait__name{margin:0; color:#fff; font-size:.78rem; font-weight:700; line-height:1.28;}
.orgi-portrait__role{margin:.15rem 0 0; color:#94a3b8; font-size:.65rem; font-weight:600;}
.orgi-portrait__period{
    display:inline-block; margin-top:.45rem; padding:.1rem .5rem; border-radius:999px;
    font-size:.62rem; font-weight:800; letter-spacing:.04em; font-variant-numeric:tabular-nums;
    color:#1a1206; background:linear-gradient(135deg, var(--p-gold), #f0d97a);
}
@media (max-width:479px){ .orgi-portrait{flex-basis:106px;} }

/* ---------- 11.4 Estructura vigente ---------- */
.orgi-team{margin-bottom:2.25rem;}
/* Encabezado centrado entre dos filetes, en la misma línea visual que la galería */
.orgi-team__head{display:flex; align-items:center; justify-content:center; gap:1rem; margin-bottom:1.15rem;}
.orgi-team__head::before,.orgi-team__head::after{content:""; flex:1 1 0; height:1px; min-width:16px;}
.orgi-team__head::before{background:linear-gradient(90deg,transparent,var(--p-line));}
.orgi-team__head::after{background:linear-gradient(90deg,var(--p-line),transparent);}
.orgi-team__head > div{flex:0 0 auto; text-align:center;}
.orgi-team__head h3{margin:0; font-size:1.05rem; font-weight:800; color:var(--p-text); letter-spacing:-.01em;}
.orgi-team__head small{display:block; margin-top:.15rem; font-size:.62rem; font-weight:800; letter-spacing:.18em; text-transform:uppercase; color:var(--p-muted);}
/* Tarjetas centradas: con 1 o 2 personas una rejilla auto-fill dejaba la fila coja */
.orgi-team__grid{display:flex; flex-wrap:wrap; justify-content:center; align-items:stretch; gap:.85rem;}
.orgi-member{flex:0 1 168px; max-width:210px;}
@media (min-width:640px){ .orgi-team__grid{gap:1rem;} .orgi-member{flex-basis:180px;} }
@media (max-width:479px){ .orgi-member{flex-basis:146px;} }

.orgi-member{
    height:100%;
    display:flex; flex-direction:column; align-items:center; text-align:center;
    padding:1.25rem .85rem 1rem; border-radius:1.15rem;
    background:var(--p-surface); border:1px solid var(--p-line);
    transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.orgi-member:hover{transform:translateY(-3px); border-color:var(--p-indigo); box-shadow:0 16px 30px -18px rgba(79,70,229,.45);}
.orgi-member__avatar{
    position:relative; width:84px; height:84px; margin-bottom:.85rem; border-radius:999px;
    padding:3px; background:linear-gradient(135deg, var(--p-indigo), #a5b4fc);
}
.orgi-member__avatar img{width:100%; height:100%; border-radius:999px; object-fit:cover; display:block; border:3px solid var(--p-surface); background:var(--p-surface);}
.orgi-member__name{margin:0; font-size:.9rem; font-weight:700; color:var(--p-text); line-height:1.3;}
.orgi-member__role{margin:.2rem 0 0; font-size:.75rem; font-weight:600; color:var(--p-indigo);}
.orgi-member__actions{display:flex; gap:.4rem; width:100%; margin-top:auto; padding-top:.9rem;}
.orgi-member__actions a{
    flex:1 1 0; display:inline-flex; align-items:center; justify-content:center; gap:.3rem;
    padding:.5rem .4rem; border-radius:.7rem; font-size:.7rem; font-weight:800;
    text-decoration:none; text-transform:uppercase; letter-spacing:.04em; transition:filter .15s;
}
.orgi-member__actions a:hover{filter:brightness(.94);}
.orgi-member__actions svg{width:.9rem; height:.9rem;}
.orgi-act--wa{background:#25D366; color:#fff;}
.orgi-act--mail{background:var(--p-indigo-soft); color:var(--p-indigo);}

/* Presidencia: se destaca sin romper la escala del resto (≈1.3×) */
.orgi-team--destacado .orgi-member{flex:0 1 224px; max-width:264px; padding:1.6rem 1.1rem 1.25rem;}
.orgi-team--destacado .orgi-member__avatar{width:112px; height:112px; margin-bottom:1rem;}
.orgi-team--destacado .orgi-member__name{font-size:1.05rem;}
.orgi-team--destacado .orgi-member__role{font-size:.82rem; margin-top:.25rem;}
.orgi-team--destacado .orgi-team__head h3{font-size:1.15rem;}
.orgi-team--destacado .orgi-member__actions a{padding:.6rem .5rem; font-size:.72rem;}
@media (max-width:479px){
    .orgi-team--destacado .orgi-member{flex-basis:196px; max-width:230px;}
    .orgi-team--destacado .orgi-member__avatar{width:96px; height:96px;}
}

/* ---------- 11.5 Carga y vacío ---------- */
.orgi-premium .orgi-skeleton{height:230px;}
.orgi-premium-empty{text-align:center; padding:2.5rem 1rem; color:var(--p-muted); font-size:.9rem;}
@media (prefers-reduced-motion:reduce){
    .orgi-portrait,.orgi-member,.orgi-contact,.orgi-wa{transition:none !important;}
}


/* ===========================================================================
   12. ÁRBOL JERÁRQUICO — vista compartida (Staff · Portal · Web pública)
   ---------------------------------------------------------------------------
   ≥ 900 px  → árbol con conectores SVG y bandas de nivel.
   < 900 px  → lista por estrato (el árbol no cabe y no hay truco que lo arregle).
   =========================================================================== */

.orgi-arbol{
    --a-hon:#14532d; --a-hon-b:#166534; --a-hon-soft:#dcfce7;
    --a-rem:#1e3a8a; --a-rem-b:#1d4ed8; --a-rem-soft:#dbeafe;
    --a-line:#94a3b8; --a-borde:#e2e8f0; --a-texto:#0f172a; --a-suave:#64748b;
    --a-fondo:#fff;
    --a-guia:#cbd5e1;      /* guías del árbol móvil: más visibles que --a-borde */
    --orgi-codo:1.65rem;   /* altura a la que el codo entra al conmutador */
    position:relative; margin:1.5rem 0;
}
html.dark .orgi-arbol{
    --a-borde:#331015; --a-texto:#fafafa; --a-suave:#a1a1aa; --a-fondo:#260A0D;
    --a-hon-soft:rgba(22,101,52,.22); --a-rem-soft:rgba(29,78,216,.22);
    --a-line:#7c6165; --a-guia:#5c2c33;
}
.orgi-arbol *{box-sizing:border-box;}

/* ---------- 12.1 Barra y leyenda ---------- */
.orgi-arbol__barra{display:flex; flex-wrap:wrap; align-items:center; gap:.4rem; margin-bottom:.6rem;}
.orgi-arbol__titulo{font-size:1rem; font-weight:800; color:var(--a-texto);}
.orgi-arbol__sep{flex:1 1 auto;}
.orgi-arbol__leyenda{
    display:flex; flex-wrap:wrap; gap:.4rem 1.1rem; margin-bottom:.9rem;
    font-size:.7rem; font-weight:600; color:var(--a-suave);
}
.orgi-l{display:inline-block; width:11px; height:11px; border-radius:3px; margin-right:.35rem; vertical-align:-1px;}
.orgi-l--hon{background:var(--a-hon);} .orgi-l--rem{background:var(--a-rem);}
.orgi-l--linea,.orgi-l--asesor{width:20px; height:0; border-radius:0; border-top:2px solid var(--a-line);}
.orgi-l--asesor{border-top-style:dashed;}

/* ---------- 12.2 Lienzo ---------- */
.orgi-arbol__scroll{overflow-x:auto; padding:.5rem 0 1.5rem; -webkit-overflow-scrolling:touch;}
.orgi-arbol__lienzo{position:relative; margin:0 auto; width:max-content; min-width:100%; padding:0 1rem 0 9.5rem;}
.orgi-arbol__aristas{position:absolute; inset:0; z-index:0; pointer-events:none; overflow:visible;}
.orgi-arbol__filas{position:relative; z-index:1;}
.orgi-fila{display:flex; justify-content:center; align-items:flex-start; gap:1rem; margin-bottom:3.25rem;}
.orgi-fila:last-child{margin-bottom:0;}
.orgi-arista{fill:none; stroke:var(--a-line); stroke-width:2; stroke-linecap:round;}
.orgi-arista--asesor{stroke-dasharray:6 5;}
.orgi-arista-punto{fill:var(--a-line);}

/* ---------- 12.3 Bandas de estrato ---------- */
.orgi-arbol__bandas{position:absolute; left:0; top:0; width:8.75rem; z-index:1;}
.orgi-banda{position:absolute; left:0; width:8.75rem; padding:.1rem .6rem .1rem .75rem;
    border-left:3px solid var(--a-borde);}
.orgi-banda b{display:block; font-size:.72rem; font-weight:800; color:var(--a-texto); letter-spacing:-.01em;}
.orgi-banda span{display:block; margin-top:.1rem; font-size:.62rem; line-height:1.35; color:var(--a-suave);}

/* ---------- 12.4 Nodos ---------- */
.orgi-nodo{
    flex:0 0 auto; width:11.6rem; position:relative;
    padding:.65rem .75rem; border-radius:.75rem;
    background:var(--a-fondo); border:1px solid var(--a-borde);
    box-shadow:0 6px 14px -10px rgba(15,23,42,.4);
}
.orgi-nodo__rol{display:block; font-size:.6rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; opacity:.78;}
.orgi-nodo__nom{display:block; margin-top:.1rem; font-size:.8rem; font-weight:700; line-height:1.28;}
.orgi-nodo--honorario{background:var(--a-hon); border-color:var(--a-hon-b); color:#fff;}
.orgi-nodo--remunerado{background:var(--a-rem); border-color:var(--a-rem-b); color:#fff;}
.orgi-nodo--raiz{width:13.5rem;}
.orgi-nodo--destacado{width:13rem; box-shadow:0 0 0 3px var(--orgi-honor-line,#f59e0b), 0 10px 22px -12px rgba(15,23,42,.6);}
.orgi-nodo--asesor{border-style:dashed;}
.orgi-nodo__chip{
    position:absolute; top:-.5rem; right:.5rem; padding:.05rem .4rem; border-radius:999px;
    font-size:.55rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
    background:var(--a-fondo); border:1px solid var(--a-borde); color:var(--a-suave);
}
/* Cajas de listado (Consejeros, Vocales, Comité…): fondo claro y nombres en columnas */
.orgi-nodo--listado{width:13.2rem; color:var(--a-texto);}
.orgi-nodo--listado.orgi-nodo--honorario{background:var(--a-hon-soft); border-color:var(--a-hon-b); color:var(--a-texto);}
.orgi-nodo--listado.orgi-nodo--remunerado{background:var(--a-rem-soft); border-color:var(--a-rem-b); color:var(--a-texto);}
.orgi-nodo--listado .orgi-nodo__rol{color:var(--a-suave); opacity:1;}
.orgi-nodo__lista{margin:.45rem 0 0; padding:0; list-style:none; columns:2; column-gap:.65rem;
    font-size:.6rem; line-height:1.45; color:var(--a-texto); opacity:.85;}
.orgi-nodo--angosto .orgi-nodo__lista{columns:1;}
.orgi-nodo__lista li{break-inside:avoid;}
[role="button"].orgi-nodo{cursor:pointer;}
[role="button"].orgi-nodo:hover{filter:brightness(1.08);}
[role="button"].orgi-nodo:focus-visible{outline:2px solid var(--orgi-honor-line,#f59e0b); outline-offset:2px;}

/* ---------- 12.5 ÁRBOL VERTICAL INDENTADO (móvil) ----------
   Sustituye a la antigua lista plana por estrato, que no dejaba ver quién
   depende de quién: se leía igual que la vista "Lista" del panel.
   La jerarquía se comunica con INDENTACIÓN + GUÍA VERTICAL, que es lo que
   funciona en una pantalla angosta; el árbol horizontal necesita ancho y no
   hay truco que lo arregle por debajo de 900 px. */
.orgi-arbol__lista{display:none; max-width:40rem; margin:0 auto;}

.orgi-mtree__ctl{display:flex; flex-wrap:wrap; align-items:center; gap:.4rem; margin-bottom:.9rem;}
.orgi-mtree__ctl .orgi-btn{padding:.45rem .7rem; font-size:.75rem;}
.orgi-mtree__hint{font-size:.7rem; color:var(--a-suave); margin-left:auto;}
.orgi-mtree__aviso{
    margin:1.5rem 0 .6rem; padding:.5rem .7rem; border-radius:.6rem;
    font-size:.74rem; font-weight:700; color:#92400e;
    background:#fef3c7; border:1px solid #fcd34d;
}
html.dark .orgi-mtree__aviso{background:rgba(245,158,11,.14); border-color:rgba(245,158,11,.4); color:#fcd34d;}

/* --- Ramas y guías ---
   Patrón "L" por hijo, sin máscaras: cada nodo pinta su propio tramo vertical
   y su codo. El ÚLTIMO hermano corta el tramo a la altura del codo, así la
   guía no queda colgando por debajo de la rama. Una máscara del color del
   fondo no serviría: el panel Staff pinta #F8FAFC detrás y la tarjeta #fff. */
.orgi-mrama{list-style:none; margin:0; padding:0;}
.orgi-mnodo{position:relative; list-style:none;}
/* La sangría se estrecha a partir del tercer escalón: con 1.5 rem fijos, una
   estructura de 5 niveles dejaba las tarjetas del fondo en menos de 180 px en
   un teléfono y el nombre se partía en cuatro renglones. */
.orgi-mnodo > .orgi-mrama{--ind:1.5rem; padding-left:var(--ind);}
.orgi-mnodo[data-nivel="2"] > .orgi-mrama,
.orgi-mnodo[data-nivel="3"] > .orgi-mrama{--ind:1.15rem;}
.orgi-mnodo[data-nivel="4"] > .orgi-mrama,
.orgi-mnodo[data-nivel="5"] > .orgi-mrama,
.orgi-mnodo[data-nivel="6"] > .orgi-mrama{--ind:.9rem;}

/* Tramo vertical: completo si hay más hermanos debajo, cortado si es el último */
.orgi-mnodo > .orgi-mrama > .orgi-mnodo::before{
    content:""; position:absolute; left:calc(.62rem - var(--ind)); top:0;
    width:2px; height:var(--orgi-codo,1.65rem); background:var(--a-guia);
}
.orgi-mnodo > .orgi-mrama > .orgi-mnodo:not(:last-child)::before{height:100%;}
/* Codo horizontal que entra al conmutador de la tarjeta */
.orgi-mnodo > .orgi-mrama > .orgi-mnodo::after{
    content:""; position:absolute; left:calc(.62rem - var(--ind)); top:var(--orgi-codo,1.65rem);
    width:calc(var(--ind) - .55rem); height:2px; background:var(--a-guia);
}
/* La asesoría es un vínculo punteado, igual que en el árbol de escritorio */
.orgi-mnodo--asesor::after{background:none !important; height:0 !important; border-top:2px dashed var(--a-guia);}

/* --- Fila: chevron + tarjeta --- */
.orgi-mfila{display:flex; align-items:flex-start; gap:.35rem; padding:.2rem 0;}
.orgi-mtog{
    flex:0 0 auto; width:1.9rem; height:1.9rem; margin-top:.5rem;
    display:flex; align-items:center; justify-content:center;
    background:var(--a-fondo); border:1px solid var(--a-borde); border-radius:.5rem;
    color:var(--a-suave); cursor:pointer; padding:0;
}
.orgi-mtog svg{width:.85rem; height:.85rem; transition:transform .18s ease;}
.orgi-mnodo[data-abierto="true"] > .orgi-mfila > .orgi-mtog svg{transform:rotate(90deg);}
.orgi-mtog--hoja{border:0; background:none; cursor:default;}
.orgi-mnodo[data-abierto="false"] > .orgi-mrama{display:none;}

.orgi-mcard{
    flex:1 1 auto; min-width:0; padding:.6rem .75rem; border-radius:.75rem;
    background:var(--a-fondo); border:1px solid var(--a-borde);
    border-left:4px solid var(--a-borde);
}
.orgi-mnodo--honorario  > .orgi-mfila > .orgi-mcard{border-left-color:var(--a-hon-b);}
.orgi-mnodo--remunerado > .orgi-mfila > .orgi-mcard{border-left-color:var(--a-rem-b);}
.orgi-mnodo--asesor     > .orgi-mfila > .orgi-mcard{border-style:dashed; border-left-style:solid;}
/* La cúspide se distingue sin cambiar de tamaño, para no romper la columna */
.orgi-mnodo--raiz > .orgi-mfila > .orgi-mcard{
    background:linear-gradient(180deg, color-mix(in srgb, var(--a-rem-soft) 60%, transparent), transparent);
    box-shadow:0 2px 10px -6px rgba(15,23,42,.5);
}
.orgi-mcard__rol{display:block; font-size:.6rem; font-weight:800; letter-spacing:.07em;
    text-transform:uppercase; color:var(--a-suave); line-height:1.3;}
.orgi-mcard__nom{display:block; margin-top:.1rem; font-size:.88rem; font-weight:700;
    color:var(--a-texto); line-height:1.3; overflow-wrap:anywhere;}
.orgi-mcard__mie{margin:.4rem 0 0; padding-left:.95rem; font-size:.72rem; line-height:1.5; color:var(--a-suave);}
.orgi-mcard__tags{display:flex; flex-wrap:wrap; gap:.3rem; margin-top:.45rem;}
.orgi-mtag{
    display:inline-block; font-style:normal; font-size:.6rem; font-weight:800;
    letter-spacing:.04em; padding:.1rem .4rem; border-radius:999px;
    color:var(--a-suave); background:color-mix(in srgb, var(--a-suave) 12%, transparent);
    border:1px solid color-mix(in srgb, var(--a-suave) 25%, transparent);
}
.orgi-mtag--n{color:var(--a-rem-b); background:var(--a-rem-soft); border-color:transparent;}
.orgi-mtag--asesor{border-style:dashed;}
[role="button"].orgi-mcard{cursor:pointer;}
[role="button"].orgi-mcard:active{transform:scale(.995);}
[role="button"].orgi-mcard:focus-visible{outline:2px solid var(--color-primary,#14B8A6); outline-offset:2px;}
.orgi-mrama--sueltos > .orgi-mnodo > .orgi-mfila > .orgi-mcard{border-left-color:#f59e0b;}

.orgi-arbol-vacio{padding:2.5rem 1rem; text-align:center; color:var(--orgi-text-soft,#6b7280); font-size:.9rem;}

/* ---------- 12.6 Cambio de vista y impresión ---------- */
@media (max-width:899px){
    /* El zoom y el "Ajustar" sólo tienen sentido sobre el lienzo horizontal.
       La leyenda SÍ se conserva completa: el árbol vertical también distingue
       línea de mando (guía sólida) de asesoría (guía punteada). */
    .orgi-arbol__scroll,
    .orgi-arbol__barra .orgi-arbol-zoom,
    .orgi-arbol__barra .orgi-arbol-ajustar,
    .orgi-arbol__barra .orgi-arbol-imprimir{display:none;}
    .orgi-arbol__lista{display:block;}
    .orgi-arbol{margin-top:.5rem;}
}
@media print{
    @page{size:landscape; margin:8mm;}
    .orgi-arbol__barra,.orgi-arbol__lista{display:none !important;}
    .orgi-arbol__scroll{overflow:visible !important; display:block !important;}
    .orgi-arbol__lienzo{zoom:.72;}
}
@media (prefers-reduced-motion:reduce){ .orgi-nodo{transition:none !important;} }

/* ---------- 12.7 Control de vista y avisos (panel Staff) ---------- */
.orgi-vistas{display:inline-flex; border:1px solid var(--orgi-border); border-radius:.75rem; overflow:hidden;}
.orgi-vistas .orgi-btn{border:0; border-radius:0; padding:.6rem .75rem;}
.orgi-vistas .orgi-btn + .orgi-btn{border-left:1px solid var(--orgi-border);}
.orgi-vistas .orgi-btn[aria-pressed="true"]{background:var(--color-primary,#14B8A6); color:#fff;}
.orgi-aviso{
    margin:0 0 1rem; padding:.7rem .9rem; border-radius:.7rem; font-size:.82rem;
    background:#fef3c7; border:1px solid #fcd34d; color:#78350f;
}
html.dark .orgi-aviso{background:rgba(245,158,11,.14); border-color:rgba(245,158,11,.4); color:#fcd34d;}
.orgi-field textarea{min-height:6rem; resize:vertical; font-family:inherit;}

/* ---------- 12.8 Utilidades de visibilidad ----------
   El árbol necesita ancho; las tarjetas premium se leen mejor en el teléfono.
   Cada vista se muestra donde funciona, sin duplicar contenido. */
@media (max-width:899px){ .orgi-solo-escritorio{display:none !important;} }
@media (min-width:900px){ .orgi-solo-movil{display:none !important;} }


/* ===========================================================================
   13. AJUSTES DE INTEGRACIÓN CON EL PANEL STAFF
   =========================================================================== */

/* 13.1 Modo oscuro coherente.
   css/staff-app.css pinta `html.dark #staff-content` en NAVY (#0F172A), pero el
   tema oscuro de la app (css/dark-theme.css) es GRANATE (#1A0709 / #260A0D) y es
   el que heredan las tarjetas. Resultado: tarjetas granates flotando sobre un
   lienzo navy. Se alinea el lienzo con el tema de la app —sólo cuando el módulo
   montado es el organigrama— en vez de repintar las tarjetas y desentonar con
   el resto del panel. */
html.dark body.staff-body #staff-content:has(.orgi-wrap){background:#1A0709;}

/* 13.2 La barra pegajosa debe usar el MISMO color que el lienzo que tiene
   detrás, o al desplazarse se ve una franja de otro tono. */
body.staff-body .orgi-toolbar{background:#F8FAFC;}
html.dark body.staff-body .orgi-toolbar{background:#1A0709; border-bottom-color:#331015;}

/* 13.2b El hueco sobre la barra fija.
   #staff-content tiene padding:16px, así que la barra se ancla 16 px por
   debajo del borde del área visible y las tarjetas se veían pasar por esa
   franja al desplazarse. La barra se sangra a los lados para ocupar el ancho
   completo —como una app bar de verdad— y tapa el hueco superior con un
   pseudo-elemento del mismo color. Se hace así y no con `top:-16px`, que
   escondería 16 px de la propia barra bajo el encabezado. */
@media (max-width:767px){
    body.staff-body .orgi-toolbar{margin-left:-16px; margin-right:-16px; padding-left:16px; padding-right:16px;}
    body.staff-body .orgi-toolbar::before{
        content:""; position:absolute; left:0; right:0; top:-17px; height:17px;
        background:inherit; z-index:-1;
    }
}

/* 13.3 Aviso de estructura rota (ciclos / jefes borrados).
   Antes sólo se veía en la vista Árbol; ahora se muestra en las tres, porque
   el problema existe igual aunque estés mirando tarjetas. */
.orgi-aviso{display:flex; align-items:flex-start; gap:.5rem;}
.orgi-aviso__ico{flex:0 0 auto; width:1.05rem; height:1.05rem; margin-top:.1rem;}

/* 13.4 Nota de la banda honorífica dentro de la vista Árbol: los expresidentes
   quedan FUERA del diagrama a propósito, y desaparecer sin explicación se lee
   como un error. */
.orgi-nota-honor{
    margin:0 0 1rem; padding:.6rem .8rem; border-radius:.7rem; font-size:.78rem;
    color:var(--orgi-honor); background:var(--orgi-honor-soft);
    border:1px solid color-mix(in srgb, var(--orgi-honor-line) 35%, transparent);
}

/* 13.5 Área táctil mínima. Las flechas ↑ ↓ y los botones de vista quedaban en
   ~30 px de alto; la recomendación de accesibilidad táctil es 44 px. */
@media (pointer:coarse){
    .orgi-card__acciones .orgi-btn,
    .orgi-vistas .orgi-btn,
    .orgi-mtog{min-height:44px;}
    .orgi-mtog{width:2.4rem;}
    .orgi-section__head{padding-top:.85rem; padding-bottom:.85rem;}
}

/* 13.6 En móvil la hoja se ancla abajo: el pie necesita separarse del borde
   físico del teléfono aunque el navegador no reporte safe-area. */
@media (max-width:639px){
    .orgi-sheet__foot{padding-bottom:calc(1rem + env(safe-area-inset-bottom, .5rem));}
    .orgi-sheet__body{padding:1rem;}
}

/* 13.7 El campo "Lado en el diagrama" se ocultaba con visibility:hidden y
   dejaba una media rejilla vacía al lado de "Tipo de vínculo". */
.orgi-field--row > [hidden]{display:none;}
.orgi-field--row:has(> [hidden]){grid-template-columns:1fr;}

/* 13.8 Foto del formulario: botón para quitarla sin tener que subir otra. */
.orgi-foto-wrap{display:flex; flex-direction:column; align-items:center; gap:.5rem; margin-bottom:1.25rem;}
.orgi-foto-quitar{font-size:.74rem; padding:.35rem .7rem;}
