/* =========================================================
   Capa común de todo el sitio: barra global, barra local,
   búsqueda (Ctrl+K), cambio de tema y "volver arriba".
   Todo va con prefijo gn-/rd- para no chocar con el CSS
   propio de cada práctica.
   ========================================================= */

.gn,.ln,.gn-sheet,.rd-pal,.rd-top{
  --gn-font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Inter","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --gn-lime:#c8ef5c;
  --gn-ink:#1d1d1f;
  --gn-muted:#6e6e73;
  --gn-bg:rgba(251,251,253,.8);
  --gn-line:rgba(0,0,0,.12);
  --gn-surface:#fff;
  --gn-soft:#f5f5f7;
  --gn-sel:#eef8d6;
}
html[data-theme="dark"] :is(.gn,.ln,.gn-sheet,.rd-pal,.rd-top){
  --gn-ink:#f5f5f7;--gn-muted:#a1a1a6;--gn-bg:rgba(22,22,23,.8);--gn-line:rgba(255,255,255,.14);
  --gn-surface:#1c1c1e;--gn-soft:#2c2c2e;--gn-sel:#2b3a14;
}

/* Reset defensivo: el CSS de cada práctica no debe afectar a la barra */
:is(.gn,.ln,.gn-sheet,.rd-pal,.rd-top) :where(:not(svg):not(svg *)){all:unset;box-sizing:border-box}
:is(.gn,.ln,.gn-sheet,.rd-pal,.rd-top){box-sizing:border-box;font-family:var(--gn-font);-webkit-font-smoothing:antialiased;letter-spacing:-.01em;line-height:1.3;text-align:left}
:is(.gn,.ln,.gn-sheet,.rd-pal,.rd-top) svg{display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
:is(.gn,.ln,.rd-pal) :is(a,button){cursor:pointer;-webkit-tap-highlight-color:transparent}
:is(.gn,.ln,.gn-sheet,.rd-pal,.rd-top) :focus-visible{outline:2px solid #4fe0cd;outline-offset:2px;border-radius:8px}

/* ---------- Barra global (siempre oscura, como la de Apple) ---------- */
.gn{position:relative;z-index:9000;width:100%;height:48px;background:rgba(22,22,23,.86);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);color:#e8e8ed;border-bottom:1px solid rgba(255,255,255,.08)}
.gn.gn-sticky{position:sticky;top:0}
.gn .gn-in{display:flex;align-items:center;gap:6px;height:48px;width:min(1180px,100%);margin:0 auto;padding:0 22px}
.gn .gn-brand{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;color:#f5f5f7;white-space:nowrap;margin-right:auto}
.gn .gn-mark{display:grid;place-items:center;width:26px;height:26px;border-radius:7px;background:var(--gn-lime);color:#101b2c;font-size:14px;font-weight:800;letter-spacing:-.04em}
.gn .gn-links{display:flex;align-items:center;gap:4px}
.gn .gn-link{display:inline-flex;align-items:center;height:48px;padding:0 12px;font-size:12.5px;color:rgba(232,232,237,.8);transition:color .2s;position:relative}
.gn .gn-link:hover{color:#fff}
.gn .gn-link[aria-current="page"]{color:#fff}
.gn .gn-link[aria-current="page"]::after{content:"";position:absolute;left:12px;right:12px;bottom:9px;height:2px;border-radius:2px;background:var(--gn-lime)}
.gn .gn-tools{display:flex;align-items:center;gap:2px;margin-left:10px}
.gn .gn-btn{display:grid;place-items:center;width:36px;height:36px;border-radius:9px;color:rgba(232,232,237,.85);transition:background .2s,color .2s}
.gn .gn-btn:hover{background:rgba(255,255,255,.1);color:#fff}
.gn .gn-btn svg{width:17px;height:17px}
.gn .gn-kbd{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 9px 0 10px;margin-right:4px;border:1px solid rgba(255,255,255,.16);border-radius:8px;font-size:12px;color:rgba(232,232,237,.7)}
.gn .gn-kbd:hover{border-color:rgba(255,255,255,.35);color:#fff}
.gn .gn-kbd svg{width:14px;height:14px}
.gn .gn-kbd b{font:600 10.5px ui-monospace,Consolas,monospace;padding:1px 5px;border-radius:4px;background:rgba(255,255,255,.1)}
.gn .gn-sun{display:none}
html[data-theme="dark"] .gn .gn-sun{display:block}
html[data-theme="dark"] .gn .gn-moon{display:none}
.gn .gn-menu{display:none}

/* Menú móvil a pantalla completa */
.gn-sheet{position:fixed;inset:48px 0 0;z-index:9001;display:block;background:rgba(22,22,23,.97);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);padding:18px 32px 40px;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .3s,transform .35s cubic-bezier(.2,.7,.2,1),visibility .3s;overflow:auto}
.gn-sheet.gn-open{opacity:1;visibility:visible;transform:none}
.gn-sheet a{display:block;padding:12px 0;font-size:28px;font-weight:600;color:#e8e8ed;letter-spacing:-.02em;opacity:0;transform:translateY(-6px);transition:opacity .4s,transform .4s,color .2s}
.gn-sheet.gn-open a{opacity:1;transform:none}
.gn-sheet a:hover,.gn-sheet a[aria-current="page"]{color:var(--gn-lime)}
.gn-sheet small{display:block;margin:22px 0 6px;font-size:12px;color:#86868b}

@media (max-width:860px){
  .gn .gn-links,.gn .gn-kbd{display:none}
  .gn .gn-menu{display:grid}
  .gn .gn-in{padding:0 14px}
}
@media (min-width:861px){.gn-sheet{display:none}}

/* ---------- Barra local (título de la página + acciones) ---------- */
.ln{position:relative;z-index:8999;width:100%;background:var(--gn-bg);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--gn-line);color:var(--gn-ink)}
.ln.ln-sticky{position:sticky;top:0}
.ln .ln-in{display:flex;align-items:center;gap:14px;min-height:52px;width:min(1180px,100%);margin:0 auto;padding:6px 22px}
.ln .ln-title{display:flex;flex-direction:column;min-width:0;margin-right:auto}
.ln .ln-title b{font-size:19px;font-weight:600;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ln .ln-title span{font-size:11.5px;color:var(--gn-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ln .ln-title span a{color:var(--gn-muted)}
.ln .ln-title span a:hover{color:var(--gn-ink);text-decoration:underline}
.ln .ln-links{display:flex;align-items:center;gap:18px}
.ln .ln-links a{font-size:12.5px;color:var(--gn-muted);white-space:nowrap;transition:color .2s}
.ln .ln-links a:hover{color:var(--gn-ink)}
.ln .ln-pill{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 14px;border-radius:999px;background:var(--gn-lime);color:#101b2c;font-size:12.5px;font-weight:600;white-space:nowrap;transition:filter .2s,transform .2s}
.ln .ln-pill:hover{filter:brightness(1.06);transform:translateY(-1px)}
.ln .ln-pill svg{width:13px;height:13px;stroke-width:2.2}
@media (max-width:720px){
  .ln .ln-links{display:none}
  .ln .ln-in{padding:6px 14px}
  .ln .ln-title b{font-size:17px}
}

/* ---------- Ocultar los controles antiguos en las prácticas ---------- */
html.rd-int :is(.course-return,.site-return,.portal-bar,.theme-toggle,.themeControl,.themeToggle,.portal-theme,.to-top,.portal-up,.guide-to-top){display:none!important}

/* ---------- Paleta de búsqueda ---------- */
.rd-pal{position:fixed;inset:0;z-index:9500;display:none;align-items:flex-start;justify-content:center;padding:12vh 16px 16px;background:rgba(0,0,0,.42);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.rd-pal.rd-open{display:flex;animation:rdFade .2s ease}
@keyframes rdFade{from{opacity:0}}
.rd-pal .rd-box{display:flex;flex-direction:column;width:min(640px,100%);max-height:72vh;border-radius:18px;background:var(--gn-surface);color:var(--gn-ink);border:1px solid var(--gn-line);box-shadow:0 30px 80px rgba(0,0,0,.35);overflow:hidden;animation:rdPop .28s cubic-bezier(.2,.7,.2,1)}
@keyframes rdPop{from{transform:translateY(-10px) scale(.98);opacity:0}}
.rd-pal .rd-in{display:flex;align-items:center;gap:12px;padding:0 18px;border-bottom:1px solid var(--gn-line)}
.rd-pal .rd-in svg{width:20px;height:20px;color:var(--gn-muted);flex-shrink:0}
.rd-pal input{flex:1;height:60px;font-size:17px;color:var(--gn-ink);background:transparent}
.rd-pal input::placeholder{color:var(--gn-muted)}
.rd-pal .rd-k{display:inline-block;font:600 11px ui-monospace,Consolas,monospace;padding:2px 6px;border-radius:5px;border:1px solid var(--gn-line);color:var(--gn-muted)}
.rd-pal ul{display:block;list-style:none;padding:8px;overflow:auto}
.rd-pal li{display:block}
.rd-pal li a{display:flex;align-items:center;gap:14px;padding:10px 12px;border-radius:11px;color:var(--gn-ink)}
.rd-pal li a[aria-selected="true"]{background:var(--gn-sel)}
.rd-pal .rd-ic{flex-shrink:0;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--gn-soft);font:700 10px ui-monospace,Consolas,monospace;color:var(--gn-muted)}
.rd-pal li b{display:block;font-size:15px;font-weight:600}
.rd-pal li small{display:block;font-size:12.5px;color:var(--gn-muted);margin-top:2px}
.rd-pal .rd-empty{display:block;padding:30px;text-align:center;color:var(--gn-muted);font-size:14px}
.rd-pal .rd-foot{display:flex;gap:16px;padding:10px 18px;border-top:1px solid var(--gn-line);font-size:12px;color:var(--gn-muted)}

/* ---------- Volver arriba ---------- */
.rd-top{position:fixed;right:20px;bottom:20px;z-index:8000;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:rgba(22,22,23,.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:#fff;border:1px solid rgba(255,255,255,.14);box-shadow:0 10px 30px rgba(0,0,0,.25);cursor:pointer;opacity:0;visibility:hidden;transform:translateY(12px) scale(.9);transition:opacity .3s,transform .3s,visibility .3s}
.rd-top.rd-show{opacity:1;visibility:visible;transform:none}
.rd-top:hover{background:rgba(40,40,42,.92)}
.rd-top svg{width:18px;height:18px;stroke-width:2.2}

/* Barra de progreso de lectura (solo prácticas) */
.rd-progress{position:fixed;left:0;top:0;z-index:9600;height:2px;width:100%;background:linear-gradient(90deg,#c8ef5c,#4fe0cd);transform-origin:0 50%;transform:scaleX(0);pointer-events:none}

@media (prefers-reduced-motion:reduce){
  .gn-sheet,.gn-sheet a,.rd-top,.rd-pal .rd-box{transition:none;animation:none}
}
@media print{.gn,.gn-sheet,.ln,.rd-pal,.rd-top,.rd-progress{display:none!important}}

/* Acceso cómodo mediante teclado y pantallas táctiles */
:is(.gn,.ln,.rd-pal) :is(a,button):focus-visible{outline:3px solid #4fe0cd;outline-offset:3px}
@media(prefers-reduced-motion:reduce){:is(.gn,.ln,.gn-sheet,.rd-pal,.rd-top),:is(.gn,.ln,.gn-sheet,.rd-pal,.rd-top) *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Acceso común a todas las entregas. */
.rd-course-explorer{padding:32px 22px;border-top:1px solid var(--line,#d7dce8);background:var(--bg-2,#eef0f7);font-family:system-ui,sans-serif;color:var(--ink,#19243a)}.rd-course-explorer-in{max-width:1136px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:24px}.rd-course-explorer label{font-size:21px;font-weight:700;letter-spacing:-.035em}.rd-course-explorer p{font-size:12px;color:var(--muted,#63718a);margin:7px 0 0}.rd-course-explorer-controls{display:flex;align-items:center;gap:12px;min-width:0}.rd-course-explorer select{min-height:46px;max-width:360px;width:100%;padding:11px;border:1px solid var(--line,#d7dce8);border-radius:9px;background:var(--card,#fff);color:var(--ink,#19243a);font:13px system-ui}.rd-course-explorer a{display:inline-flex;justify-content:center;align-items:center;min-height:46px;padding:10px 17px;background:#6539e8;border-radius:9px;color:#fff;font:600 12px system-ui;white-space:nowrap}.rd-course-explorer :focus-visible{outline:3px solid #9276db;outline-offset:3px}@media(max-width:760px){.rd-course-explorer-in{flex-direction:column;align-items:stretch}.rd-course-explorer-controls{flex-wrap:wrap}.rd-course-explorer select{max-width:none;flex:1;min-width:180px}}


/* Navegación y acabados comunes del portfolio. */
.gn{background:rgba(12,17,31,.94);border-bottom-color:#ffffff0e}.gn .gn-in{height:56px}.gn{height:56px}.gn .gn-mark{background:#b49aff;color:#1c1831;border-radius:8px}.gn .gn-brand{font-size:13px;gap:11px}.gn .gn-link{height:56px;font-size:12px}.gn .gn-link[aria-current=page]::after{background:#b49aff;bottom:11px}.gn .gn-btn{width:38px;height:38px}.gn .gn-kbd{border-color:#ffffff20;border-radius:7px}.gn-sheet{top:56px}.ln{box-shadow:0 4px 20px -15px #0003}.ln .ln-in{min-height:58px}.ln .ln-title b{font-size:16px}.ln .ln-title span{font-size:10px;margin-top:2px}.ln .ln-pill{background:#7149df!important;color:#fff!important;border:0!important}.rd-progress{height:3px;background:linear-gradient(90deg,#a883f1,#64cbd4)}.rd-top{border-radius:13px;background:rgba(30,34,57,.94);width:42px;height:42px}.rd-pal .rd-box{border-radius:20px}.rd-course-explorer{padding-block:40px;background:var(--bg-2,#11192d)}.rd-course-explorer-in{max-width:1180px}.rd-course-explorer label{font-size:25px;letter-spacing:-.045em}.rd-course-explorer a{border-radius:99px;background:#7149df;padding-inline:20px}.rd-course-explorer select{border-radius:10px}.rd-course-explorer p{line-height:1.7}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:100px}body{-webkit-font-smoothing:antialiased}main,section,article,aside{min-width:0}img,video{max-width:100%;height:auto}iframe{max-width:100%}pre{max-width:100%;overflow:auto}input,select,textarea{max-width:100%}button,input,select,textarea{font-family:inherit}html.rd-int .site-return{margin-block:12px}html.rd-int .site-return a{font-size:11px;border-radius:99px}html.rd-int main>#enunciado{border-color:#75849c55!important;border-radius:18px!important;padding:28px!important;line-height:1.8}html.rd-int main>#enunciado h2{letter-spacing:-.035em}
/* La telemetría conserva su rejilla, sus gráficas y sus controles. */
html.rd-telemetry{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--font:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--mono:ui-monospace,Consolas,monospace;--bg:#f7f8fc;--bg-2:#eef0f8;--ink:#17243a;--ink-2:#43516c;--muted:#62728b;--card:#fff;--line:#dce1ed;--soft:#eef0f8;background:var(--bg);color:var(--ink)}html.rd-telemetry[data-theme=dark]{--bg:#0b1020;--bg-2:#11192d;--card:#141f34;--line:#293750;--soft:#11192d;--ink:#edf2fc;--ink-2:#bfcee2;--muted:#96a9c5;background:var(--bg);color:var(--ink)}.rd-telemetry .card,.rd-telemetry .tile,.rd-telemetry .step{border-radius:16px;padding:24px}.rd-telemetry .tile{background:#17233b;border:1px solid #33435c}.rd-telemetry .tile strong{color:#c5b0ff}.rd-telemetry .tile small{color:#b7c5d9}.rd-telemetry .hero{padding-block:48px}.rd-telemetry .hero h1{font-size:clamp(34px,5vw,58px);line-height:1.12}.rd-telemetry .hero h1 em{color:#8b63d3}.rd-telemetry[data-theme=dark] .hero h1 em{color:#c5b0ff}.rd-telemetry .eyebrow{color:#8358ce}.rd-telemetry[data-theme=dark] .eyebrow{color:#b49aff}.rd-telemetry .two{gap:20px}.rd-telemetry .live{gap:18px}.rd-telemetry .lesson-block h2{font-size:30px}.rd-telemetry .lesson-block p{line-height:1.85}.rd-telemetry .brand-mark{background:#b49aff}.rd-telemetry .subject-nav a[aria-current=page]{background:#b49aff}
@media(max-width:760px){.gn .gn-in{padding-inline:16px}.ln .ln-in{padding-inline:16px;gap:10px}.ln .ln-title b{font-size:15px}.ln .ln-links{max-width:42%;overflow-x:auto;gap:15px;scrollbar-width:none}.ln .ln-links a{font-size:11px}.ln .ln-pill{font-size:11px;padding:7px 11px}.rd-course-explorer{padding:28px 18px}.rd-course-explorer label{font-size:23px}.rd-course-explorer p{font-size:11px}.rd-telemetry .card,.rd-telemetry .tile,.rd-telemetry .step{padding:19px}.rd-telemetry .lesson-layout{padding-inline:18px}html.rd-int main>#enunciado{padding:20px!important}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*::before,*::after{transition:none!important;animation:none!important}}
@media print{.rd-course-explorer{display:none!important}}

/* Barra local: una sola acción por destino, con tamaños y estados consistentes. */
.ln{background:var(--gn-bg);border-bottom:1px solid var(--gn-line);box-shadow:0 8px 25px -22px #0008}.ln .ln-in{min-height:66px;padding:10px 22px;gap:24px}.ln .ln-title{gap:3px;min-width:0}.ln .ln-title b{font-size:17px;font-weight:650;letter-spacing:-.025em;line-height:1.35}.ln .ln-title span{font-size:11px;line-height:1.5}.ln .ln-links{gap:18px}.ln .ln-links a{display:inline-flex;align-items:center;min-height:40px;font-size:12px;color:var(--gn-ink);opacity:.72}.ln .ln-links a:hover{opacity:1}.ln .ln-pill{height:40px;min-height:40px;padding:0 17px;gap:11px;border-radius:11px;background:linear-gradient(135deg,#7953e6,#6841d3)!important;color:#fff!important;border:1px solid #ffffff18!important;box-shadow:inset 0 1px 0 #ffffff1c,0 5px 16px -8px #6642cc88;font-size:12px;font-weight:650;line-height:1;flex-shrink:0;transition:box-shadow .2s,transform .2s,filter .2s}.ln .ln-pill:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:inset 0 1px 0 #ffffff26,0 7px 20px -9px #6642ccaa}.ln .ln-pill:active{transform:translateY(0)}.ln .ln-pill:focus-visible{outline:3px solid #aa91f1;outline-offset:4px}.ln .ln-pill svg{width:15px;height:15px;stroke-width:1.8;flex-shrink:0}.ln .ln-cta-arrow{transition:transform .2s}.ln .ln-pill:hover .ln-cta-arrow{transform:translateY(2px)}
@media(max-width:760px){.ln .ln-in{min-height:62px;padding:10px 16px;gap:14px}.ln .ln-title b{font-size:15px}.ln .ln-title span{font-size:10px}.ln .ln-pill{height:38px;min-height:38px;padding:0 13px;gap:8px;border-radius:10px;font-size:11px}.ln .ln-links{gap:12px}.ln .ln-links a{font-size:11px}}@media(prefers-reduced-motion:reduce){.ln .ln-pill,.ln .ln-cta-arrow{transition:none!important}.ln .ln-pill:hover,.ln .ln-pill:hover .ln-cta-arrow{transform:none}}
