/* Sistema visual · Aprendizaje
   Capa final sobre style.css. Dirección: plataforma académica con práctica guiada
   (referencia: Codecademy/Gamut). Reglas del sistema:
   - Tipografía con carácter: IBM Plex Sans para leer, IBM Plex Mono para datos,
     etiquetas y código (autoalojadas, OFL).
   - Paleta de marca con significado: azul marino = texto y superficies de trabajo,
     violeta = acción, amarillo = la acción siguiente sobre fondo oscuro y el foco,
     verde = completado. Sin degradados decorativos.
   - Bordes definidos y esquinas pequeñas (2 px controles, 4 px módulos). Sin sombras
     difusas: la profundidad aparece al interactuar, con una sombra sólida desplazada.
   - Una acción principal por vista; el resto son enlaces. */
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-sans-400.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/plex-sans-400-italic.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-sans-500.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plex-sans-600.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/plex-sans-700.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-400.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-mono-500.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plex-mono-600.woff2) format('woff2')}

:root{
  --ink:#10162f;--ink-2:#2b3047;--muted:#4b5065;--subtle:#6b6f80;
  --line:#dcdde3;--line-strong:#10162f;
  --canvas:#fff;--paper:#fff;--white:#fff;--beige:#fff0e5;--cream:var(--beige);--surface-2:#f6f6f8;
  --accent:#3a10e5;--accent-hover:#2a0bb3;--accent-soft:#efecff;--light:var(--accent-soft);
  --highlight:#ffd300;--ink-soft:#c3c6d6;
  --success:#007a22;--success-soft:#f1fde0;--warning:#6f5c00;--warning-soft:#fffae5;--danger:#be1809;--danger-soft:#fbf1f0;
  --font:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,'Cascadia Code',Consolas,Menlo,monospace;
  --radius-sm:2px;--radius:4px;--radius-lg:4px;
  --lift:-4px 4px 0 0 var(--ink);
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;
  font-family:var(--font);background:var(--canvas);color:var(--ink);
}
body{background:var(--canvas);font-family:var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3{color:var(--ink);font-weight:700;text-wrap:balance;letter-spacing:-.01em}
h1{font-size:clamp(30px,3vw,42px);line-height:1.15;letter-spacing:-.02em}
h2{font-size:22px;line-height:1.25}
h3{font-size:17px;line-height:1.3}
/* Los títulos reciben foco por script al cambiar de vista; no son controles. */
h1[tabindex="-1"]:focus,h2[tabindex="-1"]:focus{outline:none}
p{text-wrap:pretty}
code,kbd,pre{font-family:var(--mono)}
/* Etiqueta de dato (ruta, tipo, estado): monoespaciada, nunca frases decorativas. */
.eyebrow{font:500 12px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
a.text-link,.text-link{color:var(--accent);font-weight:600;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* Botones y campos */
.primary,.secondary{min-height:44px;padding:10px 20px;border-radius:var(--radius-sm);font:600 15px/1.3 var(--font);transition:background-color .12s,border-color .12s,color .12s}
.primary{background:var(--accent);border:1px solid var(--accent);color:#fff;box-shadow:none}
.secondary{background:var(--white);border:1px solid var(--ink);color:var(--ink)}
a.primary,a.secondary{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
@media(hover:hover) and (pointer:fine){
  .primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}
  .secondary:hover:not(:disabled){background:var(--surface-2)}
}
input:not([type=checkbox]):not([type=radio]),select,textarea{border-color:var(--ink);border-radius:var(--radius-sm)}
.account-field input,.account-share input,.catalog-search,select,.editor{border:1px solid var(--ink);border-radius:var(--radius-sm)}
.catalog-search:focus-within{outline:3px solid var(--accent);outline-offset:2px}
.catalog-search input:focus-visible{outline:none}
.tag{border-radius:var(--radius-sm);padding:3px 8px;font:500 12px/1.4 var(--mono);background:var(--accent-soft);color:var(--accent)}
progress{height:8px;border-radius:0;background:var(--line)}
progress::-webkit-progress-bar{background:var(--line);border-radius:0}
progress::-webkit-progress-value{background:var(--accent);border-radius:0}
progress::-moz-progress-bar{background:var(--accent);border-radius:0}

/* Cabecera */
.top{background:var(--white);border-bottom:1px solid var(--line);box-shadow:none;min-height:64px;padding-top:0;padding-bottom:0}
@media(min-width:761px){.online-header{position:sticky;top:0;z-index:20}}
.brand{color:var(--ink);font:700 21px/1 var(--font);letter-spacing:-.02em}
.brand-label{font:600 10px/1 var(--mono);letter-spacing:.08em;background:var(--highlight);color:var(--ink);border-radius:var(--radius-sm);padding:4px 6px}
.main-nav a{font-size:15px;font-weight:500;color:var(--ink-2);padding:20px 0 18px;border-bottom:3px solid transparent}
.main-nav a[aria-current=page]{color:var(--ink);font-weight:600;border-bottom-color:var(--accent)}
@media(hover:hover) and (pointer:fine){.main-nav a:not([aria-current=page]):hover{color:var(--accent)}}
.font-controls button{color:var(--ink);border-radius:var(--radius-sm);font-family:var(--mono)}
.notebook-toggle{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--white);color:var(--ink);font-weight:600}
.account-menu summary{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--white);font-weight:600}
.account-menu-panel{border-radius:var(--radius);border:1px solid var(--ink);box-shadow:var(--lift)}
.weekly-status{font-family:var(--mono)}

/* Superficies: módulos con borde fino; las interactivas usan borde marino. */
.course-card,.home-summary,.weekly-goal,.learning-milestones,.devops-path,.sidebar-card,.lesson-surface,.account-section,
.cert-course,.certificate-card,.admin-metrics,.catalog-empty,.study-support{
  border:1px solid var(--line);border-radius:var(--radius);box-shadow:none;background:var(--white)
}
.learning-course,.certification-card,.account-course{border:1px solid var(--ink);border-radius:var(--radius);box-shadow:none;background:var(--white)}

/* Inicio */
.home-view{padding-top:var(--space-6)}
.home-heading{padding:0 0 var(--space-5)}
.home-heading h1{font-size:clamp(28px,2.6vw,36px);margin:0}
.continue-panel{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr) auto;align-items:center;gap:var(--space-6);
  background:var(--ink);color:#fff;border:0;border-radius:var(--radius);padding:var(--space-5);margin-bottom:var(--space-7)}
.continue-cover{display:block;width:100%;height:auto;aspect-ratio:16/9;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.2)}
.continue-label{display:block;font:500 12px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--highlight)}
.continue-panel h2{color:#fff;font-size:clamp(22px,2vw,28px);margin:10px 0 8px;letter-spacing:-.015em}
.continue-panel p{color:rgba(255,255,255,.78);font-size:15px;margin:0 0 16px}
.continue-panel progress{max-width:420px;background:rgba(255,255,255,.18)}
.continue-panel progress::-webkit-progress-bar{background:rgba(255,255,255,.18)}
.continue-panel progress::-webkit-progress-value{background:var(--highlight)}
.continue-panel progress::-moz-progress-bar{background:var(--highlight)}
.continue-position{display:block;margin-top:10px;font:400 13px/1.5 var(--mono);color:rgba(255,255,255,.72)}
.continue-panel .primary{background:var(--highlight);border-color:var(--highlight);color:var(--ink);min-height:48px;padding:12px 28px;font-size:16px}
@media(hover:hover) and (pointer:fine){.continue-panel .primary:hover:not(:disabled){background:#fff;border-color:#fff}}
.continue-panel :focus-visible{outline-color:var(--highlight)}
.catalog-heading{align-items:baseline}
.catalog-heading h2,.home-certifications .catalog-heading h2{font-size:24px;letter-spacing:-.015em;margin:0}
.home-courses{margin:0 0 var(--space-7)}
.home-courses .catalog-heading{margin-bottom:var(--space-4)}
.home-courses .learning-course-enrolled{display:none!important}
.home-courses-empty{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;padding:var(--space-5);background:var(--beige);border:0;border-radius:var(--radius)}
.home-courses-empty p{margin:0;color:var(--ink-2);max-width:60ch}

/* Semana y logros: compactos, datos primero */
.learning-dashboard{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--space-5);margin:0 0 var(--space-7);align-items:start}
.weekly-goal,.learning-milestones{padding:var(--space-5)}
.learning-dashboard h2{font-size:20px;margin:0 0 4px}
.weekly-summary,.milestones-count{font:400 13px/1.5 var(--mono)!important;color:var(--muted)!important;margin:0!important}
.week-days{gap:6px;margin:var(--space-5) 0 var(--space-4)}
.week-day{gap:6px}
.week-day small{font:500 12px/1 var(--mono);color:var(--muted)}
.week-day>span[aria-hidden]{width:100%;max-width:44px;height:36px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface-2);color:#fff;font-size:15px}
.week-day.is-active>span[aria-hidden]{background:var(--accent);border-color:var(--accent);color:#fff}
.week-day.is-today>span[aria-hidden]{outline:0;border:2px solid var(--ink);background:var(--white);color:var(--ink)}
.goal-setting{font-size:14px;color:var(--ink-2)}
.goal-setting select{border:1px solid var(--ink);border-radius:var(--radius-sm);padding:6px 8px}
.goal-caption{font-size:13px!important;color:var(--muted);margin-top:var(--space-3)!important}
.milestone-list{grid-template-columns:1fr;gap:0;margin-top:var(--space-4)}
.milestone{padding:10px 0;border-top:1px solid var(--line);gap:12px}
.milestone>span{display:grid;place-items:center;flex:0 0 22px;height:22px;border:1px solid var(--subtle);border-radius:var(--radius-sm);font-size:13px;color:transparent}
.milestone.earned>span{background:var(--success);border-color:var(--success);color:#fff}
.milestone strong{font-size:14px;font-weight:600}
.milestone small{font-size:13px;margin-top:2px}

/* Rutas en Inicio: tres fichas con portada */
.home-certifications{border-top:0;padding-top:0}
.home-certifications .catalog-heading{margin-bottom:var(--space-4)}
.home-certifications{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-5)}
.home-certifications>.catalog-heading{grid-column:1/-1}
.certification-card{position:relative;display:flex;flex-direction:column;gap:0;padding:0;margin:0;overflow:hidden;transition:transform .12s,box-shadow .12s}
.certification-card>div{display:flex;flex-direction:column;flex:1;padding:var(--space-4) var(--space-4) 0}
.certification-card h3{font-size:18px;margin:0 0 8px}
.certification-card p{font-size:14px;color:var(--muted);line-height:1.55;margin:0 0 12px}
.certification-card .certification-status{margin-top:auto;font:400 12px/1.5 var(--mono);color:var(--ink-2)}
.certification-cover{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-bottom:1px solid var(--ink)}
.certification-card{text-align:left}
.certification-card>.text-link{align-self:flex-start;margin:4px var(--space-4) var(--space-4);padding:0}
.certification-card>.text-link::after{content:'';position:absolute;inset:0}
.devops-path{padding:var(--space-5)}

/* Modos de la vista principal: Inicio (personal) y Explorar (catálogo) */
.home-view[data-mode="catalog"] .home-only,.home-view:not([data-mode="catalog"]) .catalog-only{display:none!important}
.home-view[data-mode="routes"]>:not(.home-certifications){display:none!important}
.home-view[data-mode="catalog"] .training-hub,.training-hub[hidden]{display:none!important}
.catalog-intro{padding:0 0 var(--space-5);border-bottom:1px solid var(--line);margin-bottom:var(--space-5)}
.catalog-intro h1{margin:0 0 8px}
.catalog-intro p{color:var(--muted);font-size:16px;max-width:62ch;margin:0}
.catalog-heading.catalog-only{align-items:center;margin:0 0 var(--space-5)}
.catalog-result-count{margin:0;font:500 13px/1.4 var(--mono);color:var(--muted)}
.catalog-search{width:min(380px,100%);background:var(--white);padding:0 12px}
.catalog-search input{font-size:15px;padding:11px 0}
/* Filtros: barra lateral en escritorio */
.filter-title{margin:0 0 8px;font:600 12px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}
.catalog-toolbar{display:block;padding:0;border:0;margin:0}
.catalog-routes,.catalog-filters{display:flex;flex-direction:column;gap:2px;margin:0 0 var(--space-5);border:0}
.catalog-routes button,.catalog-filters button{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:40px;padding:8px 10px;
  border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ink-2);font:500 15px/1.3 var(--font);text-align:left}
.catalog-routes button span,.catalog-filters button span{font:500 12px/1 var(--mono);color:var(--muted);background:transparent;padding:0}
.catalog-routes button[aria-pressed="true"],.catalog-filters button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);font-weight:600;border:0}
.catalog-routes button[aria-pressed="true"] span,.catalog-filters button[aria-pressed=true] span{color:var(--accent)}
@media(hover:hover) and (pointer:fine){.catalog-routes button:not([aria-pressed="true"]):hover,.catalog-filters button:not([aria-pressed=true]):hover{background:var(--surface-2);color:var(--ink)}}
@media(min-width:1024px){
  .home-view[data-mode="catalog"]{display:grid;grid-template-columns:220px minmax(0,1fr);column-gap:48px;align-items:start}
  .home-view[data-mode="catalog"]>*{grid-column:1/-1}
  .home-view[data-mode="catalog"]>.catalog-toolbar{grid-column:1;grid-row:2 / span 3;position:sticky;top:88px}
  .home-view[data-mode="catalog"]>.catalog-heading{grid-column:2;grid-row:2}
  .home-view[data-mode="catalog"]>#learning-catalog,.home-view[data-mode="catalog"]>#catalog-empty{grid-column:2;grid-row:3}
}
.learning-catalog{display:block;margin:0}
.catalog-group{margin:0 0 var(--space-7)}
.catalog-group-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 var(--space-4);padding-bottom:8px;border-bottom:1px solid var(--ink)}
.catalog-group-heading h2{font-size:22px;margin:0}
.catalog-group-heading span{font:500 13px/1 var(--mono);color:var(--muted)}
.catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-5)}
.catalog-empty{padding:var(--space-6);background:var(--beige);border:0}

