/* galatcxis.css — GALATCXIS · Eje Central de Innovación Tecnológica Galanista
   ---------------------------------------------------------------------------
   Plataforma independiente (sin el menú de la Intranet). Identidad BLANCO +
   AZUL + CYAN, con modo claro y oscuro sobre los MISMOS tokens: el tema solo
   redefine variables (html[data-gx-tema="oscuro"]).

   Los colores de marca (--gx-navy, --gx-blue, --gx-electric, --gx-cyan,
   --gx-glow, --gx-bg-claro, --gx-bg-oscuro) los imprime index.php desde
   AdminPage, DESPUÉS de este archivo. Aquí van sus valores por defecto.

   Glassmorphism moderado: backdrop-filter solo en las 2 tarjetas laterales del
   hero, la barra superior (con el menú) y la barra inferior del celular. Fondo animado ligero
   (CSS + un <canvas> a 30 fps en js/galatcxis.js). */

/* ── Tokens ───────────────────────────────────────────────────────── */
:root{
  --gx-navy:#0b1f4f; --gx-blue:#1557d6; --gx-electric:#1e7bff; --gx-cyan:#19c3f5; --gx-glow:#6be3ff;
  --gx-bg-claro:#f3f7fd; --gx-bg-oscuro:#060d22;
  --gx-fondo-img:none; --gx-fondo-op:.25;
  --gx-r:24px;
  --gx-foot-h:30px;                       /* pie fijo */
  --gx-nav-a:.78; --gx-nav-ico:19px;      /* barra de navegación (AdminPage) */
  --gx-nav-txt:14px; --gx-nav-pad:12px;   /* tamaño del texto · relleno vertical de los botones */
  --gx-dock-res:0px;                      /* alto reservado para el menú inferior (body.con-dock, celular) */
  --gx-top-a:.7; --gx-top-blur:14px;      /* barra superior (AdminPage): opacidad del fondo · desenfoque */
  --gx-top-alto:68px; --gx-top-h:0px;     /* altura elegida · alto reservado (body.con-top) */
  --gx-top-logo:.9;                       /* logo: fracción del alto de la barra */
  --gx-ok:#16c47f; --gx-danger:#e5484d;

  /* modo claro */
  --gx-bg:var(--gx-bg-claro);
  --gx-ink:#0b1a3a; --gx-ink2:#45577c; --gx-muted:#61739a;   /* muted: contraste AA (4,7:1) */
  --gx-strong:var(--gx-navy);
  --gx-line:rgba(30,123,255,.14);
  --gx-card:rgba(255,255,255,.80); --gx-card-solid:#ffffff; --gx-card-brd:rgba(255,255,255,.95);
  --gx-glass:rgba(255,255,255,.62); --gx-glass-brd:rgba(255,255,255,.85);
  --gx-glass-hl:rgba(255,255,255,.75);
  --gx-shadow:0 1px 2px rgba(11,31,79,.05),0 12px 32px -12px rgba(21,87,214,.22);
  --gx-shadow-hi:0 2px 4px rgba(11,31,79,.06),0 22px 48px -16px rgba(21,87,214,.38);
  --gx-solid:var(--gx-navy); --gx-on-solid:#ffffff;
  --gx-field:#ffffff; --gx-field-brd:rgba(11,31,79,.14);
  --gx-ico-bg:linear-gradient(145deg,#ffffff,#e6f0ff);
  --gx-wm1:var(--gx-navy); --gx-wm2a:var(--gx-electric); --gx-wm2b:#3aa0ff;
  --gx-disc:radial-gradient(circle at 35% 30%,#ffffff 0%,rgba(255,255,255,.85) 40%,rgba(231,241,255,.55) 72%,rgba(231,241,255,0) 100%);
  --gx-disc-brd:rgba(255,255,255,.9);
  --gx-link-rgb:30,123,255;
  color-scheme:light;
}
html[data-gx-tema="oscuro"]{
  --gx-bg:var(--gx-bg-oscuro);
  --gx-ink:#e8f0ff; --gx-ink2:#a9badb; --gx-muted:#7487ad;
  --gx-strong:#f2f7ff;
  --gx-line:rgba(107,227,255,.14);
  --gx-card:rgba(15,30,68,.66); --gx-card-solid:#0d1a3c; --gx-card-brd:rgba(107,227,255,.12);
  --gx-glass:rgba(13,27,62,.55); --gx-glass-brd:rgba(107,227,255,.16);
  --gx-glass-hl:rgba(107,227,255,.08);
  --gx-shadow:0 1px 2px rgba(0,0,0,.3),0 14px 36px -14px rgba(0,0,0,.65);
  --gx-shadow-hi:0 2px 4px rgba(0,0,0,.35),0 24px 50px -16px rgba(30,123,255,.35);
  --gx-solid:var(--gx-electric); --gx-on-solid:#ffffff;
  --gx-field:rgba(6,14,36,.72); --gx-field-brd:rgba(107,227,255,.18);
  --gx-ico-bg:linear-gradient(145deg,rgba(30,123,255,.22),rgba(25,195,245,.08));
  --gx-wm1:#eef4ff; --gx-wm2a:var(--gx-electric); --gx-wm2b:var(--gx-cyan);
  --gx-disc:radial-gradient(circle at 35% 30%,rgba(60,120,255,.30) 0%,rgba(25,60,140,.30) 45%,rgba(10,25,70,.15) 72%,rgba(10,25,70,0) 100%);
  --gx-disc-brd:rgba(107,227,255,.22);
  --gx-link-rgb:107,227,255;
  color-scheme:dark;
}
/* transición fluida al cambiar de tema (la activa el JS durante ~0,5 s) */
html.gx-tema-anim, html.gx-tema-anim *, html.gx-tema-anim *::before, html.gx-tema-anim *::after{
  transition:background-color .5s ease,color .5s ease,border-color .5s ease,fill .5s ease,stroke .5s ease,box-shadow .5s ease!important}

/* ── Base ─────────────────────────────────────────────────────────── */
*{box-sizing:border-box}
html,body{margin:0}
body.gx-body{background:var(--gx-bg);color:var(--gx-ink);font-family:'Outfit','Inter','Segoe UI',system-ui,sans-serif;line-height:1.5;overflow-x:hidden;min-height:100vh}
.gx-body a{color:inherit;text-decoration:none}
/* :where() = especificidad 0: no pisa el color de .gx-btn-pri, .gx-docente-btn, chips… */
:where(.gx-body) :where(button,input,select,textarea){font:inherit;color:inherit}
.gx-body :focus-visible{outline:3px solid var(--gx-cyan);outline-offset:3px;border-radius:12px}
.gx-body svg{flex:none}
.gx{position:relative;z-index:1;padding-bottom:110px;overflow-x:hidden;overflow-x:clip}
/* Páginas SIN scroll de página (portada, categoría, paneles): el cuerpo mide
   lo que la ventana y cada vista reparte su alto; solo hacen scroll los paneles
   internos (tarjetas de apps, listas del panel). */
body.gx-body-fija{height:100vh;height:100dvh;overflow:hidden}
body.gx-body-fija>.gx{height:100%;padding-bottom:calc(var(--gx-foot-h) + var(--gx-dock-res))}
/* Portada, categoría y 404: scroll vertical NATURAL de la página. El contenido
   crece lo que necesite (nada se comprime ni se corta); el pie y el dock son
   fijos, así que se reserva su alto al final. scrollbar-gutter evita que el
   contenido «salte» al aparecer la barra de desplazamiento. */
html:has(>body.gx-body-flujo){scrollbar-gutter:stable}
body.gx-body-flujo>.gx{min-height:100vh;min-height:100dvh;padding-bottom:calc(var(--gx-foot-h) + var(--gx-dock-res))}
body.con-top{--gx-top-h:var(--gx-top-alto)}
body.sin-pie{--gx-foot-h:0px}           /* pie oculto (Barra de navegación) */
.gx-scrollfino{scrollbar-width:thin;scrollbar-color:rgba(var(--gx-link-rgb),.35) transparent}
[hidden]{display:none!important}

/* ── Fondo tecnológico (fijo) ─────────────────────────────────────── */
.gx-bg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;background:var(--gx-bg)}
.gx-bg::before,.gx-bg::after{content:"";position:absolute;inset:0;transition:opacity .6s ease}
.gx-bg::before{background:radial-gradient(1200px 700px at 50% 38%,#ffffff 0%,rgba(255,255,255,0) 70%),linear-gradient(180deg,rgba(255,255,255,.6) 0%,rgba(231,240,252,.5) 100%)}
.gx-bg::after{opacity:0;background:radial-gradient(1100px 680px at 50% 36%,rgba(30,123,255,.20) 0%,rgba(30,123,255,0) 70%),linear-gradient(180deg,rgba(8,20,52,.4) 0%,rgba(4,10,28,.6) 100%)}
html[data-gx-tema="oscuro"] .gx-bg::before{opacity:0}
html[data-gx-tema="oscuro"] .gx-bg::after{opacity:1}
/* elementos animados temáticos de una categoría (js: GX.simbolos) */
.gx-sim{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none}
.gx-sim-i{position:absolute;opacity:var(--gx-sim-op,.35);line-height:1;will-change:transform;filter:drop-shadow(0 0 6px rgba(var(--gx-link-rgb),.28))}
.gx-sim-i svg{display:block}
.gx-sim-i.txt{font-family:'Exo 2','Outfit',sans-serif;font-weight:600;white-space:nowrap;letter-spacing:.03em}
.gx-sim-i.m-flotar{animation:gxSimFlotar ease-in-out infinite alternate}
.gx-sim-i.m-girar{animation:gxSimGirar linear infinite}
.gx-sim-i.m-subir{animation:gxSimSubir linear infinite}
.gx-sim-i.m-derivar{animation:gxSimDerivar linear infinite}
.gx-sim.quieto .gx-sim-i{animation:none}
@keyframes gxSimFlotar{from{transform:translate(0,0) rotate(var(--r0))}to{transform:translate(var(--dx),var(--dy)) rotate(var(--r1))}}
@keyframes gxSimGirar{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes gxSimSubir{from{top:105%;transform:rotate(var(--r0))}to{top:-15%;transform:rotate(var(--r1))}}
@keyframes gxSimDerivar{from{left:-12%;transform:translateY(0) rotate(var(--r0))}to{left:104%;transform:translateY(var(--dy)) rotate(var(--r1))}}
.gx-bgimg{position:absolute;inset:0;background:var(--gx-fondo-img) center/cover no-repeat;opacity:var(--gx-fondo-op)}
.gx-grid{position:absolute;inset:-2px;opacity:.55;z-index:1;
  background-image:linear-gradient(rgba(var(--gx-link-rgb),.07) 1px,transparent 1px),linear-gradient(90deg,rgba(var(--gx-link-rgb),.07) 1px,transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:radial-gradient(ellipse 75% 65% at 50% 40%,#000 30%,transparent 78%);mask-image:radial-gradient(ellipse 75% 65% at 50% 40%,#000 30%,transparent 78%)}
.gx-blob{position:absolute;border-radius:50%;will-change:transform;z-index:1}
.gx-blob.b1{width:62vmax;height:62vmax;left:-18vmax;top:-22vmax;background:radial-gradient(circle,rgba(25,195,245,.20) 0%,rgba(25,195,245,0) 62%);animation:gxDrift1 46s ease-in-out infinite alternate}
.gx-blob.b2{width:70vmax;height:70vmax;right:-24vmax;top:8vmax;background:radial-gradient(circle,rgba(30,123,255,.16) 0%,rgba(30,123,255,0) 62%);animation:gxDrift2 58s ease-in-out infinite alternate}
.gx-blob.b3{width:48vmax;height:48vmax;left:22vmax;bottom:-30vmax;background:radial-gradient(circle,rgba(107,227,255,.18) 0%,rgba(107,227,255,0) 62%);animation:gxDrift3 64s ease-in-out infinite alternate}
@keyframes gxDrift1{to{transform:translate3d(10vmax,8vmax,0)}}
@keyframes gxDrift2{to{transform:translate3d(-12vmax,-6vmax,0)}}
@keyframes gxDrift3{to{transform:translate3d(-8vmax,-10vmax,0)}}
.gx-circuit{position:absolute;width:min(46vw,620px);height:auto;opacity:.75;z-index:1}
.gx-circuit.c-tl{left:0;top:0}
.gx-circuit.c-br{right:0;bottom:0;transform:rotate(180deg)}
.gx-circuit .trace{fill:none;stroke:rgba(var(--gx-link-rgb),.16);stroke-width:1.4}
.gx-circuit .node{fill:var(--gx-card-solid);stroke:rgba(var(--gx-link-rgb),.35);stroke-width:1.4}
.gx-circuit .pulse{fill:none;stroke:url(#gxPulse);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:46 900;stroke-dashoffset:946;animation:gxPulse 9s linear infinite}
.gx-circuit .pulse.p2{animation-delay:-3s;animation-duration:11s}
.gx-circuit .pulse.p3{animation-delay:-6.5s;animation-duration:13s}
@keyframes gxPulse{to{stroke-dashoffset:0}}
#gxCanvas{position:absolute;inset:0;width:100%;height:100%;z-index:2}

/* ── Botones de la derecha (dentro de la barra superior) ──────────── */
.gx-flot{grid-column:3;justify-self:end;position:relative;display:flex;align-items:center;gap:8px;flex:none}
.gx-flot-items{display:flex;align-items:center;gap:8px}
.gx-flot-toggle{display:none!important}
.gx-flot .gx-iconbtn,.gx-flot .gx-user{background:var(--gx-card-solid)}
.gx-flot-toggle span{display:grid;place-items:center}
.gx-flot-toggle .i-cerrar,.gx-flot.abierto .gx-flot-toggle .i-abrir{display:none}
.gx-flot.abierto .gx-flot-toggle .i-cerrar{display:grid}
.gx-body-panel .gx-flot .gx-user{display:none}         /* el panel ya muestra el usuario */
.gx-iconbtn{appearance:none;width:40px;height:40px;border-radius:50%;display:inline-grid;place-items:center;flex:none;cursor:pointer;
  background:var(--gx-card);border:1px solid var(--gx-line);color:var(--gx-ink2);box-shadow:var(--gx-shadow);transition:color .2s,transform .2s}
.gx-iconbtn:hover{color:var(--gx-electric);transform:translateY(-1px)}
.gx-iconbtn svg{width:18px;height:18px}
.gx-tema-btn .i-luna,html[data-gx-tema="oscuro"] .gx-tema-btn .i-sol{display:none}
html[data-gx-tema="oscuro"] .gx-tema-btn .i-luna{display:grid}
.gx-tema-btn span{display:grid;place-items:center}
/* Botón Docente: visible pero integrado */
.gx-docente-btn{appearance:none;display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 16px 0 6px;border-radius:999px;cursor:pointer;
  background:var(--gx-solid);color:var(--gx-on-solid);border:0;font-weight:600;font-size:.86rem;
  box-shadow:0 12px 26px -12px rgba(11,31,79,.65);transition:transform .25s,box-shadow .25s}
.gx-docente-btn svg{width:28px;height:28px;padding:5px;border-radius:50%;background:linear-gradient(135deg,var(--gx-electric),var(--gx-cyan));color:#fff}
.gx-docente-btn:hover{transform:translateY(-2px);box-shadow:0 16px 32px -12px rgba(11,31,79,.7)}
.gx-user{display:flex;align-items:center;gap:8px;height:40px;padding:3px 12px 3px 3px;border-radius:999px;background:var(--gx-card);border:1px solid var(--gx-line);box-shadow:var(--gx-shadow);min-width:0}
.gx-user-av{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;flex:none;background:linear-gradient(135deg,var(--gx-electric),var(--gx-cyan));color:#fff}
.gx-user-av svg{width:17px;height:17px}
.gx-user-n{display:flex;flex-direction:column;line-height:1.15;font-size:.8rem;font-weight:600;color:var(--gx-ink);min-width:0;max-width:150px}
.gx-user-n,.gx-user-n small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-user-n small{font-size:.66rem;font-weight:500;color:var(--gx-muted)}
/* el usuario es un botón: abre «Mis aplicaciones» (AdminPage para el editor) */
a.gx-user{cursor:pointer;transition:transform .2s,border-color .2s,box-shadow .2s}
a.gx-user:hover{transform:translateY(-1px);border-color:rgba(var(--gx-link-rgb),.45)}
a.gx-user:hover .gx-user-n{color:var(--gx-electric)}
a.gx-user.on{border-color:var(--gx-electric);box-shadow:0 0 0 2px rgba(var(--gx-link-rgb),.2),var(--gx-shadow)}
.gx-user-av.con-foto{background:var(--gx-card-solid);overflow:hidden}
.gx-user-av.con-foto img,.gx-pnav-head .gx-ico.con-foto img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.gx-pill{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:999px;font-size:.8rem;font-weight:600;white-space:nowrap;
  background:rgba(var(--gx-link-rgb),.10);color:var(--gx-electric)}
html[data-gx-tema="oscuro"] .gx-pill{color:var(--gx-glow)}
.gx-pill:hover{background:rgba(var(--gx-link-rgb),.18)}
.gx-pill svg{width:15px;height:15px}

/* ── Logotipo vectorial ───────────────────────────────────────────── */
.gx-wm{display:block;overflow:visible}

/* ── HERO ─────────────────────────────────────────────────────────── */
/* Portada: una «diapositiva» visible a la vez (js: verSlide) */
.gx-inicio{display:flex;flex-direction:column}
.gx-slide{position:relative;flex:1 0 auto;min-width:0}
/* ── Transiciones entre secciones y páginas (rápidas y discretas) ──────
   · Diapositivas de la portada: entran desde el lado hacia el que se navega
     (js: verSlide fija --gx-dx / --gx-dy). · Secciones de los paneles: igual,
     hacia arriba. · Entre páginas: View Transitions del navegador (fundido
     corto; el dock y el fondo se quedan quietos). Sin soporte, la página de
     categoría entra con el mismo fundido. */
@keyframes gxEntra{from{opacity:0;transform:translate3d(var(--gx-dx,0px),var(--gx-dy,8px),0)}}
.gx-slide.gx-entra{animation:gxEntra .3s cubic-bezier(.2,.7,.2,1) both}
.gx-js:not(.gx-vt) .gx-catv{animation:gxEntra .28s cubic-bezier(.2,.7,.2,1) both}
@view-transition{navigation:auto}
::view-transition-old(root){animation:.16s ease-out both gxVtSale}
::view-transition-new(root){animation:.26s cubic-bezier(.2,.7,.2,1) both gxVtEntra}
@keyframes gxVtSale{to{opacity:0}}
@keyframes gxVtEntra{from{opacity:0;transform:translateY(8px) scale(.996)}}
.gx-bg{view-transition-name:gx-fondo}
::view-transition-group(gx-fondo){animation-duration:.2s}
.gx-hero{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;justify-content:safe center;
  padding:12px 24px 6px;text-align:center}
.gx-eyebrow{display:inline-flex;align-items:center;gap:8px;padding:6px 16px 6px 10px;border-radius:999px;background:var(--gx-card);border:1px solid var(--gx-line);
  box-shadow:var(--gx-shadow);font-size:.74rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--gx-blue)}
html[data-gx-tema="oscuro"] .gx-eyebrow{color:var(--gx-glow)}
.gx-eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--gx-cyan);flex:none;animation:gxPing 2.8s ease-out infinite}
@keyframes gxPing{0%{box-shadow:0 0 0 0 rgba(25,195,245,.55)}80%,100%{box-shadow:0 0 0 9px rgba(25,195,245,0)}}
.gx-word{margin:14px auto 0;line-height:0;font-size:0}
.gx-word .gx-wm{width:clamp(250px,min(58vw,95vh),720px);height:auto;margin:0 auto}
.gx-sub{margin:12px auto 0;max-width:900px;font-size:clamp(.78rem,1.6vw,1.06rem);font-weight:500;letter-spacing:.3em;text-transform:uppercase;color:var(--gx-ink2);padding-left:.3em}

/* Diseño de inicio (AdminPage): cada elemento va en un .gx-pos con su
   separación superior (--gx-sep), su alineación y el orden elegido */
.gx-hero .gx-pos{width:100%;max-width:1240px;flex:none;display:flex;flex-direction:column;align-items:center;text-align:center;margin-top:var(--gx-sep,0px)}
.gx-hero .gx-pos>*{margin-top:0;margin-bottom:0}
.gx-hero .gx-pos.al-izq{align-items:flex-start;text-align:left}
.gx-hero .gx-pos.al-der{align-items:flex-end;text-align:right}
.gx-hero .gx-pos.al-izq>*,.gx-hero .gx-pos.al-der>*{margin-left:0;margin-right:0}
.gx-hero .gx-pos.al-izq .gx-wm{margin-left:0}
.gx-hero .gx-pos.al-der .gx-wm{margin-right:0}
.gx-hero.ini-v-arriba{justify-content:flex-start}
.gx-hero.ini-v-abajo{justify-content:flex-end;justify-content:safe flex-end}
.gx-stage{width:100%;max-width:1240px;margin:8px auto 0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr) minmax(0,1fr);align-items:center;gap:28px;
  grid-template-areas:"eco core hoy"}
/* Diseño de inicio → organización de paneles y símbolo */
.gx-stage>.p-eco{grid-area:eco}
.gx-stage>.p-hoy{grid-area:hoy}
.gx-stage>.gx-core{grid-area:core}
.gx-stage.org-invertido{grid-template-areas:"hoy core eco"}
.gx-stage.org-sim_izq,.gx-stage.org-sim_der{max-width:1060px;row-gap:16px}
.gx-stage.org-sim_izq{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);grid-template-areas:"core eco" "core hoy"}
.gx-stage.org-sim_der{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);grid-template-areas:"eco core" "hoy core"}
.gx-stage.org-abajo,.gx-stage.org-arriba{max-width:900px;grid-template-columns:repeat(2,minmax(0,1fr));row-gap:16px;--gx-stage-extra:190px}
.gx-stage.org-abajo{grid-template-areas:"core core" "eco hoy"}
.gx-stage.org-arriba{grid-template-areas:"eco hoy" "core core"}
.gx-stage.sin-paneles{grid-template-columns:minmax(0,1fr);grid-template-areas:"core";--gx-stage-extra:0px}
.gx-hero.con-pil{--gx-hero-extra:86px}      /* reserva para los pilares compactos */
/* pilares compactos: cada uno abre su ficha completa */
.gx-pil-mini{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;width:100%;max-width:980px}
.gx-pil-mini-k{font-size:.68rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--gx-muted);margin-right:4px}
.gx-pil-chip{appearance:none;display:flex;align-items:center;gap:10px;flex:1 1 0;min-width:0;max-width:300px;padding:8px 14px 8px 8px;border-radius:18px;cursor:pointer;text-align:left;
  background:var(--gx-card);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow);transition:transform .2s,box-shadow .2s,border-color .2s}
.gx-pil-chip:hover{transform:translateY(-2px);box-shadow:var(--gx-shadow-hi);border-color:rgba(var(--gx-link-rgb),.35)}
.gx-pil-chip .gx-ico{width:38px;height:38px;flex:none}
.gx-pil-chip .gx-ico svg{width:18px;height:18px}
.gx-pil-chip-t{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.gx-pil-chip-t b{font-family:'Exo 2','Outfit',sans-serif;font-size:.92rem;color:var(--gx-strong)}
.gx-pil-chip-t small{font-size:.72rem;color:var(--gx-ink2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gx-dialog.gx-dialog-pil{max-width:min(620px,calc(100vw - 24px))}
.gx-dialog-pil .gx-dlg{max-height:calc(100dvh - 32px);overflow-y:auto}
.gx-dialog-pil .gx-kicker{margin:0;padding-right:44px}
.gx-dialog-pil .gx-pilar{box-shadow:none}
.gx-pil-tabs{align-self:flex-start;max-width:100%;overflow-x:auto;scrollbar-width:none}
.gx-dialog-pil .gx-pil-cierre{margin-top:0}
/* Institucional (solo con sesión) */
.gx-inst{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:14px;align-content:start}
/* sus tarjetas usan el diseño de las apps (.gx-app, .gx-tj-m): ver «Diseño de tarjetas» */
.gx-inst-vacio{grid-column:1/-1;margin:0;padding:18px;text-align:center;color:var(--gx-muted)}
.gx-core{position:relative;width:min(100%,calc(min(460px,max(190px,calc(100vh - 420px - var(--gx-hero-extra,0px) - var(--gx-stage-extra,0px)))) * var(--gx-logo-k,1)));aspect-ratio:1/1;margin:0 auto;display:grid;place-items:center;perspective:900px}
.gx-core-tilt{position:relative;width:100%;height:100%;display:grid;place-items:center;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.gx-halo{position:absolute;inset:8%;border-radius:50%;background:radial-gradient(circle,rgba(107,227,255,.42) 0%,rgba(30,123,255,.14) 42%,rgba(30,123,255,0) 70%);animation:gxBreath calc(7s * var(--gx-logo-v,1)) ease-in-out infinite}
@keyframes gxBreath{0%,100%{opacity:.75;transform:scale(.96)}50%{opacity:1;transform:scale(1.04)}}
.gx-disc{position:absolute;inset:14%;border-radius:50%;background:var(--gx-disc);border:1px solid var(--gx-disc-brd);
  box-shadow:inset 0 0 40px rgba(30,123,255,.10),0 30px 60px -30px rgba(21,87,214,.45)}
.gx-ring{position:absolute;inset:0;border-radius:50%;transform-style:preserve-3d;pointer-events:none}
.gx-ring span{position:absolute;inset:0;border-radius:50%;border:1.5px solid rgba(var(--gx-link-rgb),.22);animation:gxSpin calc(34s * var(--gx-logo-v,1)) linear infinite}
.gx-ring span::before{content:"";position:absolute;top:-5px;left:50%;width:10px;height:10px;margin-left:-5px;border-radius:50%;
  background:radial-gradient(circle,#fff 0%,var(--gx-cyan) 45%,rgba(25,195,245,0) 75%);box-shadow:0 0 14px 4px rgba(25,195,245,.55)}
.gx-ring.r1{transform:rotateX(72deg) rotateY(-14deg)}
.gx-ring.r2{inset:6%;transform:rotateX(68deg) rotateY(24deg)}
.gx-ring.r3{inset:-6%;transform:rotateX(78deg) rotateY(4deg)}
.gx-ring.r2 span{animation-duration:calc(48s * var(--gx-logo-v,1));animation-direction:reverse}
.gx-ring.r3 span{border-style:dashed;border-color:rgba(25,195,245,.28);animation-duration:calc(70s * var(--gx-logo-v,1))}
@keyframes gxSpin{to{transform:rotate(360deg)}}
/* Símbolo: centrado ópticamente en la burbuja. El cuerpo de la «G» queda un
   poco a la izquierda dentro de la imagen (la órbita sale hacia la derecha),
   por eso se corrige con translate; la flotación es simétrica (±5 px). */
.gx-symbol{position:relative;width:var(--gx-logo-sim,70%);height:auto;display:block;translate:1.6% -1%;
  filter:drop-shadow(0 18px 26px rgba(21,87,214,.28));animation:gxFloat calc(9s * var(--gx-logo-v,1)) ease-in-out infinite;will-change:transform}
html[data-gx-tema="oscuro"] .gx-symbol{filter:drop-shadow(0 0 22px rgba(30,123,255,.45)) drop-shadow(0 18px 26px rgba(0,0,0,.45))}
@keyframes gxFloat{0%,100%{transform:translateY(-5px)}50%{transform:translateY(5px)}}
/* Logo central (AdminPage → Logo e imágenes): animación elegida y capas opcionales.
   Todas las capas están en el HTML; aquí solo se muestran las de la animación. */
.gx-onda,.gx-giro{position:absolute;border-radius:50%;pointer-events:none;display:none}
.gx-onda{inset:14%;border:1.5px solid rgba(var(--gx-link-rgb),.38);opacity:0;animation:gxOnda calc(5.4s * var(--gx-logo-v,1)) cubic-bezier(.2,.6,.3,1) infinite}
.gx-onda.o2{animation-delay:calc(-1.8s * var(--gx-logo-v,1))}
.gx-onda.o3{animation-delay:calc(-3.6s * var(--gx-logo-v,1));border-color:rgba(25,195,245,.4)}
@keyframes gxOnda{0%{transform:scale(1);opacity:.75}100%{transform:scale(1.55);opacity:0}}
.gx-giro.g1{inset:2%;border:1.5px dashed rgba(25,195,245,.42);animation:gxSpin calc(28s * var(--gx-logo-v,1)) linear infinite}
.gx-giro.g2{inset:8%;border:2px dotted rgba(var(--gx-link-rgb),.38);animation:gxSpin calc(40s * var(--gx-logo-v,1)) linear infinite reverse}
.gx-giro.g1::before{content:"";position:absolute;top:-5px;left:50%;width:10px;height:10px;margin-left:-5px;border-radius:50%;
  background:radial-gradient(circle,#fff 0%,var(--gx-cyan) 45%,rgba(25,195,245,0) 75%);box-shadow:0 0 14px 4px rgba(25,195,245,.55)}
.gx-core:not(.anim-orbitas) .gx-ring{display:none}
.gx-core.anim-ondas .gx-onda,.gx-core.anim-giro .gx-giro{display:block}
.gx-core.anim-pulso .gx-halo{inset:2%;animation-duration:calc(4.5s * var(--gx-logo-v,1))}
.gx-core.anim-ninguna .gx-halo{animation:none}
.gx-core.sin-halo .gx-halo,.gx-core.sin-disco .gx-disc{display:none}
.gx-core.sin-flotar .gx-symbol{animation:none}

.gx-motto{margin:8px 0 0;font-size:clamp(.86rem,1.5vw,1.02rem);font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--gx-blue)}
html[data-gx-tema="oscuro"] .gx-motto{color:var(--gx-glow)}
.gx-motto b{color:var(--gx-cyan);font-weight:700;margin:0 .5em}
.gx-cta{margin-top:14px;display:inline-flex;align-items:center;gap:12px;padding:8px 8px 8px 22px;border-radius:999px;background:var(--gx-solid);color:var(--gx-on-solid)!important;
  font-weight:600;font-size:.95rem;box-shadow:0 14px 30px -12px rgba(11,31,79,.6);transition:transform .25s,box-shadow .25s}
.gx-cta:hover{transform:translateY(-2px)}
.gx-cta span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--gx-electric),var(--gx-cyan))}
html[data-gx-tema="oscuro"] .gx-cta span{background:linear-gradient(135deg,#fff,#d9f6ff);color:var(--gx-navy)}
.gx-cta svg{width:16px;height:16px}
/* botón principal: apariencia y tamaño (Centro de control) */
.gx-cta.cta-degradado{background:linear-gradient(135deg,var(--gx-electric),var(--gx-cyan));color:#fff!important;box-shadow:0 14px 30px -12px rgba(30,123,255,.6)}
.gx-cta.cta-degradado span{background:#fff;color:var(--gx-blue)}
.gx-cta.cta-contorno{background:transparent;color:var(--gx-strong)!important;border:1.5px solid var(--gx-electric);box-shadow:none}
html[data-gx-tema="oscuro"] .gx-cta.cta-contorno{color:#fff!important;border-color:var(--gx-cyan)}
.gx-cta.cta-contorno span{color:#fff}
.gx-cta.cta-vidrio{background:var(--gx-card);color:var(--gx-strong)!important;border:1px solid var(--gx-line);box-shadow:var(--gx-shadow)}
.gx-cta.cta-vidrio span{color:#fff}
html[data-gx-tema="oscuro"] .gx-cta.cta-contorno span,html[data-gx-tema="oscuro"] .gx-cta.cta-vidrio span{color:var(--gx-navy)}
.gx-cta.cta-peq{gap:9px;padding:5px 5px 5px 16px;font-size:.82rem}
.gx-cta.cta-peq span{width:26px;height:26px}
.gx-cta.cta-peq svg{width:13px;height:13px}
.gx-cta.cta-grande{gap:14px;padding:10px 10px 10px 28px;font-size:1.1rem}
.gx-cta.cta-grande span{width:42px;height:42px}
.gx-cta.cta-grande svg{width:19px;height:19px}

/* Tarjetas de vidrio */
.gx-glass{position:relative;background:var(--gx-card-solid);border:1px solid var(--gx-glass-brd);border-radius:var(--gx-r);box-shadow:var(--gx-shadow);overflow:hidden}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .gx-glass{background:var(--gx-glass);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}
}
.gx-glass::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(135deg,var(--gx-glass-hl) 0%,rgba(255,255,255,0) 38%)}
.gx-side{padding:18px 18px 16px;text-align:left}
.gx-side .gx-h{margin:0;font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gx-muted);font-weight:600;display:flex;align-items:center;gap:8px;position:relative}
.gx-side .gx-h svg{width:16px;height:16px;color:var(--gx-electric)}
.gx-eco{display:flex;align-items:center;gap:16px;margin-top:14px;position:relative}
.gx-ring-prog{position:relative;width:96px;height:96px;flex:none}
.gx-ring-prog svg{width:100%;height:100%;transform:rotate(-90deg)}
.gx-ring-prog .bgc{fill:none;stroke:rgba(var(--gx-link-rgb),.12);stroke-width:9}
.gx-ring-prog .fgc{fill:none;stroke:url(#gxRingGrad);stroke-width:9;stroke-linecap:round;transition:stroke-dashoffset 1.6s cubic-bezier(.2,.7,.2,1)}
.gx-ring-prog .val{position:absolute;inset:0;display:grid;place-items:center;text-align:center;line-height:1.05}
.gx-ring-prog .val b{display:block;font-size:1.45rem;font-weight:700;color:var(--gx-strong)}
.gx-ring-prog .val small{font-size:.6rem;color:var(--gx-muted);letter-spacing:.08em}
.gx-eco ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:.86rem;color:var(--gx-ink2);flex:1;min-width:0}
.gx-eco li{display:flex;align-items:center;gap:8px}
.gx-eco li i{width:10px;height:10px;border-radius:50%;flex:none}
.gx-eco li b{color:var(--gx-ink);font-weight:700;margin-left:auto;padding-left:10px}
.gx-dot-on{background:linear-gradient(135deg,var(--gx-electric),var(--gx-cyan))}
.gx-dot-off{background:rgba(var(--gx-link-rgb),.18);border:1px dashed rgba(var(--gx-link-rgb),.5)}
.gx-bar{margin-top:14px;height:42px;display:flex;align-items:flex-end;gap:5px;position:relative}
.gx-bar i{flex:1;height:100%;border-radius:6px 6px 3px 3px;background:linear-gradient(180deg,rgba(25,195,245,.55),rgba(30,123,255,.25));transform-origin:bottom;animation:gxEq 4.8s ease-in-out infinite}
.gx-bar i:nth-child(2n){animation-delay:-1.2s}.gx-bar i:nth-child(3n){animation-delay:-2.6s}.gx-bar i:nth-child(5n){animation-delay:-3.7s}
@keyframes gxEq{0%,100%{transform:scaleY(.45)}50%{transform:scaleY(1)}}
.gx-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-top:14px;position:relative}
.gx-days span{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 0 6px;border-radius:999px;background:var(--gx-card);border:1px solid var(--gx-line);font-size:.86rem;font-weight:600;color:var(--gx-ink)}
.gx-days span small{font-size:.58rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--gx-muted)}
.gx-days span.hoy{background:var(--gx-solid);border-color:transparent;color:#fff;box-shadow:0 0 0 3px var(--gx-card-solid),0 0 0 4.5px var(--gx-electric)}
.gx-days span.hoy small{color:var(--gx-glow)}
html[data-gx-tema="oscuro"] .gx-days span.hoy small{color:#fff}
.gx-clock{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:14px;position:relative}
.gx-clock b{font-family:'Exo 2','Outfit',sans-serif;font-size:2rem;font-weight:700;color:var(--gx-strong);letter-spacing:.04em;font-variant-numeric:tabular-nums}
.gx-clock small{font-size:.8rem;color:var(--gx-ink2);text-align:right}
.gx-status{display:flex;align-items:center;gap:8px;margin-top:10px;padding:8px 12px;border-radius:14px;position:relative;background:linear-gradient(90deg,rgba(25,195,245,.12),rgba(30,123,255,.06));font-size:.8rem;color:var(--gx-ink2)}
.gx-status i{width:8px;height:8px;border-radius:50%;background:var(--gx-ok);box-shadow:0 0 0 3px rgba(22,196,127,.18);flex:none}

/* ── Secciones ────────────────────────────────────────────────────── */
.gx-sec{position:relative;max-width:1240px;margin:0 auto;padding:56px 24px 10px}
.gx-sec.gx-slide{width:100%;display:flex;flex-direction:column;padding:22px 24px 24px}
.gx-sec.gx-slide .gx-sec-head{flex:none;margin-bottom:14px}
.gx-sec.gx-slide .gx-mods{gap:14px}
.gx-sec.gx-slide .gx-mod{min-height:150px;padding:16px 18px 14px}
.gx-sec.gx-slide .gx-mod h3{margin-top:10px}
.gx-sec.gx-slide .gx-mod-foot{padding-top:10px}
.gx-sec.gx-slide .gx-mod .gx-ico{width:44px;height:44px}
.gx-sec.gx-slide .gx-lead{font-size:.92rem}
/* las tarjetas crecen con su contenido; si no caben, la PÁGINA hace scroll */
.gx-sec.gx-slide .gx-mods{align-content:start}
.gx-sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px 24px;flex-wrap:wrap;margin-bottom:22px}
.gx-sec-head>*{min-width:0;max-width:100%}
.gx-kicker{margin:0 0 6px;font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--gx-electric)}
html[data-gx-tema="oscuro"] .gx-kicker{color:var(--gx-cyan)}
.gx-title{margin:0;font-family:'Exo 2','Outfit',sans-serif;font-size:clamp(1.5rem,3vw,2.2rem);font-weight:700;color:var(--gx-strong);line-height:1.15;overflow-wrap:break-word}
.gx-lead{margin:8px 0 0;max-width:620px;color:var(--gx-ink2);font-size:.98rem;overflow-wrap:break-word}

/* Íconos redondos */
.gx-ico{width:52px;height:52px;border-radius:50%;display:inline-grid;place-items:center;flex:none;background:var(--gx-ico-bg);border:1px solid rgba(var(--gx-link-rgb),.16);
  color:var(--gx-blue);box-shadow:inset 0 -6px 12px rgba(30,123,255,.08),0 6px 14px -8px rgba(21,87,214,.5);overflow:hidden}
html[data-gx-tema="oscuro"] .gx-ico{color:var(--gx-glow)}
.gx-ico svg{width:24px;height:24px}
.gx-ico.con-img{background:var(--gx-card-solid)}
.gx-ico img{width:100%;height:100%;object-fit:cover}
.gx-ico-lg{width:64px;height:64px}
.gx-ico-lg svg{width:28px;height:28px}
.gx-ico-warn{color:var(--gx-danger)!important;background:rgba(229,72,77,.1)}

/* Tarjetas de categoría */
/* tantas columnas como quepan (mín. 272 px): 1 en celular, 2–3 en tablet y
   portátil, 4–5 en pantallas grandes. js: ajustarFilas completa la última fila. */
.gx-mods{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,272px),1fr));gap:18px}
.gx-mod{position:relative;display:flex;flex-direction:column;min-height:210px;min-width:0;padding:20px 20px 18px;border-radius:var(--gx-r);background:var(--gx-card);
  border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow);overflow:hidden;transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s,border-color .35s}
.gx-mod::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(135deg,var(--gx-glass-hl) 0%,rgba(255,255,255,0) 40%)}
.gx-mod::before{content:"";position:absolute;left:20px;right:20px;top:0;height:2px;border-radius:2px;opacity:0;transition:opacity .35s;
  background:linear-gradient(90deg,transparent,var(--gx-cyan),var(--gx-electric),transparent)}
/* toda la tarjeta es el enlace: elevación, borde y línea de luz al pasar o enfocar */
a.gx-mod{cursor:pointer}
a.gx-mod:hover,a.gx-mod:focus-visible{transform:translateY(-4px);box-shadow:var(--gx-shadow-hi);border-color:rgba(var(--gx-link-rgb),.35)}
a.gx-mod:hover::before,a.gx-mod:focus-visible::before{opacity:1}
a.gx-mod:active{transform:translateY(-1px) scale(.995);transition-duration:.12s}
a.gx-mod.feat:hover,a.gx-mod.feat:focus-visible{border-color:rgba(255,255,255,.5)}
.gx-mod-top{display:flex;align-items:center;justify-content:space-between;gap:10px;position:relative;z-index:1}
.gx-tag{font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:4px 10px;border-radius:999px;white-space:nowrap}
.gx-tag.on{background:rgba(25,195,245,.14);color:#0a7ea8}
html[data-gx-tema="oscuro"] .gx-tag.on{color:var(--gx-glow)}
.gx-tag.link{background:rgba(30,123,255,.1);color:var(--gx-blue)}
.gx-tag.comp{background:rgba(245,158,11,.14);color:#b45309}
html[data-gx-tema="oscuro"] .gx-tag.comp{color:#fbbf24}
html[data-gx-tema="oscuro"] .gx-tag.link{color:#9cc4ff}
.gx-tag.off{background:rgba(var(--gx-link-rgb),.06);color:var(--gx-muted);border:1px dashed rgba(var(--gx-link-rgb),.22)}
/* texto SIEMPRE completo: sin recortes ni puntos suspensivos; una palabra
   pasa entera al renglón siguiente y solo se parte si por sí sola no cabe */
.gx-mod h3{margin:16px 0 0;font-family:'Exo 2','Outfit',sans-serif;font-size:1.2rem;line-height:1.22;font-weight:700;color:var(--gx-strong);position:relative;z-index:1;
  overflow-wrap:break-word;word-break:normal;hyphens:manual}
.gx-mod p{margin:6px 0 0;font-size:.9rem;color:var(--gx-ink2);position:relative;z-index:1;overflow-wrap:break-word}
.gx-mod-foot{margin-top:auto;padding-top:14px;display:flex;align-items:center;gap:10px;position:relative;z-index:1}
.gx-mod-foot small{font-size:.76rem;color:var(--gx-muted);min-width:0;overflow-wrap:break-word;transition:color .3s}
a.gx-mod:hover .gx-mod-foot small,a.gx-mod:focus-visible .gx-mod-foot small{color:var(--gx-electric)}
html[data-gx-tema="oscuro"] a.gx-mod:hover .gx-mod-foot small{color:var(--gx-glow)}
.gx-mod.pend{background:var(--gx-glass)}
.gx-mod.pend .gx-ico{color:var(--gx-muted)}
.gx-mod.feat{grid-column:span 2;color:#fff;border-color:rgba(255,255,255,.25);
  background:radial-gradient(600px 260px at 85% 0%,rgba(107,227,255,.45),rgba(107,227,255,0) 60%),linear-gradient(135deg,var(--gx-navy) 0%,var(--gx-blue) 62%,#1a8fe8 100%)}
html[data-gx-tema="oscuro"] .gx-mod.feat{border-color:rgba(107,227,255,.3)}
.gx-mod.feat::after{background:linear-gradient(135deg,rgba(255,255,255,.18) 0%,rgba(255,255,255,0) 38%)}
.gx-mod.feat .gx-ico{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.35);color:#fff;box-shadow:none}
.gx-mod.feat .gx-tag{background:rgba(255,255,255,.18);color:#fff;border-color:rgba(255,255,255,.3)}
.gx-mod.feat h3{color:#fff;font-size:1.5rem;max-width:520px}
.gx-mod.feat p{color:rgba(255,255,255,.84);max-width:440px}
.gx-mod.feat .gx-mod-foot small,a.gx-mod.feat:hover .gx-mod-foot small{color:rgba(255,255,255,.8)}
/* la onda vive en la franja del pie (que reserva su alto): nunca pasa por encima del texto */
.gx-wave{position:absolute;right:-10px;bottom:4px;width:min(52%,420px);height:62px;opacity:.9;pointer-events:none}
.gx-mod.feat .gx-mod-foot{min-height:62px;align-items:flex-end;padding-right:min(50%,400px)}
.gx-wave path{fill:none;stroke:rgba(255,255,255,.7);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:700;stroke-dashoffset:700;animation:gxWave 7s ease-in-out infinite}
.gx-wave path.w2{stroke:rgba(107,227,255,.6);stroke-width:1.4;animation-delay:-2.5s}
@keyframes gxWave{0%{stroke-dashoffset:700}55%{stroke-dashoffset:0}100%{stroke-dashoffset:-700}}
.gx-mod[hidden]{display:none}

/* Pilares: encabezado, idea central, «Lo que encontrarás» y qué aporta a
   estudiantes y docentes. 3 columnas en PC; en tablet, cada pilar a lo ancho
   en dos columnas internas; en celular, todo apilado. */
.gx-pills{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:stretch}
.gx-pilar{position:relative;display:flex;flex-direction:column;gap:14px;min-width:0;padding:22px 22px 20px;border-radius:var(--gx-r);background:var(--gx-card);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow);overflow:hidden;
  transition:box-shadow .3s,border-color .3s}
.gx-pilar:hover{box-shadow:var(--gx-shadow-hi);border-color:rgba(var(--gx-link-rgb),.3)}
.gx-pilar::before{content:"";position:absolute;left:22px;right:22px;top:0;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--gx-cyan),var(--gx-electric),transparent);opacity:.55}
.gx-pilar>*{position:relative;min-width:0}
.gx-pilar .num{position:absolute;right:16px;top:8px;font-family:'Exo 2',sans-serif;font-size:3.6rem;font-weight:800;line-height:1;color:rgba(var(--gx-link-rgb),.08);pointer-events:none}
.gx-pilar-h{display:flex;align-items:center;gap:12px;padding-right:60px}
.gx-pilar-h>div{min-width:0}
.gx-pilar-h small{display:block;font-size:.66rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--gx-electric)}
html[data-gx-tema="oscuro"] .gx-pilar-h small{color:var(--gx-cyan)}
.gx-pilar h3{margin:2px 0 0;font-family:'Exo 2','Outfit',sans-serif;font-size:1.28rem;line-height:1.2;font-weight:700;color:var(--gx-strong);overflow-wrap:break-word}
.gx-pilar .gx-ico{width:46px;height:46px}
.gx-pilar .gx-ico svg{width:21px;height:21px}
.gx-pilar p{margin:0;overflow-wrap:break-word}
.gx-pilar-idea{font-size:.98rem;font-weight:500;line-height:1.45;color:var(--gx-ink)}
.gx-pilar h4{margin:0 0 7px;font-size:.68rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gx-muted)}
.gx-pilar-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.gx-pilar-lista li{position:relative;padding-left:20px;font-size:.88rem;line-height:1.45;color:var(--gx-ink2);overflow-wrap:break-word}
.gx-pilar-lista li::before{content:"";position:absolute;left:2px;top:.52em;width:8px;height:8px;border-radius:50%;background:linear-gradient(135deg,var(--gx-electric),var(--gx-cyan));box-shadow:0 0 0 3px rgba(var(--gx-link-rgb),.12)}
.gx-pilar-aud{margin-top:auto;display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.gx-pilar-aud>div{min-width:0;padding:10px 12px;border-radius:14px;background:rgba(var(--gx-link-rgb),.06);border:1px solid rgba(var(--gx-link-rgb),.12)}
.gx-pilar-aud h4{display:flex;align-items:center;gap:6px;margin-bottom:3px;color:var(--gx-blue)}
html[data-gx-tema="oscuro"] .gx-pilar-aud h4{color:var(--gx-glow)}
.gx-pilar-aud h4 svg{width:14px;height:14px}
.gx-pilar-aud p{font-size:.84rem;line-height:1.42;color:var(--gx-ink2)}
.gx-pil-cierre{display:flex;align-items:center;gap:10px 22px;flex-wrap:wrap;margin-top:18px;padding:16px 22px;border-radius:var(--gx-r);color:#fff;box-shadow:var(--gx-shadow);
  background:radial-gradient(520px 200px at 90% 0%,rgba(107,227,255,.35),rgba(107,227,255,0) 60%),linear-gradient(135deg,var(--gx-navy) 0%,var(--gx-blue) 100%)}
html[data-gx-tema="oscuro"] .gx-pil-cierre{border:1px solid rgba(107,227,255,.25)}
.gx-pil-eq{margin:0;display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;font-family:'Exo 2','Outfit',sans-serif;font-weight:700}
.gx-pil-eq b{padding:4px 12px;border-radius:999px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);font-size:.86rem;letter-spacing:.02em}
.gx-pil-eq i{font-style:normal;font-weight:800;color:var(--gx-glow)}
.gx-pil-cierre>p:last-child{margin:0;flex:1 1 300px;min-width:0;font-size:.92rem;line-height:1.45;color:rgba(255,255,255,.9);overflow-wrap:break-word}

/* Vacíos / 404 */
.gx-empty{max-width:620px;margin:30px auto;padding:34px 24px;text-align:center;border-radius:var(--gx-r);background:var(--gx-card);border:1px dashed rgba(var(--gx-link-rgb),.28);color:var(--gx-ink2)}
.gx-empty>svg{width:40px;height:40px;color:var(--gx-electric);opacity:.7}
.gx-empty p{margin:10px 0 0}
.gx-404{margin-top:12vh}
.gx-404 .gx-title{margin-top:12px}
.gx-404 .gx-cta{margin-top:18px}

/* ── Vista de categoría ───────────────────────────────────────────── */
.gx-catv{max-width:1240px;margin:0 auto;padding:12px 24px 110px;display:flex;flex-direction:column}
.gx-catv .gx-crumb{min-height:24px}
.gx-cat-head{flex:none}
/* las tarjetas crecen con su contenido; si no caben, la página hace scroll */
.gx-apps-panel{padding:6px 0 24px}
.gx-crumb{display:flex;gap:8px;align-items:center;font-size:.8rem;color:var(--gx-muted);flex-wrap:wrap}
.gx-crumb a:hover{color:var(--gx-electric)}
.gx-cat-title{display:flex;align-items:center;gap:16px;margin-top:2px}
.gx-cat-title>div{min-width:0}
.gx-cat-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0 8px}
.gx-search{display:flex;align-items:center;gap:8px;flex:1 1 260px;max-width:420px;height:44px;padding:0 14px;border-radius:999px;background:var(--gx-field);border:1px solid var(--gx-field-brd);box-shadow:var(--gx-shadow)}
.gx-search svg{width:17px;height:17px;color:var(--gx-muted)}
.gx-search input{flex:1;min-width:0;border:0;background:none;outline:none;font-size:.92rem}
.gx-count{font-size:.84rem;color:var(--gx-muted);margin-right:auto}
/* auto-fit: con pocas apps las tarjetas se reparten el ancho (sin columnas vacías) */
.gx-apps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:16px}
.gx-apps>.gx-app-w{max-width:560px}
/* recurso online externo (URL de Internet): indicador discreto 🌐 */
.gx-online{display:inline-flex;align-items:center;gap:5px;align-self:flex-start;max-width:100%;padding:2px 9px 2px 7px;border-radius:999px;font-family:'Outfit',sans-serif;
  font-size:.7rem;font-weight:600;line-height:1.5;letter-spacing:.02em;white-space:nowrap;color:var(--gx-blue);background:rgba(var(--gx-link-rgb),.09);border:1px solid rgba(var(--gx-link-rgb),.2)}
.gx-online>span{font-size:.92em;line-height:1}
html[data-gx-tema="oscuro"] .gx-online{color:#9cc4ff}
.gx-busq-t .gx-online{margin-left:6px;padding:0 7px 0 5px;font-size:.64rem;vertical-align:1px}
.gx-chipmini.online{display:inline-flex;align-items:center;gap:4px}
/* texto solo para lectores de pantalla */
.gx-vh{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.gx-sin-res{margin-top:10px}

/* ── Visor de apps HTML ───────────────────────────────────────────── */
body.gx-body-app{overflow:hidden}
.gx-viewer{position:fixed;inset:0;display:flex;flex-direction:column;background:var(--gx-bg)}
.gx-viewer-bar{display:flex;align-items:center;gap:10px;height:58px;padding:8px 14px;border-bottom:1px solid var(--gx-line);background:var(--gx-card-solid)}
.gx-viewer-bar .gx-iconbtn{box-shadow:none;width:38px;height:38px}
.gx-viewer-logo{height:26px;width:auto}
.gx-viewer-t{display:flex;flex-direction:column;line-height:1.2;min-width:0;margin-right:auto}
.gx-viewer-t b{font-family:'Exo 2',sans-serif;color:var(--gx-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-viewer-t small{font-size:.74rem;color:var(--gx-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-viewer-frame{flex:1;width:100%;border:0;background:#fff}

/* ── Pie (fijo y compacto, al fondo de la ventana) ────────────────── */
.gx-foot{position:fixed;left:0;right:0;bottom:0;z-index:940;height:var(--gx-foot-h);display:flex;align-items:center;justify-content:center;gap:8px;
  padding:0 clamp(10px,2vw,22px);font-size:.72rem;line-height:1;color:var(--gx-muted);background:var(--gx-card-solid);border-top:1px solid var(--gx-line)}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .gx-foot{background:var(--gx-glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
}
.gx-foot img{height:15px;width:auto;flex:none}
.gx-foot-t{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-foot b{color:var(--gx-strong);letter-spacing:.12em;font-family:'Exo 2',sans-serif}
/* AdminPage: sutil, pequeño, integrado */
.gx-adminlink{display:inline-flex;align-items:center;gap:5px;flex:none;font-size:.66rem;font-weight:500;letter-spacing:.06em;color:var(--gx-muted);opacity:.7;padding:3px 8px;border-radius:999px;transition:opacity .2s,color .2s,background .2s}
.gx-adminlink svg{width:12px;height:12px}
.gx-adminlink:hover{opacity:1;color:var(--gx-electric);background:rgba(var(--gx-link-rgb),.08)}

/* ── Formularios, botones, diálogos, avisos ───────────────────────── */
.gx-btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 18px;border-radius:999px;cursor:pointer;font-weight:600;font-size:.9rem;white-space:nowrap;
  background:var(--gx-card);color:var(--gx-ink);border:1px solid var(--gx-field-brd);transition:transform .2s,background .2s,box-shadow .2s}
.gx-btn:hover{transform:translateY(-1px);border-color:rgba(var(--gx-link-rgb),.4)}
.gx-btn svg{width:17px;height:17px}
.gx-btn-pri{background:var(--gx-solid);color:#fff;border-color:transparent;box-shadow:0 12px 24px -12px rgba(11,31,79,.6)}
.gx-btn-pri:hover{background:linear-gradient(135deg,var(--gx-electric),var(--gx-blue))}
.gx-btn-danger{background:var(--gx-danger);color:#fff;border-color:transparent}
.gx-btn-ghost{background:none}
.gx-btn-sm{height:34px;padding:0 13px;font-size:.8rem}
.gx-btn-xs{height:28px;padding:0 12px;gap:5px;font-size:.76rem}
.gx-btn-xs svg{width:14px;height:14px}
.gx-btn[disabled]{opacity:.6;pointer-events:none}
.gx-form{display:flex;flex-direction:column;gap:14px}
.gx-field{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:.82rem;font-weight:600;color:var(--gx-ink2)}
.gx-field>span{display:flex;align-items:center;justify-content:space-between;gap:8px}
.gx-field output{font-weight:700;color:var(--gx-electric)}
.gx-field input:not([type=checkbox]):not([type=color]):not([type=range]):not([type=file]),.gx-field select,.gx-field textarea{width:100%;min-height:44px;padding:10px 14px;border-radius:14px;
  background:var(--gx-field);border:1px solid var(--gx-field-brd);font-size:.92rem;font-weight:500;color:var(--gx-ink);outline:none;transition:border-color .2s,box-shadow .2s}
.gx-field textarea{resize:vertical;line-height:1.45}
.gx-field input:focus,.gx-field select:focus,.gx-field textarea:focus{border-color:var(--gx-electric);box-shadow:0 0 0 4px rgba(30,123,255,.15)}
.gx-field input[type=range]{accent-color:var(--gx-electric);width:100%}
.gx-field-in{flex-direction:row;align-items:center}
.gx-field-in select{min-height:40px!important;padding:6px 12px!important}
.gx-color-in{display:flex;align-items:center;gap:8px}
.gx-color-in input[type=color]{width:44px;height:44px;padding:0;border:1px solid var(--gx-field-brd);border-radius:12px;background:none;cursor:pointer;flex:none}
.gx-form-err{margin:0;padding:10px 14px;border-radius:12px;background:rgba(229,72,77,.1);color:var(--gx-danger);font-size:.86rem;font-weight:500}
.gx-form-act{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:4px}
.gx-form-act-in{margin-top:12px;justify-content:flex-start}
.gx-hint{margin:8px 0 0;font-size:.8rem;color:var(--gx-muted)}
.gx-switch{display:flex;align-items:center;gap:12px;cursor:pointer;font-size:.9rem;color:var(--gx-ink);min-height:36px;position:relative}
.gx-switch input{position:absolute;opacity:0;pointer-events:none}
.gx-switch-ui{position:relative;width:44px;height:26px;border-radius:999px;background:rgba(var(--gx-link-rgb),.18);flex:none;transition:background .25s}
.gx-switch-ui::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.25);transition:transform .25s}
.gx-switch input:checked+.gx-switch-ui{background:linear-gradient(135deg,var(--gx-electric),var(--gx-cyan))}
.gx-switch input:checked+.gx-switch-ui::after{transform:translateX(18px)}
.gx-switch input:focus-visible+.gx-switch-ui{outline:3px solid var(--gx-cyan);outline-offset:2px}
.gx-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.gx-check{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;border:1px solid var(--gx-field-brd);background:var(--gx-field);cursor:pointer;font-size:.88rem;min-width:0}
.gx-check input{width:18px;height:18px;accent-color:var(--gx-electric);flex:none}
.gx-check span{min-width:0;overflow-wrap:anywhere}
.gx-icosel{display:flex;flex-wrap:wrap;gap:6px}
.gx-icosel label{cursor:pointer;position:relative}
.gx-icosel input{position:absolute;opacity:0;pointer-events:none}
.gx-icosel span{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;border:1px solid var(--gx-field-brd);background:var(--gx-field);color:var(--gx-ink2)}
.gx-icosel svg{width:20px;height:20px}
.gx-icosel input:checked+span{border-color:var(--gx-electric);color:var(--gx-electric);box-shadow:0 0 0 3px rgba(30,123,255,.18)}
.gx-icosel input:focus-visible+span{outline:3px solid var(--gx-cyan)}
.gx-seg{display:inline-flex;padding:4px;border-radius:999px;background:var(--gx-field);border:1px solid var(--gx-field-brd);gap:4px;align-self:flex-start}
.gx-seg label{cursor:pointer;position:relative}
.gx-seg input{position:absolute;opacity:0;pointer-events:none}
.gx-seg span{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;font-size:.84rem;font-weight:600;color:var(--gx-ink2)}
.gx-seg span svg{width:16px;height:16px}
.gx-seg input:checked+span{background:var(--gx-solid);color:#fff}

.gx-dialog{border:0;padding:0;background:none;color:var(--gx-ink);max-width:min(440px,calc(100vw - 24px));width:100%;
  max-height:calc(100dvh - 16px);overflow:visible}           /* sin el scroll propio de <dialog> */
.gx-dialog-lg{max-width:min(880px,calc(100vw - 24px))}
.gx-dialog::backdrop{background:rgba(4,10,28,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.gx-dialog[open]{animation:gxPop .28s cubic-bezier(.2,.7,.2,1)}
@keyframes gxPop{from{opacity:0;transform:translateY(12px) scale(.98)}}
.gx-dlg{position:relative;display:flex;flex-direction:column;gap:14px;padding:24px 24px 20px;border-radius:24px;background:var(--gx-card-solid);border:1px solid var(--gx-glass-brd);
  box-shadow:0 30px 80px -20px rgba(4,10,28,.6);max-height:calc(100dvh - 16px);overflow:auto;scrollbar-width:thin}
.gx-dlg h2{margin:0;padding-right:40px;font-family:'Exo 2','Outfit',sans-serif;font-size:1.3rem;color:var(--gx-strong)}
.gx-dlg>p{margin:-6px 0 4px;color:var(--gx-ink2);font-size:.92rem}
.gx-dlg-x{position:absolute;right:16px;top:16px;box-shadow:none}
#gxModalCuerpo{display:flex;flex-direction:column;gap:12px}
/* Modal de edición compacto: dos columnas para que quepa sin scroll */
#gxModal .gx-dlg{gap:12px;padding:20px 22px 18px}
#gxModalCuerpo.gx-mgrid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:12px 18px;align-items:start}
.gx-mcol{display:flex;flex-direction:column;gap:10px;min-width:0}
#gxModal .gx-field{gap:4px;font-size:.78rem}
#gxModal .gx-field input:not([type=checkbox]):not([type=color]):not([type=range]):not([type=file]),#gxModal .gx-field select,#gxModal .gx-field textarea{min-height:38px;padding:8px 12px;border-radius:12px;font-size:.88rem}
#gxModal .gx-icosel{gap:5px}
#gxModal .gx-icosel span{width:34px;height:34px;border-radius:10px}
#gxModal .gx-icosel svg{width:17px;height:17px}
.gx-imgprev{display:flex;align-items:center;gap:12px}
.gx-imgprev-box{flex:none;width:64px;height:64px;border-radius:16px;display:grid;place-items:center;overflow:hidden;background:rgba(var(--gx-link-rgb),.08);border:1px solid rgba(var(--gx-link-rgb),.2);color:var(--gx-electric)}
.gx-imgprev-box svg{width:30px;height:30px}
.gx-imgprev-box img{width:100%;height:100%;object-fit:cover;display:block}
.gx-imgprev small{font-size:.76rem;color:var(--gx-ink2)}
#gxModal .gx-filedrop{padding:9px 12px;gap:10px;border-radius:12px}
#gxModal .gx-filedrop svg{width:18px;height:18px}
#gxModal .gx-filedrop span{font-size:.8rem}
#gxModal .gx-switch{min-height:30px;font-size:.84rem}
#gxModal .gx-seg span{padding:6px 12px;font-size:.8rem}
#gxModal .gx-check{padding:8px 10px;font-size:.84rem}
#gxModal .gx-form-act{margin-top:0}
.gx-switches-1{grid-template-columns:minmax(0,1fr)}
.gx-permgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.gx-permgr{margin:0;padding:8px 10px 10px;border:1px solid var(--gx-field-brd);border-radius:14px;display:flex;flex-direction:column;gap:6px;min-width:0}
.gx-permgr legend{padding:0 4px;font-weight:700;font-size:.8rem;color:var(--gx-strong)}
.gx-permgr legend small{font-weight:500;color:var(--gx-muted)}
#gxModal .gx-permgr .gx-check{padding:6px 8px;font-size:.8rem}
/* Permisos de editores y docentes (AdminPage): modal ancho y por bloques
   numerados. En pantalla grande los 3 grupos de 3 permisos + Personalización
   (6, a dos columnas) quedan en una sola fila con la misma altura. */
.gx-dialog-xl{max-width:min(1180px,calc(100vw - 24px))}
#gxModalCuerpo.gx-mpila{gap:12px}
.gx-mfila{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.gx-mbloque{display:flex;flex-direction:column;gap:10px;padding:12px 14px 14px;border:1px solid var(--gx-field-brd);border-radius:16px;background:rgba(var(--gx-link-rgb),.035);min-width:0}
.gx-mbloque-h{display:flex;align-items:flex-start;gap:10px}
.gx-mbloque-h>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.gx-mbloque-h b{font-size:.88rem;color:var(--gx-strong)}
.gx-mbloque-h small{font-size:.76rem;color:var(--gx-muted);line-height:1.4}
.gx-mbloque-n{flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:.72rem;font-weight:700;color:#fff;background:var(--gx-solid)}
.gx-mbloque-act{display:flex;gap:2px;flex:none}
.gx-mbloque .gx-seg{flex-wrap:wrap;max-width:100%}
.gx-linkbtn{appearance:none;border:0;background:none;cursor:pointer;padding:4px 8px;border-radius:8px;font:600 .76rem 'Outfit',sans-serif;color:var(--gx-electric)}
.gx-linkbtn:hover{background:rgba(var(--gx-link-rgb),.1)}
.gx-mpie{display:flex;flex-wrap:wrap;align-items:center;gap:4px 18px;padding:0 4px}
.gx-mpie .gx-hint{margin:0}
/* 5 grupos (Docentes, Categorías, Aplicaciones, Institucional, Personalización ×2) en una fila */
.gx-mpila .gx-permgrid{grid-template-columns:repeat(6,minmax(0,1fr))}
.gx-mpila .gx-permgr.ancho{grid-column:span 2}
.gx-permgr-it{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}
.gx-permgr.ancho .gx-permgr-it{grid-template-columns:repeat(2,minmax(0,1fr))}
.gx-checks-cats,.gx-checks-cuentas{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.gx-checks-cuentas{max-height:216px;overflow:auto;scrollbar-width:thin}
.gx-menus{margin:0;padding:0;border:0;min-width:0;transition:opacity .2s}
.gx-menus:disabled{opacity:.45}
.gx-menus .gx-checks{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
.gx-check.fijo{cursor:default}
.gx-check.fijo small{display:block;font-size:.7rem;color:var(--gx-muted)}
.gx-chipmini.menuoc{display:inline-flex;align-items:center;gap:4px;background:rgba(100,116,139,.14);color:var(--gx-ink2)}
.gx-chipmini.menuoc svg{width:11px;height:11px;flex:none}
@media (max-width:1099px){
  .gx-mpila .gx-permgrid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .gx-mpila .gx-permgr.ancho{grid-column:1/-1}
  .gx-permgr.ancho .gx-permgr-it{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:820px){
  .gx-mfila{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:640px){
  .gx-mpila .gx-permgrid{grid-template-columns:minmax(0,1fr)}
  .gx-permgr.ancho .gx-permgr-it{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gx-mbloque{padding:10px 12px 12px}
}

.gx-toasts{position:fixed;right:16px;bottom:calc(var(--gx-foot-h) + var(--gx-dock-res) + 12px);z-index:2000;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.gx-toast{pointer-events:auto;display:flex;align-items:center;gap:10px;max-width:360px;padding:12px 16px;border-radius:16px;background:var(--gx-card-solid);color:var(--gx-ink);
  border:1px solid var(--gx-line);box-shadow:var(--gx-shadow-hi);font-size:.88rem;animation:gxPop .3s ease}
.gx-toast i{width:10px;height:10px;border-radius:50%;background:var(--gx-ok);flex:none}
.gx-toast.err i{background:var(--gx-danger)}
/* aviso de versión nueva (js/galatcxis.js §14): queda hasta pulsar «Actualizar» */
.gx-toast-act i{background:var(--gx-electric)}
.gx-toast-act .gx-btn{flex:none;margin-left:4px}

/* ── Paneles (AdminPage / Docente) ────────────────────────────────── */
/* Ocupan exactamente la ventana: menú lateral + sección activa. Lo largo
   (listas, formularios) hace scroll dentro de su caja, nunca la página. */
body.gx-body-panel>.gx-panelv{max-width:1400px;margin:0 auto;padding:12px clamp(12px,2vw,24px) calc(var(--gx-foot-h) + var(--gx-dock-res) + 10px);display:flex;flex-direction:column;overflow-y:auto}
.gx-auth{max-width:440px;margin:auto;padding:28px 26px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}
.gx-auth h1{margin:6px 0 0;font-family:'Exo 2','Outfit',sans-serif;font-size:1.6rem;color:var(--gx-strong);position:relative}
.gx-auth>p{margin:0 0 6px;color:var(--gx-ink2);font-size:.94rem;position:relative}
.gx-auth .gx-form{width:100%;text-align:left;position:relative}
.gx-auth .gx-btn,.gx-auth .gx-ico{position:relative}
.gx-auth-back{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:.84rem;color:var(--gx-muted);position:relative}
.gx-auth-back svg{width:15px;height:15px}
.gx-auth-back:hover{color:var(--gx-electric)}
.gx-panel{flex:1;min-height:0;display:grid;grid-template-columns:228px minmax(0,1fr);gap:18px}
.gx-pnav{display:flex;flex-direction:column;gap:4px;min-height:0;overflow-y:auto;scrollbar-width:none;padding:12px 10px;border-radius:20px;background:var(--gx-card);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow)}
.gx-pnav::-webkit-scrollbar{display:none}
.gx-pnav-head{display:flex;align-items:center;gap:10px;padding:2px 6px 10px;border-bottom:1px solid var(--gx-line);margin-bottom:4px}
.gx-pnav-head .gx-ico{width:38px;height:38px}
.gx-pnav-head .gx-ico svg{width:18px;height:18px}
.gx-pnav-head .gx-ico.con-foto{width:46px;height:46px;border-radius:50%;padding:0;overflow:hidden;background:var(--gx-card-solid);box-shadow:0 0 0 2px var(--gx-card-solid),0 0 0 4px rgba(var(--gx-link-rgb),.35)}
/* saludo del panel docente con su foto */
.gx-doc-hola{flex:none;display:flex;align-items:center;gap:14px}
.gx-doc-hola>.gx-psec-h{flex:1;min-width:0}
.gx-doc-hola-foto{flex:none;width:64px;height:64px;border-radius:50%;object-fit:cover;background:var(--gx-card-solid);box-shadow:0 0 0 3px var(--gx-card-solid),0 0 0 5px rgba(var(--gx-link-rgb),.35),var(--gx-shadow)}
.gx-pnav-head div{min-width:0}
.gx-pnav-head b{display:block;font-family:'Exo 2',sans-serif;color:var(--gx-strong)}
.gx-pnav-head small{display:block;font-size:.72rem;color:var(--gx-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-pnav nav{display:flex;flex-direction:column;gap:6px}
/* grupos del menú (Administración, Diseño, Base de datos…): título plegable */
.gx-pnav-g{display:flex;flex-direction:column;gap:1px}
.gx-pnav-g+.gx-pnav-g{padding-top:6px;border-top:1px solid var(--gx-line)}
.gx-pnav-gt{appearance:none;display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;padding:3px 11px 4px;border:0;border-radius:8px;background:none;cursor:pointer;font-size:.62rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gx-muted);text-align:left}
.gx-pnav-gt:hover{color:var(--gx-ink)}
.gx-pnav-gt svg{width:13px;height:13px;flex:none;transition:transform .2s}
.gx-pnav-gt[aria-expanded="false"] svg{transform:rotate(-90deg)}
.gx-pnav-gl{display:flex;flex-direction:column;gap:1px}
.gx-pnav-g.cerrado .gx-pnav-gl{display:none}
.gx-pnav-b{appearance:none;display:flex;align-items:center;gap:10px;width:100%;padding:8px 11px;border:0;border-radius:12px;background:none;cursor:pointer;font-size:.86rem;font-weight:600;color:var(--gx-ink2);text-align:left}
.gx-pnav-b svg{width:17px;height:17px}
.gx-pnav-b:hover{background:rgba(var(--gx-link-rgb),.08);color:var(--gx-ink)}
.gx-pnav-b.on{background:var(--gx-solid);color:#fff}
.gx-pnav-site{display:flex;align-items:center;gap:8px;margin-top:auto;padding:10px 11px 2px;border-top:1px solid var(--gx-line);font-size:.82rem;color:var(--gx-muted)}
.gx-pnav-site svg{width:16px;height:16px}
.gx-pnav-site:hover{color:var(--gx-electric)}
.gx-pmain{min-width:0;min-height:0;display:flex;flex-direction:column}
.gx-psec{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;animation:gxEntra .26s cubic-bezier(.2,.7,.2,1) both}
/* encabezado compacto; deja libre la esquina de los botones flotantes */
.gx-psec-h{flex:none;display:flex;align-items:flex-end;justify-content:space-between;gap:10px 14px;flex-wrap:wrap;min-height:44px}
.gx-psec-h>div:first-child{min-width:0;flex:1 1 320px}
.gx-psec-h .gx-kicker{margin-bottom:2px;font-size:.66rem}
.gx-psec-h .gx-title{font-size:clamp(1.2rem,2vw,1.45rem)}
.gx-psec-h .gx-lead{margin-top:2px;font-size:.84rem;max-width:760px}
.gx-psec-act{display:flex;gap:8px;flex-wrap:wrap}
/* acción pegada a la derecha (Nueva categoría / Nueva aplicación): baja hasta la
   línea de la descripción para no chocar con los botones flotantes de arriba */
.gx-psec-h-der{padding-right:0;min-height:80px}
.gx-psec-h-der .gx-psec-act{margin-left:auto;align-self:flex-end}
/* cuerpo de cada sección: hace scroll dentro solo si no cabe */
.gx-psec>.gx-list,.gx-psec>.gx-cfg,.gx-psec>.gx-dash,.gx-psec>.gx-scroll,.gx-psec>.gx-mis-cats{flex:1;min-height:0;overflow-y:auto;padding:4px 6px 8px;margin:-4px -6px 0;
  scrollbar-width:thin;scrollbar-color:rgba(var(--gx-link-rgb),.35) transparent}
.gx-psec>.gx-list,.gx-psec>.gx-cfg,.gx-psec>.gx-mis-cats{align-content:start}
.gx-scroll{display:flex;flex-direction:column;gap:12px}
.gx-psec-centro{justify-content:center;align-items:center}
.gx-psec-centro .gx-form-narrow{width:100%;max-width:460px}
.gx-cuenta-h{display:flex;align-items:center;gap:14px;padding-bottom:6px;border-bottom:1px solid var(--gx-line)}
.gx-cuenta-h .gx-title{font-size:1.3rem}
/* Mi cuenta: foto de perfil + contraseña, lado a lado */
.gx-cuenta{display:grid;grid-template-columns:repeat(2,minmax(0,460px));gap:16px;justify-content:center;align-items:start;width:100%}
.gx-cuenta .gx-form-narrow{max-width:none}
.gx-fp{transition:box-shadow .2s,border-color .2s}
.gx-fp.soltar{border-color:var(--gx-electric);box-shadow:0 0 0 4px rgba(30,123,255,.2),var(--gx-shadow)}
.gx-fp-actual{display:flex;align-items:center;gap:16px}
.gx-fp-actual>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.gx-fp-actual b{color:var(--gx-strong)}
.gx-fp-actual small{color:var(--gx-muted);font-size:.8rem;line-height:1.4}
.gx-fp-av{flex:none;width:112px;height:112px;border-radius:50%;overflow:hidden;display:grid;place-items:center;
  background:linear-gradient(160deg,var(--gx-blue),var(--gx-cyan));color:#fff;font:700 2.2rem 'Exo 2',sans-serif;
  box-shadow:0 0 0 4px var(--gx-card-solid),0 0 0 6px rgba(var(--gx-link-rgb),.35),var(--gx-shadow)}
.gx-fp-av img{width:100%;height:100%;object-fit:cover}
.gx-fp-act{display:flex;gap:8px;flex-wrap:wrap}
@media (max-width:980px){ .gx-cuenta{grid-template-columns:minmax(0,1fr)} }
/* editor de la foto: lienzo cuadrado con guía (círculo o cuadrado) y vistas previas */
.gx-fp-dlg .gx-dlg{max-height:calc(100dvh - 24px);overflow-y:auto}
.gx-fp-ed{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:18px;align-items:start}
.gx-fp-izq{display:flex;flex-direction:column;gap:12px}
.gx-fp-lienzo{position:relative;width:100%;aspect-ratio:1/1;border-radius:16px;overflow:hidden;cursor:grab;touch-action:none;user-select:none;
  background:repeating-conic-gradient(rgba(127,127,127,.18) 0 25%,transparent 0 50%) 0 0/20px 20px;outline:none}
.gx-fp-lienzo:focus-visible{box-shadow:0 0 0 3px var(--gx-cyan)}
.gx-fp-lienzo.moviendo{cursor:grabbing}
.gx-fp-lienzo canvas{display:block;width:100%;height:100%}
.gx-fp-guia{position:absolute;inset:0;pointer-events:none}
.gx-fp-guia::before{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 2px rgba(255,255,255,.85)}
.gx-fp-guia.circulo::before{border-radius:50%;box-shadow:0 0 0 400px rgba(6,13,34,.45),inset 0 0 0 2px rgba(255,255,255,.9)}
/* cuadrícula de tercios mientras se mueve */
.gx-fp-guia i{position:absolute;inset:0;opacity:0;transition:opacity .2s;
  background:linear-gradient(90deg,transparent calc(33.33% - .5px),rgba(255,255,255,.6) 0 calc(33.33% + .5px),transparent 0 calc(66.66% - .5px),rgba(255,255,255,.6) 0 calc(66.66% + .5px),transparent 0),
             linear-gradient(transparent calc(33.33% - .5px),rgba(255,255,255,.6) 0 calc(33.33% + .5px),transparent 0 calc(66.66% - .5px),rgba(255,255,255,.6) 0 calc(66.66% + .5px),transparent 0)}
.gx-fp-lienzo.moviendo .gx-fp-guia i{opacity:1}
.gx-fp-prev{display:flex;align-items:center;gap:14px;padding:10px 12px;border-radius:14px;border:1px solid var(--gx-line)}
.gx-fp-prev span{display:block;overflow:hidden;flex:none;box-shadow:var(--gx-shadow)}
.gx-fp-prev canvas{display:block;width:100%;height:100%}
.gx-fp-prev .c72{width:72px;height:72px;border-radius:50%}
.gx-fp-prev .c40{width:40px;height:40px;border-radius:50%}
.gx-fp-prev .r56{width:56px;height:56px;border-radius:14px}
.gx-fp-prev small{margin-left:auto;font-size:.72rem;color:var(--gx-muted)}
.gx-fp-der{display:flex;flex-direction:column;gap:12px;min-width:0}
.gx-fp-der>.gx-seg{align-self:flex-start}
.gx-fp-pan{display:flex;flex-direction:column;gap:12px}
.gx-fp-pan .gx-field{gap:4px;font-size:.78rem}
.gx-fp-bots{display:flex;flex-wrap:wrap;gap:6px}
.gx-fp-fils{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.gx-fp-fil{appearance:none;border:1px solid var(--gx-field-brd);background:var(--gx-field);border-radius:12px;padding:6px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;
  font:600 .72rem 'Outfit',sans-serif;color:var(--gx-ink2);transition:border-color .2s,box-shadow .2s}
.gx-fp-fil canvas{width:100%;aspect-ratio:1/1;border-radius:50%;display:block}
.gx-fp-fil:hover{border-color:var(--gx-electric)}
.gx-fp-fil.on{border-color:var(--gx-electric);color:var(--gx-electric);box-shadow:0 0 0 3px rgba(30,123,255,.18)}
.gx-fp-reset{align-self:flex-start}
@media (max-width:760px){
  .gx-fp-ed{grid-template-columns:minmax(0,1fr)}
  .gx-fp-izq{max-width:360px;width:100%;margin:0 auto}
  .gx-fp-fils{grid-template-columns:repeat(4,minmax(0,1fr))}
}
.gx-cuenta-h .gx-lead{margin-top:2px;font-size:.84rem}
.gx-cuenta-h .gx-kicker{margin-bottom:2px;font-size:.66rem}
.gx-card{position:relative;margin:0;padding:14px 16px;border-radius:18px;background:var(--gx-card);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow);min-width:0}
fieldset.gx-card{display:flex;flex-direction:column;gap:10px}
.gx-card legend{float:left;width:100%;padding:0;margin-bottom:0;font-family:'Exo 2',sans-serif;font-weight:700;font-size:.92rem;color:var(--gx-strong)}
.gx-card legend+*{clear:both}
.gx-legend2{margin:4px 0 0;font-family:'Exo 2',sans-serif;font-weight:700;font-size:.92rem;color:var(--gx-strong)}
.gx-cfg{display:flex;flex-direction:column;gap:12px}
/* campos compactos en los formularios de configuración */
.gx-cfg .gx-field,.gx-psec .gx-form .gx-field{gap:4px;font-size:.76rem}
.gx-cfg .gx-field input:not([type=checkbox]):not([type=color]):not([type=range]):not([type=file]),.gx-cfg .gx-field select,.gx-cfg .gx-field textarea{min-height:36px;padding:7px 11px;border-radius:11px;font-size:.86rem}
.gx-cfg .gx-color-in input[type=color]{width:36px;height:36px;border-radius:10px}
.gx-cfg .gx-switch{min-height:30px;font-size:.86rem}
.gx-cfg-textos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
/* Textos de la página: campos con un cyan muy suave */
.gx-cfg-textos{--gx-field-cyan:rgba(25,195,245,.07)}
html[data-gx-tema="oscuro"] .gx-cfg-textos{--gx-field-cyan:rgba(25,195,245,.09)}
.gx-cfg-textos .gx-field input:not([type=checkbox]):not([type=color]):not([type=range]):not([type=file]),.gx-cfg-textos .gx-field textarea{
  background:var(--gx-field-cyan);border-color:rgba(25,195,245,.28)}
@supports (background:color-mix(in srgb,red,blue)){
  .gx-cfg-textos{--gx-field-cyan:color-mix(in srgb,var(--gx-cyan) 7%,var(--gx-field))}
}
.gx-span2{grid-column:1/-1}
/* pestañas dentro de una sección (Textos de la página) */
.gx-seg.gx-tabs{flex:none;align-self:flex-start;max-width:100%;overflow-x:auto;scrollbar-width:none}
.gx-tabs button{white-space:nowrap}
.gx-pil-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.gx-pil-col{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:16px;border:1px solid var(--gx-line);background:rgba(var(--gx-link-rgb),.03);min-width:0}
.gx-pil-col>h4{margin:0;font-family:'Exo 2',sans-serif;font-size:.86rem;color:var(--gx-strong)}
.gx-grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}
.gx-grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px}
.gx-grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 12px}
.gx-grid3>div{display:flex;flex-direction:column;gap:8px}
.gx-switches{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:4px 18px}
/* Mostrar / ocultar: miniatura del elemento a la izquierda del selector */
.gx-vis{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:8px 18px}
.gx-vis-it{display:flex;align-items:center;gap:12px;min-width:0;padding:6px;border-radius:14px;border:1px solid var(--gx-line)}
.gx-vis-img{width:140px;height:56px;padding:4px;flex:none;display:grid;place-items:center;overflow:hidden;border-radius:10px;background:var(--gx-bg);border:1px solid var(--gx-line);color:var(--gx-muted)}
.gx-vis-img img{max-width:100%;max-height:46px;width:auto;height:auto;display:block}
.gx-vis-img svg{width:20px;height:20px}
.gx-vis-it .gx-switch{flex:1;min-width:0}
.gx-form-narrow{max-width:520px}
.gx-wm-prev{padding:14px;border-radius:14px;background:var(--gx-bg);border:1px solid var(--gx-line);display:grid;place-items:center}
.gx-wm-prev .gx-wm{width:min(100%,420px);height:auto}
.gx-imgs{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.gx-imgslot{display:flex;gap:14px;align-items:flex-start}
.gx-imgslot-prev{width:80px;height:80px;flex:none;border-radius:16px;display:grid;place-items:center;overflow:hidden;border:1px solid var(--gx-line);
  background:repeating-conic-gradient(rgba(var(--gx-link-rgb),.08) 0 25%,transparent 0 50%) 0 0/16px 16px}
.gx-imgslot-prev img{max-width:90%;max-height:90%;object-fit:contain}
.gx-imgslot-prev svg{width:28px;height:28px;color:var(--gx-muted)}
.gx-imgslot-txt{display:flex;flex-direction:column;gap:4px;min-width:0}
.gx-imgslot-txt b{color:var(--gx-strong)}
.gx-imgslot-txt small{color:var(--gx-muted);font-size:.78rem}
.gx-imgslot-act{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
/* Logo e imágenes → logo central: controles + vista previa */
.gx-logo-cfg{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:14px;align-items:center}
.gx-logo-ctl{display:flex;flex-direction:column;gap:10px;min-width:0}
.gx-logo-act{display:flex;justify-content:flex-end;gap:8px}
.gx-logo-prev{height:330px;display:grid;place-items:center;overflow:hidden;border-radius:14px;border:1px solid var(--gx-line);
  background:linear-gradient(rgba(var(--gx-link-rgb),.06) 1px,transparent 1px) 0 0/26px 26px,linear-gradient(90deg,rgba(var(--gx-link-rgb),.06) 1px,transparent 1px) 0 0/26px 26px,var(--gx-bg)}
.gx-logo-prev .gx-core{width:calc(190px * var(--gx-logo-k,1));max-width:100%;margin:0}
/* Colores y fondo → Por categoría */
.gx-psec>.gx-scroll{display:flex;flex-direction:column;gap:12px}
.gx-ctema{display:flex;flex-direction:column;gap:12px}
.gx-ctema-h{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.gx-ctema-h>div{flex:1 1 320px;min-width:0}
.gx-ctema-h h2{margin:0;font-size:1rem;color:var(--gx-strong);font-family:'Exo 2','Outfit',sans-serif}
.gx-ctema-h .gx-hint{margin:2px 0 0}
.gx-ctema-h .gx-field-in select{min-width:220px}
.gx-ctema-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.6fr) minmax(0,1fr);gap:12px;align-items:start}
.gx-ctema-col{margin:0;min-width:0;padding:10px 12px 12px;border:1px solid var(--gx-line);border-radius:14px;display:flex;flex-direction:column;gap:8px}
.gx-ctema-col legend{padding:0 6px;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gx-muted)}
.gx-ctema .gx-field{gap:3px;font-size:.76rem}
.gx-ctema .gx-field input:not([type=checkbox]):not([type=color]):not([type=range]),.gx-ctema .gx-field select{min-height:34px;padding:6px 10px;border-radius:10px;font-size:.84rem}
.gx-ctema .gx-color-in input[type=color]{width:34px;height:34px;border-radius:10px}
.gx-ctema .gx-color-in{gap:6px}
.gx-ctema .gx-color-in input:not([type=color]){min-width:0;padding:6px 7px;font-size:.76rem;letter-spacing:0;font-variant-numeric:tabular-nums}
.gx-ctema .gx-switch{min-height:30px;font-size:.86rem}
.gx-ctema .apagado{opacity:.45}
.gx-ctema-anim.apagado>:not(.gx-switch):not(legend){opacity:.45}
.gx-ctema-anim.apagado{opacity:1}
.gx-ctema-preset{display:flex;align-items:flex-end;gap:6px;flex-wrap:wrap}
.gx-ctema-preset .gx-field{flex:1 1 180px}
.gx-sims{display:grid;grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:5px;max-height:186px;overflow-y:auto;scrollbar-width:thin;padding:2px}
.gx-sims-g{grid-column:1/-1;font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gx-muted);margin-top:4px}
.gx-sim-op{position:relative;cursor:pointer}
.gx-sim-op input{position:absolute;opacity:0;pointer-events:none}
.gx-sim-op span{display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 4px 5px;border-radius:11px;border:1px solid var(--gx-field-brd);background:var(--gx-field);color:var(--gx-ink2);text-align:center;transition:border-color .2s,background .2s,color .2s}
.gx-sim-op svg{width:22px;height:22px}
.gx-sim-op em{font-style:normal;font-family:'Exo 2',sans-serif;font-weight:600;font-size:.74rem;line-height:22px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.gx-sim-op small{font-size:.62rem;line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gx-sim-op input:checked+span{border-color:var(--gx-electric);background:rgba(var(--gx-link-rgb),.12);color:var(--gx-blue)}
html[data-gx-tema="oscuro"] .gx-sim-op input:checked+span{color:var(--gx-glow)}
.gx-sim-op input:focus-visible+span{outline:2px solid var(--gx-cyan);outline-offset:1px}
.gx-sim-prev{position:relative;aspect-ratio:4/3;border-radius:12px;border:1px solid var(--gx-line);overflow:hidden;display:grid;place-items:center;
  background:linear-gradient(rgba(var(--gx-link-rgb),.07) 1px,transparent 1px) 0 0/24px 24px,linear-gradient(90deg,rgba(var(--gx-link-rgb),.07) 1px,transparent 1px) 0 0/24px 24px,var(--gx-bg)}
.gx-sim-prev.sin-base{background:var(--gx-bg)}
.gx-sim-prev-c{position:relative;z-index:2;width:58%;display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:14px;background:var(--gx-card-solid);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow)}
.gx-sim-prev-c .gx-ico{width:34px;height:34px;color:var(--gx-electric)}
.gx-sim-prev-c .gx-ico svg{width:17px;height:17px}
.gx-sim-prev-c b{font-family:'Exo 2',sans-serif;font-size:.86rem;color:var(--gx-navy)}
html[data-gx-tema="oscuro"] .gx-sim-prev-c b{color:var(--gx-strong)}
.gx-sim-prev-c i{display:block;height:5px;border-radius:9px;background:rgba(var(--gx-link-rgb),.18)}
.gx-sim-prev-c i+i{width:70%}
.gx-sim-prev-btn{align-self:flex-start;margin-top:2px;padding:4px 12px;border-radius:999px;font-size:.7rem;font-weight:600;color:#fff;background:linear-gradient(135deg,var(--gx-electric),var(--gx-cyan))}
/* diseño de inicio: lista ordenable + esquema */
.gx-cfg-diseno{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);gap:12px;align-items:start}
.gx-ini-col{display:flex;flex-direction:column;gap:12px;min-width:0}
.gx-ini-col .gx-card{display:flex;flex-direction:column;gap:8px}
.gx-ini-lista{display:flex;flex-direction:column;gap:6px}
.gx-ini-it>.gx-vis-img{width:120px}
.gx-ini-it{display:grid;grid-template-columns:24px 120px minmax(120px,1fr) 128px minmax(140px,1fr) auto;align-items:center;gap:6px 12px;padding:6px 8px;border-radius:14px;border:1px solid var(--gx-line);background:var(--gx-card)}
.gx-ini-n{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:.72rem;font-weight:700;color:var(--gx-blue);background:rgba(var(--gx-link-rgb),.1)}
.gx-ini-txt{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
.gx-ini-txt b{color:var(--gx-strong);font-size:.88rem;line-height:1.25}
.gx-ini-it .gx-field{gap:2px}
.gx-ini-fijo{font-style:normal;font-size:.8rem;color:var(--gx-muted);min-height:36px;display:flex;align-items:center}
.gx-ini-mov{display:flex;gap:4px}
.gx-ini-mov .gx-iconbtn{width:30px;height:30px;box-shadow:none}
.gx-ini-mov .gx-iconbtn svg{width:15px;height:15px}
.gx-ini-mov .gx-iconbtn[disabled]{opacity:.3;pointer-events:none}
.gx-ini-prev{aspect-ratio:16/10;display:flex;flex-direction:column;justify-content:center;padding:12px 14px;border-radius:12px;border:1px solid var(--gx-line);overflow:hidden;
  background:linear-gradient(rgba(var(--gx-link-rgb),.06) 1px,transparent 1px) 0 0/22px 22px,linear-gradient(90deg,rgba(var(--gx-link-rgb),.06) 1px,transparent 1px) 0 0/22px 22px,var(--gx-bg)}
.gx-ini-prev.v-arriba{justify-content:flex-start}
.gx-ini-prev.v-abajo{justify-content:flex-end}
.gx-ini-prev .ip{display:flex;justify-content:center;flex:none;transition:margin .2s}
.gx-ini-prev .ip.al-izq{justify-content:flex-start}
.gx-ini-prev .ip.al-der{justify-content:flex-end}
.gx-ini-prev .ip span{display:block;border-radius:999px;background:rgba(var(--gx-link-rgb),.3)}
.gx-ini-prev .ip-eyebrow span{width:32%;height:8px;background:var(--gx-card);border:1px solid rgba(var(--gx-link-rgb),.3)}
.gx-ini-prev .ip-titulo span{width:56%;height:16px;border-radius:4px;background:linear-gradient(90deg,var(--gx-navy) 0 42%,var(--gx-electric) 42%)}
.gx-ini-prev .ip-subtitulo span{width:46%;height:5px}
.gx-ini-prev .ip-escenario span{width:100%;height:auto;background:none;display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:6px 8px;align-items:center;grid-template-areas:"eco core hoy"}
.gx-ini-prev .ip-escenario .e{grid-area:eco}
.gx-ini-prev .ip-escenario .h{grid-area:hoy}
.gx-ini-prev .ip-escenario b{grid-area:core}
.gx-ini-prev .org-invertido{grid-template-areas:"hoy core eco"!important}
.gx-ini-prev .org-sim_izq{grid-template-columns:1.25fr 1fr!important;grid-template-areas:"core eco" "core hoy"!important}
.gx-ini-prev .org-sim_der{grid-template-columns:1fr 1.25fr!important;grid-template-areas:"eco core" "hoy core"!important}
.gx-ini-prev .org-abajo{grid-template-columns:1fr 1fr!important;grid-template-areas:"core core" "eco hoy"!important}
.gx-ini-prev .org-arriba{grid-template-columns:1fr 1fr!important;grid-template-areas:"eco hoy" "core core"!important}
.gx-ini-prev :is(.org-sim_izq,.org-sim_der,.org-abajo,.org-arriba) i{height:26px}
.gx-ini-prev .ip-pilares span{width:70%;height:12px;background:repeating-linear-gradient(90deg,var(--gx-card) 0 31%,transparent 31% 34.5%);border:0;border-radius:4px;box-shadow:0 0 0 1px rgba(var(--gx-link-rgb),.2) inset}
.gx-ini-prev .ip-escenario i{height:44px;border-radius:8px;background:var(--gx-card);border:1px solid var(--gx-line);font-style:normal;font-size:.56rem;color:var(--gx-muted);display:grid;place-items:center}
.gx-ini-prev .ip-escenario b{width:58px;height:58px;justify-self:center;border-radius:50%;background:radial-gradient(circle,rgba(107,227,255,.6),rgba(30,123,255,.15) 60%,transparent 72%)}
.gx-ini-prev .ip-lema span{width:40%;height:5px;background:rgba(30,123,255,.5)}
.gx-ini-prev .ip-cta span{width:24%;height:14px;background:var(--gx-solid)}
.gx-ini-prev .ip.oculto{opacity:.22}
/* barra de navegación: vista previa */
.gx-cfg-nav{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:start}
.gx-nav-prev{border-radius:14px;border:1px solid var(--gx-line);
  background:linear-gradient(rgba(var(--gx-link-rgb),.07) 1px,transparent 1px) 0 0/28px 28px,linear-gradient(90deg,rgba(var(--gx-link-rgb),.07) 1px,transparent 1px) 0 0/28px 28px,var(--gx-bg)}
.gx-nav-prev{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:14px;place-items:stretch;padding:0 0 26px;min-height:0}
.gx-nav-prev>small{padding:0 14px;font-size:.66rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gx-muted)}
/* la barra de computador se dibuja a ~1000 px de ancho y se reduce con zoom */
.gx-top.gx-top-prev{position:relative;z-index:1;--gx-top-h:var(--gx-top-alto);zoom:.5;pointer-events:none}
.gx-top-prev .gx-top-lema{max-width:340px}
.gx-nav-prev-movil{padding:0 14px}
.gx-nav-prev-movil .gx-menu.sin-textos a span{display:none}
.gx-cfg-col{display:flex;flex-direction:column;gap:12px;min-width:0}
.gx-cfg-nav>.gx-card:last-child{position:sticky;top:0}
.gx-nav-prev-movil .gx-menu{display:flex;max-width:360px;margin:0 auto}
.gx-nav-prev-movil a{cursor:default;pointer-events:none}
.gx-nav-prev-pie{position:absolute;left:0;right:0;bottom:0;height:16px;display:flex;align-items:center;justify-content:center;font-size:.6rem;color:var(--gx-muted);background:var(--gx-glass);border-top:1px solid var(--gx-line)}
.gx-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;flex:none}
.gx-stat{padding:14px 16px;border-radius:18px;background:var(--gx-card);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow);display:flex;gap:12px;align-items:center;min-width:0}
.gx-stat .gx-ico{width:42px;height:42px}
.gx-stat .gx-ico svg{width:20px;height:20px}
.gx-stat b{display:block;font-family:'Exo 2',sans-serif;font-size:1.5rem;line-height:1.1;color:var(--gx-strong)}
.gx-stat small{color:var(--gx-muted);font-size:.78rem}
.gx-mis-cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.gx-toolbar{flex:none;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.gx-toolbar .gx-search{height:40px}
.gx-list{display:flex;flex-direction:column;gap:8px}

/* ── Centro de control (resumen de solo lectura) ─────────────────────── */
.gx-dash{display:flex;flex-direction:column;gap:12px}
.gx-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.gx-kpi{display:flex;align-items:center;gap:10px;min-width:0;padding:10px 12px;border-radius:16px;background:var(--gx-card);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow)}
.gx-kpi .gx-ico{width:36px;height:36px}
.gx-kpi .gx-ico svg{width:17px;height:17px}
.gx-kpi>div{min-width:0}
.gx-kpi b{display:block;font-family:'Exo 2',sans-serif;font-size:1.3rem;line-height:1.1;color:var(--gx-strong)}
.gx-kpi b small{font-size:.78rem;color:var(--gx-muted);font-weight:600}
.gx-kpi>div>small{display:block;font-size:.7rem;line-height:1.3;color:var(--gx-muted);overflow-wrap:break-word}
.gx-dash-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.gx-dcard{display:flex;flex-direction:column;gap:8px;min-width:0;padding:12px 14px;border-radius:16px;background:var(--gx-card);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow)}
.gx-dcard-2{grid-column:span 2}
.gx-dcard-3{grid-column:span 3}
.gx-dcard-4{grid-column:1/-1}
.gx-dcard h3{margin:0;display:flex;align-items:center;gap:7px;font-size:.68rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gx-muted)}
.gx-dcard h3 svg{width:15px;height:15px;color:var(--gx-electric)}
.gx-dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px 10px;margin:0;font-size:.78rem;align-items:center}
.gx-dl dt{color:var(--gx-muted);white-space:nowrap}
.gx-dl dd{margin:0;color:var(--gx-ink);font-weight:600;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-dl-txt dd{font-weight:500}
.gx-dmarca{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:var(--gx-bg);border:1px solid var(--gx-line);min-width:0;overflow:hidden}
.gx-dmarca img{height:38px;width:auto;max-width:38%;object-fit:contain;flex:none}
/* el nombre ocupa el ancho que quede: escala con la tarjeta y nunca se sale */
.gx-dmarca .gx-wm{flex:1 1 0;width:100%;min-width:0;height:auto;max-height:34px}
.gx-dfav{width:18px;height:18px;object-fit:contain;vertical-align:middle}
.gx-swatches{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px;font-size:.72rem}
.gx-swatches li{display:flex;align-items:center;gap:7px;min-width:0}
.gx-swatches i{width:22px;height:22px;border-radius:7px;border:1px solid var(--gx-field-brd);flex:none}
.gx-swatches span{display:flex;flex-direction:column;flex:1;min-width:0;line-height:1.2;color:var(--gx-ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-swatches code{font-size:.66rem;color:var(--gx-muted)}
.gx-onoffs{display:flex;flex-wrap:wrap;gap:4px}
.gx-onoff{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:.68rem;font-weight:600;background:rgba(var(--gx-link-rgb),.06);color:var(--gx-muted)}
.gx-onoff i{width:7px;height:7px;border-radius:50%;background:rgba(var(--gx-link-rgb),.3);flex:none}
.gx-onoff.on{background:rgba(22,196,127,.12);color:#0e9a62}
html[data-gx-tema="oscuro"] .gx-onoff.on{color:#4ade9a}
.gx-onoff.on i{background:var(--gx-ok)}
.gx-dtable{width:100%;border-collapse:collapse;font-size:.78rem}
.gx-dtable th{text-align:left;font-size:.64rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--gx-muted);padding:0 6px 5px}
.gx-dtable{table-layout:fixed}
.gx-dtable th:nth-child(2),.gx-dtable th:nth-child(3){width:70px}
.gx-dtable th:nth-child(4){width:150px}
.gx-dtable td{padding:4px 6px;border-top:1px solid var(--gx-line);color:var(--gx-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-dtable td:first-child{font-weight:600}
.gx-dtable td svg{width:14px;height:14px;margin-right:6px;vertical-align:-2px;color:var(--gx-electric)}
/* usuarios (solo administrador): tabla compacta sin bordes, filtro por último acceso */
.gx-dcard-us{gap:4px;padding:10px 14px}
.gx-dus-n{padding:0 6px;border-radius:999px;background:rgba(var(--gx-link-rgb),.08);font-size:.62rem;letter-spacing:0;color:var(--gx-ink2)}
.gx-dus-f{margin-left:auto;max-width:60%;min-height:0;padding:2px 8px;border-radius:8px;border:1px solid var(--gx-field-brd);background:var(--gx-card-solid);color:var(--gx-ink);font:inherit;font-size:.72rem;font-weight:600;letter-spacing:0;text-transform:none;cursor:pointer}
.gx-utable tr.gx-dus-vacio td{text-align:center;color:var(--gx-muted);font-weight:500;background:none}
.gx-dusers{max-height:132px;overflow-y:auto;scrollbar-width:thin}
.gx-dscroll{overflow-y:auto;scrollbar-width:thin;max-height:260px}
.gx-dscroll thead th{position:sticky;top:0;z-index:1;background:var(--gx-card-solid)}
/* Centro de control en computador: dos filas sin scroll — Usuarios + Categorías
   (con desplazamiento interno) · Marca, Paleta, Fondo y Botón principal */
@media (min-width:1280px){
  /* la 1.ª columna (Marca, en la 2.ª fila) es más ancha para el logo y el nombre */
  .gx-dash-grid{grid-template-columns:minmax(0,1.4fr) repeat(4,minmax(0,1fr))}
  .gx-dcard-cats.solo{grid-column:1/-1}
  .gx-dcard-us{grid-column:span 3}
  .gx-dcard-cats{grid-column:span 2}
  .gx-dcard-us,.gx-dcard-cats{height:212px}
  .gx-dcard-us .gx-dusers,.gx-dcard-cats .gx-dscroll{flex:1;min-height:0;max-height:none}
  .gx-dcard-cats .gx-dtable th:nth-child(2),.gx-dcard-cats .gx-dtable th:nth-child(3){width:58px}
  .gx-dcard-cats .gx-dtable th:nth-child(4){width:92px}
}
.gx-utable{width:100%;border-collapse:collapse;table-layout:fixed;font-size:.76rem}
.gx-utable th{position:sticky;top:0;z-index:1;text-align:left;padding:0 8px 3px;font-size:.62rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--gx-muted);background:var(--gx-card-solid)}
.gx-utable th:nth-child(1){width:22%}
.gx-utable th:nth-child(3){width:20%}
.gx-utable th:nth-child(4){width:24%}
.gx-utable td{padding:2px 8px;border:0;color:var(--gx-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5}
.gx-utable td:first-child{font-weight:600;color:var(--gx-strong)}
.gx-utable td:last-child{color:var(--gx-ink2);font-variant-numeric:tabular-nums}
.gx-utable td .gx-chipmini{font-size:.64rem;padding:1px 7px}
.gx-utable tbody tr:nth-child(odd) td{background:rgba(var(--gx-link-rgb),.035)}
.gx-utable tr.off td{opacity:.55}
/* botón principal: editor en el Centro de control */
.gx-cta-cfg{gap:8px}
.gx-cta-prev{display:grid;place-items:center;min-height:62px;padding:8px;border-radius:12px;border:1px solid var(--gx-line);background:var(--gx-bg)}
.gx-cta-prev .gx-cta{margin:0;pointer-events:none}
.gx-cta-prev .gx-cta b{font-weight:inherit}
.gx-cta-cfg .gx-grid2{gap:6px 10px}
.gx-cta-act{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.gx-cta-act .gx-btn{margin-left:auto}
.gx-row{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:18px;background:var(--gx-card);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow);min-width:0}
.gx-row.oculto{opacity:.62}
.gx-row .gx-ico{width:40px;height:40px}
.gx-row .gx-ico svg{width:19px;height:19px}
.gx-row-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.gx-row-txt b{color:var(--gx-strong);font-family:'Exo 2','Outfit',sans-serif;font-size:1rem;overflow-wrap:break-word;line-height:1.25}
.gx-row-txt small{color:var(--gx-ink2);font-size:.8rem;line-height:1.4;overflow-wrap:break-word}
.gx-row-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:3px}
/* fila compacta (Categorías): etiquetas junto al nombre */
.gx-row-comp{padding:6px 12px;gap:10px;border-radius:14px}
.gx-row-comp .gx-ico{width:32px;height:32px}
.gx-row-comp .gx-ico svg{width:16px;height:16px}
.gx-row-comp .gx-row-txt{gap:1px}
.gx-row-tit{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.gx-row-comp .gx-row-txt b{font-size:.94rem;margin-right:2px}
.gx-row-comp .gx-row-txt small{font-size:.76rem}
.gx-row-comp .gx-row-act .gx-iconbtn{width:30px;height:30px}
/* scroll de la lista de categorías, más grueso (150 % más) */
.gx-psec>#gxListaCats{scrollbar-width:auto;scrollbar-color:auto}
#gxListaCats::-webkit-scrollbar{width:14px}
#gxListaCats::-webkit-scrollbar-track{background:rgba(var(--gx-link-rgb),.06);border-radius:999px}
#gxListaCats::-webkit-scrollbar-thumb{background:rgba(var(--gx-link-rgb),.38);border-radius:999px;border:2px solid transparent;background-clip:padding-box}
#gxListaCats::-webkit-scrollbar-thumb:hover{background-color:rgba(var(--gx-link-rgb),.55)}
@supports not selector(::-webkit-scrollbar){
  .gx-psec>#gxListaCats{scrollbar-color:rgba(var(--gx-link-rgb),.38) transparent}
}
/* scroll de «Mis aplicaciones» / Aplicaciones, 200 % más grueso que el fino (≈ 6 px → 18 px) */
.gx-psec>#gxListaApps{scrollbar-width:auto;scrollbar-color:auto}
#gxListaApps::-webkit-scrollbar{width:18px}
#gxListaApps::-webkit-scrollbar-track{background:rgba(var(--gx-link-rgb),.07);border-radius:999px}
#gxListaApps::-webkit-scrollbar-thumb{background:rgba(var(--gx-link-rgb),.4);border-radius:999px;border:3px solid transparent;background-clip:padding-box;min-height:48px}
#gxListaApps::-webkit-scrollbar-thumb:hover{background-color:rgba(var(--gx-link-rgb),.58)}
@supports not selector(::-webkit-scrollbar){
  .gx-psec>#gxListaApps{scrollbar-color:rgba(var(--gx-link-rgb),.4) transparent}
}
.gx-row-act{display:flex;gap:4px;flex:none}
.gx-row-act .gx-iconbtn{width:34px;height:34px;box-shadow:none}
.gx-row-act .gx-iconbtn svg{width:16px;height:16px}
.gx-row-act .gx-iconbtn.danger:hover{color:var(--gx-danger)}
.gx-row-act .gx-iconbtn[disabled]{opacity:.35;pointer-events:none}
.gx-chipmini.comp{display:inline-flex;align-items:center;gap:4px;max-width:100%;overflow:hidden;text-overflow:ellipsis;background:rgba(245,158,11,.14);color:#b45309}
html[data-gx-tema="oscuro"] .gx-chipmini.comp{color:#fbbf24}
.gx-chipmini.cat2{display:inline-flex;align-items:center;gap:4px;background:rgba(var(--gx-link-rgb),.12);color:var(--gx-electric)}
html[data-gx-tema="oscuro"] .gx-chipmini.cat2{color:var(--gx-glow)}
.gx-chipmini.cat2 svg{width:11px;height:11px;flex:none}
.gx-chipmini.comp svg{width:11px;height:11px;flex:none}
/* «Compartir solo con…» en el formulario de la app */
.gx-comp{display:flex;flex-direction:column;gap:6px}
.gx-comp-lista{max-height:150px;overflow-y:auto;scrollbar-width:thin}
.gx-chipmini{font-size:.7rem;font-weight:600;padding:2px 9px;border-radius:999px;background:rgba(var(--gx-link-rgb),.1);color:var(--gx-blue);white-space:nowrap}
html[data-gx-tema="oscuro"] .gx-chipmini{color:#9cc4ff}
.gx-chipmini.warn{background:rgba(229,72,77,.1);color:var(--gx-danger)}
.gx-chipmini.ok{background:rgba(22,196,127,.12);color:#0e9a62}
html[data-gx-tema="oscuro"] .gx-chipmini.ok{color:#4ade9a}
.gx-list-empty{padding:26px;text-align:center;border-radius:20px;border:1px dashed rgba(var(--gx-link-rgb),.28);color:var(--gx-muted)}
/* ── Docentes y permisos: tarjetas del registro institucional ── */
.gx-kpis.gx-kpis-doc{flex:none;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.gx-list.gx-docs{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:10px}
.gx-docs>.gx-list-empty,.gx-docs-n{grid-column:1/-1}
.gx-docs-n{margin:0;font-size:.76rem;font-weight:600;color:var(--gx-muted)}
.gx-doc{position:relative;display:flex;gap:14px;min-width:0;min-height:200px;padding:14px;border-radius:18px;background:var(--gx-card);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow)}
.gx-doc.oculto{opacity:.62}
.gx-doc.sin-cuenta{border-style:dashed}
/* foto: columna izquierda con el alto completo de la tarjeta; la imagen ocupa el 80 % (10 % arriba y abajo) */
.gx-doc-foto{position:relative;flex:none;width:120px;align-self:stretch;margin:-14px 0}
.gx-doc-foto>img,.gx-doc-foto>span{position:absolute;left:0;right:0;top:10%;height:80%;width:100%;border-radius:14px;box-shadow:0 8px 20px -10px rgba(11,31,79,.45)}
.gx-doc-foto>img{object-fit:cover;object-position:center top;background:rgba(var(--gx-link-rgb),.08)}
.gx-doc-foto>span{display:grid;place-items:center;background:linear-gradient(160deg,var(--gx-blue),var(--gx-cyan));color:#fff;font-family:'Exo 2',sans-serif;font-weight:700;font-size:2rem;letter-spacing:.04em}
.gx-doc-info{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:6px}
.gx-doc-h{display:flex;align-items:flex-start;gap:8px;min-width:0}
.gx-doc-h b{flex:1;min-width:0;color:var(--gx-strong);font-family:'Exo 2','Outfit',sans-serif;font-size:1.02rem;line-height:1.25;overflow-wrap:break-word}
.gx-doc-h .gx-row-act{width:auto;border-top:0;padding-top:0;margin:-4px -4px 0 0}
.gx-doc-h .gx-row-act .gx-iconbtn{width:30px;height:30px}
.gx-doc-dato{margin:0;display:flex;flex-direction:column;font-size:.84rem;color:var(--gx-strong);font-weight:600;line-height:1.3}
.gx-doc-dato span{font-size:.66rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gx-muted)}
.gx-doc-dato i{font-weight:400;color:var(--gx-muted)}
/* tarjeta de editor (misma base que la de docente): foto de la persona vinculada */
.gx-ed{min-height:180px}
.gx-ed .gx-doc-dato{margin-top:2px}
.gx-ed .gx-ed-perms{max-height:74px;overflow-y:auto;scrollbar-width:thin}
.gx-doc .gx-row-meta{margin-top:4px;align-items:center}
.gx-doc .gx-chipmini{white-space:normal;max-width:100%}
.gx-doc .gx-chipmini svg{width:11px;height:11px;flex:none}
.gx-chipmini.ok,.gx-chipmini.warn,.gx-chipmini.dir{display:inline-flex;align-items:center;gap:4px}
.gx-chipmini.gris{background:rgba(100,116,139,.12);color:var(--gx-ink2)}
.gx-chipmini.dir{background:rgba(245,158,11,.14);color:#b45309}
html[data-gx-tema="oscuro"] .gx-chipmini.dir{color:#fbbf24}
/* pantallas angostas o bajas: KPIs y filtros no dejan sitio a la lista → hace scroll la sección entera */
@media (max-width:820px),(max-height:760px){
  .gx-psec[data-sec=docentes]{overflow-x:hidden;overflow-y:auto;padding:0 6px 8px;margin:0 -6px}
  .gx-psec>.gx-list.gx-docs{flex:none;overflow:visible}
}
@media (max-width:640px){
  .gx-kpis.gx-kpis-doc{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gx-list.gx-docs{grid-template-columns:minmax(0,1fr)}
  .gx-doc-foto{width:100px}
}
.gx-filedrop{position:relative;display:flex;align-items:center;gap:12px;padding:14px;border-radius:16px;border:1.5px dashed rgba(var(--gx-link-rgb),.35);background:rgba(var(--gx-link-rgb),.04);cursor:pointer}
.gx-filedrop:hover{border-color:var(--gx-electric)}
.gx-filedrop svg{width:22px;height:22px;color:var(--gx-electric)}
.gx-filedrop span{font-size:.86rem;color:var(--gx-ink2);min-width:0;overflow-wrap:anywhere}
.gx-filedrop input{position:absolute;opacity:0;pointer-events:none;width:1px}

/* ── Aparición al hacer scroll ────────────────────────────────────── */
.gx-js .gx-rv{opacity:0;transform:translateY(12px);transition:opacity .42s ease,transform .42s cubic-bezier(.2,.7,.2,1)}
.gx-js .gx-rv.is-in{opacity:1;transform:none}

/* ── Barra superior ───────────────────────────────────────────────────
   Logo (tamaño en % del alto) + nombre + slogan · menú al centro · botones a la
   derecha. Translúcida: el vidrio va en ::before para que la barra NO sea
   bloque contenedor de lo fijo (en celular el menú es una barra inferior fija
   dentro de este mismo <header>). Transparencia, desenfoque, altura, color y
   borde: AdminPage → Barra de navegación. */
body.con-top>.gx{padding-top:var(--gx-top-h)}
body.con-top>.gx-catv{padding-top:calc(var(--gx-top-h) + 12px)}
body.con-top.gx-body-panel>.gx-panelv{padding-top:calc(var(--gx-top-h) + 12px)}
.gx-top{position:fixed;top:0;left:0;right:0;z-index:950;height:var(--gx-top-h);display:grid;grid-template-columns:minmax(auto,1fr) auto minmax(auto,1fr);
  align-items:center;gap:16px;padding:0 clamp(12px,2.4vw,32px);color:var(--gx-ink);
  --gx-top-rgb:255,255,255; --gx-top-panel:#ffffff; --gx-top-on:var(--gx-electric)}
html[data-gx-tema="oscuro"] .gx-top{--gx-top-rgb:8,18,46; --gx-top-panel:#0d1a3c; --gx-top-on:var(--gx-glow)}
.gx-top::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:rgba(var(--gx-top-rgb),var(--gx-top-a));
  border-bottom:1px solid var(--gx-line);box-shadow:0 10px 30px -20px rgba(11,31,79,.45)}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .gx-top::before{-webkit-backdrop-filter:blur(var(--gx-top-blur)) saturate(1.3);backdrop-filter:blur(var(--gx-top-blur)) saturate(1.3)}
}
.gx-top.sin-borde::before{border-bottom-color:transparent;box-shadow:none}
/* «Siempre blanca»: textos y botones del modo claro también en modo oscuro */
html[data-gx-tema="oscuro"] .gx-top.top-blanco{--gx-top-rgb:255,255,255; --gx-top-panel:#ffffff; --gx-top-on:var(--gx-electric);
  --gx-ink:#0b1a3a; --gx-ink2:#45577c; --gx-muted:#61739a; --gx-strong:var(--gx-navy); --gx-line:rgba(30,123,255,.14); --gx-link-rgb:30,123,255;
  --gx-card:rgba(255,255,255,.8); --gx-card-solid:#ffffff; --gx-wm1:var(--gx-navy); --gx-wm2b:#3aa0ff; color-scheme:light}
/* «Azul oscuro de la marca»: textos claros en ambos temas */
.gx-top.top-marca{--gx-top-panel:var(--gx-navy); --gx-top-on:#ffffff;
  --gx-ink:#e8f0ff; --gx-ink2:#c3d2ef; --gx-muted:#a9badb; --gx-strong:#ffffff; --gx-line:rgba(255,255,255,.16); --gx-link-rgb:255,255,255;
  --gx-card:rgba(255,255,255,.1); --gx-card-solid:rgba(255,255,255,.1); --gx-wm1:#ffffff; --gx-wm2b:var(--gx-cyan); color-scheme:dark}
.gx-top.top-marca::before{background:rgba(11,31,79,var(--gx-top-a));background:color-mix(in srgb,var(--gx-navy) calc(var(--gx-top-a) * 100%),transparent)}
/* marca: logo + nombre (logotipo vectorial) + slogan */
.gx-top-marca{grid-column:1;justify-self:start;display:flex;align-items:center;gap:12px;height:100%;min-width:0;color:inherit}
.gx-top-marca picture{display:contents}
.gx-top-logo{display:block;height:calc(var(--gx-top-h) * var(--gx-top-logo));width:auto;flex:none;transition:transform .3s}
.gx-top-marca:hover .gx-top-logo{transform:scale(1.04)}
.gx-top-txt{display:flex;flex-direction:column;justify-content:center;gap:4px;min-width:0}
.gx-top-nombre{display:block;line-height:0}
.gx-top-nombre .gx-wm{height:clamp(15px,calc(var(--gx-top-h) * .3),26px);width:auto}
.gx-top-lema{display:block;max-width:min(28vw,360px);font-size:.64rem;font-weight:500;line-height:1.2;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gx-ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* menú: Núcleo · Categorías · Pilares (al centro) */
.gx-menu{grid-column:2;display:flex;align-items:center;gap:4px;min-width:0}
.gx-menu a{display:flex;align-items:center;gap:8px;height:calc(var(--gx-nav-ico) + var(--gx-nav-pad) * 2);padding:0 18px;border-radius:12px;
  color:var(--gx-ink2);font-size:var(--gx-nav-txt);font-weight:600;white-space:nowrap;transition:background .25s,color .25s}
.gx-menu a svg{width:var(--gx-nav-ico);height:var(--gx-nav-ico)}
.gx-menu a:hover{color:var(--gx-strong);background:rgba(var(--gx-link-rgb),.07)}
.gx-menu a.on{color:var(--gx-top-on);background:rgba(var(--gx-link-rgb),.13)}
.gx-menu .sep{width:1px;height:calc(var(--gx-nav-ico) + 5px);background:var(--gx-line);margin:0 4px}
.gx-top.menu-sin-iconos:not(.menu-sin-textos) .gx-menu a svg{display:none}
.gx-top.menu-sin-textos .gx-menu a span{display:none}
.gx-top.menu-sin-textos .gx-menu a{padding:0 12px}

/* barra inferior del celular: vista previa de AdminPage (en el sitio, ver @media 960px) */
.gx-nav-prev-movil .gx-menu{justify-content:space-around;gap:2px;padding:calc(var(--gx-nav-pad) / 2) 6px;
    border-radius:999px;background:rgba(11,31,79,var(--gx-nav-a));border:1px solid rgba(255,255,255,.14);box-shadow:0 18px 40px -14px rgba(11,31,79,.65)}
html[data-gx-tema="oscuro"] .gx-nav-prev-movil .gx-menu{background:rgba(8,18,46,var(--gx-nav-a));border-color:rgba(107,227,255,.2)}
.gx-nav-prev-movil .gx-menu a{flex:1;flex-direction:column;justify-content:center;gap:2px;height:auto;min-height:calc(var(--gx-nav-ico) + var(--gx-nav-pad) * 2 + 6px);
    padding:calc(var(--gx-nav-pad) / 2 + 3px) 10px;border-radius:999px;font-size:calc(var(--gx-nav-txt) * .74);line-height:1.1;color:rgba(255,255,255,.75)}
.gx-nav-prev-movil .gx-menu a svg{display:block}   /* en la barra inferior siempre van los íconos */
.gx-nav-prev-movil .gx-menu a:hover{color:#fff;background:rgba(255,255,255,.08)}
.gx-nav-prev-movil .gx-menu a.on{color:var(--gx-navy);background:linear-gradient(135deg,#ffffff,#d9f6ff)}
.gx-nav-prev-movil .gx-menu .sep{display:none}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .gx-nav-prev-movil .gx-menu{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
}

/* ── Tarjetas de aplicaciones (vista de categoría) ────────────────────
   Un solo diseño en todas las pestañas: fondo claro índigo / oscuro GitHub,
   borde índigo sutil, barra lateral índigo→violeta al pasar el cursor,
   Ripple al tocar (js) e icono de 68 px con el color de la categoría
   (--cc, clases cc-*). Toda la tarjeta es el enlace (clic o Enter). */
:root{
  --cc-indigo:#4f46e5; --cc-violeta:#7c3aed; --cc-cian:#0891b2; --cc-esmeralda:#059669;
  --cc-turquesa:#0d9488; --cc-rosa:#db2777; --cc-rojo:#dc2626;
  --gx-tarj:#f0f4ff; --gx-tarj-brd:rgba(79,70,229,.16); --gx-tarj-brd-hi:rgba(79,70,229,.34);
  --gx-tarj-sh:0 1px 2px rgba(30,27,75,.05),0 6px 18px -10px rgba(79,70,229,.28);
  --gx-tarj-sh-hi:0 2px 4px rgba(30,27,75,.06),0 14px 30px -12px rgba(79,70,229,.38);
  --gx-tarj-t:#111827; --gx-tarj-d:#4b5563; --gx-tarj-ripple:rgba(79,70,229,.16);
}
html[data-gx-tema="oscuro"]{
  --cc-indigo:#818cf8; --cc-violeta:#a78bfa; --cc-cian:#22d3ee; --cc-esmeralda:#34d399;
  --cc-turquesa:#2dd4bf; --cc-rosa:#f472b6; --cc-rojo:#f87171;
  --gx-tarj:#0d1117; --gx-tarj-brd:rgba(129,140,248,.2); --gx-tarj-brd-hi:rgba(129,140,248,.42);
  --gx-tarj-sh:0 1px 2px rgba(0,0,0,.4),0 6px 18px -10px rgba(0,0,0,.7);
  --gx-tarj-sh-hi:0 2px 4px rgba(0,0,0,.45),0 16px 32px -12px rgba(79,70,229,.45);
  --gx-tarj-t:#e6edf3; --gx-tarj-d:#9aa7b8; --gx-tarj-ripple:rgba(129,140,248,.2);
}
.gx-app-w{--cc:var(--cc-indigo);position:relative;display:flex;min-width:0}
.gx-app-w.cc-indigo{--cc:var(--cc-indigo)}
.gx-app-w.cc-violeta{--cc:var(--cc-violeta)}
.gx-app-w.cc-cian{--cc:var(--cc-cian)}
.gx-app-w.cc-esmeralda{--cc:var(--cc-esmeralda)}
.gx-app-w.cc-turquesa{--cc:var(--cc-turquesa)}
.gx-app-w.cc-rosa{--cc:var(--cc-rosa)}
.gx-app-w.cc-rojo{--cc:var(--cc-rojo)}
.gx-app{position:relative;flex:1;min-width:0;display:grid;grid-template-columns:68px minmax(0,1fr);align-items:start;gap:14px;
  padding:16px 16px 14px;border-radius:16px;overflow:hidden;isolation:isolate;cursor:pointer;-webkit-tap-highlight-color:transparent;
  background:var(--gx-tarj);border:1px solid var(--gx-tarj-brd);box-shadow:var(--gx-tarj-sh);
  transition:transform .25s cubic-bezier(.2,.7,.2,1),box-shadow .25s,border-color .25s}
.gx-app-w.con-cfg .gx-app{padding-right:46px}          /* 30 px libres para el engranaje */
/* barra lateral índigo → violeta */
.gx-app::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#6366f1,#8b5cf6);
  transform:scaleY(0);transform-origin:center;transition:transform .25s cubic-bezier(.2,.7,.2,1)}
.gx-app:hover,.gx-app:focus-visible{transform:translateY(-3px);box-shadow:var(--gx-tarj-sh-hi);border-color:var(--gx-tarj-brd-hi)}
.gx-app:hover::before,.gx-app:focus-visible::before{transform:scaleY(1)}
.gx-app:focus-visible{outline:3px solid var(--cc-indigo);outline-offset:3px;border-radius:16px}
/* icono: imagen, ícono, emoji o siglas, teñido con el color de la categoría */
.gx-app-img{width:68px;height:68px;border-radius:16px;display:grid;place-items:center;overflow:hidden;color:var(--cc);
  background:rgba(79,70,229,.1);border:1px solid rgba(79,70,229,.22)}
@supports (background:color-mix(in srgb,red 10%,transparent)){
  .gx-app-img{background:color-mix(in srgb,var(--cc) 12%,transparent);border-color:color-mix(in srgb,var(--cc) 30%,transparent)}
}
.gx-app-img svg{width:30px;height:30px}
.gx-app-img img{width:100%;height:100%;object-fit:cover}
.gx-app-emoji{font-size:34px;line-height:1}
.gx-app-sigla{font-family:'Space Grotesk','Outfit',sans-serif;font-weight:800;font-size:1.45rem;letter-spacing:.02em;line-height:1}
.gx-app-txt{display:flex;flex-direction:column;gap:4px;min-width:0;min-height:68px}
.gx-app-txt b{font-family:'Space Grotesk','Outfit',sans-serif;font-weight:700;font-size:1.04rem;line-height:1.25;color:var(--gx-tarj-t);overflow-wrap:anywhere}
.gx-app-txt small{font-family:'Nunito','Outfit',sans-serif;font-size:.86rem;line-height:1.42;color:var(--gx-tarj-d);overflow-wrap:anywhere;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gx-app-foot{margin-top:auto;padding-top:6px;padding-right:34px;display:flex;align-items:center;flex-wrap:wrap;gap:6px}   /* 34 px: estrella */
.gx-app-cat,.gx-app-pill{display:inline-block;max-width:100%;padding:2px 10px;border-radius:999px;font-size:.7rem;font-weight:700;
  line-height:1.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-app-cat{color:var(--cc);background:rgba(79,70,229,.1);border:1px solid rgba(79,70,229,.22)}
@supports (background:color-mix(in srgb,red 10%,transparent)){
  .gx-app-cat{background:color-mix(in srgb,var(--cc) 11%,transparent);border-color:color-mix(in srgb,var(--cc) 28%,transparent)}
}
.gx-app-pill{color:var(--gx-tarj-d);background:transparent;border:1px solid var(--gx-tarj-brd)}
.gx-app-hace{display:none;font-family:'Nunito','Outfit',sans-serif;font-size:.74rem;font-weight:600;color:var(--gx-tarj-d);white-space:nowrap}
.ver-recientes .gx-app-hace{display:inline}
/* Ripple (js: pointerdown) */
.gx-ripple{position:absolute;z-index:-1;border-radius:50%;pointer-events:none;background:var(--gx-tarj-ripple);transform:scale(0);animation:gxRipple .55s ease-out forwards}
@keyframes gxRipple{to{transform:scale(1);opacity:0}}
/* estrella de favorita: abajo a la derecha (el engranaje ocupa la esquina superior) */
.gx-app-w .gx-fav{top:auto;bottom:8px;right:8px}
/* engranaje de configuración: solo gestores con permiso (abre el editor, no la app) */
.gx-app-cfg{position:absolute;top:10px;right:10px;z-index:2;width:26px;height:26px;display:grid;place-items:center;border-radius:8px;color:var(--gx-tarj-d);
  transition:color .2s,transform .3s cubic-bezier(.2,.7,.2,1),background .2s}
.gx-app-cfg svg{width:20px;height:20px}
.gx-app-cfg:hover,.gx-app-cfg:focus-visible{color:var(--cc-indigo);transform:rotate(45deg);background:rgba(99,102,241,.1)}
.gx-app-cfg:focus-visible{outline:3px solid var(--cc-indigo);outline-offset:2px}
@media (max-width:640px){
  .gx-app{grid-template-columns:56px minmax(0,1fr);gap:12px;padding:12px 12px 10px}
  .gx-app-w.con-cfg .gx-app{padding-right:42px}
  .gx-app-img{width:56px;height:56px;border-radius:14px}
  .gx-app-txt{min-height:56px}
  .gx-app-img svg{width:26px;height:26px}
  .gx-app-emoji{font-size:28px}
  .gx-app-sigla{font-size:1.2rem}
}
@media (pointer:coarse){
  .gx-app-cfg{width:36px;height:36px;top:6px;right:6px}
  .gx-app-w.con-cfg .gx-app{padding-right:50px}
}
@media (prefers-reduced-motion:reduce){
  .gx-app,.gx-app::before,.gx-app-cfg{transition:none}
  .gx-app:hover,.gx-app:focus-visible,.gx-app-cfg:hover,.gx-app-cfg:focus-visible{transform:none}
  .gx-app::before{transform:scaleY(1);opacity:0}
  .gx-app:hover::before,.gx-app:focus-visible::before{opacity:1}
  .gx-ripple{display:none}
}

/* ── Diseño de tarjetas (AdminPage → Diseño de tarjetas) ───────────────
   .gx-tj-a = apps (vista de categoría) · .gx-tj-m = módulos (Institucional).
   Variables --tja-* / --tjm-* en :root (gx_css_vars) o en la vista previa.
   La imagen o logo va en un recuadro redondeado cuyo lado es --tj-img del
   alto de la tarjeta (80 % por defecto en los módulos), centrado en vertical.
   El alto es un mínimo: si el texto no cabe, la tarjeta crece lo justo. */
.gx-tj-a{--tj-alto:var(--tja-alto,130px);--tj-img:var(--tja-img,.52);--tj-r:var(--tja-r,16px);--tj-ri:var(--tja-ri,16px);
  --tj-ancho:var(--tja-ancho,260px);--tj-tit:var(--tja-tit,17px);--tj-lin:var(--tja-lin,2);
  --tj-bgcl:var(--tja-bgcl,#f0f4ff);--tj-bgco:var(--tja-bgco,#0d1117);--tj-op:var(--tja-op,1)}
.gx-tj-m{--tj-alto:var(--tjm-alto,130px);--tj-img:var(--tjm-img,.8);--tj-r:var(--tjm-r,18px);--tj-ri:var(--tjm-ri,18px);
  --tj-ancho:var(--tjm-ancho,320px);--tj-tit:var(--tjm-tit,17px);--tj-lin:var(--tjm-lin,2);
  --tj-bgcl:var(--tjm-bgcl,#f0f4ff);--tj-bgco:var(--tjm-bgco,#0d1117);--tj-op:var(--tjm-op,1)}
/* fondo de toda la tarjeta: el del tema (--gx-tarj) o uno propio por modo, con transparencia */
.gx-tj{--tj-bg:var(--gx-tarj)}
.gx-tj.tj-bg-propio{--tj-bg:var(--tj-bgcl)}
html[data-gx-tema="oscuro"] .gx-tj.tj-bg-propio{--tj-bg:var(--tj-bgco)}
.gx-tj{--tj-k:1;--tj-h:calc(var(--tj-alto) * var(--tj-k));--tj-isz:calc(var(--tj-h) * var(--tj-img))}
.gx-apps.gx-tj{grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--tj-ancho)),1fr))}
.gx-inst.gx-tj{grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--tj-ancho)),1fr));gap:16px}
.gx-tj .gx-app{grid-template-columns:var(--tj-isz) minmax(0,1fr);align-items:center;min-height:var(--tj-h);border-radius:var(--tj-r);
  --tj-pad:max(4px,min(14px,calc((var(--tj-h) - var(--tj-isz)) / 2 - 1px)));padding-top:var(--tj-pad);padding-bottom:var(--tj-pad)}
.gx-tj .gx-app:focus-visible{border-radius:var(--tj-r)}
.gx-tj .gx-app{background:var(--tj-bg)}
@supports (background:color-mix(in srgb,red 10%,transparent)){
  .gx-tj .gx-app{background:color-mix(in srgb,var(--tj-bg) calc(var(--tj-op) * 100%),transparent)}
}
.gx-tj.tj-transp .gx-app{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.gx-tj .gx-app-img{width:var(--tj-isz);height:var(--tj-isz);border-radius:var(--tj-ri)}
.gx-tj .gx-app-img svg{width:44%;height:44%}
.gx-tj .gx-app-img img{transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.gx-tj .gx-app-emoji{font-size:calc(var(--tj-isz) * .5)}
.gx-tj .gx-app-sigla{font-size:calc(var(--tj-isz) * .3)}
.gx-tj .gx-app-txt{min-height:0;align-self:center}
.gx-tj .gx-app-txt b{font-size:var(--tj-tit)}
.gx-tj .gx-app-txt small{-webkit-line-clamp:var(--tj-lin)}
.gx-tj-m .gx-app-foot{padding-right:0}
.gx-tj.tj-fit-contener .gx-app-img img{object-fit:contain;padding:7%}
.gx-tj.tj-fondo-blanco .gx-app-img{background:#fff;border-color:var(--gx-tarj-brd)}
.gx-tj.tj-fondo-transparente .gx-app-img{background:transparent;border-color:transparent}
.gx-tj.tj-hover-zoom .gx-app:hover .gx-app-img>*,.gx-tj.tj-hover-zoom .gx-app:focus-visible .gx-app-img>*{transform:scale(1.08)}
.gx-tj.tj-hover-zoom .gx-app-img>*{transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.gx-tj.tj-hover-ninguno .gx-app:hover,.gx-tj.tj-hover-ninguno .gx-app:focus-visible{transform:none}
.gx-tj.tj-sin-desc .gx-app-txt small{display:none}
.gx-tj.tj-sin-pie .gx-app-cat{display:none}
/* alineación del texto (izquierda · centrado · derecha) y su posición vertical junto a la imagen */
.gx-tj.tj-txt-centro .gx-app-txt{text-align:center}
.gx-tj.tj-txt-centro .gx-app-foot{justify-content:center}
.gx-tj-a.tj-txt-centro .gx-app-foot{padding-left:34px}   /* simétrico a la estrella: centro real */
.gx-tj.tj-txt-derecha .gx-app-txt{text-align:right}
.gx-tj.tj-txt-derecha .gx-app-foot{justify-content:flex-end}
.gx-tj.tj-pos-arriba .gx-app-txt{align-self:start}
.gx-tj.tj-pos-abajo .gx-app-txt{align-self:end}
@media (max-width:640px){
  .gx-tj{--tj-k:.9}
  .gx-apps.gx-tj,.gx-inst.gx-tj{grid-template-columns:minmax(0,1fr);gap:10px}
  .gx-tj .gx-app-txt b{font-size:calc(var(--tj-tit) * .94)}
}
/* AdminPage → Diseño de tarjetas: controles compactos a la izquierda, vista previa a la derecha */
.gx-tj-cfg{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:16px;align-items:start}
.gx-tj-ctl{display:flex;flex-direction:column;gap:10px;min-width:0}
.gx-tj-fondo{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:end;gap:6px 14px;padding:8px 10px;border-radius:12px;border:1px solid var(--gx-line)}
.gx-tj-fondo .apagado{opacity:.45}
.gx-tj-pie{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.gx-tj-pie .gx-switches{grid-template-columns:repeat(2,auto);justify-content:start;gap:4px 18px}
.gx-tj-lado{display:flex;flex-direction:column;gap:8px;min-width:0}
.gx-tj-hint{margin:0}
/* la vista previa muestra el fondo del sitio para apreciar la transparencia */
.gx-tj-prev{padding:16px;border-radius:16px;border:1px dashed var(--gx-field-brd);overflow:hidden;
  background:radial-gradient(circle at 20% 20%,rgba(var(--gx-link-rgb),.22),transparent 55%),radial-gradient(circle at 85% 80%,rgba(25,195,245,.2),transparent 50%),var(--gx-bg)}
.gx-tj-prev .gx-tj{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--tj-ancho)),1fr));gap:12px}
.gx-tj-prev .gx-app{cursor:default}
.gx-tj-prev .gx-app-cfg{pointer-events:none}
@media (max-width:1000px){ .gx-tj-cfg{grid-template-columns:minmax(0,1fr)} }
@media (max-width:1250px){ .gx-tj-ctl .gx-grid3{grid-template-columns:repeat(2,minmax(0,1fr))} }
/* AdminPage → Logo e imágenes: nombre e imágenes a la izquierda, logo central a la derecha */
.gx-psec>.gx-scroll.gx-marca{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}
.gx-marca-col{display:flex;flex-direction:column;gap:12px;min-width:0}
.gx-marca .gx-imgs{grid-template-columns:minmax(0,1fr);gap:10px}
.gx-marca .gx-imgslot{align-items:center;padding:10px 14px}
.gx-marca .gx-imgslot-prev{width:60px;height:60px;border-radius:14px}
.gx-marca .gx-imgslot-txt small{font-size:.74rem}
.gx-marca .gx-imgslot-act{margin-top:2px}
.gx-marca .gx-logo-cfg{grid-template-columns:minmax(0,1fr)}
.gx-marca .gx-logo-prev{height:240px}
.gx-marca .gx-switches{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:1100px){ .gx-psec>.gx-scroll.gx-marca{grid-template-columns:minmax(0,1fr)} }
/* AdminPage → Barra de navegación → Menú: nombre e ícono de cada elemento */
.gx-nav-its{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px}
.gx-nav-it{display:flex;align-items:flex-end;gap:8px;min-width:0}
.gx-nav-it .gx-field{flex:1;min-width:0}
.gx-icopop{position:relative;flex:none}
.gx-icopop>summary{list-style:none;cursor:pointer;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;
  border:1px solid var(--gx-field-brd);background:var(--gx-field);color:var(--gx-electric);transition:box-shadow .2s,border-color .2s}
.gx-icopop>summary::-webkit-details-marker{display:none}
.gx-icopop>summary:hover,.gx-icopop[open]>summary{border-color:var(--gx-electric);box-shadow:0 0 0 3px rgba(30,123,255,.18)}
.gx-icopop>summary svg{width:20px;height:20px}
.gx-icopop>.gx-icosel{position:absolute;z-index:30;top:calc(100% + 6px);left:0;width:min(296px,70vw);gap:5px;padding:8px;border-radius:14px;
  background:var(--gx-card-solid);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow-hi)}
.gx-icopop .gx-icosel span{width:34px;height:34px;border-radius:10px}
.gx-icopop .gx-icosel svg{width:17px;height:17px}
@media (max-width:640px){ .gx-nav-its{grid-template-columns:minmax(0,1fr)} }
/* menús adicionales (Barra de navegación → Menú): una fila por menú */
.gx-nav-extra{display:grid;gap:10px;margin:16px 0}
.gx-nav-extra-h{display:flex;align-items:center;justify-content:space-between;gap:10px}
.gx-nx-lista{display:grid;gap:10px}
.gx-nx{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:end;gap:8px 10px;padding:10px;border:1px solid var(--gx-field-brd);border-radius:14px}
.gx-nx .gx-nx-del{height:44px;width:44px;padding:0;display:grid;place-items:center}
.gx-nx .gx-nx-del svg{width:18px;height:18px}
/* portada: cuerpo vacío de un menú adicional */
.gx-extra-cuerpo{flex:1 0 auto;min-height:40vh}

/* ── RESPONSIVE ───────────────────────────────────────────────────── */
@media (max-width:1180px){
  .gx-top{gap:10px}
  .gx-menu a{padding:0 12px}
  .gx-top-lema{max-width:170px}
}
/* tableta y celular: el menú pasa a una barra de navegación inferior */
@media (max-width:960px){
  body.con-dock{--gx-dock-res:calc(var(--gx-nav-ico) + var(--gx-nav-pad) * 2.5 + 30px)}
  .gx-top{grid-template-columns:minmax(0,1fr) auto}
  .gx-top-lema{max-width:min(46vw,320px)}
  #gxTop .gx-menu{position:fixed;left:12px;right:12px;bottom:calc(var(--gx-foot-h) + 8px);z-index:900}
  #gxTop .gx-menu{justify-content:space-around;gap:2px;padding:calc(var(--gx-nav-pad) / 2) 6px;
      border-radius:999px;background:rgba(11,31,79,var(--gx-nav-a));border:1px solid rgba(255,255,255,.14);box-shadow:0 18px 40px -14px rgba(11,31,79,.65)}
  html[data-gx-tema="oscuro"] #gxTop .gx-menu{background:rgba(8,18,46,var(--gx-nav-a));border-color:rgba(107,227,255,.2)}
  #gxTop .gx-menu a{flex:1;flex-direction:column;justify-content:center;gap:2px;height:auto;min-height:calc(var(--gx-nav-ico) + var(--gx-nav-pad) * 2 + 6px);
      padding:calc(var(--gx-nav-pad) / 2 + 3px) 10px;border-radius:999px;font-size:calc(var(--gx-nav-txt) * .74);line-height:1.1;color:rgba(255,255,255,.75)}
  #gxTop .gx-menu a svg{display:block}   /* en la barra inferior siempre van los íconos */
  #gxTop .gx-menu a:hover{color:#fff;background:rgba(255,255,255,.08)}
  #gxTop .gx-menu a.on{color:var(--gx-navy);background:linear-gradient(135deg,#ffffff,#d9f6ff)}
  #gxTop .gx-menu .sep{display:none}
  @supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
    #gxTop .gx-menu{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
  }
}
@media (max-width:640px){
  body.con-top{--gx-top-h:min(var(--gx-top-alto),60px)}
  .gx-top{padding:0 12px}
  .gx-top-marca{gap:9px}
  .gx-top-nombre .gx-wm{height:clamp(14px,calc(var(--gx-top-h) * .28),20px)}
  .gx-top-lema{font-size:.56rem;letter-spacing:.1em;max-width:52vw}
}
@media (max-width:1279px){
  .gx-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .gx-dash-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gx-dcard-3{grid-column:span 2}
  .gx-cfg-diseno{grid-template-columns:minmax(0,1fr)}
  .gx-ctema-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr)}
  .gx-ctema-grid>:last-child{grid-column:1/-1}
}
@media (max-width:1099px){
  /* sin paneles laterales en el hero: la portada debe caber sin scroll */
  .gx-hero .gx-stage{grid-template-columns:minmax(0,1fr);grid-template-areas:"core";max-width:820px;--gx-stage-extra:0px}
  .gx-hero .gx-side{display:none}
  .gx-core{width:min(100%,calc(min(400px,max(190px,calc(100vh - 400px - var(--gx-hero-extra,0px) - var(--gx-stage-extra,0px)))) * var(--gx-logo-k,1)))}
  /* pilares en tablet: uno por fila, en dos columnas internas */
  .gx-pills{grid-template-columns:minmax(0,1fr)}
  .gx-pilar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);grid-template-rows:auto 1fr auto;grid-template-areas:"h l" "i l" "a a";column-gap:26px;row-gap:12px;align-items:start}
  .gx-pilar .num{display:none}            /* «Pilar 0N» ya lo indica; aquí taparía la lista */
  .gx-pilar-h{grid-area:h}
  .gx-pilar-idea{grid-area:i}
  .gx-pilar-bloque{grid-area:l}
  .gx-pilar-aud{grid-area:a;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:2px}
  /* panel: el menú pasa a una fila horizontal arriba */
  .gx-panel{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:12px}
  .gx-pnav{flex-direction:row;align-items:center;padding:6px;border-radius:16px;overflow-x:auto;overflow-y:hidden}
  .gx-pnav-head,.gx-pnav-site{display:none}
  .gx-pnav nav{flex-direction:row;gap:2px}
  .gx-pnav-g{flex-direction:row;align-items:center}
  .gx-pnav-g+.gx-pnav-g{padding:0 0 0 4px;margin-left:2px;border-top:0;border-left:1px solid var(--gx-line)}
  .gx-pnav-gt{display:none}
  .gx-pnav-gl,.gx-pnav-g.cerrado .gx-pnav-gl{display:flex;flex-direction:row;gap:2px}
  .gx-pnav-b{white-space:nowrap;width:auto}
  .gx-grid3,.gx-grid4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gx-cfg-textos,.gx-cfg-nav{grid-template-columns:minmax(0,1fr)}
  .gx-pil-cols{grid-template-columns:minmax(0,1fr)}
  .gx-ctema-grid{grid-template-columns:minmax(0,1fr)}
  .gx-logo-cfg{grid-template-columns:minmax(0,1fr)}
  .gx-ini-it{grid-template-columns:24px 110px minmax(0,1fr) minmax(0,1fr) auto;grid-template-areas:"n img txt txt mov" "n img al sep mov"}
  .gx-ini-it>.gx-ini-n{grid-area:n}
  .gx-ini-it>.gx-vis-img{grid-area:img;width:110px}
  .gx-ini-it>.gx-ini-txt{grid-area:txt}
  .gx-ini-it>:nth-child(4){grid-area:al}
  .gx-ini-it>:nth-child(5){grid-area:sep}
  .gx-ini-it>.gx-ini-mov{grid-area:mov}
  .gx-permgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:820px){
  .gx-hero{padding:14px 18px 6px}
  .gx-sec.gx-slide{padding:18px 18px 22px}
  .gx-catv{padding:10px 18px 110px}
  .gx-circuit{width:70vw;opacity:.5}
  .gx-circuit.c-br{display:none}
  .gx-user-n{display:none}
  .gx-user{padding-right:3px}
  #gxModalCuerpo.gx-mgrid{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:640px){
  .gx-hero .gx-pos{margin-top:calc(var(--gx-sep,0px) * .75)}
  .gx-ini-it{grid-template-columns:24px minmax(0,1fr) auto;grid-template-areas:"n txt mov" "img img img" "al al al" "sep sep sep"}
  .gx-ini-it>.gx-vis-img{width:100%}
  /* celular: los botones de la derecha se despliegan desde «Más opciones» */
  .gx-flot-toggle{display:inline-grid!important}
  .gx-flot-items{display:none;position:absolute;top:calc(100% + 10px);right:0;flex-direction:column;align-items:flex-end;gap:8px;padding:10px;border-radius:20px;
    background:var(--gx-top-panel);border:1px solid var(--gx-line);box-shadow:var(--gx-shadow-hi)}
  .gx-flot.abierto .gx-flot-items{display:flex;animation:gxPop .22s ease}
  .gx-flot .gx-user-n{display:flex}
  .gx-flot .gx-user{padding-right:12px}
  .gx-body-panel .gx-flot .gx-user{display:flex}
  .gx-catv .gx-crumb{min-height:0}
  .gx-docente-btn{height:42px;padding:0 16px 0 6px;font-size:.86rem}
  .gx-hero{padding:12px 16px 6px}
  .gx-eyebrow{font-size:.64rem;letter-spacing:.12em}
  .gx-word{margin-top:12px}
  .gx-word .gx-wm{width:min(86vw,360px)}
  .gx-sub{letter-spacing:.16em;padding-left:.16em;max-width:320px}
  .gx-stage{gap:14px;margin-top:6px}
  .gx-core{width:min(92vw,calc(min(78vw,300px,max(170px,calc(100vh - 400px - var(--gx-hero-extra,0px) - var(--gx-stage-extra,0px)))) * var(--gx-logo-k,1)))}
  .gx-ring.r3{display:none}
  .gx-hero.con-pil{--gx-hero-extra:70px}
  .gx-pil-mini{gap:6px}
  .gx-pil-mini-k{display:none}
  .gx-pil-chip{flex-direction:column;gap:4px;padding:8px 6px;text-align:center;border-radius:14px}
  .gx-pil-chip .gx-ico{width:30px;height:30px}
  .gx-pil-chip-t b{font-size:.76rem}
  .gx-pil-chip-t small{display:none}
  .gx-motto{letter-spacing:.14em;font-size:.78rem}
  .gx-motto b{margin:0 .25em}
  .gx-sec-head{flex-direction:column;align-items:stretch}
  .gx-sec.gx-slide .gx-lead{font-size:.88rem}
  .gx-mods{gap:12px}
  .gx-mod,.gx-sec.gx-slide .gx-mod{min-height:0;padding:16px 14px 14px;border-radius:20px}
  .gx-ico{width:44px;height:44px}
  .gx-ico svg{width:20px;height:20px}
  .gx-mod h3{font-size:1.02rem;margin-top:12px}
  .gx-mod p{font-size:.82rem}
  .gx-mod-foot{display:none}
  /* pilares en celular: todo apilado */
  .gx-pilar{display:flex;padding:18px 16px 16px;gap:12px}
  .gx-pilar-aud{grid-template-columns:minmax(0,1fr)}
  .gx-pilar .num{font-size:3rem}
  .gx-pil-cierre{padding:14px 16px}
  .gx-mod.feat{grid-column:1/-1}
  .gx-mod.feat h3{font-size:1.25rem}
  .gx-wave{width:60%;height:48px;opacity:.6}
  .gx-mod.feat .gx-mod-foot{display:flex;min-height:44px;padding-top:6px}
  .gx-mod.feat .gx-mod-foot small{display:none}
  .gx-tag{font-size:.6rem;padding:3px 8px}
  .gx-grid{background-size:40px 40px}
  .gx-cat-title{gap:12px}
  .gx-cat-title .gx-ico-lg{width:52px;height:52px}
  .gx-cat-title .gx-lead{font-size:.86rem}
  .gx-apps{grid-template-columns:minmax(0,1fr);gap:10px}
  .gx-foot{font-size:.66rem}
  .gx-adminlink span{display:none}
  .gx-grid2,.gx-grid3,.gx-grid4{grid-template-columns:minmax(0,1fr)}
  .gx-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gx-dash-grid{grid-template-columns:minmax(0,1fr)}
  .gx-dcard-2,.gx-dcard-3{grid-column:auto}
  .gx-row{flex-wrap:wrap;padding:10px 12px}
  .gx-row-act{width:100%;justify-content:flex-end;border-top:1px solid var(--gx-line);padding-top:8px}
  .gx-imgslot{flex-direction:column}
  .gx-dlg{padding:20px 16px 16px;border-radius:20px}
  .gx-permgrid{grid-template-columns:minmax(0,1fr)}
  .gx-psec-act{width:100%}
  .gx-psec-act .gx-btn{flex:1}
  .gx-viewer-logo{display:none}
}
@media (max-width:420px){
  .gx-mods{grid-template-columns:minmax(0,1fr);gap:10px}
  /* tarjeta compacta: ícono a la izquierda; título y texto con todo el ancho */
  .gx-mod:not(.feat){display:grid;grid-template-columns:44px minmax(0,1fr);column-gap:12px;row-gap:4px;align-items:start;padding:14px}
  .gx-mod:not(.feat) .gx-mod-top{display:contents}
  .gx-mod:not(.feat) .gx-ico{grid-column:1;grid-row:1/4}
  .gx-mod:not(.feat) h3{grid-column:2;grid-row:1;margin:0;font-size:1rem}
  .gx-mod:not(.feat) p{grid-column:2;grid-row:2;margin:0;font-size:.82rem;line-height:1.42}
  .gx-mod:not(.feat) .gx-tag{grid-column:2;grid-row:3;justify-self:start;margin-top:4px}
  .gx-tag{font-size:.56rem;padding:3px 7px;letter-spacing:.06em}
}
/* pantallas grandes: el contenido se ensancha y caben más tarjetas por fila */
@media (min-width:1440px){
  .gx-sec,.gx-catv{max-width:1360px}
}
@media (min-width:1600px){
  .gx-stage,.gx-hero .gx-pos{max-width:1400px}
  .gx-sec,.gx-catv{max-width:1520px}
  .gx-core{width:min(100%,calc(min(520px,max(190px,calc(100vh - 420px - var(--gx-hero-extra,0px) - var(--gx-stage-extra,0px)))) * var(--gx-logo-k,1)))}
}
/* pantallas bajas: se reduce el hero para que todo quepa sin scroll */
@media (max-height:700px){
  .gx-hero .gx-pos{margin-top:calc(var(--gx-sep,0px) * .7)}
  .gx-eyebrow{padding:4px 14px 4px 10px}
  .gx-word{margin-top:10px}
  .gx-word .gx-wm{width:clamp(220px,min(50vw,80vh),560px)}
  .gx-sub{margin-top:8px}
  .gx-side{padding:14px}
  .gx-cta{margin-top:10px;padding:6px 6px 6px 18px}
  .gx-cta span{width:30px;height:30px}
}

@media (min-width:1920px){
  .gx-sec,.gx-catv{max-width:1720px}
}

/* ── Movimiento reducido ──────────────────────────────────────────── */
@media (prefers-reduced-motion:reduce){
  @view-transition{navigation:none}
  .gx-slide,.gx-catv,.gx-psec{animation:none!important}
  .gx-bg *,.gx *,.gx-flot *,.gx-top *,.gx-dialog,.gx-dialog *,.gx-toast,.gx-viewer *{animation:none!important;transition:none!important}
  .gx-proc::before,.gx-spin{animation:gxGiro 1.6s linear infinite!important}   /* el indicador de carga sí gira (lento) */
  .gx-circuit .pulse{display:none}
  .gx-wave path{stroke-dashoffset:0}
  .gx-js .gx-rv{opacity:1;transform:none}
}


/* ══════════════════════════════════════════════════════════════════════
   EVOLUCIÓN v4 — estados, microinteracciones, buscador, favoritas, visor
   ══════════════════════════════════════════════════════════════════════ */
/* accesibilidad: saltar al contenido (visible solo con el teclado) */
.gx-saltar{position:fixed;left:12px;top:-60px;z-index:3000;padding:10px 16px;border-radius:12px;background:var(--gx-solid);color:#fff!important;font-weight:600;font-size:.88rem;box-shadow:var(--gx-shadow-hi);transition:top .2s}
.gx-saltar:focus{top:12px}
#gxContenido{position:absolute;outline:0}
/* símbolo con <picture> (WEBP): la imagen sigue siendo el elemento del grid */
.gx-core-tilt>picture{display:contents}
.gx-core-tilt>picture>source{display:none}      /* si no, <source> ocupa una celda del grid y desplaza el símbolo hacia abajo */
kbd,.gx-kbd{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:6px;border:1px solid var(--gx-field-brd);border-bottom-width:2px;
  background:var(--gx-card-solid);color:var(--gx-muted);font:600 .68rem/1 'Outfit',sans-serif}

/* microinteracciones: respuesta táctil al presionar */
.gx-btn:active,.gx-iconbtn:active,.gx-pill:active,.gx-docente-btn:active,.gx-pnav-b:active,.gx-seg span:active,.gx-seg-sm button:active{transform:scale(.96)}
.gx-cta:active{transform:translateY(0) scale(.98)}
.gx-menu a:active{transform:scale(.94)}
.gx-btn,.gx-iconbtn,.gx-pill,.gx-docente-btn,.gx-pnav-b,.gx-menu a{transition:transform .16s ease,background .2s,color .2s,border-color .2s,box-shadow .2s}
.gx-pnav-b.on{box-shadow:0 8px 18px -10px rgba(11,31,79,.55)}

/* estado «procesando»: spinner en el botón */
@keyframes gxGiro{to{transform:rotate(360deg)}}
.gx-proc{cursor:progress;opacity:.92}
.gx-proc::before{content:"";width:14px;height:14px;flex:none;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:gxGiro .7s linear infinite}
.gx-iconbtn.gx-proc>svg{display:none}
.gx-spin{width:34px;height:34px;border-radius:50%;border:3px solid rgba(var(--gx-link-rgb),.2);border-top-color:var(--gx-electric);animation:gxGiro .8s linear infinite}

/* cambios sin guardar: punto ámbar en el menú y en «Guardar» */
.gx-pnav-b.pend::after{content:"";width:8px;height:8px;margin-left:auto;border-radius:50%;background:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.2);flex:none}
.gx-btn.pend{position:relative}
.gx-btn.pend::after{content:"";position:absolute;top:-2px;right:-2px;width:10px;height:10px;border-radius:50%;background:#f59e0b;border:2px solid var(--gx-card-solid)}

/* esqueletos de carga (panel y buscador) */
@keyframes gxBrillo{from{background-position:120% 0}to{background-position:-20% 0}}
.gx-sk .gx-ico,.gx-sk b,.gx-sk small,.gx-busq-sk i,.gx-busq-sk b,.gx-busq-sk small{
  background:linear-gradient(90deg,rgba(var(--gx-link-rgb),.07) 30%,rgba(var(--gx-link-rgb),.16) 50%,rgba(var(--gx-link-rgb),.07) 70%) 0 0/300% 100%;animation:gxBrillo 1.3s linear infinite;border-radius:8px;color:transparent}
.gx-sk{pointer-events:none;box-shadow:none}
.gx-sk .gx-ico{border:0}
.gx-sk b{display:block;width:38%;height:14px}
.gx-sk small{display:block;width:62%;height:10px;margin-top:4px}
/* listas vacías y con error */
.gx-list-empty{display:flex;flex-direction:column;align-items:center;gap:8px}
.gx-list-empty>svg{width:30px;height:30px;color:var(--gx-electric);opacity:.6}
.gx-list-empty p{margin:0}
.gx-list-err{border-color:rgba(239,68,68,.35)}
.gx-list-err>svg{color:var(--gx-danger)}
.gx-toolbar-der{margin-left:auto}

/* diálogos y avisos: salida suave */
@keyframes gxPopOut{to{opacity:0;transform:translateY(8px) scale(.98)}}
@keyframes gxFundido{from{opacity:0}}
.gx-dialog[open]::backdrop{animation:gxFundido .25s ease}
.gx-dialog.cerrando{animation:gxPopOut .17s ease forwards}
.gx-dialog.cerrando::backdrop{opacity:0;transition:opacity .17s}
.gx-toast{cursor:pointer;transition:opacity .3s,transform .3s}
.gx-toast.sale{opacity:0;transform:translateX(16px)}

/* ── Vista de categoría: favoritas, filtro y orden ─────────────────── */
.gx-app-w[hidden]{display:none}
.gx-fav{appearance:none;position:absolute;top:12px;right:12px;z-index:2;width:34px;height:34px;display:grid;place-items:center;border-radius:50%;cursor:pointer;
  border:1px solid transparent;background:transparent;color:var(--gx-muted);transition:color .2s,background .2s,transform .2s}
.gx-fav svg{width:18px;height:18px;transition:fill .2s}
.gx-fav:hover{color:#f59e0b;background:rgba(245,158,11,.1)}
.gx-fav.on{color:#f59e0b}
.gx-fav.on svg,.gx-fav-btn.on svg{fill:currentColor}
.gx-fav-btn.on{color:#f59e0b!important}
@keyframes gxEstrella{40%{transform:scale(1.35) rotate(-12deg)}}
.gx-fav.pop,.gx-fav-btn.pop{animation:gxEstrella .38s ease}
.gx-seg-sm{padding:3px;align-self:center}
.gx-seg-sm button{appearance:none;border:0;background:none;cursor:pointer;display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:999px;font:600 .8rem 'Outfit',sans-serif;color:var(--gx-ink2)}
.gx-seg-sm button svg{width:14px;height:14px}
.gx-seg-sm button.on{background:var(--gx-solid);color:#fff}
.gx-seg-sm .n{display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;font-size:.7rem;line-height:18px;color:inherit;background:rgba(var(--gx-link-rgb),.14)}
.gx-seg-sm button.on .n{background:rgba(255,255,255,.22)}
.gx-orden{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--gx-muted)}
.gx-orden select{height:36px;padding:0 10px;border-radius:999px;border:1px solid var(--gx-field-brd);background:var(--gx-field);color:var(--gx-ink);font:500 .84rem 'Outfit',sans-serif;cursor:pointer}
.gx-search .gx-kbd{flex:none}
.gx-search:focus-within{border-color:var(--gx-electric);box-shadow:0 0 0 4px rgba(30,123,255,.14)}
.gx-search:focus-within .gx-kbd{display:none}
.gx-sin-res{display:flex;flex-direction:column;align-items:center;gap:6px}
.gx-sin-res p{margin:0}

/* ── Buscador global ───────────────────────────────────────────────── */
.gx-dialog-busq{max-width:min(640px,calc(100vw - 24px));margin-top:min(12vh,110px)}
.gx-busq{padding:0;gap:0;overflow:hidden;max-height:min(620px,calc(100dvh - 140px))}
.gx-busq-in{display:flex;align-items:center;gap:10px;padding:10px 10px 10px 18px;border-bottom:1px solid var(--gx-line)}
.gx-busq-in>svg{width:20px;height:20px;color:var(--gx-electric);flex:none}
.gx-busq-in input{flex:1;min-width:0;height:44px;border:0;background:none;outline:none;font:500 1.02rem 'Outfit',sans-serif;color:var(--gx-ink)}
.gx-body .gx-busq-in input:focus-visible{outline:0}
.gx-busq-in input::-webkit-search-cancel-button{display:none}
.gx-busq-in:focus-within>svg{transform:scale(1.08)}
.gx-busq-in>svg{transition:transform .2s}
.gx-busq-in .gx-iconbtn{box-shadow:none;width:36px;height:36px}
.gx-busq-res{flex:1;min-height:120px;overflow-y:auto;padding:6px 8px 10px;scrollbar-width:thin;overscroll-behavior:contain}
.gx-busq-g{display:flex;align-items:center;gap:6px;margin:10px 10px 4px;font-size:.66rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gx-muted)}
.gx-busq-g svg{width:13px;height:13px}
.gx-busq-it{position:relative;display:flex;align-items:center;border-radius:14px;transition:background .15s}
.gx-busq-it>a{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:8px 10px;color:inherit!important;border-radius:14px}
.gx-busq-it[aria-selected="true"],.gx-busq-it:hover{background:rgba(var(--gx-link-rgb),.09)}
.gx-busq-it[aria-selected="true"]{box-shadow:inset 3px 0 0 var(--gx-electric)}
.gx-busq-ico{width:38px;height:38px;flex:none;display:grid;place-items:center;border-radius:12px;background:var(--gx-ico-bg);border:1px solid rgba(var(--gx-link-rgb),.14);color:var(--gx-blue);overflow:hidden}
html[data-gx-tema="oscuro"] .gx-busq-ico{color:var(--gx-glow)}
.gx-busq-ico svg{width:19px;height:19px}
.gx-busq-ico img{width:100%;height:100%;object-fit:cover}
.gx-busq-t{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.gx-busq-t b{font-weight:600;color:var(--gx-strong);overflow-wrap:break-word}
.gx-busq-t small{font-size:.78rem;color:var(--gx-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-busq-t mark{background:rgba(25,195,245,.25);color:inherit;border-radius:3px;padding:0 1px}
.gx-busq-ext{color:var(--gx-muted);display:grid}
.gx-busq-ext svg{width:15px;height:15px}
.gx-busq-it .gx-fav{position:static;width:32px;height:32px;margin-right:4px;flex:none}
.gx-busq-cat .gx-busq-ico{border-radius:50%}
.gx-busq-tip{margin:10px 12px;padding:10px 12px;border-radius:12px;font-size:.82rem;color:var(--gx-ink2);background:rgba(var(--gx-link-rgb),.06)}
.gx-busq-vacio{display:flex;flex-direction:column;align-items:center;gap:6px;padding:34px 16px;text-align:center;color:var(--gx-ink2)}
.gx-busq-vacio>svg{width:34px;height:34px;color:var(--gx-electric);opacity:.6}
.gx-busq-vacio p{margin:0;font-weight:600}
.gx-busq-vacio small{color:var(--gx-muted)}
.gx-busq-vacio.err p{color:var(--gx-danger)}
.gx-busq-sk{display:flex;align-items:center;gap:12px;padding:8px 10px}
.gx-busq-sk i{width:38px;height:38px;border-radius:12px;flex:none}
.gx-busq-sk span{flex:1}
.gx-busq-sk b{display:block;width:45%;height:13px}
.gx-busq-sk small{display:block;width:70%;height:10px;margin-top:6px}
.gx-busq-pie{display:flex;flex-wrap:wrap;gap:6px 16px;padding:9px 16px;border-top:1px solid var(--gx-line);font-size:.74rem;color:var(--gx-muted)}
.gx-busq-pie span{display:inline-flex;align-items:center;gap:4px}
.gx-busq-atajo{margin-left:auto}

/* ── Visor: carga, reinicio y compartir ────────────────────────────── */
.gx-viewer{isolation:isolate}
.gx-viewer-carga{position:absolute;inset:58px 0 0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:20px;text-align:center;
  background:var(--gx-bg);color:var(--gx-ink2);transition:opacity .3s}
.gx-viewer-carga.fuera{opacity:0;pointer-events:none}
.gx-viewer-carga p{margin:0;max-width:420px;font-size:.92rem}
.gx-viewer-carga.lento .gx-spin{opacity:.4}
.gx-viewer-carga-act{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}

@media (max-width:640px){
  .gx-cat-tools{gap:8px}
  .gx-search .gx-kbd{display:none}
  .gx-orden span{display:none}
  .gx-dialog-busq{margin-top:10px;max-width:calc(100vw - 16px)}
  .gx-busq{max-height:calc(100dvh - 30px)}
  .gx-busq-pie{display:none}
  .gx-viewer-bar{gap:6px;padding:8px 8px}
  .gx-viewer-bar .gx-iconbtn{width:36px;height:36px}
  .gx-viewer-logo{display:none}
  .gx-toolbar-der{margin-left:0}
}
/* táctil: objetivos de al menos 44 px en los controles principales */
@media (pointer:coarse){
  .gx-fav{width:40px;height:40px}
  .gx-seg-sm button{padding:9px 14px}
  .gx-orden select{height:42px}
}
/* celular horizontal / pantallas muy bajas: el hero no pasa por debajo de los botones flotantes */
@media (max-height:520px) and (orientation:landscape){
  .gx-hero{padding-top:60px}
}
@media (max-width:640px){
  .gx-doc-hola{gap:10px}
  .gx-doc-hola-foto{width:48px;height:48px}
}
/* ordenar arrastrando (Categorías e Institucional) */
.gx-asa{flex:none;display:grid;place-items:center;width:22px;height:34px;margin:0 -4px 0 -6px;border-radius:8px;color:var(--gx-muted);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.gx-asa svg{width:16px;height:16px}
.gx-asa:hover{color:var(--gx-electric);background:rgba(var(--gx-link-rgb),.08)}
.ordenando,.ordenando *{cursor:grabbing!important;user-select:none}
.gx-row.arrastrando{position:relative;z-index:2;border-color:var(--gx-electric);box-shadow:0 14px 30px -12px rgba(11,31,79,.45),0 0 0 2px rgba(var(--gx-link-rgb),.25);opacity:.96}
/* buscador: se resalta solo la píldora (no el campo de adentro) */
.gx-search input:focus,.gx-search input:focus-visible{outline:none!important;box-shadow:none!important}
.gx-search:focus-within{border-color:var(--gx-electric);box-shadow:0 0 0 3px rgba(30,123,255,.18),var(--gx-shadow)}
/* foto pequeña de docentes en los formularios (Compartir solo con… · Autor) */
.gx-av-mini{flex:none;width:28px;height:28px;border-radius:50%;overflow:hidden;display:grid;place-items:center;font-size:.66rem;font-weight:700;color:#fff;
  background:linear-gradient(135deg,var(--gx-electric),var(--gx-cyan));box-shadow:0 0 0 2px var(--gx-card-solid)}
.gx-av-mini img{width:100%;height:100%;object-fit:cover;display:block}
#gxModal .gx-check-doc{gap:8px;padding:6px 10px}
.gx-autor-in{display:flex;align-items:center;gap:8px}
.gx-autor-in select{flex:1;min-width:0}
.gx-autor-in .gx-av-mini{width:34px;height:34px}
/* selector de persona con buscador interno (Autor de la app) */
.gx-autor{display:flex;flex-direction:column;gap:6px}
.gx-autor .gx-seg{align-self:flex-start}
.gx-psel{position:relative}
.gx-psel-btn{appearance:none;width:100%;display:flex;align-items:center;gap:10px;min-height:46px;padding:6px 12px 6px 8px;border-radius:14px;cursor:pointer;text-align:left;
  border:1px solid var(--gx-field-brd);background:var(--gx-field);color:var(--gx-ink);font:inherit}
.gx-psel-btn:hover,.gx-psel-btn[aria-expanded="true"]{border-color:var(--gx-electric)}
.gx-psel-btn[aria-expanded="true"]{box-shadow:0 0 0 4px rgba(30,123,255,.15)}
.gx-psel-fl{margin-left:auto;color:var(--gx-muted);font-size:.8rem}
.gx-psel-t{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.gx-psel-t b{font-weight:600;font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-psel-t b.vacio{font-weight:500;color:var(--gx-muted)}
.gx-psel-t small{font-size:.72rem;color:var(--gx-muted)}
.gx-psel-pop{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 6px);padding:8px;border-radius:16px;background:var(--gx-card-solid);border:1px solid var(--gx-line);box-shadow:var(--gx-shadow-hi);animation:gxPop .18s ease}
.gx-psel-bus{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:999px;border:1px solid var(--gx-field-brd);background:var(--gx-field)}
.gx-psel-bus:focus-within{border-color:var(--gx-electric);box-shadow:0 0 0 3px rgba(30,123,255,.15)}
.gx-psel-bus svg{width:16px;height:16px;color:var(--gx-muted);flex:none}
.gx-psel-bus input,#gxModal .gx-psel-bus input{flex:1;min-width:0;height:auto;padding:0!important;margin:0;border:0!important;border-radius:0!important;background:none!important;outline:none!important;box-shadow:none!important;font:inherit;font-size:.88rem;color:var(--gx-ink)}
.gx-psel.arriba .gx-psel-pop{top:auto;bottom:calc(100% + 6px)}
.gx-psel-lista{margin-top:6px;max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;scrollbar-width:thin;overscroll-behavior:contain}
.gx-psel-op{appearance:none;display:flex;align-items:center;gap:10px;width:100%;padding:6px 8px;border:0;border-radius:11px;background:none;cursor:pointer;text-align:left;font:inherit;color:var(--gx-ink)}
.gx-psel-op:hover,.gx-psel-op:focus-visible{background:rgba(var(--gx-link-rgb),.09);outline:none}
.gx-psel-op.on{background:rgba(var(--gx-link-rgb),.16)}
.gx-psel-op .gx-av-mini,.gx-psel-btn .gx-av-mini{width:32px;height:32px}
.gx-psel-msg{margin:8px 6px;font-size:.8rem;color:var(--gx-muted)}
.gx-chipmini.est{background:rgba(16,185,129,.13);color:#0f7a55}

/* ── AdminPage → Auditoría (accesos, cambios y páginas vistas) ──────────
   Dos series fijas: con cuenta (azul) y sin cuenta (cyan); en oscuro, tonos
   más claros para que contrasten con la tarjeta. */
.gx-aud{--gx-aud-us:#1557d6;--gx-aud-anon:#19c3f5}
html[data-gx-tema="oscuro"] .gx-aud,html[data-gx-tema="oscuro"] .gx-aud-dlg{--gx-aud-us:#4b93ff;--gx-aud-anon:#7fe6ff}
.gx-aud .gx-psec-act{align-items:flex-end}
.gx-aud-dash{gap:12px}
.gx-aud-grid .gx-dcard{min-height:0}
.gx-aud-grid .gx-dcard h3{flex-wrap:wrap}
.gx-aud-ley{margin-left:auto;display:flex;gap:12px;font-size:.68rem;letter-spacing:0;text-transform:none;font-weight:600;color:var(--gx-ink2)}
.gx-aud-ley span{display:inline-flex;align-items:center;gap:5px}
.gx-aud-ley i,.gx-aud-tip i{width:10px;height:10px;border-radius:3px;display:inline-block;flex:none}
.gx-aud i.us{background:var(--gx-aud-us)} .gx-aud i.anon{background:var(--gx-aud-anon)}
/* columnas apiladas */
.gx-aud-chart{position:relative;padding:8px 0 22px 38px}
.gx-aud-ejes{position:absolute;inset:8px 0 22px 0;pointer-events:none}
.gx-aud-ejes i{position:absolute;left:38px;right:0;border-top:1px solid var(--gx-line)}
.gx-aud-ejes i:nth-child(1){top:0}
.gx-aud-ejes i:nth-child(2){top:50%}
.gx-aud-ejes i:nth-child(3){top:100%;border-top-color:rgba(var(--gx-link-rgb),.3)}
.gx-aud-ejes i::before{content:attr(data-v);position:absolute;right:calc(100% + 6px);top:-.65em;font-size:.62rem;font-style:normal;color:var(--gx-muted);font-variant-numeric:tabular-nums}
.gx-aud-cols{position:relative;height:150px;display:flex;align-items:flex-end;gap:3px}
.gx-aud-cols.denso{gap:0}
.gx-aud-col{position:relative;flex:1 1 0;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:flex-end;border-radius:4px}
.gx-aud-col.on{background:rgba(var(--gx-link-rgb),.07)}
.gx-aud-col .pila{display:flex;flex-direction:column;min-height:0;border-radius:4px 4px 0 0;overflow:hidden;margin:0 1px}
.gx-aud-cols.denso .pila{border-radius:1px 1px 0 0;margin:0}
.gx-aud-col .pila span{flex-basis:0;min-height:1px}
.gx-aud-col .anon{background:var(--gx-aud-anon)}
.gx-aud-col .us{background:var(--gx-aud-us)}
.gx-aud-col .us.gap{border-top:2px solid var(--gx-card-solid)}
.gx-aud-col.on .pila{filter:brightness(1.1)}
.gx-aud-col em{position:absolute;top:calc(100% + 5px);left:50%;transform:translateX(-50%);font-size:.6rem;font-style:normal;color:var(--gx-muted);white-space:nowrap}
.gx-aud-tip{position:absolute;top:0;z-index:3;min-width:160px;display:flex;flex-direction:column;gap:3px;padding:8px 10px;border-radius:10px;font-size:.74rem;
  background:var(--gx-card-solid);border:1px solid var(--gx-line);box-shadow:var(--gx-shadow);color:var(--gx-ink2);pointer-events:none}
.gx-aud-tip[hidden]{display:none}
.gx-aud-tip>b{color:var(--gx-strong);font-size:.78rem}
.gx-aud-tip span{display:flex;align-items:center;gap:6px}
.gx-aud-tip span b{margin-left:auto;color:var(--gx-ink);font-variant-numeric:tabular-nums}
.gx-aud-datos{font-size:.74rem}
.gx-aud-datos summary{cursor:pointer;color:var(--gx-electric);font-weight:600;width:max-content}
.gx-aud-datos .gx-aud-tabla{max-height:220px;margin-top:6px}
/* ranking horizontal */
.gx-aud-rank{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:.76rem}
.gx-aud-rank li{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;align-items:center;gap:8px}
.gx-aud-rank .t{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;color:var(--gx-ink)}
.gx-aud-rank .t small{margin-left:6px;font-weight:500;color:var(--gx-muted)}
.gx-aud-rank .b{height:8px;border-radius:999px;background:rgba(var(--gx-link-rgb),.08);overflow:hidden}
.gx-aud-rank .b i{display:block;height:100%;border-radius:999px;background:var(--gx-aud-us)}
.gx-aud-rank>li>b{font-variant-numeric:tabular-nums;color:var(--gx-strong);min-width:2.5em;text-align:right}
/* tarjetas angostas: la barra va debajo del nombre */
.gx-aud-grid .gx-dcard:not(.gx-dcard-2):not(.gx-dcard-3):not(.gx-dcard-4) .gx-aud-rank li{grid-template-columns:minmax(0,1fr) auto;gap:3px 8px}
.gx-aud-grid .gx-dcard:not(.gx-dcard-2):not(.gx-dcard-3):not(.gx-dcard-4) .gx-aud-rank .b{grid-column:1/-1;order:3}
.gx-aud-vacio{margin:0;font-size:.78rem;color:var(--gx-muted)}
/* tablas */
.gx-aud-tabla{overflow:auto;scrollbar-width:thin;border-radius:12px}
.gx-aud-tabla-us{max-height:320px}
.gx-aud-t{width:100%;border-collapse:collapse;font-size:.76rem}
.gx-aud-t th{position:sticky;top:0;z-index:1;text-align:left;padding:6px 8px;font-size:.62rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--gx-muted);background:var(--gx-card-solid);white-space:nowrap}
.gx-aud-t td{padding:5px 8px;border-top:1px solid var(--gx-line);color:var(--gx-ink);vertical-align:middle;white-space:nowrap}
.gx-aud-t tbody tr:hover td{background:rgba(var(--gx-link-rgb),.05)}
.gx-aud-t tr.off td{opacity:.55}
.gx-aud-t .num{text-align:right;font-variant-numeric:tabular-nums}
.gx-aud-t td.alerta{color:var(--gx-danger);font-weight:700}
.gx-aud-t td small{color:var(--gx-muted);margin-left:4px}
.gx-aud-t .gx-aud-det{display:inline-block;white-space:normal;min-width:220px;max-width:460px;color:var(--gx-ink2);line-height:1.35}
.gx-aud-t-actividad td:nth-child(5){white-space:normal;min-width:120px}
.gx-aud-quien{padding:0;font-size:inherit}
.gx-aud-anon{color:var(--gx-muted);font-style:italic}
.gx-iconbtn-sm{width:30px;height:30px}
.gx-iconbtn-sm svg{width:15px;height:15px}
.gx-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* listas con filtros (Historial de accesos, Cambios, Páginas vistas) */
.gx-aud-lista{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px}
.gx-aud-lista[hidden]{display:none}
.gx-aud-lista>.gx-aud-tabla{flex:1;min-height:0;background:var(--gx-card);border:1px solid var(--gx-card-brd);box-shadow:var(--gx-shadow)}
.gx-aud-lista input[type=date]{min-width:0}
.gx-aud-pag{flex:none;display:flex;align-items:center;justify-content:flex-end;gap:8px;font-size:.76rem;color:var(--gx-muted)}
.gx-aud-pag span{margin-right:auto}
.gx-aud-buscar{margin-left:auto;height:32px;flex:0 1 240px;text-transform:none;letter-spacing:0}
.gx-aud-buscar input{font-size:.78rem}
.gx-aud-mas{margin-left:auto;display:inline-flex;align-items:center;gap:4px;text-transform:none;letter-spacing:0}
/* últimos accesos */
.gx-aud-feed{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;max-height:300px;overflow-y:auto;scrollbar-width:thin}
.gx-aud-feed li{display:grid;grid-template-columns:130px minmax(0,1fr) minmax(0,1.3fr) auto;gap:10px;align-items:center;padding:6px 4px;border-top:1px solid var(--gx-line);font-size:.76rem}
.gx-aud-feed li:first-child{border-top:0}
.gx-aud-feed li>small{color:var(--gx-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-aud-feed time{color:var(--gx-ink2);font-variant-numeric:tabular-nums;white-space:nowrap}
.gx-aud-feed .gx-chipmini{justify-self:start}
/* historial de un usuario */
.gx-aud-dlg .gx-dlg{display:flex;flex-direction:column;gap:12px;max-height:calc(100vh - 40px)}
.gx-aud-dlg #gxAudDlgCuerpo{display:flex;flex-direction:column;gap:10px;min-height:0;flex:1}
.gx-aud-dlg-h{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;font-size:.78rem;color:var(--gx-muted)}
.gx-aud-dlg-h b{color:var(--gx-ink)}
.gx-aud-dlg .gx-seg button{appearance:none;border:0;background:none;cursor:pointer;padding:6px 12px;border-radius:999px;font:600 .8rem 'Outfit',sans-serif;color:var(--gx-ink2)}
.gx-aud-dlg .gx-seg button.on{background:var(--gx-solid);color:#fff}
.gx-aud-dlg .gx-seg button small{opacity:.75;margin-left:2px}
.gx-aud-dlg-t{max-height:min(52vh,460px);border:1px solid var(--gx-line)}
@media (max-width:1099px){
  .gx-aud .gx-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .gx-aud-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gx-aud-grid .gx-dcard-3,.gx-aud-grid .gx-dcard-2{grid-column:1/-1}
}
@media (max-width:640px){
  .gx-aud .gx-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gx-aud-grid{grid-template-columns:minmax(0,1fr)}
  .gx-aud-feed li{grid-template-columns:minmax(0,1fr) auto}
  .gx-aud-feed li>small{grid-column:1/-1}
}
.gx-aud-lista .gx-toolbar{gap:8px 12px}
.gx-aud-lista .gx-toolbar .gx-field-in{flex:0 1 auto}
.gx-aud-lista .gx-toolbar select{max-width:230px}

/* ── Diseño de tarjetas → Categorías (portada, sección Categorías) ───────
   Mismas variables que apps y módulos (--tjc-* en :root). Va al final del
   archivo para mandar también sobre las reglas de celular. La destacada
   conserva su degradado y su onda; el resto toma el fondo elegido. */
.gx-tj-c{--tj-alto:var(--tjc-alto,150px);--tj-img:var(--tjc-img,.3);--tj-r:var(--tjc-r,24px);--tj-ri:var(--tjc-ri,14px);
  --tj-ancho:var(--tjc-ancho,272px);--tj-tit:var(--tjc-tit,19px);--tj-lin:var(--tjc-lin,4);
  --tj-bgcl:var(--tjc-bgcl,#ffffff);--tj-bgco:var(--tjc-bgco,#0f1e44);--tj-op:var(--tjc-op,1);--tj-bg:var(--gx-card)}
.gx-tj-c.tj-bg-propio{--tj-bg:var(--tj-bgcl)}
html[data-gx-tema="oscuro"] .gx-tj-c.tj-bg-propio{--tj-bg:var(--tj-bgco)}
.gx-mods.gx-tj-c{grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--tj-ancho)),1fr))}
.gx-mods.gx-tj-c .gx-mod{min-height:var(--tj-h);border-radius:var(--tj-r)}
.gx-mods.gx-tj-c .gx-mod:not(.feat){background:var(--tj-bg)}
@supports (background:color-mix(in srgb,red 10%,transparent)){
  .gx-mods.gx-tj-c .gx-mod:not(.feat){background:color-mix(in srgb,var(--tj-bg) calc(var(--tj-op) * 100%),transparent)}
}
.gx-mods.gx-tj-c.tj-transp .gx-mod:not(.feat){-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
/* imagen o ícono: lado = % del alto de la tarjeta; círculo o esquinas redondeadas */
.gx-mods.gx-tj-c .gx-mod .gx-ico{width:var(--tj-isz);height:var(--tj-isz);overflow:hidden}
.gx-mods.gx-tj-c .gx-mod .gx-ico svg{width:46%;height:46%}
.gx-mods.gx-tj-c.tjc-redondeado .gx-mod .gx-ico{border-radius:var(--tj-ri)}
.gx-mods.gx-tj-c.tj-fit-contener .gx-mod .gx-ico img{object-fit:contain;padding:8%}
.gx-mods.gx-tj-c.tj-fondo-blanco .gx-mod:not(.feat) .gx-ico{background:#fff}
.gx-mods.gx-tj-c.tj-fondo-transparente .gx-mod:not(.feat) .gx-ico{background:transparent;border-color:transparent;box-shadow:none}
.gx-mods.gx-tj-c .gx-mod .gx-ico>*{transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.gx-mods.gx-tj-c.tj-hover-zoom a.gx-mod:hover .gx-ico>*,.gx-mods.gx-tj-c.tj-hover-zoom a.gx-mod:focus-visible .gx-ico>*{transform:scale(1.1)}
.gx-mods.gx-tj-c.tj-hover-ninguno a.gx-mod:hover,.gx-mods.gx-tj-c.tj-hover-ninguno a.gx-mod:focus-visible{transform:none}
/* textos */
.gx-mods.gx-tj-c .gx-mod:not(.feat) h3{font-size:var(--tj-tit)}
.gx-mods.gx-tj-c .gx-mod.feat h3{font-size:calc(var(--tj-tit) * 1.25)}
.gx-mods.gx-tj-c .gx-mod p{display:-webkit-box;-webkit-line-clamp:var(--tj-lin);-webkit-box-orient:vertical;overflow:hidden}
.gx-mods.gx-tj-c.tj-sin-desc .gx-mod p{display:none}
.gx-mods.gx-tj-c.tjc-sin-cont .gx-tag{display:none}
.gx-mods.gx-tj-c.tj-sin-pie .gx-mod:not(.feat) .gx-mod-foot{display:none}
.gx-mods.gx-tj-c.tj-sin-pie .gx-mod.feat .gx-mod-foot small{visibility:hidden}
/* alineación y posición vertical del texto (la destacada conserva su diseño) */
.gx-mods.gx-tj-c.tj-txt-centro .gx-mod:not(.feat) :is(h3,p){text-align:center}
.gx-mods.gx-tj-c.tj-txt-centro .gx-mod:not(.feat) .gx-mod-foot{justify-content:center}
.gx-mods.gx-tj-c.tj-txt-derecha .gx-mod:not(.feat) :is(h3,p){text-align:right}
.gx-mods.gx-tj-c.tj-txt-derecha .gx-mod:not(.feat) .gx-mod-foot{justify-content:flex-end}
/* distribución vertical: el título y la descripción, entre la fila del ícono y el pie */
.gx-mods.gx-tj-c.tjc-vertical.tj-pos-centro .gx-mod:not(.feat) h3,
.gx-mods.gx-tj-c.tjc-vertical.tj-pos-abajo .gx-mod:not(.feat) h3{margin-top:auto;padding-top:16px}
.gx-mods.gx-tj-c.tjc-vertical.tj-pos-abajo .gx-mod:not(.feat) .gx-mod-foot{margin-top:0}
/* distribución horizontal: imagen a la izquierda, centrada en vertical (como las apps).
   Filas: espacio · contador · título · descripción · pie · espacio; los dos
   espacios (--tjc-esp-a / --tjc-esp-b) ubican el texto arriba, al centro o abajo */
.gx-mods.gx-tj-c.tjc-horizontal{--tjc-esp-a:0px;--tjc-esp-b:1fr}
.gx-mods.gx-tj-c.tjc-horizontal.tj-pos-centro{--tjc-esp-a:1fr}
.gx-mods.gx-tj-c.tjc-horizontal.tj-pos-abajo{--tjc-esp-a:1fr;--tjc-esp-b:0px}
.gx-mods.gx-tj-c.tjc-horizontal .gx-mod:not(.feat){display:grid;grid-template-columns:var(--tj-isz) minmax(0,1fr);
  grid-template-rows:var(--tjc-esp-a) auto auto auto auto var(--tjc-esp-b);
  column-gap:16px;row-gap:0;align-items:start;align-content:center;
  padding-top:max(8px,min(16px,calc((var(--tj-h) - var(--tj-isz)) / 2 - 1px)));padding-bottom:max(8px,min(16px,calc((var(--tj-h) - var(--tj-isz)) / 2 - 1px)))}
.gx-mods.gx-tj-c.tjc-horizontal .gx-mod:not(.feat) .gx-mod-top{display:contents}
.gx-mods.gx-tj-c.tjc-horizontal .gx-mod:not(.feat) .gx-ico{grid-column:1;grid-row:1/7;align-self:center}
.gx-mods.gx-tj-c.tjc-horizontal .gx-mod:not(.feat) .gx-tag{grid-column:2;grid-row:2;justify-self:start;margin-bottom:6px}
.gx-mods.gx-tj-c.tjc-horizontal.tj-txt-centro .gx-mod:not(.feat) .gx-tag{justify-self:center}
.gx-mods.gx-tj-c.tjc-horizontal.tj-txt-derecha .gx-mod:not(.feat) .gx-tag{justify-self:end}
.gx-mods.gx-tj-c.tjc-horizontal .gx-mod:not(.feat) h3{grid-column:2;grid-row:3;margin:0}
.gx-mods.gx-tj-c.tjc-horizontal .gx-mod:not(.feat) p{grid-column:2;grid-row:4;margin-top:4px}
.gx-mods.gx-tj-c.tjc-horizontal .gx-mod:not(.feat) .gx-mod-foot{grid-column:2;grid-row:5;padding-top:8px}
@media (max-width:640px){
  .gx-tj-c{--tj-k:.85}
  .gx-mods.gx-tj-c .gx-mod{min-height:0}
  .gx-mods.gx-tj-c .gx-mod:not(.feat) h3{font-size:calc(var(--tj-tit) * .9)}
}
@media (max-width:420px){
  .gx-mods.gx-tj-c{grid-template-columns:minmax(0,1fr)}
  .gx-mods.gx-tj-c .gx-mod:not(.feat){grid-template-columns:var(--tj-isz) minmax(0,1fr)}
  .gx-mods.gx-tj-c .gx-mod:not(.feat) h3{font-size:calc(var(--tj-tit) * .84)}
}
