:root{--cream:#f7f4ed;--panel:#fff;--ink:#20242b;--muted:#667085;--line:#dedede;--gold:#f4ca3a;--green:#769656;--green-dark:#5f7f45;--light-square:#f0d9b5;--dark-square:#b58863;--danger:#b42318;--shadow:0 12px 30px #0000001c}*{box-sizing:border-box}body{background:var(--cream);color:var(--ink);margin:0;font-family:Arial,Helvetica,sans-serif}button,input,select{font:inherit}button{cursor:pointer;color:var(--ink);background:#fff;border:1px solid #c9c9c9;border-radius:10px;padding:10px 14px;font-weight:700}button:hover:not(:disabled){background:#f2f4f7}button:focus-visible{outline-offset:2px;outline:4px solid #175cd359}select:focus-visible{outline-offset:2px;outline:4px solid #175cd359}input:focus-visible{outline-offset:2px;outline:4px solid #175cd359}button:disabled{cursor:wait;opacity:.72}.appShell{max-width:1220px;margin:auto;padding:18px}.appShell.embedded{padding:10px}.appShell.embedded .mainNav{margin:12px 0}.hero{color:#fff;box-shadow:var(--shadow);background:linear-gradient(135deg,#0f2e1c,#1c8a45);border-radius:22px;grid-template-columns:1.3fr .7fr;align-items:center;gap:22px;padding:30px;display:grid}.hero h1{align-items:center;gap:14px;margin:0 0 8px;font-size:clamp(42px,6.5vw,68px);display:flex}.heroLogo{flex-shrink:0;width:auto;height:1.5em}.hero p{color:#e8f5ec}.appShell.embedded .hero{border-radius:14px;grid-template-columns:1fr auto;padding:14px 18px}.appShell.embedded .hero h1{margin:0;font-size:26px}.appShell.embedded .heroLogo{height:1.3em}.appShell.embedded .heroCard{gap:4px;padding:8px 12px}.fullscreenToggle.linkButton{color:#fff;white-space:nowrap;border:1px solid #fff6;border-radius:999px;padding:6px 10px;font-size:13px;text-decoration:none}.fullscreenToggle.linkButton:hover{background:#ffffff24}.eyebrow{text-transform:uppercase;letter-spacing:.12em;margin:0 0 8px;font-size:12px;font-weight:900}.primaryButton{background:var(--green);border-color:var(--green);color:#fff}.primaryButton:hover{background:var(--green-dark)!important}.heroCard{background:#ffffff1c;border:1px solid #ffffff47;border-radius:16px;gap:8px;padding:18px;display:grid}.mainNav{flex-wrap:wrap;gap:8px;margin:18px 0;display:flex}.mainNav button{border-radius:999px}.activeNav{color:#fff;background:#222;border-color:#222}.navBadge{background:var(--danger);color:#fff;border-radius:999px;margin-left:6px;padding:1px 7px;font-size:12px;font-weight:700;display:inline-block}.adminReports h3{margin:16px 0 8px;font-size:15px}.tagReportInboxList{gap:10px;margin:0;padding:0;list-style:none;display:grid}.tagReportInboxRow{border:1px solid var(--line);text-align:left;border-radius:12px;padding:10px 12px}.tagReportInboxRow.reviewed{opacity:.6}.tagReportInboxHeader{flex-wrap:wrap;align-items:baseline;gap:10px;font-size:13px;display:flex}.tagReportInboxRow p{margin:6px 0}.tagReportInboxTags{font-size:13px}.card,.trainerBoardPanel,.lessonPanel{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px;padding:18px}.cardGrid{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.settingsGrid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.muted{color:var(--muted)}.lessonChooser{margin-bottom:16px}.lessonButtons{grid-template-columns:repeat(5,minmax(130px,1fr));gap:8px;display:grid}.lessonButtons button{text-align:center;gap:4px;min-height:84px;display:grid}.lessonButtons button span:first-child{font-size:26px}.lessonButtons small{color:var(--muted)}.selectedLesson{border-color:var(--gold);box-shadow:0 0 0 3px #f4ca3a47}.comingSoonCard{text-align:center;padding:48px 20px}.largeIcon{font-size:56px}.trainerGrid{grid-template-columns:minmax(560px,1.2fr) minmax(300px,.8fr);align-items:start;gap:18px;display:grid}.lessonHeading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.lessonHeading h2{margin:0}.engineSelector{gap:5px;min-width:175px;font-weight:800;display:grid}.engineSelector select{border:1px solid #bbb;border-radius:9px;padding:10px}.boardFrame{justify-content:center;gap:6px;margin:14px auto;display:flex}.chessBoard{background:#222;border:5px solid #282828;border-radius:8px;grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);width:min(78vw,520px);height:min(78vw,520px);display:grid;overflow:hidden;box-shadow:0 10px 25px #0000003b}.boardSquare{border:0;border-radius:0;justify-content:center;align-items:center;min-width:0;padding:0;display:flex;position:relative}.lightSquare{background:var(--light-square)}.darkSquare{background:var(--dark-square)}.selectedSquare:after,.lastMoveSquare:after,.legalSquare:after{content:"";pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.selectedSquare:after{background:#f7d7408c}.lastMoveSquare:after{background:#ffeb3b57}.legalSquare:before{content:"";z-index:2;background:#1919194d;border-radius:50%;width:20%;height:20%;position:absolute}.chessPiece{z-index:3;filter:drop-shadow(0 3px 2px #00000047);font-size:clamp(31px,7.1vw,58px);line-height:1;position:relative}.whitePiece{color:#f7f7f7;text-shadow:1px 1px #333,-1px -1px #333}.blackPiece{color:#222;text-shadow:1px 1px #eee}.rankLabels{grid-template-rows:repeat(8,1fr);width:22px;font-weight:900;display:grid}.rankLabels div,.fileLabels div{justify-content:center;align-items:center;display:flex}.fileLabels{grid-template-columns:repeat(8,1fr);width:min(78vw,520px);height:24px;font-weight:900;display:grid}.statusCard{background:#f7f7f7;border-radius:12px;flex-wrap:wrap;justify-content:center;gap:8px 18px;padding:12px;display:flex}.statusCard span{color:var(--muted)}.buttonRow{flex-wrap:wrap;justify-content:center;margin-top:10px;display:flex}.lessonPanel h3{margin-bottom:7px}.lessonPanel li{margin-bottom:8px;line-height:1.45}.goldButton{background:var(--gold);border-color:#d2aa17}.hintList p{border-left:4px solid var(--gold);background:#fff8d8;border-radius:8px;padding:10px}.toggleRow,.toggleCard{align-items:flex-start;gap:10px;display:flex}.toggleCard{border:1px solid var(--line);border-radius:12px;margin:10px 0;padding:13px}.toggleCard small{color:var(--muted);margin-top:4px;line-height:1.35;display:block}.engineNote{color:#344054;background:#eef4ff;border-radius:10px;margin-top:20px;padding:10px}footer{text-align:center;color:var(--muted);margin:26px 0 10px;font-size:13px}.dyslexiaMode{letter-spacing:.025em;font-family:Verdana,Tahoma,Arial,sans-serif;line-height:1.62}.largeText{font-size:118%}.highContrast{--cream:#fff;--panel:#fff;--ink:#000;--muted:#222;--line:#000;--light-square:#fff0a8;--dark-square:#4f331f}.reducedMotion *{transition:none!important;animation:none!important}@media (max-width:1000px){.trainerGrid{grid-template-columns:1fr}.lessonButtons{grid-template-columns:repeat(3,1fr)}}@media (max-width:760px){.appShell{padding:10px}.hero,.cardGrid,.settingsGrid{grid-template-columns:1fr}.lessonButtons{grid-template-columns:1fr 1fr}.lessonHeading{display:grid}.engineSelector{width:100%}.chessBoard,.fileLabels{width:min(88vw,520px)}.chessBoard{height:min(88vw,520px)}}@media (max-width:460px){.lessonButtons{grid-template-columns:1fr}.hero{padding:22px}}.movementLine:after{content:"";pointer-events:none;z-index:1;background:#4a90e23d;position:absolute;top:0;bottom:0;left:0;right:0}.coachCard{border-left:5px solid var(--green);background:#eef7e8;border-radius:12px;margin-top:12px;padding:13px 15px}.coachCard p{margin:5px 0 0;line-height:1.45}.boardOverlayWrap{position:relative}.coachOverlay{z-index:20;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#14181fa3;border-radius:14px;justify-content:center;align-items:center;padding:18px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.coachOverlayCard{border:2px solid var(--gold);color:#20242b;background:#fff;border-radius:16px;width:min(92%,470px);padding:20px;box-shadow:0 18px 50px #00000047}.coachOverlayCard p:not(.eyebrow){font-size:1.08rem;line-height:1.55}.coachOverlayButtons{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.kingHoverSquare:after{content:"";pointer-events:none;z-index:4;border:4px solid #236edce0;border-radius:9px;position:absolute;top:4px;bottom:4px;left:4px;right:4px}@media (max-width:760px){.coachOverlay{z-index:100;border-radius:0;position:fixed;top:0;bottom:0;left:0;right:0}.coachOverlayCard{width:min(94vw,500px)}.coachOverlayButtons button{min-height:48px}}.boardSquare:disabled{cursor:default}.completionOverlay{z-index:30;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#12181fb8;border-radius:14px;justify-content:center;align-items:center;padding:18px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.completionCard{z-index:3;text-align:center;border:3px solid var(--gold);color:#20242b;background:#fff;border-radius:18px;width:min(92%,470px);padding:24px;animation:.42s ease-out both completionPop;position:relative;box-shadow:0 22px 60px #00000059}.completionCard h3{margin:5px 0 8px;font-size:1.6rem}.completionBadge{background:linear-gradient(145deg,#fff7bc,#f4ca3a);border-radius:50%;place-items:center;width:78px;height:78px;margin:0 auto 8px;font-size:48px;animation:.7s ease-out both badgeSpin;display:grid;box-shadow:0 8px 20px #0003}.confetti{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.confetti span{--x:calc((var(--i) * 37) % 100);left:calc(var(--x) * 1%);background:hsl(calc(var(--i) * 47deg) 82% 58%);width:9px;height:18px;transform:rotate(calc(var(--i) * 23deg));animation:confettiFall 1.9s calc((var(--i) % 7) * 70ms) ease-in forwards;border-radius:2px;position:absolute;top:-12%}@keyframes confettiFall{0%{opacity:1;transform:translateY(-20px)rotate(0)}to{opacity:.2;transform:translateY(650px)rotate(760deg)}}@keyframes completionPop{0%{opacity:0;transform:scale(.75)}to{opacity:1;transform:scale(1)}}@keyframes badgeSpin{0%{opacity:0;transform:rotate(-180deg)scale(.4)}to{opacity:1;transform:rotate(0)scale(1)}}.reducedMotion .completionCard,.reducedMotion .completionBadge,.reducedMotion .confetti span{animation:none!important}@media (max-width:760px){.completionOverlay{z-index:110;border-radius:0;position:fixed;top:0;bottom:0;left:0;right:0}.completionCard{width:min(94vw,500px)}.completionCard button{min-height:48px}}.coachOverlay{-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#14141447}.coachOverlayCard{background:#ffffffe0!important}.kingControlPreview:after{content:"";z-index:2;pointer-events:none;border:3px dashed #1e50b4ad;border-radius:10px;position:absolute;top:10%;bottom:10%;left:10%;right:10%}.puzzleTrainer{gap:14px;max-width:640px;margin:0 auto;display:grid}.puzzleStatsHeader{background:var(--panel);border:1px solid var(--line);border-radius:14px;flex-wrap:wrap;gap:10px 18px;padding:10px 16px;font-size:14px;font-weight:700;display:flex}.puzzleBoardWrap{gap:12px;display:grid}.puzzleBoardBoard{width:100%;max-width:560px;aspect-ratio:1;max-width:min(560px,60dvh);margin:0 auto}.puzzleBoardControls{justify-items:center;gap:10px;display:grid}.puzzleFeedback{text-align:center;min-height:1.4em;font-weight:700}.puzzleFeedback.bad{color:var(--danger)}.puzzleFeedback.good{color:var(--green-dark)}.hintMessage{color:var(--muted);border:1px solid var(--gold);text-align:center;background:#f4ca3a29;border-radius:999px;padding:4px 12px;font-size:13px}.puzzleBoardButtons{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.puzzleBoardButtons button,.assessmentOfferCard button,.puzzleResultCard button{min-height:44px;padding:10px 18px}.assessmentCard,.assessmentOfferCard{gap:12px;display:grid}.assessmentHeader{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.assessmentProgress{color:var(--muted);margin:0;font-weight:700}.assessmentResult{text-align:center}.assessmentResult.solved h2{color:var(--green-dark)}.assessmentResult.missed h2{color:var(--danger)}.assessmentSolution{font-size:15px;font-weight:600}.linkButton{box-shadow:none;color:var(--muted);background:0 0;border:none;padding:4px;font-weight:600;text-decoration:underline}.puzzleResultCard{text-align:center;gap:10px;display:grid}.puzzleResultCard.solved h2{color:var(--green-dark)}.puzzleResultCard.failed h2{color:var(--danger)}.ratingList{color:var(--muted);gap:6px;margin:0;padding:0;font-size:14px;list-style:none;display:grid}.ratingDeltaRow{grid-template-columns:1fr auto auto auto;align-items:center;gap:8px;padding:4px 0;display:grid}.ratingDeltaName{text-align:left}.ratingDeltaArrow{font-size:13px}.ratingDeltaValue{color:var(--ink);text-align:right;min-width:2.5em;font-weight:700}.ratingDeltaBadge{border-radius:999px;padding:2px 7px;font-size:12px;font-weight:700}.ratingDeltaRow.tone-up .ratingDeltaArrow,.ratingDeltaRow.tone-up .ratingDeltaBadge{color:var(--green-dark)}.ratingDeltaRow.tone-up .ratingDeltaBadge{background:#76965629}.ratingDeltaRow.tone-down .ratingDeltaArrow,.ratingDeltaRow.tone-down .ratingDeltaBadge{color:var(--danger)}.ratingDeltaRow.tone-down .ratingDeltaBadge{background:#b423181f}.ratingDeltaRow.tone-flat .ratingDeltaArrow{color:var(--muted)}@media (min-width:760px){.puzzleTrainer{max-width:720px}.puzzleBoardBoard{max-width:600px}}.unlockBanner{border:1px solid var(--gold);text-align:left;background:#f4ca3a29;border-radius:12px;gap:4px;padding:12px 14px;display:grid}.unlockBanner small{color:var(--muted)}.tagReportToggle{justify-self:center;font-size:13px}.puzzleSourceLine{text-align:center;margin:0;font-size:12px}.puzzleResultReason{text-align:center;margin:0;font-size:14px;font-weight:600}.tagReportForm{text-align:left;gap:6px;font-size:14px;display:grid}.tagReportForm label{color:var(--muted);font-size:13px}.tagReportForm textarea{border:1px solid var(--line);width:100%;font:inherit;resize:vertical;border-radius:10px;padding:8px 10px}.tagReportError{color:var(--danger);margin:0;font-size:13px}.tagReportSent{color:var(--green-dark);font-size:14px;font-weight:600}.playerProfile{gap:16px;display:grid}.profileSummary{gap:14px;display:grid}.profileStats{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.profileStats>div{background:var(--cream);border-radius:10px;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.profileStats strong{font-size:22px}.profileStats span{color:var(--muted);align-items:center;gap:4px;font-size:12px;display:inline-flex}.explainerButton{border:1px solid var(--muted);width:16px;height:16px;min-height:0;color:var(--muted);background:0 0;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:11px;line-height:1;display:inline-flex}.explainerBox{background:var(--cream);color:var(--muted);border-radius:10px;margin:10px 0 0;padding:10px 12px;font-size:13px}.categoryList{gap:8px;margin:0;padding:0;list-style:none;display:grid}.categoryList li{border-bottom:1px solid var(--line);padding:8px 0}.categoryList li.categoryTopHalf{background:#f4ca3a1f;border-radius:8px;padding-left:8px;padding-right:8px}.categoryListRow{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.categoryName{font-weight:700}.categoryRating{white-space:nowrap;font-weight:700}.categoryRating small{color:var(--muted);font-weight:400}.categoryLocked{background:#00000009;border-radius:8px;padding-left:8px;padding-right:8px}.categoryLocked .categoryName,.categoryLocked .categoryRating{opacity:.7}.categoryProgressBar{background:var(--line);border-radius:999px;height:6px;margin-top:6px;overflow:hidden}.categoryProgressBar>div{background:var(--green);height:100%}.historyList{gap:6px;margin:0;padding:0;list-style:none;display:grid}.historyRow{background:var(--cream);border-radius:8px;flex-wrap:wrap;justify-content:space-between;gap:10px;padding:8px 10px;font-size:14px;display:flex}.historyRow.tone-good .historyOutcome{color:var(--green-dark);font-weight:700}.historyRow.tone-bad .historyOutcome{color:var(--danger);font-weight:700}.historyRow.tone-neutral .historyOutcome{color:var(--muted);font-weight:700}.historyCategories{color:var(--muted);text-align:center;flex:1}.historyWhen{color:var(--muted);white-space:nowrap}.historyRetryLink{white-space:nowrap;font-weight:600}.historyHeader{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.historyFilterToggle{color:var(--muted);cursor:pointer;align-items:center;gap:6px;font-size:14px;display:flex}.historyFilterToggle input{cursor:pointer}.practiceCategoryGrid{grid-template-columns:1fr;gap:10px;display:grid}@media (min-width:600px){.practiceCategoryGrid{grid-template-columns:repeat(2,1fr)}}.practiceCategoryButton{text-align:left;flex-direction:column;align-items:flex-start;gap:4px;min-height:56px;padding:12px 14px;display:flex}.practiceCategoryButton small{color:var(--muted);font-weight:400}.practiceCategoryButton:disabled{opacity:.5;cursor:not-allowed}.authPanel{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px;margin:-8px 0 12px;padding:10px 14px;font-size:.95em;display:flex}.authForm{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.authForm p{width:100%;margin:0 0 2px;font-weight:600}.authForm input{border:1px solid var(--line);border-radius:8px;min-height:40px;padding:8px 10px}.authError{color:var(--danger);width:100%}.authSuccess{color:var(--green-dark);width:100%}.puzzleBoardStage{position:relative}.puzzleResultOverlay{z-index:5;background:#14100c8c;border-radius:18px;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:auto}.puzzleResultOverlay .puzzleResultCard{width:100%;max-width:420px;box-shadow:0 12px 32px #00000059}.weekPicker{justify-content:center;align-items:center;gap:8px;font-weight:700;display:flex}.weekPicker select{border:1px solid #bbb;border-radius:9px;padding:8px 10px}.weeklyPuzzlesProgress{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.weeklyPuzzleDot{border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;min-height:0;padding:0;font-size:13px;display:flex}.weeklyPuzzleDot.solved{background:var(--green);border-color:var(--green-dark);color:#fff}.weeklyPuzzleDot.current{border-color:var(--gold);box-shadow:0 0 0 3px #f4ca3a59}.yesNoButtons button{min-width:96px;font-size:16px}.wrongChoice{border-color:var(--danger)!important;color:var(--danger)!important;background:#b423181f!important}