/* Tarjeta de curso */
.learning-course{position:relative;overflow:hidden;padding:0;display:flex;flex-direction:column;align-items:stretch;transition:transform .12s,box-shadow .12s}
.learning-course-cover{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;background:var(--ink);border-bottom:1px solid var(--ink)}
.learning-course-body{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:14px 16px 16px;flex:1}
.learning-course-tags{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.learning-course-route{font:500 12px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.learning-course-state,.learning-course-enrolled{font:600 11px/1 var(--mono);letter-spacing:.04em;text-transform:uppercase;padding:4px 6px;border-radius:var(--radius-sm)}
.learning-course-state{background:var(--highlight);color:var(--ink)}
.learning-course-state.is-done{background:var(--success);color:#fff}
.learning-course-enrolled{border:1px solid var(--ink);color:var(--ink);padding:3px 5px}
.learning-course h3{font-size:17px;line-height:1.3;margin:2px 0 0}
.learning-course-meta{margin:0!important;font-size:14px!important;color:var(--muted)}
.learning-course progress{margin:8px 0 0;height:6px}
.learning-course .learning-course-practice{margin:0!important;font:400 12px/1.4 var(--mono)!important;color:var(--muted)}
.learning-course .text-link{margin-top:auto;padding-top:12px;text-decoration:none}
.learning-course .text-link::after{content:'';position:absolute;inset:0}
.learning-course .text-link:focus-visible{outline:none}
.learning-course:focus-within,.certification-card:focus-within{outline:3px solid var(--accent);outline-offset:2px}
@media(hover:hover) and (pointer:fine){
  .learning-course:hover,.certification-card:hover{transform:translate(4px,-4px);box-shadow:var(--lift)}
  .learning-course:hover .text-link,.certification-card:hover .text-link{text-decoration:underline}
}
@media(prefers-reduced-motion:reduce){
  .learning-course,.certification-card{transition:none}
  .learning-course:hover,.certification-card:hover{transform:none}
}

@media(max-width:1023px){
  .catalog-toolbar{display:flex;flex-direction:column;gap:8px;margin-bottom:var(--space-5);min-width:0;max-width:100%}
  .catalog-toolbar>*{min-width:0;max-width:100%}
  .filter-title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .catalog-routes,.catalog-filters{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;margin:0;padding-bottom:4px;scrollbar-width:thin}
  .catalog-routes button,.catalog-filters button{width:auto;flex-shrink:0;border:1px solid var(--line)}
  .catalog-routes button[aria-pressed="true"],.catalog-filters button[aria-pressed=true]{border:1px solid var(--accent)}
}
@media(min-width:561px) and (max-width:1023px){.catalog-routes,.catalog-filters{flex-wrap:wrap;overflow-x:visible}}
@media(max-width:760px){
  .main-nav,.online-header .main-nav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:20px;max-width:100%}
  .main-nav::-webkit-scrollbar{display:none}
  .main-nav a{flex-shrink:0;padding:12px 0 10px}
}
@media(max-width:1100px){.home-certifications{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:860px){
  .continue-panel{grid-template-columns:minmax(0,200px) minmax(0,1fr)}
  .continue-panel>.primary{grid-column:1/-1;justify-self:start}
}
@media(max-width:760px){
  .catalog-heading.catalog-only{flex-direction:column;align-items:stretch}
  .catalog-grid{grid-template-columns:1fr 1fr;gap:12px}
  .learning-course-body{padding:12px}
  .learning-course h3{font-size:15px}
  .home-certifications{grid-template-columns:1fr}
  .learning-dashboard{grid-template-columns:1fr}
}
@media(max-width:560px){
  .continue-panel{grid-template-columns:1fr;gap:var(--space-4);padding:var(--space-4)}
  .continue-cover{max-width:none}
  .continue-panel>.primary{justify-self:stretch}
  /* En teléfonos, fila compacta (miniatura + texto) para recorrer el catálogo. */
  .catalog-grid{grid-template-columns:1fr;gap:10px}
  .learning-course{flex-direction:row}
  .learning-course-cover{flex:0 0 96px;width:96px;height:96px;aspect-ratio:auto;margin:12px 0 12px 12px;border:1px solid var(--ink);border-radius:var(--radius-sm);object-position:3% 50%}
  .learning-course-body{min-width:0;padding:12px 14px 14px;gap:4px}
  .learning-course .text-link{padding-top:6px}
}

/* Ruta y certificado */
#certification-routes{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 var(--space-4)}
.route-chip{display:inline-flex;align-items:center;min-height:40px;padding:8px 14px;border-radius:var(--radius-sm);border:1px solid var(--ink);background:var(--white);color:var(--ink);font:500 15px/1.2 var(--font);text-decoration:none;white-space:nowrap}
.route-chip[aria-current="page"]{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:600}
@media(hover:hover) and (pointer:fine){.route-chip:not([aria-current="page"]):hover{background:var(--surface-2)}}
@media(max-width:560px){#certification-routes{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;max-width:100%}}
.certification-credential{margin:var(--space-5) 0;padding:var(--space-5);border-radius:var(--radius);background:var(--ink);color:#fff;box-shadow:none}
.certification-credential .eyebrow{color:var(--highlight)}
.certification-credential h2{color:#fff;font-size:22px;margin:8px 0}
.certification-credential p{color:rgba(255,255,255,.78);max-width:70ch;margin:0 0 16px}
.certification-credential .secondary{background:transparent;color:#fff;border-color:#fff}
@media(hover:hover) and (pointer:fine){.certification-credential .secondary:hover{background:rgba(255,255,255,.12)}}
.certification-credential :focus-visible{outline-color:var(--highlight)}
.cert-course>summary{padding:18px 20px}
.cert-level{margin:var(--space-6) 0 var(--space-3);padding-bottom:8px;border-bottom:1px solid var(--ink);font:600 13px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}
.cert-level:first-child{margin-top:0}
.cert-course-number{display:grid;place-items:center;width:32px;height:32px;border-radius:var(--radius-sm);background:var(--ink);color:#fff;font:600 13px/1 var(--mono)}
.certificate-list{display:grid;gap:var(--space-5)}
.certificate-card{position:relative;overflow:hidden;padding:var(--space-6) var(--space-6) var(--space-5);border-top:4px solid var(--ink)}
.certificate-card-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap}
.certificate-card h2{font-size:clamp(20px,2.2vw,26px);margin:12px 0}
.certificate-card p{color:var(--muted);line-height:1.7;max-width:72ch}
.certificate-card progress{max-width:420px;margin:12px 0}
.certificate-card .account-actions{margin-top:var(--space-4)}
.certificate-card code{font-family:var(--mono);font-size:12px;overflow-wrap:anywhere}
.certificate-state{display:inline-block;font:600 11px/1 var(--mono);letter-spacing:.04em;text-transform:uppercase;padding:5px 7px;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--line);color:var(--muted)}
.certificate-state.is-ready{background:var(--highlight);border-color:var(--highlight);color:var(--ink)}
.certificate-state.is-issued{background:var(--success);border-color:var(--success);color:#fff}
.certificate-state.is-error{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}
.certificate-previous{margin-top:var(--space-4);font-size:13px}
.certificate-note{margin-top:var(--space-5)}
.admin-member-certificates{list-style:none;padding:0;margin:8px 0 0;font-size:12px;color:var(--success)}

/* Cuenta y administración */
.account-heading{border-bottom-color:var(--line)}
.account-error,.account-notice{border:1px solid;border-radius:var(--radius-sm)}
.account-error{border-color:var(--danger);background:var(--danger-soft)}
.account-notice{border-color:var(--success);background:var(--success-soft)}
.account-course-confirm{border:1px solid var(--warning);border-radius:var(--radius-sm);background:var(--warning-soft)}
.account-danger{color:var(--danger);border-color:var(--danger)}
.account-courses-note a{color:var(--accent);font-weight:650;text-underline-offset:3px}
@media(hover:hover) and (pointer:fine){.account-danger:hover:not(:disabled){background:var(--danger-soft)}.account-course-leave:hover{color:var(--danger)}}
.admin-metrics{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));overflow:hidden}
.admin-metrics > div{border-right:1px solid var(--line)}
.admin-metrics strong{color:var(--ink);font-family:var(--mono)}

/* Zona de práctica: instrucciones claras, entorno oscuro */
.lesson-surface{padding:22px 30px 28px}
.practice-workspace{border-radius:var(--radius);border-color:var(--ink);overflow:hidden;box-shadow:none}
.practice-tabs{background:var(--ink);border-bottom-color:#2a3260}
.practice-tabs button{color:var(--ink-soft);font-family:var(--mono)}
.practice-tabs button[aria-selected=true]{color:#fff;border-color:var(--highlight)}
.practice-tabs button:focus-visible{outline-color:var(--highlight)}
.practice-caption{color:var(--ink-soft)}
.exercise-controls .primary{min-height:44px;padding:10px 20px}
.feedback{border-radius:var(--radius-sm)}
.feedback.success{background:var(--success-soft);color:var(--success)}
.learning-goal{border-radius:0 var(--radius-sm) var(--radius-sm) 0}

/* Entrada pública: bienvenida y login */
.auth-page{background:var(--canvas)}
.auth-header{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--white);border-bottom:1px solid var(--line);padding:14px max(clamp(16px,5vw,48px),calc((100% - 1180px)/2 + clamp(16px,5vw,48px)))}
.auth-header .primary,.auth-header .secondary{min-height:40px;padding:8px 16px;font-size:14px}
.auth-layout{max-width:1180px;margin:0 auto;padding:clamp(32px,6vw,72px) clamp(16px,5vw,48px);grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(32px,6vw,88px);align-items:center}
.auth-intro{padding:0}
.auth-intro h1,.auth-intro h2{font-size:clamp(36px,4.6vw,56px);line-height:1.06;letter-spacing:-.03em;margin:16px 0 20px}
.auth-intro h1 em,.auth-intro h2 em{font-style:normal;color:var(--accent)}
.auth-intro > p{font-size:17px;max-width:44ch;color:var(--muted)}
.auth-surface{border-radius:var(--radius);border:1px solid var(--ink);box-shadow:var(--lift);padding:clamp(24px,4vw,40px)}
.auth-badges{display:flex;flex-wrap:wrap;gap:8px;margin:24px 0 0;padding:0;list-style:none}
.auth-badges li{font:500 13px/1.3 var(--mono);color:var(--ink);background:var(--beige);border-radius:var(--radius-sm);padding:6px 10px}
.auth-code{margin:28px 0 0;border-radius:var(--radius);background:var(--ink);color:#e7e9f5;overflow:hidden;max-width:520px}
.auth-code-bar{display:flex;gap:6px;align-items:center;padding:10px 14px;border-bottom:1px solid #2a3260;font:12px var(--mono);color:var(--ink-soft)}
.auth-code-bar i{display:none}
.auth-code-bar span{margin-left:0}
.auth-code pre{margin:0;padding:16px 18px;font:13px/1.8 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere}
.auth-code .prompt{color:var(--highlight)}
.auth-code .ok{color:#aee938}
.auth-code .dim{color:#9aa0bd}
.welcome-steps{max-width:1180px;margin:0 auto;padding:0 clamp(16px,5vw,48px) clamp(40px,6vw,72px)}
.welcome-steps h2{font-size:clamp(24px,2.6vw,32px);letter-spacing:-.02em;margin:8px 0 24px}
.welcome-step-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;list-style:none;padding:0;margin:0;border:1px solid var(--ink);border-radius:var(--radius)}
.welcome-step-list li{background:var(--white);padding:24px;border-right:1px solid var(--ink)}
.welcome-step-list li:last-child{border-right:0}
.welcome-step-list strong{display:flex;align-items:center;gap:10px;font-size:17px;margin-bottom:8px}
.welcome-step-list strong span{display:grid;place-items:center;width:28px;height:28px;border-radius:var(--radius-sm);background:var(--ink);color:#fff;font:600 13px/1 var(--mono)}
.welcome-step-list p{margin:0;color:var(--muted);font-size:15px;line-height:1.6}
.welcome-routes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;list-style:none;padding:0;margin:32px 0 0}
.welcome-routes li{border-radius:var(--radius);background:var(--ink);color:#fff;padding:20px;min-height:132px;display:flex;flex-direction:column;justify-content:space-between;gap:12px}
.welcome-routes small{font:500 12px/1.4 var(--mono);letter-spacing:.06em;color:var(--highlight)}
.welcome-routes strong{font-size:17px;line-height:1.35}
.auth-footer{border-top:1px solid var(--line);background:var(--white);padding:24px clamp(16px,5vw,48px);color:var(--muted);font-size:13px;text-align:center}
@media(max-width:960px){.welcome-routes{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){
  .auth-layout{grid-template-columns:1fr;gap:28px;padding-top:28px}
  .auth-intro h1,.auth-intro h2{font-size:clamp(32px,9vw,40px);margin:12px 0 14px;max-width:none}
  /* En el login la tarea principal es entrar: el formulario va primero en móvil. */
  .auth-layout:has(#auth-form) .auth-surface{order:-1}
  .auth-layout:has(#auth-form) .auth-intro h2{font-size:28px}
  .auth-layout:has(#auth-form) .auth-badges{display:none}
  .auth-surface{box-shadow:none}
  .auth-intro > p{font-size:15px}
  .auth-code{display:none}
  .welcome-step-list{grid-template-columns:1fr}
  .welcome-step-list li{border-right:0;border-bottom:1px solid var(--ink)}
  .welcome-step-list li:last-child{border-bottom:0}
  .auth-header .brand{font-size:20px}
}
@media(max-width:420px){.welcome-routes{grid-template-columns:1fr}.welcome-routes li{min-height:0}.auth-header .secondary{padding:8px 12px}}
@media (pointer:coarse){.study-save-shortcut{display:none}}
/* Respuestas escritas (finanzas, gestión): papel claro y líneas que se ajustan al ancho, también en el celular. */
#study-options #study-editor.is-written{background:var(--paper);color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere;overflow-x:hidden}
#study-options #study-editor.is-written:disabled{background:var(--cream);color:var(--ink)}
