/* ═══════════════════════════════════════════════════════════════════
   ESSAM · Iteración 2 — Tema del Campus del Alumno
   Coherente con la identidad: marfil, verde profundo, dorado.
   ═══════════════════════════════════════════════════════════════════ */

:root {
  --cp-bg: #EDF4EF;
  --cp-bg2: #F2EAD8;
  --cp-text: #1C2E22;
  --cp-muted: #476857
  --cp-gold: #7A6440
  --cp-gold2: #967F55
  --cp-dark: #1A3D28;
  --cp-border: rgba(42, 90, 58, 0.18);
  --cp-vio4: #0F2A1A;
  --cp-shadow: rgba(26, 61, 40, 0.15);
  --cp-locked: rgba(42, 90, 58, 0.45);
  --cp-gold3: #5c4a2c;
}

body {
  margin: 0;
  background-color: var(--cp-bg);
  background-image: url('assets/texture.jpg');
  color: var(--cp-text);
  font-family: 'EB Garamond', Georgia, serif;
  font-size: 1rem;
  line-height: 1.65;
}

h1, h2, h3, .cp-brand, .cp-unit-label {
  font-family: 'Cinzel', serif;
}

main { max-width: 1180px; margin: 0 auto; padding: 1.5rem 1.25rem 4rem; }

