﻿:root{
  --bg:#f7f9ff;
  --card:#ffffff;
  --text:#0f172a;
  --muted:#475569;
  --border:#e2e8f0;
  --primary:#5b7cfa;
  --shadow: 0 10px 30px rgba(15,23,42,.08);
  --radius:18px;

  /* === CALIBRACION TABLERO IMAGEN (valores sensatos) === */
  --insetTop:    24%;
  --insetRight:  19%;
  --insetBottom: 19%;
  --insetLeft:   23%;

  /* Ajuste fino: NO lo dispares */
  --gridScale: 1.02;
  --gridTx: 0px;
  --gridTy: 0px;

  /* PIEZA: quieres que "llene" la casilla */
  --pieceSize: 120%;

  --sqLight:#f1f5ff;
  --sqDark:#cad6ff;
}

*{box-sizing:border-box}

body{
  margin:0;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  background:
    radial-gradient(1200px 600px at 20% -20%, rgba(91,124,250,.18), transparent 60%),
    radial-gradient(900px 500px at 110% 10%, rgba(91,124,250,.10), transparent 55%),
    var(--bg);
  color:var(--text);
}

.wrap{max-width:1100px; margin:0 auto; padding:14px}

header{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:6px 0 10px 0;
}

.brand{display:flex; align-items:center; gap:10px}
.logo{
  width:40px; height:40px; border-radius:12px;
  background: linear-gradient(135deg, var(--primary), #89a2ff);
  box-shadow: var(--shadow);
  display:grid; place-items:center; color:white; font-weight:900;
}
.title h1{margin:0; font-size:16px}
.title p{margin:2px 0 0 0; color:var(--muted); font-size:12px}

.btns{display:flex; gap:8px; flex-wrap:wrap}
.btn{
  border:1px solid var(--border);
  background:#fff;
  padding:10px 12px;
  border-radius:12px;
  font-weight:900;
  cursor:pointer;
  user-select:none;
}
.btnPrimary{background:var(--primary); color:#fff; border-color:transparent}

.card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow: var(--shadow);
  padding:12px;
}

.grid{
  display:grid;
  grid-template-columns: 1fr 340px;
  gap:12px;
  align-items:start;
}
@media (max-width:980px){
  .grid{grid-template-columns:1fr}
}

.challenge{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:12px;
  border-radius:16px;
  border:1px solid rgba(91,124,250,.25);
  background: rgba(91,124,250,.08);
  font-weight:950;
  line-height:1.2;
  font-size:18px;
}

.lessonMini{
  font-size:12px;
  font-weight:900;
  color:rgba(15,23,42,.75);
  background:#fff;
  border:1px solid rgba(0,0,0,.1);
  padding:6px 10px;
  border-radius:999px;
  white-space:nowrap;
}

.boardRow{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  align-items:flex-start;
  margin-top:12px;
}

.boardWrap{
  width:min(92vw, 520px);
  aspect-ratio:1/1;
  border-radius:18px;
  overflow:hidden;
  border:1px solid rgba(0,0,0,.08);
  box-shadow: var(--shadow);
  position:relative;
  background:#fff;
}

/* El tablero se calcula también con la altura disponible. Así entra completo
   en tabletas y pantallas apaisadas sin perder filas fuera del viewport. */
@supports (height: 100svh){
  .boardWrap{width:min(92vw, 520px, calc(100svh - 240px))}
}

@media (max-height:760px){
  .wrap{padding-top:6px}
  header{padding-bottom:6px}
  .title p{display:none}
  .challenge{padding:8px 10px;font-size:16px}
  .boardRow{margin-top:7px}
  .card{padding:8px}
}

@media (max-width:560px){
  .wrap{padding:8px}
  header{align-items:flex-start}
  .logo{width:34px;height:34px}
  .btn{padding:8px 10px}
  .challenge{align-items:flex-start;flex-direction:column;font-size:15px}
  .lessonMini{white-space:normal}
  @supports (height: 100svh){
    .boardWrap{width:min(96vw, calc(100svh - 270px))}
  }
}

.boardWrap.hasImg{
  background-image: url("../assets/board.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* grid 8x8 */
.boardGrid{
  position:absolute;
  inset:0;
  display:grid;
  grid-template-columns: repeat(8, 1fr);
  touch-action: manipulation;
}

/* grid dentro del tablero imagen + calibraci¨®n */
.boardWrap.hasImg .boardGrid{
  top: var(--insetTop);
  right: var(--insetRight);
  bottom: var(--insetBottom);
  left: var(--insetLeft);

  transform: translate(var(--gridTx), var(--gridTy)) scale(var(--gridScale));
  transform-origin: center;
}

/* casillas: volvemos a grid porque era tu base estable */
.sq{
  position:relative;
  display:grid;
  place-items:center;
  width:auto;
  min-width:0;
  min-height:0;
  margin:0;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  color:inherit;
  cursor:pointer;
  user-select:none;
  overflow: visible;
}

.sq.sel{
  outline:3px solid rgba(91,124,250,.9);
  outline-offset:-3px;
  z-index:2;
}

/* puntos siempre centrados */
.hintDot{
  position:absolute;
  left:50%;
  top:50%;
  transform: translate(-50%,-50%);
  width:16px; height:16px;
  border-radius:50%;
  background: rgba(22,163,74,.25);
  border:2px solid rgba(22,163,74,.75);
  pointer-events:none;
  z-index:3;
}

/* capturas */
.hintCapture{
  position:absolute;
  inset:8px;
  border-radius:12px;
  border:3px dashed rgba(245,158,11,.9);
  pointer-events:none;
  z-index:3;
}

/* PIEZAS: gigantes + ganan a cualquier inline */
.pieceImg{
  width: var(--pieceSize) !important;
  height: var(--pieceSize) !important;
  object-fit: contain;
  pointer-events:none;
  z-index:4;
  filter: drop-shadow(0 10px 14px rgba(0,0,0,.18));
}

.pieceFallback{
  width: calc(var(--pieceSize) * .90);
  height: calc(var(--pieceSize) * .90);
  border-radius:16px;
  display:grid;
  place-items:center;
  font-weight:1000;
  font-size:26px;
  pointer-events:none;
  z-index:4;
}
.pieceFallback.w{background: rgba(255,255,255,.92); color:#0f172a; border:2px solid rgba(0,0,0,.1)}
.pieceFallback.b{background: rgba(15,23,42,.88); color:#fff; border:2px solid rgba(255,255,255,.12)}

.panel{
  display:flex;
  flex-direction:column;
  gap:10px;
  min-width:260px;
}

.actions{display:flex; gap:8px; flex-wrap:wrap}

.kpis{
  display:grid;
  grid-template-columns: repeat(3,1fr);
  gap:8px;
}
.kpi{
  border:1px solid var(--border);
  border-radius:14px;
  padding:10px;
  background: rgba(255,255,255,.70);
}
.kpi .v{font-size:16px; font-weight:950}
.kpi .l{font-size:12px; color:var(--muted); font-weight:900}

.coco{
  border-radius:14px;
  padding:10px 12px;
  border:1px solid rgba(91,124,250,.25);
  background: rgba(91,124,250,.08);
  font-weight:900;
}

.status{
  display:none;
  border-radius:14px;
  padding:10px 12px;
  border:1px solid var(--border);
  background:#fff;
}
.status.ok{display:block; background: rgba(22,163,74,.10); border-color: rgba(22,163,74,.40)}
.status.bad{display:block; background: rgba(239,68,68,.10); border-color: rgba(239,68,68,.40)}
