:root{--color-bg: #f4f5f7;--color-bg-elevated: #ffffff;--color-fg: #1a1d23;--color-fg-muted: #5b6472;--color-primary: #2563c7;--color-primary-fg: #ffffff;--color-success: #188049;--color-error: #c23636;--color-border: #dde1e7;--shadow-card: 0 1px 3px rgba(20, 22, 26, .1), 0 4px 14px rgba(20, 22, 26, .06);--color-module-atencion: #0033cc;--color-module-conceptual: #8a1c9e;--color-module-numeros: #0a7a78;--color-module-visuo: #b35b00;--color-game-bg: #e9e9e9;--color-game-bg-2: #c9c9c9;--color-game-fg: #14161a;--color-game-fg-muted: #4a5160;--color-chart-good: #0ca30c;--color-chart-warning: #fab219;--color-chart-critical: #d03b3b;--color-chart-grid: #2c313c;--color-chart-surface-bg: #1f232b;--color-chart-surface-fg: #f2f3f5;--color-chart-surface-fg-muted: #c7cbd1;--color-chart-surface-border: #3a3f4a;--color-switch-off: #6b7482;--font-size-base: 18px;--font-size-consigna: 22px;--target-min: 48px;--gap-min: 8px;--font-family: Inter, "Atkinson Hyperlegible", system-ui, -apple-system, Segoe UI, Arial, sans-serif}:root[data-theme=dark]{--color-bg: #14161a;--color-bg-elevated: #1f232b;--color-fg: #f2f3f5;--color-fg-muted: #c7cbd1;--color-primary: #5b9bd5;--color-primary-fg: #0a0e14;--color-success: #2ecc71;--color-error: #ff6b6b;--color-border: #3a3f4a;--shadow-card: none;--color-module-atencion: #6fa8f0;--color-module-conceptual: #d77be0;--color-module-numeros: #3fc9c4;--color-module-visuo: #f0a94e}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-fg);font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.5}h1,h2,h3{line-height:1.25}button{font-family:inherit;font-size:1rem}a{color:var(--color-primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--target-min);min-width:var(--target-min);padding:10px 20px;margin:var(--gap-min);border-radius:10px;border:2px solid transparent;background:var(--color-bg-elevated);color:var(--color-fg);font-weight:600;cursor:pointer;box-shadow:var(--shadow-card)}.btn:hover{border-color:var(--color-primary)}.btn:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}.btn-primary{background:var(--color-primary);color:var(--color-primary-fg)}.btn-danger{background:var(--color-error);color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed}.stack{display:flex;flex-direction:column;gap:16px}.page{max-width:900px;margin:0 auto;padding:24px 16px 64px}.card{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:12px;padding:20px;box-shadow:var(--shadow-card)}.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.module-card{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:12px;min-height:140px;padding:24px;border-radius:16px;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-top:5px solid var(--color-primary);box-shadow:var(--shadow-card);color:var(--color-fg);text-decoration:none;cursor:pointer}.module-card:hover{border-color:var(--color-primary)}.module-card:focus-visible{outline:3px solid var(--color-primary);outline-offset:3px}.module-card-title{font-size:22px;font-weight:700}.exercise-card{display:flex;align-items:center;gap:16px;width:100%;min-height:88px;padding:14px 18px;border-radius:12px;background:var(--color-bg-elevated);border:1px solid var(--color-border);box-shadow:var(--shadow-card);color:var(--color-fg);text-decoration:none;text-align:left;cursor:pointer}.exercise-card:hover{border-color:var(--color-primary)}.exercise-card:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}.exercise-card[aria-disabled=true]{opacity:.55;cursor:not-allowed}.exercise-card-icon{flex:none;display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:10px;background:var(--color-bg)}.exercise-card-body{display:flex;flex-direction:column;gap:2px;min-width:0}.exercise-card-name{font-weight:700;font-size:18px}.exercise-card-desc{color:var(--color-fg-muted);font-size:14px}.consigna{font-size:var(--font-size-consigna)}.game-area{position:relative;width:100%;aspect-ratio:780 / 580;max-width:780px;margin:0 auto;background:var(--color-game-bg);border-radius:12px;overflow:hidden;touch-action:none;--color-fg: var(--color-game-fg);--color-fg-muted: var(--color-game-fg-muted)}.game-area--alt{background:var(--color-game-bg-2)}.chart-surface{background:var(--color-chart-surface-bg);color:var(--color-chart-surface-fg);border:1px solid var(--color-chart-surface-border);border-radius:12px;padding:16px;--color-fg: var(--color-chart-surface-fg);--color-fg-muted: var(--color-chart-surface-fg-muted)}.chart-surface .card{background:#ffffff0f;border-color:var(--color-chart-surface-border);box-shadow:none}.empty-state{text-align:center;padding:40px 16px}.field-row{display:flex;align-items:center;gap:var(--gap-min);min-height:var(--target-min)}.field-row label{min-width:110px}.switch{display:inline-flex;align-items:center;gap:10px;min-height:var(--target-min);padding:6px 14px 6px 6px;margin:var(--gap-min);border-radius:999px;border:2px solid var(--color-border);background:var(--color-bg-elevated);color:var(--color-fg);font-weight:600;cursor:pointer;box-shadow:var(--shadow-card)}.switch:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}.switch-track{position:relative;width:44px;height:26px;flex:none;border-radius:999px;background:var(--color-switch-off)}.switch[aria-checked=true] .switch-track{background:var(--color-primary)}.switch-thumb{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .15s ease}.switch[aria-checked=true] .switch-thumb{transform:translate(18px)}.feedback-ok{color:var(--color-success)}.feedback-error{color:var(--color-error)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}table{color:var(--color-fg)}th{color:var(--color-fg-muted);font-weight:600}@media (prefers-reduced-motion: reduce){:where(*,*:before,*:after):not(.game-area,.game-area *){animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