/* ── Cabecera ── */
.cp-header {
  max-width: 1180px;
  margin: 0 auto 1.5rem;
  padding: .85rem 1.25rem;
  border-bottom: 1px solid var(--cp-border);
}
.cp-header-inner {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1.5rem;
  min-width:0;
}
.cp-identity{min-width:0;}
.cp-brand {
  font-family: 'Cinzel', serif; font-size: 1.02rem; letter-spacing: 0.14em;
  color: var(--cp-dark); text-transform: uppercase;
  line-height:1.25;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.cp-subtitle{
  margin-top:.18rem;
  color:var(--cp-gold2);
  font-family:'EB Garamond',Georgia,serif;
  font-size:.88rem;
  letter-spacing:.11em;
  text-transform:uppercase;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.cp-nav-wrap{position:relative;z-index:120;flex:0 0 auto;}
.cp-menu{position:relative;}
.cp-menu summary{
  list-style:none;
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  cursor:pointer;
  user-select:none;
  color:var(--cp-dark);
  font-family:'EB Garamond',Georgia,serif;
  font-size:.95rem;
  letter-spacing:.04em;
  padding:.48rem .86rem;
  border:1px solid var(--cp-border);
  border-radius:999px;
  background:rgba(255,255,255,.34);
  box-shadow:0 2px 8px rgba(26,61,40,.05);
  transition:background .18s,color .18s,border-color .18s,box-shadow .18s;
  white-space:nowrap;
}
.cp-menu summary::-webkit-details-marker{display:none;}
.cp-menu summary::after{content:'⌄';font-size:.9em;transition:transform .18s;}
.cp-menu summary:hover,.cp-menu[open] summary{
  color:var(--cp-gold3);
  border-color:var(--cp-gold2);
  background:#f8fbf8;
  box-shadow:0 4px 14px rgba(26,61,40,.11);
}
.cp-menu[open] summary::after{transform:rotate(180deg);}
.cp-menu-icon{font-size:.9em;line-height:1;}
.cp-back.cp-menu-panel{
  position:absolute;
  right:0;
  top:calc(100% + .55rem);
  width:min(260px,calc(100vw - 2rem));
  display:flex;
  flex-direction:column;
  gap:.18rem;
  padding:.55rem;
  border:1px solid var(--cp-border);
  border-radius:12px;
  background:rgba(250,253,250,.98);
  box-shadow:0 14px 34px rgba(26,61,40,.18);
}
.cp-menu-heading{
  padding:.35rem .65rem .5rem;
  color:var(--cp-gold2);
  font-family:'Cinzel',serif;
  font-size:.72rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  border-bottom:1px solid rgba(42,90,58,.12);
}
.cp-back.cp-menu-panel a{
  display:flex;
  align-items:center;
  gap:.55rem;
  color:var(--cp-muted);
  text-decoration:none;
  font-size:.93rem;
  border:0;
  border-radius:7px;
  padding:.52rem .65rem;
  transition:background .18s,color .18s;
}
.cp-back.cp-menu-panel a:hover{color:var(--cp-dark);background:rgba(242,234,216,.7);}
.cp-menu-panel .cp-btn-lang{margin:.15rem 0 .2rem;align-self:flex-start;font-size:.86rem;}
@media(max-width:720px){
  .cp-header{padding:.7rem .9rem;}
  .cp-header-inner{align-items:flex-start;gap:.7rem;}
  .cp-brand{font-size:.84rem;letter-spacing:.1em;}
  .cp-subtitle{font-size:.72rem;letter-spacing:.07em;white-space:normal;line-height:1.25;}
  .cp-menu summary{font-size:.84rem;padding:.4rem .65rem;}
  .cp-back.cp-menu-panel{right:-.15rem;}
}
@media(prefers-reduced-motion:reduce){
  .cp-menu summary,.cp-menu summary::after,.cp-back.cp-menu-panel a{transition:none;}
}

/* ── Dodecaedro de progreso ── */
.cp-dodeca {
  display: flex; gap: 2rem; align-items: center; flex-wrap: wrap;
  background: linear-gradient(160deg, rgba(234, 244, 238, 0.75), rgba(244, 250, 246, 0.85));
  border: 1px solid var(--cp-border); border-radius: 12px;
  padding: 1.8rem 2rem; margin-bottom: 2.2rem;
  box-shadow: 0 6px 28px var(--cp-shadow);
}
.cp-dodeca-text { flex: 1 1 320px; min-width: 260px; }
.cp-dodeca-text h2 {
  margin: 0 0 0.5rem; font-size: 1.5rem; color: var(--cp-dark);
  letter-spacing: 0.06em;
}
.cp-dodeca-text p { margin: 0 0 1.2rem; color: var(--cp-muted); font-size: 0.98rem; }
.cp-progbar-wrap {
  height: 8px; background: rgba(42, 90, 58, 0.12); border-radius: 99px; overflow: hidden;
  margin-bottom: 0.5rem;
}
.cp-progbar {
  height: 100%; background: linear-gradient(90deg, var(--cp-gold2), var(--cp-gold));
  border-radius: 99px; transition: width 0.6s ease;
}
.cp-prog-label { font-size: 0.85rem; color: var(--cp-dark); font-family: 'Cinzel', serif; letter-spacing: 0.05em; }
.cp-dodeca-host {
  width: 400px; height: 400px; flex: 0 0 auto;
  display: flex; align-items: center; justify-content: center;
  position: relative;
}
.cp-dodeca-host canvas { display: block; }
.cp-tonenote {
  position: absolute; bottom: 10px; left: 50%; transform: translateX(-50%);
  background: rgba(26, 61, 40, 0.88); color: #F4EFD8; padding: 0.3rem 0.9rem;
  border-radius: 99px; font-family: 'Cinzel', serif; font-size: 0.8rem; letter-spacing: 0.08em;
  animation: cpFadeIn 0.3s ease;
}
@keyframes cpFadeIn { from { opacity: 0; transform: translate(-50%, 6px); } to { opacity: 1; transform: translate(-50%, 0); } }

/* ── Grid de unidades ── */
.cp-unidades h2 {
  text-align: center; font-size: 1.35rem; color: var(--cp-dark);
  letter-spacing: 0.08em; margin: 0 0 1.4rem;
}
.cp-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 1.25rem;
}
.cp-card {
  background: rgba(255, 253, 248, 0.85); border: 1px solid var(--cp-border);
  border-radius: 10px; padding: 1.3rem 1.4rem;
  box-shadow: 0 4px 16px var(--cp-shadow);
  transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.3s ease;
  display: flex; flex-direction: column;
}
.cp-card:hover { transform: translateY(-2px); box-shadow: 0 8px 26px var(--cp-shadow); }
.cp-card-head { display: flex; gap: 0.8rem; align-items: flex-start; margin-bottom: 0.7rem; }
.cp-icon {
  font-size: 1.2rem; width: 34px; height: 34px; flex: 0 0 34px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%; background: rgba(42, 90, 58, 0.08);
  border: 1px solid var(--cp-border); color: var(--cp-dark);
}
.cp-card.dominada .cp-icon { background: rgba(168, 147, 100, 0.22); border-color: var(--cp-gold2); }
.cp-card-title { flex: 1; }
.cp-unit-label {
  font-size: 0.68rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--cp-gold); margin-bottom: 0.1rem;
}
.cp-card-title > div:last-child {
  font-family: 'Cinzel', serif; font-size: 1.02rem; color: var(--cp-dark); line-height: 1.35;
}
.cp-obj { margin: 0 0 0.7rem; font-size: 0.92rem; color: var(--cp-text); }
.cp-lectura, .cp-practica, .cp-cierre { font-size: 0.88rem; margin-bottom: 0.55rem; }
.cp-lectura ul { margin: 0.25rem 0 0; padding-left: 1.2rem; color: var(--cp-muted); }
.cp-lectura li { margin-bottom: 0.15rem; }
.cp-practica { color: var(--cp-dark); }
.cp-cierre { color: var(--cp-muted); font-style: italic; margin-bottom: 0.9rem; }
.cp-actions {
  margin-top: auto; display: flex; flex-wrap: wrap; gap: 0.5rem; padding-top: 0.5rem;
  border-top: 1px solid var(--cp-border);
}
.cp-btn {
  font-family: 'Cinzel', serif; font-size: 0.72rem; letter-spacing: 0.06em;
  padding: 0.42rem 0.8rem; border-radius: 6px; cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
  border: 1px solid var(--cp-border); background: transparent; color: var(--cp-dark);
}
.cp-btn-mod:hover { background: rgba(42, 90, 58, 0.1); border-color: var(--cp-gold2); color: var(--cp-gold); }
.cp-btn-libro:hover { background: rgba(168, 147, 100, 0.12); border-color: var(--cp-gold); }
.cp-btn-estado { margin-left: auto; }
.cp-card:not(.dominada) .cp-btn-estado:hover { background: var(--cp-dark); color: #F4EFD8; border-color: var(--cp-dark); }
.cp-card.dominada .cp-btn-estado { background: rgba(168, 147, 100, 0.18); border-color: var(--cp-gold2); color: var(--cp-gold); }

/* ── Footer: leyenda y reinicio ── */
.cp-footer {
  margin-top: 2rem; display: flex; flex-wrap: wrap; gap: 1.2rem;
  justify-content: space-between; align-items: center;
  color: var(--cp-muted); font-size: 0.85rem;
}
.cp-legend strong { color: var(--cp-dark); }
.cp-btn-reset { border-color: rgba(139, 26, 26, 0.35); color: #8B1A1A; }
.cp-btn-reset:hover { background: rgba(139, 26, 26, 0.08); }

/* ── Móvil ── */
@media (max-width: 860px) {
  .cp-dodeca { flex-direction: column; }
  .cp-dodeca-host { width: 300px; height: 300px; }
  .cp-grid { grid-template-columns: 1fr; }
}

/* ══ Iteración 3 — Ventana de evaluación ══ */
.cp-exam-win{
  position: fixed; inset: 0; z-index: 9000;
  display: flex; align-items: center; justify-content: center;
  background: rgba(15, 42, 26, 0.72);
}
.cp-exam-win > *{ box-sizing: border-box; }
.cp-exam-head{
  display: flex; align-items: center; justify-content: space-between;
  padding: 0.9rem 1.1rem; border-bottom: 1px solid var(--cp-border);
}
.cp-exam-title{
  font-family: 'Cinzel', serif; font-size: 1.05rem;
  color: var(--cp-dark); text-transform: uppercase; letter-spacing: 0.06em;
}
.cp-exam-close{
  background: none; border: 1px solid var(--cp-border); border-radius: 4px;
  color: var(--cp-muted); font-size: 0.9rem; cursor: pointer;
  padding: 0.15rem 0.55rem; line-height: 1.4;
}
.cp-exam-close:hover{ color: var(--cp-gold); border-color: var(--cp-gold2); }
.cp-exam-body{
  background: var(--cp-bg); border-radius: 10px;
  margin: 0.5rem; max-width: 560px; width: calc(100% - 1rem);
  padding: 1.4rem 1.6rem 1.8rem;
  box-shadow: 0 10px 40px rgba(15, 42, 26, 0.35);
  max-height: calc(100vh - 2rem); overflow-y: auto;
}
.cp-exam-progress{
  height: 6px; border-radius: 3px; background: var(--cp-bg2);
  overflow: hidden; margin-bottom: 0.8rem;
}
.cp-exam-progress-fill{
  height: 100%; width: 0;
  background: linear-gradient(90deg, var(--cp-gold2), var(--cp-gold));
  transition: width 0.35s ease;
}
.cp-exam-pnum{ font-size: 0.8rem; color: var(--cp-muted); letter-spacing: 0.08em; text-transform: uppercase; }
.cp-exam-pq{ font-size: 1.15rem; color: var(--cp-dark); margin: 0.4rem 0 1rem; line-height: 1.45; }
.cp-exam-opts{ display: flex; flex-direction: column; gap: 0.5rem; }
.cp-exam-opt{
  display: block; width: 100%; text-align: left;
  background: var(--cp-bg2); border: 1px solid var(--cp-border);
  border-radius: 8px; padding: 0.65rem 0.9rem;
  font-family: 'EB Garamond', Georgia, serif; font-size: 1rem;
  color: var(--cp-text); cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease;
}
.cp-exam-opt:hover{ background: #EFE6CE; border-color: var(--cp-gold2); }
.cp-exam-opt:disabled{ opacity: 0.55; cursor: default; }
.cp-exam-audio{ margin-bottom: 0.9rem; }
.cp-exam-play{
  display: inline-flex; align-items: center; gap: 0.4rem;
  background: #F2E8CE; color: #1C2E22; border: 1px solid var(--cp-gold2);
  border-radius: 999px; padding: 0.45rem 1rem;
  font-family: 'EB Garamond', Georgia, serif; font-size: 0.95rem;
  cursor: pointer; margin-bottom: 0.7rem;
}
.cp-exam-play:hover{ background: #E8D8B1; color: #1C2E22; }
/* Iteración 34 — fondo verde pastel con letra oscura (pedido del autor); selector
   doble clase para no afectar a otros botones del campus. */
.cp-exam-opt.cp-exam-siguiente{
  margin-top: 0.9rem;
  background: #9DC3A6; color: #1C2E22; font-weight: 700; text-align: center;
  border: 1px solid rgba(74, 122, 88, 0.5); padding: 0.55rem 1.2rem;
  text-shadow: none;
  letter-spacing: 0.04em;
}
.cp-exam-opt.cp-exam-siguiente:hover{ background: #85B090; opacity: 1; }
.cp-exam-controls{display:flex;gap:.6rem;justify-content:flex-end;flex-wrap:wrap;margin-top:1.15rem;padding-top:.8rem;border-top:1px solid var(--cp-border)}
.cp-exam-control{border:1px solid var(--cp-gold2);border-radius:7px;padding:.45rem .72rem;background:#F7F2E8;color:#1C2E22;font-family:'EB Garamond',Georgia,serif;font-size:.92rem;cursor:pointer}
.cp-exam-control:hover{background:#EFE6CE;color:#1C2E22}
.cp-exam-control.cp-exam-abort{border-color:#B77A6F;color:#4A2525;background:#FFF8F5}
.cp-exam-control.cp-exam-abort:hover{background:#F6E2DC;color:#4A2525}
.cp-exam-fb{
  border-radius: 8px; padding: 0.75rem 0.95rem; margin-top: 1rem;
  font-size: 0.98rem; line-height: 1.4;
}
.cp-fb-ok{ background: rgba(74, 122, 88, 0.14); border: 1px solid rgba(74, 122, 88, 0.4); color: var(--cp-dark); }
.cp-fb-mal{ background: rgba(140, 60, 60, 0.10); border: 1px solid rgba(140, 60, 60, 0.35); color: #4A2525; }

/* Emparejamiento */
.cp-exam-match{ display: flex; flex-direction: column; gap: 0.7rem; }
.cp-exam-row{
  display: flex; align-items: center; gap: 0.6rem;
  background: var(--cp-bg2); border: 1px solid var(--cp-border);
  border-radius: 8px; padding: 0.5rem 0.8rem;
}
.cp-exam-izq{ flex: 1 1 40%; font-weight: 600; color: var(--cp-dark); }
.cp-exam-elegida{ flex: 1 1 60%; font-size: 0.95rem; color: var(--cp-muted); }
.cp-match-ok{ color: var(--cp-dark); }
.cp-exam-derechas{ display: flex; flex-wrap: wrap; gap: 0.45rem; }
.cp-exam-der{
  background: var(--cp-bg); border: 1px solid var(--cp-gold2);
  border-radius: 6px; padding: 0.35rem 0.7rem;
  font-family: 'EB Garamond', Georgia, serif; font-size: 0.92rem;
  color: var(--cp-dark); cursor: pointer;
}
.cp-exam-der:hover{ background: #EFE6CE; }
.cp-exam-comprobar{
  margin-top: 0.2rem;
  background: #F7F2E8; color: #1C2E22;
  border: 1px solid var(--cp-gold2); text-align: center;
}

/* Resultado */
.cp-exam-result{ text-align: center; padding: 0.4rem 0; }
.cp-exam-nota{
  font-family: 'Cinzel', serif; font-size: 2.6rem; color: var(--cp-gold);
  line-height: 1.1;
}
.cp-res-mal .cp-exam-nota{ color: #7A4A4A; }
.cp-exam-det{ margin: 0.3rem 0 0.7rem; font-size: 0.85rem; color: var(--cp-muted); }
.cp-exam-msg{ font-size: 1.02rem; line-height: 1.45; color: var(--cp-text); margin: 0 0 1.1rem; }
.cp-exam-actions{ display: flex; gap: 0.7rem; justify-content: center; flex-wrap: wrap; }
.cp-exam-cerrar{
  background: #9DC3A6; color: #1C2E22; border-color: rgba(74,122,88,.5); text-align: center; flex: 1 1 40%; min-width: 150px;
}
.cp-exam-repetir{
  background: var(--cp-bg2); color: var(--cp-dark); text-align: center; flex: 1 1 40%; min-width: 150px;
  border-color: var(--cp-gold2);
}
/* Iteración 34 — botón «Intentar de nuevo»: nunca se queda el alumno
   bloqueado tras un fallo; reactiva las opciones sin penalizar. */
.cp-exam-reintentar{
  margin-top: 0.6rem;
  background: #9DC3A6; color: #1C2E22; text-align: center;
  border-color: rgba(74, 122, 88, 0.5);
  flex: 1 1 40%; min-width: 150px;
}

/* Tarjeta bloqueada y botón de evaluación */
.cp-bloqueada{ opacity: 0.62; filter: grayscale(0.35); }
.cp-bloqueada-btn{ cursor: not-allowed !important; opacity: 0.6; }
.cp-eval-hecha{ background: rgba(74, 122, 88, 0.14) !important; }
/* Iteración 16 — nota de clase vista en la tarjeta de unidad */
.cp-clase-vista{ display:inline-block; font-size:.78rem; color:#7a8c5a; background:rgba(74,122,88,0.10); border:1px solid rgba(74,122,88,0.30); border-radius:10px; padding:2px 9px; margin-left:6px; }
/* Iteración 16 — zona de acceso rápido (Aula / Biblioteca / Certificado) dentro de las unidades */
.cp-acceso-rapido{ margin-top:2.2rem; background:#fff; border:1px solid var(--cp-border); border-radius:16px; padding:1.4rem 1.6rem; }
.cp-acceso-rapido h3{ font-size:1.05rem; color:var(--cp-dark); margin:0 0 0.9rem; letter-spacing:0.04em; }
.cp-acceso-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:0.9rem; }
.cp-acceso-item{ display:flex; flex-direction:column; align-items:flex-start; gap:0.2rem; padding:0.85rem 1rem; background:#f2efe6; border:1px solid rgba(194,162,82,0.35); border-radius:12px; text-decoration:none; color:#2a3a2e; font-weight:600; font-size:0.95rem; transition:background .15s; }
.cp-acceso-item span[data-i18n$='_sub']{ font-weight:400; font-size:0.78rem; color:#6b6f62; }
.cp-acceso-item:hover{ background:#eee7cf; }
@media (max-width:640px){ .cp-acceso-grid{ grid-template-columns:1fr; } }
.cp-btn-eval{
  background: var(--cp-bg2); border: 1px dashed var(--cp-gold2);
  border-radius: 6px; padding: 0.35rem 0.75rem;
  font-family: 'EB Garamond', Georgia, serif; font-size: 0.92rem;
  color: var(--cp-gold); cursor: pointer;
}
.cp-btn-eval:hover{ background: #EFE6CE; }

/* ── Aviso no bloqueante (sustituye a alert/confirm nativos) ── */
.cp-aviso{
  position: fixed;
  top: 20px;
  left: 50%;
  transform: translateX(-50%) translateY(-14px);
  z-index: 9999;
  max-width: 92vw;
  padding: 14px 26px;
  background: var(--cp-gold2);
  color: #2b2b26;
  border-radius: 10px;
  font-family: 'EB Garamond', Georgia, serif;
  font-size: 1rem;
  box-shadow: 0 8px 30px rgba(30, 40, 30, 0.28);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s ease, transform 0.35s ease;
}
.cp-aviso.cp-aviso-show{
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ── Cierre del curso (Iteración 6) ── */
.cp-cerrado {
  margin: 2.4rem 0 2rem; padding: 2.2rem 2rem; text-align: center;
  background: linear-gradient(160deg, rgba(234, 244, 238, 0.85), rgba(250, 244, 224, 0.9));
  border: 2px solid var(--cp-gold2); border-radius: 14px;
  box-shadow: 0 8px 36px var(--cp-shadow);
}
.cp-cerrado h2 { color: var(--cp-gold); margin: 0 0 0.5rem; }
.cp-acciones-cierre { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin: 1.1rem 0 0.6rem; }
.cp-btn-cert {
  font-family: 'Cinzel', serif; font-size: 0.85rem; letter-spacing: 0.08em;
  text-transform: uppercase; cursor: pointer; border-radius: 6px; padding: 0.55rem 1.3rem;
  background: var(--cp-dark); color: #F5F0E0; border: 1px solid var(--cp-dark);
  text-decoration: none; display: inline-block;
  transition: background 0.2s, border-color 0.2s;
}
.cp-btn-cert:hover { background: #224d33; }
.cp-btn-cert.secondary {
  background: transparent; color: var(--cp-dark); border: 1px solid var(--cp-muted);
}
.cp-btn-cert.secondary:hover { border-color: var(--cp-gold2); color: var(--cp-gold); }
.cp-logro { font-size: 0.95rem; color: var(--cp-gold); margin-top: 0.8rem; }

/* ── Selector de idioma ES/EN (Iteración de corrección) ── */
.cp-btn-lang {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin-left: 0.9rem;
  padding: 0.25rem 0.65rem;
  border: 1px solid rgba(42, 90, 58, 0.35);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.65);
  color: var(--cp-ink, #1d3326);
  font-family: 'EB Garamond', serif;
  font-size: 0.9rem;
  cursor: pointer;
  line-height: 1;
  vertical-align: middle;
}
.cp-btn-lang:hover { background: rgba(42, 90, 58, 0.1); border-color: var(--cp-gold2, #8b9364); }
@media (prefers-color-scheme: dark) {
  .cp-btn-lang { background: rgba(29, 51, 38, 0.7); color: #e9e6da; }
  .cp-btn-lang:hover { background: rgba(42, 90, 58, 0.45); }
}

/* ══ Iteración 22 — Recurso permanente «Círculo de Quintas» ══ */
.cp-quintas-float {
  position: fixed;
  right: 1.1rem;
  bottom: 1.1rem;
  z-index: 9000;
  padding: 0.55rem 1.05rem;
  border-radius: 999px;
  border: 1px solid rgba(42, 90, 58, 0.4);
  background: rgba(255, 255, 255, 0.85);
  color: #2a5a3a;
  font-family: 'EB Garamond', serif;
  font-size: 0.95rem;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(42, 90, 58, 0.18);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}
/* Icono de los doce tonos (reemplaza la estrella de seis puntas, v=2): círculo con 12 puntos. */
.cp-q-ico svg {
  vertical-align: -0.18em;
  margin-right: 0.3rem;
}
.cp-quintas-float:hover {
  background: rgba(237, 244, 239, 0.98);
  border-color: var(--cp-gold2, #8b9364);
  box-shadow: 0 6px 18px rgba(42, 90, 58, 0.28);
}
@media (prefers-color-scheme: dark) {
  .cp-quintas-float { background: rgba(29, 51, 38, 0.85); color: #e9e6da; }
}
.cp-q-panel {
  position: fixed;
  right: 1.1rem;
  bottom: 4.6rem;
  z-index: 9001;
  width: min(440px, calc(100vw - 2.2rem));
  max-height: calc(100vh - 6rem);
  overflow: auto;
  border-radius: 14px;
  border: 1px solid rgba(42, 90, 58, 0.3);
  background: #fffef9;
  box-shadow: 0 12px 40px rgba(42, 90, 58, 0.28);
  animation: cp-q-in 0.22s ease-out;
}
@keyframes cp-q-in {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}
.cp-q-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.7rem 1rem;
  border-bottom: 1px solid rgba(42, 90, 58, 0.18);
}
.cp-q-title {
  font-family: 'Cinzel', serif;
  font-weight: 600;
  color: var(--cp-dark);
  font-size: 1rem;
  letter-spacing: 0.06em;
}
.cp-q-close {
  border: none;
  background: none;
  font-size: 1.1rem;
  color: var(--cp-muted);
  cursor: pointer;
  padding: 0 0.2rem;
  line-height: 1;
}
.cp-q-close:hover { color: var(--cp-gold); }
.cp-q-body { padding: 0.9rem 1rem 1rem; }
.cp-q-img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 8px;
  border: 1px solid rgba(42, 90, 58, 0.2);
}
.cp-q-desc {
  margin: 0.6rem 0 0.7rem;
  font-family: 'EB Garamond', serif;
  font-size: 0.95rem;
  color: var(--cp-muted);
  font-style: italic;
  line-height: 1.45;
}
.cp-q-dl {
  display: block;
  text-align: center;
  padding: 0.5rem 0.8rem;
  border-radius: 10px;
  border: 1px solid var(--cp-gold2, #8b9364);
  background: rgba(139, 147, 100, 0.08);
  color: #3f5144;
  font-family: 'EB Garamond', serif;
  font-size: 0.95rem;
  text-decoration: none;
  margin-bottom: 0.55rem;
}
.cp-q-dl:hover { background: rgba(139, 147, 100, 0.2); }
.cp-q-btn-cerrar {
  display: block;
  width: 100%;
  padding: 0.45rem;
  border-radius: 10px;
  border: 1px solid rgba(42, 90, 58, 0.35);
  background: transparent;
  color: var(--cp-dark);
  font-family: 'EB Garamond', serif;
  font-size: 0.95rem;
  cursor: pointer;
}
.cp-q-btn-cerrar:hover { background: rgba(42, 90, 58, 0.08); }
@media (prefers-color-scheme: dark) {
  .cp-q-panel { background: #22332a; }
}
@media (max-width: 520px) {
  .cp-quintas-float { right: 0.7rem; bottom: 0.7rem; font-size: 0.85rem; padding: 0.45rem 0.85rem; }
  .cp-q-panel { right: 0.5rem; bottom: 3.8rem; width: calc(100vw - 1rem); }
}

/* ══ Currículo V2 — unidades nuevas, clases y evaluación ══ */
.cv2-campus{max-width:1180px;margin:0 auto;}
.cv2-summary{display:flex;align-items:flex-end;justify-content:space-between;gap:1.2rem;padding:1.35rem 1.5rem;background:linear-gradient(145deg,rgba(234,244,238,.9),rgba(250,247,232,.92));border:1px solid var(--cp-border);border-radius:14px;box-shadow:0 6px 24px var(--cp-shadow);}
.cv2-kicker{font-family:'Cinzel',serif;font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;color:var(--cp-gold);}
.cv2-summary h1{margin:.2rem 0 .25rem;color:var(--cp-dark);font-size:1.55rem;letter-spacing:.04em;}
.cv2-summary p{margin:0;color:var(--cp-muted);font-size:1rem;}
.cv2-score{display:flex;flex-direction:column;align-items:flex-end;min-width:130px;color:var(--cp-dark);}
.cv2-score strong{font-family:'Cinzel',serif;font-size:1.55rem;line-height:1.1;color:var(--cp-gold);}
.cv2-score span{font-size:.82rem;color:var(--cp-muted);}
.cv2-score small{margin-top:.25rem;font-size:.78rem;color:var(--cp-muted);}
.cv2-progress{height:8px;margin:1rem 0 1.55rem;background:rgba(42,90,58,.12);border-radius:99px;overflow:hidden;}
.cv2-progress-fill{height:100%;background:linear-gradient(90deg,var(--cp-gold2),var(--cp-gold));border-radius:99px;transition:width .35s ease;}
.cv2-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin:0 0 .9rem;}
.cv2-section-head h2{margin:0;color:var(--cp-dark);font-size:1.28rem;letter-spacing:.07em;}
.cv2-section-head span{font-size:.85rem;color:var(--cp-muted);}
.cv2-grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr));}
.cv2-unit{position:relative;min-height:100%;background:rgba(255,253,248,.9);border:1px solid var(--cp-border);border-radius:12px;padding:1.15rem 1.2rem 1rem;box-shadow:0 4px 16px var(--cp-shadow);display:flex;flex-direction:column;transition:transform .18s ease,box-shadow .18s ease,opacity .18s ease;}
.cv2-unit:hover{transform:translateY(-2px);box-shadow:0 8px 25px var(--cp-shadow);}
.cv2-unit.cv2-locked{opacity:.62;filter:grayscale(.2);}
.cv2-unit.cv2-approved{border-color:rgba(122,100,64,.46);}
.cv2-unit-head{display:flex;align-items:flex-start;gap:.75rem;min-height:55px;}
.cv2-number{display:flex;align-items:center;justify-content:center;flex:0 0 38px;width:38px;height:38px;border-radius:50%;background:rgba(42,90,58,.1);border:1px solid var(--cp-border);color:var(--cp-dark);font-family:'Cinzel',serif;font-size:.83rem;}
.cv2-unit-head h3{margin:.15rem 0 0;color:var(--cp-dark);font-size:1.04rem;line-height:1.28;}
.cv2-status{margin-left:auto;white-space:nowrap;padding:.2rem .42rem;border-radius:999px;background:rgba(42,90,58,.08);color:var(--cp-muted);font-size:.72rem;}
.cv2-goal{margin:.8rem 0 .45rem;color:var(--cp-text);font-size:.93rem;line-height:1.43;}
.cv2-source{margin:0 0 .75rem;color:var(--cp-muted);font-size:.8rem;line-height:1.35;}
.cv2-class-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem;margin-top:auto;}
.cv2-class{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:.12rem;min-width:0;padding:.52rem .6rem;border:1px solid var(--cp-border);border-radius:8px;background:rgba(242,234,216,.48);color:var(--cp-dark);cursor:pointer;font-family:'EB Garamond',Georgia,serif;}
.cv2-class:hover:not(:disabled){background:#efe6ce;border-color:var(--cp-gold2);}
.cv2-class.is-done{background:rgba(74,122,88,.12);border-color:rgba(74,122,88,.34);}
.cv2-class:disabled{cursor:not-allowed;opacity:.58;}
.cv2-class span{font-weight:600;font-size:.86rem;}
.cv2-class small{overflow:hidden;max-width:100%;text-overflow:ellipsis;white-space:nowrap;color:var(--cp-muted);font-size:.76rem;}
.cv2-card-foot{display:flex;align-items:center;justify-content:space-between;gap:.7rem;margin-top:.85rem;padding-top:.7rem;border-top:1px solid var(--cp-border);color:var(--cp-muted);font-size:.77rem;}
.cv2-actions{display:flex;gap:.42rem;flex-wrap:wrap;justify-content:flex-end;}
.cv2-actions .cp-btn{font-family:'EB Garamond',Georgia,serif;font-size:.84rem;padding:.35rem .58rem;}
.cv2-actions .cp-btn:disabled{cursor:not-allowed;opacity:.55;}
.cv2-done-btn{background:rgba(74,122,88,.12);border-color:rgba(74,122,88,.36);color:var(--cp-dark);}
.cv2-access{margin-top:1.8rem;}
.cv2-access h2{margin:0 0 .85rem;color:var(--cp-dark);font-family:'Cinzel',serif;font-size:1.05rem;letter-spacing:.05em;}
.cv2-modal{position:fixed;inset:0;z-index:9500;display:flex;align-items:center;justify-content:center;padding:1rem;background:rgba(15,42,26,.72);}
.cv2-modal-panel{box-sizing:border-box;width:min(680px,100%);max-height:calc(100vh - 2rem);overflow:auto;background:var(--cp-bg);border:1px solid var(--cp-border);border-radius:12px;box-shadow:0 16px 48px rgba(15,42,26,.35);}
.cv2-modal-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1.1rem;border-bottom:1px solid var(--cp-border);}
.cv2-modal-head h2{margin:0;color:var(--cp-dark);font-family:'Cinzel',serif;font-size:1.08rem;line-height:1.25;}
.cv2-close{border:1px solid var(--cp-border);border-radius:5px;background:transparent;color:var(--cp-muted);font-size:1.2rem;line-height:1;padding:.13rem .48rem;cursor:pointer;}
.cv2-close:hover{color:var(--cp-dark);border-color:var(--cp-gold2);}
.cv2-modal-body{padding:1.15rem 1.25rem;color:var(--cp-text);}
.cv2-modal-actions{display:flex;justify-content:flex-end;gap:.55rem;flex-wrap:wrap;padding:.8rem 1.25rem 1.15rem;border-top:1px solid var(--cp-border);}
.cv2-modal-actions .cp-btn{font-family:'EB Garamond',Georgia,serif;font-size:.96rem;}
.cv2-class-content p,.cv2-practice-content p{margin:.25rem 0 .8rem;line-height:1.55;}
.cv2-class-content h3,.cv2-practice-content h3{margin:1rem 0 .25rem;color:var(--cp-dark);font-family:'Cinzel',serif;font-size:.9rem;letter-spacing:.05em;}
.cv2-practice-note,.cv2-exam-note{padding:.62rem .75rem;background:rgba(242,234,216,.68);border:1px solid var(--cp-border);border-radius:8px;color:var(--cp-muted);font-size:.88rem;}
.cv2-exam-meta{display:flex;justify-content:space-between;gap:1rem;color:var(--cp-muted);font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;}
.cv2-exam-bar{height:6px;margin:.7rem 0 1.1rem;background:rgba(42,90,58,.12);border-radius:99px;overflow:hidden;}
.cv2-exam-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--cp-gold2),var(--cp-gold));}
.cv2-question{margin:0 0 1rem;color:var(--cp-dark);font-size:1.18rem;line-height:1.42;}
.cv2-options{display:flex;flex-direction:column;gap:.5rem;}
.cv2-option{display:flex;gap:.55rem;align-items:flex-start;padding:.66rem .78rem;border:1px solid var(--cp-border);border-radius:8px;background:var(--cp-bg2);color:var(--cp-text);cursor:pointer;line-height:1.35;}
.cv2-option:hover{background:#efe6ce;border-color:var(--cp-gold2);}
.cv2-option input{margin-top:.22rem;accent-color:var(--cp-dark);}
.cv2-primary{background:var(--cp-dark);border-color:var(--cp-dark);color:#f5f0e0;}
.cv2-primary:hover{background:#224d33;color:#f5f0e0;}
.cv2-secondary{background:#f7f2e8;color:#1c2e22;border-color:var(--cp-gold2);}
.cv2-secondary:hover{background:#efe6ce;color:#1c2e22;}
 .cv2-exam-confirmed{margin:.8rem 0 0;padding:.55rem .7rem;border:1px solid rgba(42,90,58,.28);border-radius:8px;background:rgba(231,245,234,.82);color:#1c2e22;font-weight:600;}
.cv2-exam-answer-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1rem;padding-top:.85rem;border-top:1px solid var(--cp-border);}
.cv2-exam-answer-action{display:inline-flex;align-items:center;justify-content:center;min-width:12.5rem;font-weight:700;text-align:center;color:#f5f0e0!important;background:#1a3d28!important;border:1px solid #1a3d28!important;box-shadow:0 2px 6px rgba(15,42,26,.18);}
.cv2-exam-answer-action:hover,.cv2-exam-answer-action:focus-visible{color:#fffdf8!important;background:#224d33!important;border-color:#224d33!important;}
@media(max-width:620px){.cv2-exam-answer-actions{justify-content:stretch}.cv2-exam-answer-action{width:100%;min-width:0;}}
.cv2-exam-warning{margin:.8rem 0 0;padding:.55rem .7rem;border:1px solid rgba(140,60,60,.35);border-radius:8px;background:rgba(140,60,60,.08);color:#4a2525;font-weight:600;}
.cv2-exam-feedback{margin:.8rem 0 0;padding:.72rem .82rem;border:1px solid var(--cp-border);border-radius:8px;line-height:1.45;}
.cv2-exam-feedback.is-good{background:rgba(74,122,88,.14);border-color:rgba(74,122,88,.42);color:#1c2e22;}
.cv2-exam-feedback.is-bad{background:rgba(140,60,60,.10);border-color:rgba(140,60,60,.38);color:#4a2525;}
.cv2-exam-feedback strong{font-weight:700;}
.cv2-exam-feedback p{margin:.35rem 0 0;}
.cv2-result{text-align:center;padding:.65rem 0 .25rem;}
.cv2-result strong{display:block;font-family:'Cinzel',serif;font-size:2.55rem;color:var(--cp-gold);line-height:1.15;}
.cv2-result.is-pending strong{color:#7a4a4a;}
.cv2-result p{margin:.45rem 0;color:var(--cp-text);}
.cv2-result small{color:var(--cp-muted);}
@media(max-width:720px){.cv2-summary{align-items:flex-start;flex-direction:column;}.cv2-score{align-items:flex-start;}.cv2-grid{grid-template-columns:1fr;}.cv2-class-list{grid-template-columns:1fr;}.cv2-card-foot{align-items:flex-start;flex-direction:column;}.cv2-actions{justify-content:flex-start;}.cv2-modal{padding:.5rem;}.cv2-modal-panel{max-height:calc(100vh - 1rem);}}
.cv2-notice{margin:.85rem 0;padding:.65rem .8rem;border:1px solid rgba(140,60,60,.35);border-radius:8px;background:rgba(140,60,60,.08);color:#4a2525;font-size:.9rem;}
.cv2-reading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin:1rem 0;padding:.85rem 1rem;border:1px solid rgba(42,90,58,.2);border-radius:10px;background:rgba(239,247,241,.72)}
.cv2-reading strong{display:block;color:var(--ink,#203c2b);font-family:'Cinzel',serif;font-size:.78rem;letter-spacing:.04em}.cv2-reading p{margin:.25rem 0;font-weight:600}.cv2-reading small{display:block;line-height:1.35}.cv2-reading-link{white-space:nowrap;text-decoration:none;align-self:center}.cv2-practice-steps{margin:0;padding-left:1.35rem}.cv2-practice-steps li{margin:.7rem 0;padding-left:.25rem}.cv2-practice-steps label{display:flex;gap:.45rem;align-items:flex-start}.cv2-practice-steps input{margin-top:.25rem}.cv2-practice-steps p{margin:.25rem 0}.cv2-practice-steps small{display:block;line-height:1.35}.cv2-practice-game{margin:1rem 0;padding:.8rem 1rem;border-left:3px solid var(--gold2,#8b9364);background:rgba(242,232,206,.45)}.cv2-practice-validation{min-height:1.2em;color:#5b3d24;font-size:.9rem}@media(max-width:620px){.cv2-reading{display:block}.cv2-reading-link{display:inline-block;margin-top:.65rem}}
.cv2-interactive-host{line-height:1.45}.cv2-interactive-head{display:flex;align-items:center;gap:.8rem;margin-bottom:.85rem;color:var(--gold2,#8b9364);font-size:.9rem}.cv2-mini-progress{height:6px;flex:1;background:rgba(42,90,58,.12);border-radius:99px;overflow:hidden}.cv2-mini-progress i{display:block;height:100%;background:var(--gold2,#8b9364);border-radius:99px}.cv2-week-context{padding:.7rem .85rem;border-left:3px solid var(--gold2,#8b9364);background:rgba(239,247,241,.7)}.cv2-interactive-instruction{font-size:.94rem;color:#5b3d24}.cv2-order-palette,.cv2-select-options{display:flex;flex-wrap:wrap;gap:.55rem;margin:1rem 0}.cv2-choice.is-selected{opacity:.55;cursor:default}.cv2-order-picked{min-height:2.2rem;padding-left:1.35rem}.cv2-order-picked li{margin:.28rem 0}.cv2-reset-choice{font-size:.85rem!important;padding:.35rem .7rem!important}.cv2-option-check{display:flex;gap:.45rem;align-items:center;padding:.55rem .7rem;border:1px solid rgba(42,90,58,.2);border-radius:8px;background:rgba(255,255,255,.65);cursor:pointer}.cv2-match-rows{display:grid;gap:.75rem;margin:1rem 0}.cv2-match-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(10rem,42%);gap:.7rem;align-items:center;padding:.55rem .7rem;border:1px solid rgba(42,90,58,.16);border-radius:8px;background:rgba(255,255,255,.62)}.cv2-match-row select{font:inherit;color:var(--ink,#203c2b);padding:.45rem;border:1px solid rgba(42,90,58,.25);border-radius:6px;background:#fffdf8}.cv2-interactive-feedback{margin:1rem 0;padding:.75rem .9rem;border-radius:8px;border:1px solid rgba(145,75,45,.25);background:rgba(250,239,225,.8)}.cv2-interactive-feedback.is-good{border-color:rgba(42,90,58,.3);background:rgba(231,245,234,.82);color:#24543c}.cv2-interactive-feedback.is-error{color:#7c3f29}.cv2-interactive-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1rem}.cv2-check-answer:disabled{opacity:.5;cursor:not-allowed}.cv2-interactive-complete{text-align:center;padding:2rem 1rem}.cv2-interactive-complete h3{color:var(--gold2,#8b9364)}@media(max-width:620px){.cv2-match-row{grid-template-columns:1fr}.cv2-interactive-actions{justify-content:stretch}.cv2-interactive-actions .cp-btn{flex:1}}

/* Prácticas V3: tablero de correspondencias y piscina de fichas */
.cv2-matrix-board{overflow-x:auto;margin:1rem 0 1.15rem;padding-bottom:.35rem}.cv2-matrix-grid{display:grid;grid-template-columns:minmax(5.2rem,.6fr) repeat(var(--cv2-columns),minmax(8.3rem,1fr));min-width:42rem;gap:4px}.cv2-matrix-corner,.cv2-matrix-heading,.cv2-matrix-label,.cv2-matrix-slot{min-height:3rem;padding:.55rem .6rem;border:1px solid rgba(42,90,58,.2);border-radius:7px}.cv2-matrix-corner,.cv2-matrix-heading{display:flex;align-items:center;justify-content:center;text-align:center;background:rgba(139,147,100,.15);font-weight:700;font-size:.82rem;color:var(--ink,#203c2b)}.cv2-matrix-label{display:flex;align-items:center;background:rgba(239,247,241,.72);font-size:.8rem;font-weight:600}.cv2-matrix-slot{width:100%;font:inherit;text-align:center;background:#fffdf8;color:var(--ink,#203c2b);cursor:pointer}.cv2-matrix-slot.is-empty{border-style:dashed;color:#7a806e}.cv2-matrix-slot.is-filled{background:rgba(222,239,224,.95);border-color:rgba(42,90,58,.42);font-weight:600}.cv2-matrix-slot.is-targeted{outline:3px solid rgba(191,145,54,.5);outline-offset:1px}.cv2-matrix-pools{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.8rem;margin:1rem 0}.cv2-matrix-pool{padding:.7rem;border:1px solid rgba(42,90,58,.16);border-radius:9px;background:rgba(239,247,241,.45)}.cv2-matrix-pool h4{margin:.1rem 0 .6rem;color:var(--gold2,#8b9364);font-size:.92rem}.cv2-pool-items{display:flex;flex-wrap:wrap;gap:.45rem}.cv2-pool-card{padding:.5rem .65rem;border:1px solid rgba(42,90,58,.24);border-radius:7px;background:#fffdf8;color:var(--ink,#203c2b);font:inherit;cursor:grab;touch-action:manipulation}.cv2-pool-card:hover,.cv2-pool-card:focus-visible{border-color:var(--gold2,#8b9364);transform:translateY(-1px)}.cv2-pool-card.is-selected{background:rgba(224,207,157,.6);border-color:var(--gold2,#8b9364);box-shadow:0 0 0 2px rgba(191,145,54,.22)}.cv2-matrix-slot:focus-visible,.cv2-pool-card:focus-visible{outline:3px solid rgba(63,104,74,.35);outline-offset:2px}@media(max-width:620px){.cv2-matrix-pools{grid-template-columns:1fr}.cv2-matrix-grid{min-width:38rem}.cv2-matrix-heading,.cv2-matrix-label,.cv2-matrix-slot{font-size:.78rem;padding:.45rem}.cv2-pool-card{cursor:pointer}}


/* V3.1: selección persistente para tablas largas */
.cv2-matrix-selection{position:sticky;top:0;z-index:8;display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:.75rem 0 .9rem;padding:.65rem .8rem;border:1px solid rgba(139,147,100,.32);border-radius:9px;background:rgba(247,244,232,.97);box-shadow:0 3px 12px rgba(15,42,26,.12);color:var(--cp-muted);font-size:.9rem}
.cv2-matrix-selection.is-active{border-color:rgba(191,145,54,.72);background:rgba(247,239,211,.98);color:var(--cp-dark)}
.cv2-matrix-selection strong{color:var(--cp-dark)}
.cv2-clear-selection{flex:0 0 auto;font-size:.82rem!important;padding:.35rem .58rem!important;background:transparent;color:var(--cp-dark)}
.cv2-matrix-pools{margin:.2rem 0 1.15rem}
.cv2-matrix-board{margin:0 0 1.15rem}
@media(max-width:620px){.cv2-matrix-selection{align-items:flex-start;flex-direction:column;gap:.5rem}.cv2-clear-selection{width:100%}.cv2-matrix-selection{font-size:.86rem}}


/* V3.2: doce tarjetas únicas, cada una con cuatro campos de correspondencia */
.cv2-matrix-board{margin:0 0 1.15rem}
.cv2-matrix-board-head{display:flex;align-items:baseline;justify-content:space-between;gap:.8rem;margin:.25rem 0 .75rem;color:var(--cp-dark)}
.cv2-matrix-board-head strong{font-family:'Cinzel',serif;font-size:.96rem}
.cv2-matrix-board-head span{color:var(--cp-muted);font-size:.86rem}
.cv2-matrix-cards{display:grid;gap:.75rem}
.cv2-matrix-card{padding:.75rem;border:1px solid rgba(42,90,58,.2);border-radius:10px;background:rgba(239,247,241,.58);box-shadow:0 2px 8px rgba(15,42,26,.06)}
.cv2-matrix-card-label{margin-bottom:.65rem;color:var(--cp-dark);font-family:'Cinzel',serif;font-size:.88rem;font-weight:700}
.cv2-matrix-card-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem}
.cv2-matrix-card-field{display:flex;min-width:0;flex-direction:column;gap:.28rem}
.cv2-matrix-card-field-title{min-height:2.1em;color:var(--cp-muted);font-size:.75rem;font-weight:700;line-height:1.25}
.cv2-matrix-card .cv2-matrix-slot{min-height:3.1rem;padding:.5rem .45rem;font-size:.86rem;line-height:1.25}
.cv2-matrix-card .cv2-matrix-slot.is-targeted{outline:3px solid rgba(191,145,54,.72);outline-offset:1px;background:rgba(247,239,211,.98)}
@media(max-width:720px){.cv2-matrix-card-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.cv2-matrix-board-head{align-items:flex-start;flex-direction:column;gap:.2rem}.cv2-matrix-card-fields{grid-template-columns:1fr}.cv2-matrix-card-field-title{min-height:0}}


/* Regla de inicio libre y orden cromático circular */
.cv2-circular-rule{margin:.65rem 0;padding:.7rem .85rem;border-left:3px solid #b8923e;border-radius:6px;background:rgba(247,239,211,.72);color:var(--cp-dark);font-weight:600;line-height:1.45}


/* V4: piscina única y doce cuadros compactos, sin scroll para resolver en escritorio */
.cv2-compact-practice{width:min(1120px,calc(100vw - 2rem));}
.cv2-compact-practice .cv2-modal-body{padding:1rem 1.1rem 1.15rem;}
.cv2-compact-practice .cv2-matrix-layout{display:grid;grid-template-columns:minmax(15rem,.72fr) minmax(0,1.8fr);gap:1rem;align-items:start;margin:.9rem 0 1rem;}
.cv2-compact-practice .cv2-mixed-pool{position:sticky;top:.25rem;min-width:0;padding:.75rem;border:1px solid rgba(42,90,58,.2);border-radius:10px;background:rgba(239,247,241,.8);}
.cv2-compact-practice .cv2-mixed-pool-head{display:flex;flex-direction:column;gap:.14rem;margin-bottom:.6rem;padding-bottom:.55rem;border-bottom:1px solid rgba(42,90,58,.14);}
.cv2-compact-practice .cv2-mixed-pool-head strong{font-family:'Cinzel',serif;color:var(--cp-dark);font-size:.9rem;}
.cv2-compact-practice .cv2-mixed-pool-head span{color:var(--cp-muted);font-size:.77rem;line-height:1.25;}
.cv2-compact-practice .cv2-mixed-pool .cv2-pool-items{display:flex;flex-wrap:wrap;gap:.35rem;align-content:flex-start;max-height:calc(100vh - 25rem);overflow:auto;padding:.1rem .15rem .2rem;}
.cv2-compact-practice .cv2-mixed-pool .cv2-pool-card{padding:.35rem .45rem;font-size:.82rem;line-height:1.15;cursor:grab;}
.cv2-compact-practice .cv2-matrix-board{min-width:0;margin:0;padding:0;overflow:visible;}
.cv2-compact-practice .cv2-matrix-board-head{margin:0 0 .55rem;}
.cv2-compact-practice .cv2-matrix-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;}
.cv2-compact-practice .cv2-matrix-card{min-width:0;padding:.52rem;border:1px solid rgba(42,90,58,.22);border-radius:9px;background:rgba(255,253,248,.82);box-shadow:0 2px 7px rgba(15,42,26,.06);transition:border-color .15s,box-shadow .15s,background .15s;}
.cv2-compact-practice .cv2-matrix-card.is-targeted-card{border-color:rgba(184,146,62,.78);background:rgba(247,239,211,.7);box-shadow:0 0 0 2px rgba(184,146,62,.15);}
.cv2-compact-practice .cv2-matrix-card-label{margin-bottom:.42rem;font-size:.72rem;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cv2-compact-practice .cv2-matrix-card-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.32rem;}
.cv2-compact-practice .cv2-matrix-card-field{gap:.16rem;}
.cv2-compact-practice .cv2-matrix-card-field-title{display:flex;align-items:center;gap:.18rem;min-height:1.85em;font-size:.63rem;line-height:1.08;}
.cv2-compact-practice .cv2-field-icon{display:inline-flex;align-items:center;justify-content:center;width:1.15em;height:1.15em;border-radius:50%;background:rgba(42,90,58,.1);color:var(--cp-dark);font-size:.9em;flex:0 0 auto;}
.cv2-compact-practice .cv2-matrix-card .cv2-matrix-slot{display:flex;align-items:center;justify-content:center;min-height:2.25rem;padding:.25rem;border-radius:6px;font-size:1.05rem;line-height:1;}
.cv2-compact-practice .cv2-matrix-card .cv2-matrix-slot.is-empty{color:rgba(71,104,87,.48);background:rgba(255,255,255,.5);}
.cv2-compact-practice .cv2-matrix-card .cv2-matrix-slot.is-filled{background:rgba(222,239,224,.98);border-color:rgba(42,90,58,.42);}
.cv2-compact-practice .cv2-placed-icon{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:50%;background:var(--cp-dark);color:#f7efd3;font-size:1rem;box-shadow:inset 0 0 0 2px rgba(247,239,211,.28);}
.cv2-compact-practice .cv2-empty-icon{font-size:1.2rem;}
.cv2-compact-practice .cv2-matrix-card .cv2-matrix-slot.is-targeted{outline:2px solid rgba(184,146,62,.82);outline-offset:1px;}
.cv2-compact-practice .cv2-mixed-pool .cv2-pool-card.is-selected{position:relative;background:rgba(224,207,157,.8);border-color:var(--cp-gold2);box-shadow:0 0 0 2px rgba(191,145,54,.28);}
.cv2-compact-practice .cv2-mixed-pool .cv2-pool-card.is-selected::after{content:'✓';position:absolute;top:-.38rem;right:-.34rem;display:flex;align-items:center;justify-content:center;width:1rem;height:1rem;border-radius:50%;background:var(--cp-dark);color:#fff;font-size:.68rem;}
@media(max-width:860px){.cv2-compact-practice{width:min(760px,calc(100vw - 1rem));}.cv2-compact-practice .cv2-matrix-layout{grid-template-columns:minmax(12rem,.8fr) minmax(0,1.5fr);gap:.65rem;}.cv2-compact-practice .cv2-matrix-cards{grid-template-columns:repeat(3,minmax(0,1fr));}.cv2-compact-practice .cv2-mixed-pool .cv2-pool-card{font-size:.76rem;padding:.32rem .38rem;}}
@media(max-width:620px){.cv2-compact-practice{width:calc(100vw - 1rem);}.cv2-compact-practice .cv2-matrix-layout{grid-template-columns:1fr;}.cv2-compact-practice .cv2-mixed-pool{position:relative;top:auto;}.cv2-compact-practice .cv2-mixed-pool .cv2-pool-items{max-height:13rem;}.cv2-compact-practice .cv2-matrix-cards{grid-template-columns:repeat(2,minmax(0,1fr));}.cv2-compact-practice .cv2-matrix-card-fields{grid-template-columns:repeat(2,minmax(0,1fr));}.cv2-compact-practice .cv2-matrix-card-field-title{font-size:.58rem;}}
@media(max-width:410px){.cv2-compact-practice .cv2-matrix-cards{grid-template-columns:1fr 1fr;gap:.38rem;}.cv2-compact-practice .cv2-matrix-card{padding:.38rem;}.cv2-compact-practice .cv2-matrix-card .cv2-matrix-slot{min-height:2rem;}.cv2-compact-practice .cv2-matrix-card-field-title{font-size:.55rem;}}

/* Ajuste de altura V4: el tablero completo debe caber en la ventana de escritorio */
@media(min-width:1050px){
  .cv2-compact-practice{max-height:calc(100vh - 1rem);overflow:visible;}
  .cv2-compact-practice .cv2-modal-head{padding:.58rem .9rem;}
  .cv2-compact-practice .cv2-modal-head h2{font-size:.96rem;}
  .cv2-compact-practice .cv2-modal-body{padding:.55rem .85rem .65rem;}
  .cv2-compact-practice .cv2-interactive-head{margin-bottom:.3rem;font-size:.78rem;}
  .cv2-compact-practice .cv2-interactive-host h3{margin:.2rem 0 .3rem;font-size:1rem;}
  .cv2-compact-practice .cv2-week-context{margin:.35rem 0;padding:.42rem .6rem;font-size:.8rem;line-height:1.25;}
  .cv2-compact-practice .cv2-circular-rule{margin:.35rem 0;padding:.45rem .6rem;font-size:.82rem;line-height:1.25;}
  .cv2-compact-practice .cv2-interactive-instruction{margin:.35rem 0;font-size:.82rem;line-height:1.25;}
  .cv2-compact-practice .cv2-matrix-selection{margin:.35rem 0 .5rem;padding:.42rem .6rem;font-size:.78rem;}
  .cv2-compact-practice .cv2-matrix-layout{gap:.75rem;margin:.5rem 0 .6rem;}
  .cv2-compact-practice .cv2-mixed-pool{padding:.55rem;}
  .cv2-compact-practice .cv2-mixed-pool-head{margin-bottom:.35rem;padding-bottom:.35rem;}
  .cv2-compact-practice .cv2-mixed-pool-head strong{font-size:.82rem;}
  .cv2-compact-practice .cv2-mixed-pool-head span{font-size:.68rem;}
  .cv2-compact-practice .cv2-mixed-pool .cv2-pool-items{gap:.24rem;max-height:none;overflow:visible;}
  .cv2-compact-practice .cv2-mixed-pool .cv2-pool-card{padding:.24rem .3rem;font-size:.71rem;line-height:1.08;}
  .cv2-compact-practice .cv2-matrix-board-head{margin:0 0 .35rem;}
  .cv2-compact-practice .cv2-matrix-board-head strong{font-size:.82rem;}
  .cv2-compact-practice .cv2-matrix-board-head span{font-size:.72rem;}
  .cv2-compact-practice .cv2-matrix-cards{gap:.38rem;}
  .cv2-compact-practice .cv2-matrix-card{padding:.36rem;}
  .cv2-compact-practice .cv2-matrix-card-label{margin-bottom:.22rem;font-size:.65rem;}
  .cv2-compact-practice .cv2-matrix-card-fields{gap:.22rem;}
  .cv2-compact-practice .cv2-matrix-card-field-title{min-height:1.55em;font-size:.55rem;}
  .cv2-compact-practice .cv2-matrix-card .cv2-matrix-slot{min-height:1.85rem;padding:.18rem;font-size:.9rem;}
  .cv2-compact-practice .cv2-placed-icon{width:1.45rem;height:1.45rem;font-size:.82rem;}
  .cv2-compact-practice .cv2-empty-icon{font-size:1rem;}
  .cv2-compact-practice .cv2-reset-choice{margin-top:0;}
  .cv2-compact-practice .cv2-interactive-actions{margin-top:.45rem;}
  .cv2-compact-practice .cv2-practice-note{margin:.4rem 0 0;padding:.38rem .55rem;font-size:.73rem;line-height:1.2;}
}


/* El modal ocupa la interacción; la página del Campus no se desplaza detrás */
body.cv2-modal-open{overflow:hidden;}


/* U1p2: colores literales de los reinos mutantes */
.cv2-compact-five-fields .cv2-matrix-card-fields{grid-template-columns:repeat(2,minmax(0,1fr));}
.cv2-compact-five-fields .cv2-placed-icon{color:#18231d;}
.cv2-compact-five-fields .cv2-color-metal{background:#d9dde0;color:#18231d;box-shadow:inset 0 0 0 2px rgba(255,255,255,.75),0 1px 3px rgba(15,42,26,.2);}
.cv2-compact-five-fields .cv2-color-earth{background:#d8bd58;color:#3a2c0c;box-shadow:inset 0 0 0 2px rgba(255,238,163,.45),0 1px 3px rgba(15,42,26,.2);}
.cv2-compact-five-fields .cv2-color-imperial{background:#8f1d2c;color:#fff1e4;box-shadow:inset 0 0 0 2px rgba(255,180,168,.3),0 1px 3px rgba(15,42,26,.2);}
.cv2-compact-five-fields .cv2-color-ministerial{background:#d9532f;color:#fff4d8;box-shadow:inset 0 0 0 2px rgba(255,211,145,.4),0 1px 3px rgba(15,42,26,.2);}
.cv2-compact-five-fields .cv2-color-wood{background:#4c985b;color:#f3ffe9;box-shadow:inset 0 0 0 2px rgba(181,231,163,.35),0 1px 3px rgba(15,42,26,.2);}
.cv2-compact-five-fields .cv2-color-water{background:#102f52;color:#f2f6ff;box-shadow:inset 0 0 0 2px rgba(105,148,193,.35),0 1px 3px rgba(15,42,26,.2);}
@media(min-width:1050px){
  .cv2-compact-five-fields .cv2-matrix-card-fields{gap:.18rem;}
  .cv2-compact-five-fields .cv2-matrix-card-field-title{font-size:.52rem;}
  .cv2-compact-five-fields .cv2-matrix-card .cv2-matrix-slot{min-height:1.7rem;}
  .cv2-compact-five-fields .cv2-placed-icon{width:1.34rem;height:1.34rem;font-size:.76rem;}
  .cv2-compact-five-fields .cv2-mixed-pool .cv2-pool-card{font-size:.68rem;padding:.21rem .26rem;}
}


/* U1p2: tablero basado literalmente en el esquema de canales unitarios */
.cv2-diagram-practice .cv2-modal-panel{width:min(1180px,calc(100vw - 1rem));}
.cv2-diagram-practice .cv2-modal-body{overflow:visible;}
.cv2-scheme-layout{display:grid;grid-template-columns:minmax(250px,.78fr) minmax(520px,1.22fr);gap:.8rem;align-items:start;margin:.45rem 0 .6rem;}
.cv2-scheme-pool{min-width:0;}
.cv2-scheme-pool .cv2-pool-items{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.22rem;max-height:none;overflow:visible;}
.cv2-scheme-pool .cv2-pool-card{min-width:0;padding:.27rem .3rem;font-size:.68rem;line-height:1.08;}
.cv2-scheme-figure{width:min(100%,570px);margin:0 auto;}
.cv2-scheme-image-wrap{position:relative;width:100%;aspect-ratio:257 / 327;overflow:hidden;border:1px solid rgba(28,61,39,.22);border-radius:10px;background:#fbf8ef;box-shadow:0 5px 18px rgba(28,61,39,.12);}
.cv2-diagram-practice .cv2-scheme-visual{position:absolute;inset:0;z-index:0;overflow:hidden;}
.cv2-diagram-practice .cv2-scheme-ink{position:absolute;inset:0;z-index:2;display:block;width:100%;height:100%;object-fit:fill;pointer-events:none;}
.cv2-scheme-image{display:block;width:100%;height:100%;object-fit:contain;position:relative;z-index:0;}
.cv2-scheme-hotspots{position:absolute;inset:0;}
.cv2-scheme-node{position:absolute;left:62%;transform:translate(-50%,-50%);width:53%;min-height:2rem;display:flex;align-items:center;justify-content:flex-end;padding:.12rem .18rem;border:1px dashed rgba(38,85,54,.22);border-radius:7px;background:rgba(251,248,239,.78);transition:border-color .15s,box-shadow .15s,background .15s;}
.cv2-scheme-node.is-targeted-card{border:2px solid #c77d2b;background:rgba(255,248,216,.9);box-shadow:0 0 0 3px rgba(199,125,43,.18);}
.cv2-scheme-node-name{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
.cv2-scheme-slots{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.16rem;width:100%;}
.cv2-scheme-slot{min-width:0;min-height:1.8rem;padding:.12rem;border:1px dashed rgba(38,85,54,.28);border-radius:6px;background:rgba(255,255,255,.7);color:#183522;cursor:pointer;}
.cv2-scheme-slot:hover,.cv2-scheme-slot:focus-visible{border-color:#b77427;outline:none;box-shadow:0 0 0 2px rgba(183,116,39,.18);}
.cv2-scheme-slot.is-filled{border-style:solid;}
.cv2-scheme-slot .cv2-placed-icon{display:inline-flex;width:1.35rem;height:1.35rem;align-items:center;justify-content:center;border-radius:50%;font-size:.76rem;font-weight:700;}
.cv2-scheme-slot .cv2-empty-icon{font-size:.82rem;opacity:.75;}
.cv2-diagram-practice .cv2-scheme-slot.cv2-color-metal{background:#d9dde0;color:#18231d;}
.cv2-diagram-practice .cv2-scheme-slot.cv2-color-earth{background:#d8bd58;color:#3a2c0c;}
.cv2-diagram-practice .cv2-scheme-slot.cv2-color-imperial{background:#8f1d2c;color:#fff1e4;}
.cv2-diagram-practice .cv2-scheme-slot.cv2-color-ministerial{background:#d9532f;color:#fff4d8;}
.cv2-diagram-practice .cv2-scheme-slot.cv2-color-wood{background:#4c985b;color:#f3ffe9;}
.cv2-diagram-practice .cv2-scheme-slot.cv2-color-water{background:#102f52;color:#f2f6ff;}
.cv2-scheme-figure figcaption{margin-top:.3rem;color:#52695a;font-size:.68rem;line-height:1.2;text-align:center;}
@media(min-width:1050px){
  .cv2-diagram-practice .cv2-modal-panel{max-height:calc(100vh - .5rem);}
  .cv2-diagram-practice .cv2-modal-body{padding:.6rem .72rem .7rem;}
  .cv2-diagram-practice .cv2-interactive-instruction{margin:.3rem 0;font-size:.76rem;line-height:1.18;}
  .cv2-diagram-practice .cv2-matrix-selection{margin:.3rem 0 .4rem;padding:.34rem .5rem;font-size:.72rem;}
  .cv2-diagram-practice .cv2-scheme-layout{grid-template-columns:minmax(300px,.82fr) minmax(560px,1.18fr);gap:.8rem;}
  .cv2-diagram-practice .cv2-scheme-pool .cv2-pool-card{font-size:.64rem;padding:.22rem .24rem;}
  .cv2-diagram-practice .cv2-scheme-node{min-height:2.05rem;}
  .cv2-diagram-practice .cv2-scheme-slot{min-height:1.82rem;}
}
@media(max-width:1049px){
  .cv2-scheme-layout{grid-template-columns:1fr;}
  .cv2-scheme-figure{max-width:570px;}
  .cv2-scheme-pool .cv2-pool-items{grid-template-columns:repeat(4,minmax(0,1fr));}
}
@media(max-width:600px){
  .cv2-scheme-pool .cv2-pool-items{grid-template-columns:repeat(2,minmax(0,1fr));}
  .cv2-scheme-node{left:63%;width:58%;}
}


/* U1p2: acoplamiento magnético y respuestas visibles como iconos sin cajas */
.cv2-diagram-practice .cv2-scheme-answers{position:absolute;inset:0;z-index:4;pointer-events:none;}
.cv2-diagram-practice .cv2-scheme-answer-icon{position:absolute;display:flex;align-items:center;justify-content:center;transform:translate(-50%,-50%);width:1.7rem;height:1.7rem;background:transparent;border:0;box-shadow:none;border-radius:0;font-size:1rem;font-weight:700;line-height:1;text-shadow:0 1px 2px rgba(255,255,255,.9),0 0 3px rgba(255,255,255,.75);pointer-events:none;}
.cv2-diagram-practice .cv2-scheme-answer-icon.cv2-color-metal{color:#70808d;}
.cv2-diagram-practice .cv2-scheme-answer-icon.cv2-color-earth{color:#ae8b1d;}
.cv2-diagram-practice .cv2-scheme-answer-icon.cv2-color-imperial{color:#8f1d2c;}
.cv2-diagram-practice .cv2-scheme-answer-icon.cv2-color-ministerial{color:#d9532f;}
.cv2-diagram-practice .cv2-scheme-answer-icon.cv2-color-wood{color:#2f873f;}
.cv2-diagram-practice .cv2-scheme-answer-icon.cv2-color-water{color:#102f52;}
.cv2-diagram-practice .cv2-scheme-hotspots{position:absolute;inset:0;z-index:5;}
.cv2-diagram-practice .cv2-channel-hit{position:absolute;left:25%;width:50%;height:8%;transform:translateY(-50%);border:0;outline:0;background:transparent;box-shadow:none;border-radius:50%;cursor:pointer;}
.cv2-diagram-practice .cv2-channel-hit:hover,.cv2-diagram-practice .cv2-channel-hit:focus-visible{background:rgba(255,236,157,.16);outline:2px solid rgba(173,104,28,.38);outline-offset:2px;}
.cv2-diagram-practice .cv2-channel-hit.is-targeted-card{background:rgba(255,236,157,.12);outline:2px solid rgba(173,104,28,.35);outline-offset:1px;}
.cv2-diagram-practice .cv2-scheme-figure{position:relative;}
.cv2-diagram-practice .cv2-scheme-node,.cv2-diagram-practice .cv2-scheme-slots,.cv2-diagram-practice .cv2-scheme-slot{display:none!important;}
@media(min-width:1050px){.cv2-diagram-practice .cv2-scheme-answer-icon{font-size:clamp(.72rem,1.2vw,1rem);width:1.55rem;height:1.55rem;}}


/* Seis Tao circulares exactos, alineados al viewBox original del dibujo.
   El relleno es sólido y queda debajo de la capa de tinta derivada del asset.
   La tinta se conserva como una capa separada para que ningún rótulo quede
   tapado; iconos y hotspots permanecen por encima. */
.cv2-diagram-practice .cv2-tao-lights{display:block;width:100%;height:100%;position:absolute;inset:0;z-index:1;pointer-events:none;overflow:visible;}
.cv2-diagram-practice .cv2-tao-region{position:static;left:auto;width:auto;height:auto;display:initial;fill:transparent;stroke:none;opacity:0;transform:none;background:none;border:0;border-radius:0;mix-blend-mode:normal;transition:opacity .2s,filter .2s;}
.cv2-diagram-practice .cv2-tao-region.is-lit{opacity:1;filter:none;}
.cv2-diagram-practice .cv2-tao-water-labels{position:absolute;inset:0;z-index:3;display:block;width:100%;height:100%;pointer-events:none;}
.cv2-diagram-practice .cv2-tao-region.cv2-tao-metal{fill:#d7dde3;}
.cv2-diagram-practice .cv2-tao-region.cv2-tao-ministerial{fill:#f05a28;}
.cv2-diagram-practice .cv2-tao-region.cv2-tao-water{fill:#003b73;}
.cv2-diagram-practice .cv2-tao-region.cv2-tao-imperial{fill:#c51f35;}
.cv2-diagram-practice .cv2-tao-region.cv2-tao-earth{fill:#e4b82b;}
.cv2-diagram-practice .cv2-tao-region.cv2-tao-wood{fill:#1f8a3b;}
.cv2-diagram-practice .cv2-tao-water-letter{font-family:Arial,sans-serif;font-size:28px;font-weight:600;fill:#fff;stroke:none;text-anchor:middle;dominant-baseline:middle;paint-order:fill;pointer-events:none;}


/* U1p1: contraste oscuro y ninguna pista visual del cuadro destino */
.cv2-circular-practice .cv2-matrix-card{color:var(--cp-dark);}
.cv2-circular-practice .cv2-matrix-card-label{color:var(--cp-dark);}
.cv2-circular-practice .cv2-matrix-card-field-title{color:var(--cp-dark);}
.cv2-circular-practice .cv2-field-icon{background:rgba(42,90,58,.1);color:var(--cp-dark);}
.cv2-circular-practice .cv2-matrix-card .cv2-matrix-slot{color:var(--cp-dark)!important;background:#f7f8ee;border-color:rgba(42,90,58,.3);}
.cv2-circular-practice .cv2-matrix-card .cv2-matrix-slot.is-empty{color:#26382b!important;background:#f7f8ee!important;}
.cv2-circular-practice .cv2-matrix-card .cv2-matrix-slot.is-filled{color:var(--cp-dark)!important;background:#e0efdf!important;border-color:rgba(42,90,58,.42);}
.cv2-circular-practice .cv2-placed-icon{background:#d5e6d7!important;color:#183522!important;box-shadow:inset 0 0 0 2px rgba(42,90,58,.2);}
.cv2-circular-practice .cv2-matrix-card.is-targeted-card{border-color:rgba(42,90,58,.22);background:rgba(255,253,248,.82);box-shadow:0 2px 7px rgba(15,42,26,.06);}
.cv2-circular-practice .cv2-matrix-card .cv2-matrix-slot.is-targeted{outline:none;box-shadow:none;}
.cv2-circular-practice .cv2-mixed-pool .cv2-pool-card{color:#183522!important;}


/* Menú independiente de actividades por unidad */
.cv2-actions{align-items:flex-end;}
.cv2-activities-menu{position:relative;display:inline-block;z-index:12;}
.cv2-activities-menu>summary{display:inline-flex;align-items:center;justify-content:center;list-style:none;cursor:pointer;}
.cv2-activities-menu>summary::-webkit-details-marker{display:none;}
.cv2-activities-menu>summary::after{content:'▾';margin-left:.35rem;font-size:.7em;}
.cv2-activities-menu[open]>summary::after{content:'▴';}
.cv2-activities-menu[open] .cv2-activities-list{position:absolute;right:0;bottom:calc(100% + .35rem);display:grid;grid-template-columns:minmax(16rem,24rem);gap:.25rem;max-height:min(22rem,calc(100vh - 5rem));overflow:auto;padding:.4rem;border:1px solid var(--cp-border);border-radius:9px;background:var(--cp-bg);box-shadow:0 10px 28px rgba(15,42,26,.2);}
.cv2-activity-item{display:flex;flex-direction:column;align-items:flex-start;gap:.12rem;width:100%;padding:.42rem .5rem;border:1px solid rgba(42,90,58,.18);border-radius:6px;background:#fffdf8;color:var(--cp-dark);font:inherit;text-align:left;cursor:pointer;}
.cv2-activity-item:hover:not(:disabled),.cv2-activity-item:focus-visible{border-color:var(--cp-gold2);background:#efe6ce;outline:none;}
.cv2-activity-item span{font-weight:700;font-size:.86rem;}
.cv2-activity-item small{color:var(--cp-muted);font-size:.75rem;line-height:1.2;}
.cv2-activity-item.is-done{background:rgba(222,239,224,.8);border-color:rgba(42,90,58,.35);}
.cv2-activity-item:disabled{cursor:not-allowed;opacity:.55;}
.cv2-activity-empty{padding:.4rem;color:var(--cp-muted);font-size:.82rem;}
@media(max-width:620px){
  .cv2-actions{align-items:stretch;}
  .cv2-activities-menu{width:100%;}
  .cv2-activities-menu>summary{width:100%;}
  .cv2-activities-menu[open] .cv2-activities-list{position:static;grid-template-columns:1fr;max-height:none;margin-top:.35rem;}
}


.cv2-disabled-action{opacity:.55;cursor:not-allowed;}


/* U1 actividad del esquema: el modal completo puede desplazarse sin mover el Campus */
.cv2-diagram-practice .cv2-modal-panel{max-height:calc(100vh - 1rem);overflow-y:auto;overflow-x:hidden;}
.cv2-diagram-practice .cv2-modal-body{overflow:visible;}
.cv2-diagram-practice .cv2-scheme-layout{align-items:start;}
.cv2-diagram-practice .cv2-scheme-figure{min-height:0;}
/* La clase diagramática vive en el propio panel del modal. */
.cv2-modal-panel.cv2-diagram-practice{max-height:calc(100vh - 1rem);overflow-y:auto!important;overflow-x:hidden!important;}


/* U2p4 · Constructor de las doce escalas pentatónicas mayores. */
.cv2-pentatonic-practice .cv2-modal-panel{width:min(1180px,calc(100vw - 1rem));}
.cv2-pentatonic-practice .cv2-pentatonic-formula{margin:.45rem 0 .6rem;padding:.55rem .7rem;border:1px solid rgba(42,90,58,.24);border-radius:8px;background:#f7f0dc;color:#243a2b;font-size:.92rem;line-height:1.35;}
.cv2-pentatonic-practice .cv2-pentatonic-layout{grid-template-columns:minmax(14rem,.58fr) minmax(0,2.1fr);}
.cv2-pentatonic-practice .cv2-pentatonic-pool{position:sticky;top:.25rem;}
.cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-items{max-height:calc(100vh - 20rem);overflow:auto;}
.cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-card{display:inline-flex;align-items:center;gap:.18rem;}
.cv2-pentatonic-pool-index{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border-radius:50%;background:rgba(42,90,58,.12);color:#183522;font-size:.75rem;font-weight:700;}
.cv2-pentatonic-practice .cv2-pentatonic-board .cv2-matrix-cards{grid-template-columns:repeat(3,minmax(0,1fr));}
.cv2-pentatonic-card{min-height:8.25rem;}
.cv2-pentatonic-tonic{display:flex;align-items:baseline;justify-content:space-between;gap:.4rem;margin-bottom:.45rem;padding-bottom:.3rem;border-bottom:1px solid rgba(42,90,58,.18);color:#243a2b;}
.cv2-pentatonic-tonic span{font-family:'Cinzel',serif;font-size:.66rem;letter-spacing:.05em;text-transform:uppercase;color:#6b705d;}
.cv2-pentatonic-tonic strong{font-family:'Cinzel',serif;font-size:1.05rem;color:#183522;white-space:nowrap;}
.cv2-pentatonic-practice .cv2-pentatonic-card .cv2-matrix-card-field-title{color:#243a2b;}
.cv2-pentatonic-practice .cv2-pentatonic-card .cv2-matrix-slot{min-height:2.05rem;background:#f7f8ee;color:#183522;border-color:rgba(42,90,58,.3);font-size:.95rem;}
.cv2-pentatonic-practice .cv2-pentatonic-card .cv2-matrix-slot.is-empty{background:#fffdf7;color:#496653;}
.cv2-pentatonic-practice .cv2-pentatonic-card .cv2-matrix-slot.is-filled{background:#dfeee0;color:#183522;border-color:rgba(42,90,58,.48);}
@media(min-width:1050px){
  .cv2-pentatonic-practice .cv2-modal-body{padding:.7rem .85rem .8rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-formula{margin:.25rem 0 .4rem;padding:.42rem .6rem;font-size:.8rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-layout{gap:.7rem;margin:.45rem 0 .55rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-pool{padding:.55rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-items{gap:.2rem;max-height:none;overflow:visible;}
  .cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-card{padding:.22rem .27rem;font-size:.68rem;line-height:1.05;}
  .cv2-pentatonic-practice .cv2-pentatonic-board .cv2-matrix-cards{gap:.34rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-card{min-height:6.5rem;padding:.36rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-tonic{margin-bottom:.25rem;padding-bottom:.2rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-tonic span{font-size:.54rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-tonic strong{font-size:.85rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-card .cv2-matrix-card-fields{gap:.18rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-card .cv2-matrix-card-field-title{min-height:1.45em;font-size:.52rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-card .cv2-matrix-slot{min-height:1.72rem;padding:.18rem;font-size:.78rem;}
}
@media(max-width:860px){
  .cv2-pentatonic-practice .cv2-pentatonic-board .cv2-matrix-cards{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:620px){
  .cv2-pentatonic-practice .cv2-pentatonic-layout{grid-template-columns:1fr;}
  .cv2-pentatonic-practice .cv2-pentatonic-pool{position:relative;top:auto;}
  .cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-items{max-height:12rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-board .cv2-matrix-cards{grid-template-columns:1fr;}
  .cv2-pentatonic-card{min-height:auto;}
}


/* U2p4 · piscina única de 12 notas, reutilizable y modal con scroll interno. */
.cv2-pentatonic-practice .cv2-modal-panel{max-height:calc(100vh - 1rem);overflow-y:auto;overflow-x:hidden;}
.cv2-pentatonic-practice .cv2-modal-body{min-width:0;overflow:visible;}
.cv2-pentatonic-practice .cv2-pentatonic-layout{grid-template-columns:minmax(12rem,.42fr) minmax(0,2.2fr);align-items:start;}
.cv2-pentatonic-practice .cv2-pentatonic-pool{position:sticky;top:.2rem;align-self:start;}
.cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem;max-height:none;overflow:visible;}
.cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-card{display:block;width:100%;padding:.42rem .35rem;font-size:.82rem;line-height:1.1;cursor:pointer;white-space:normal;}
.cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-card.is-selected{background:#f7efd3;border-color:#b8923e;box-shadow:0 0 0 2px rgba(184,146,62,.2);}
.cv2-pentatonic-practice .cv2-pentatonic-board{min-width:0;overflow:visible;}
.cv2-pentatonic-practice .cv2-pentatonic-board .cv2-matrix-cards{grid-template-columns:repeat(3,minmax(0,1fr));}
.cv2-pentatonic-practice .cv2-pentatonic-card{min-width:0;}
.cv2-pentatonic-practice .cv2-pentatonic-card .cv2-matrix-card-field-title{min-height:1.45em;font-size:.68rem;}
.cv2-pentatonic-practice .cv2-pentatonic-card .cv2-matrix-slot{min-height:2.1rem;}
.cv2-pentatonic-practice .cv2-pentatonic-card .cv2-matrix-slot.is-targeted{outline:none;box-shadow:none;background:#fffdf8;}
@media(max-width:920px){
  .cv2-pentatonic-practice .cv2-pentatonic-layout{grid-template-columns:1fr;}
  .cv2-pentatonic-practice .cv2-pentatonic-pool{position:relative;top:auto;}
  .cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-items{grid-template-columns:repeat(4,minmax(0,1fr));}
}
@media(max-width:620px){
  .cv2-pentatonic-practice .cv2-modal-panel{max-height:calc(100vh - .5rem);}
  .cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-items{grid-template-columns:repeat(3,minmax(0,1fr));}
  .cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-card{font-size:.76rem;padding:.38rem .25rem;}
  .cv2-pentatonic-practice .cv2-pentatonic-board .cv2-matrix-cards{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:420px){
  .cv2-pentatonic-practice .cv2-pentatonic-pool .cv2-pool-items{grid-template-columns:repeat(2,minmax(0,1fr));}
  .cv2-pentatonic-practice .cv2-pentatonic-board .cv2-matrix-cards{grid-template-columns:1fr;}
}


/* Corrección de especificidad U2p4: la clase de práctica vive en el propio panel. */
.cv2-modal-panel.cv2-pentatonic-practice{box-sizing:border-box;max-height:calc(100vh - 1rem);overflow-y:auto;overflow-x:hidden;}
@media(max-width:620px){.cv2-modal-panel.cv2-pentatonic-practice{max-height:calc(100vh - .5rem);}}

/* V4.1: las celdas sin correspondencia se representan como parte fija de la tabla; no requieren ficha. */
.cv2-matrix-slot.is-na{display:flex;align-items:center;justify-content:center;cursor:default!important;background:rgba(239,247,241,.68);border-style:dotted;color:rgba(71,104,87,.62);font-weight:700;pointer-events:none;}
