._board_1v7y8_2{border-radius:var(--r-md);box-shadow:var(--shadow-board);-webkit-user-select:none;user-select:none;touch-action:none;background-image:url(/img/chessboard.svg);background-size:cover;grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);transition:box-shadow .4s;display:grid;position:relative;overflow:hidden}._square_1v7y8_18{cursor:pointer;background:0 0;justify-content:center;align-items:center;display:flex;position:relative}._lastMove_1v7y8_28{background:#ff06}._selected_1v7y8_29{background:#00f6}._inCheck_1v7y8_30{background:radial-gradient(red 0%,#e70000 25%,#a9000000 89%,#9e000000 100%)}._validTarget_1v7y8_41:after{content:"";pointer-events:none;z-index:2;background:radial-gradient(circle,#0003 25%,#0000 25%);position:absolute;inset:0}._captureTarget_1v7y8_49:after{content:"";pointer-events:none;z-index:2;background:radial-gradient(circle,#0000 51%,#0000002e 51% 85%,#0000 85%);position:absolute;inset:0}._piece_1v7y8_59{pointer-events:none;z-index:1;filter:drop-shadow(0 1px 2px #0003);touch-action:none;will-change:transform;width:87%;height:87%}._dragGhost_1v7y8_70{pointer-events:none;z-index:1000;opacity:.88;filter:drop-shadow(0 6px 12px #00000059);position:fixed}._dragging_1v7y8_78{opacity:.2}._coord_1v7y8_83{pointer-events:none;z-index:3;opacity:.6;font-size:.55rem;font-weight:700;line-height:1;position:absolute}._coordRank_1v7y8_92{top:2px;left:3px}._coordFile_1v7y8_93{bottom:2px;right:3px}._lightCoord_1v7y8_94{color:#b4756b}._darkCoord_1v7y8_95{color:#ebd3d1}._overlay_1v7y8_98{pointer-events:none;z-index:50;opacity:0;justify-content:center;align-items:center;transition:opacity .12s;display:flex;position:absolute;inset:0}._overlayVisible_1v7y8_109{opacity:1}._overlayIcon_1v7y8_110{text-shadow:0 2px 12px #0000004d;font-size:min(6rem,25vw);font-weight:800;line-height:1}._overlayCorrect_1v7y8_116{color:var(--green)}._overlayWrong_1v7y8_117{color:var(--red)}._promoOverlay_1v7y8_120{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0006;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}._promoPicker_1v7y8_131{background:var(--bg-surface);border-radius:var(--r-lg);border:1px solid var(--border);gap:.35rem;padding:.6rem;display:flex;box-shadow:0 8px 36px #0003}._promoOption_1v7y8_140{cursor:pointer;border-radius:var(--r-md);background:0 0;border:none;justify-content:center;align-items:center;padding:.5rem;transition:background .12s,transform .12s;display:flex}._promoOption_1v7y8_140:hover{background:var(--bg-elevated);transform:scale(1.1)}._promoOption_1v7y8_140 img{pointer-events:none;width:52px;height:52px}._glowGreen_1v7y8_162{box-shadow:var(--shadow-board), 0 0 20px 4px #058a0040}._glowRed_1v7y8_165{box-shadow:var(--shadow-board), 0 0 18px 3px #eb000033}@keyframes _board-shake_1v7y8_1{0%,to{transform:translate(0)}15%{transform:translate(-7px)}30%{transform:translate(6px)}45%{transform:translate(-5px)}60%{transform:translate(4px)}75%{transform:translate(-2px)}}._shake_1v7y8_177{animation:.35s ease-out _board-shake_1v7y8_1}@keyframes _board-celebrate_1v7y8_1{0%{box-shadow:var(--shadow-board)}20%{box-shadow:var(--shadow-board), 0 0 30px 8px #058a004d}to{box-shadow:var(--shadow-board)}}._celebrate_1v7y8_184{animation:.9s ease-out _board-celebrate_1v7y8_1}:root{--bg-body:#f6f6f6;--bg-surface:#fff;--bg-elevated:#f1f1f1;--bg-hover:#e5e5e5;--text-1:#0d0300;--text-2:#353535;--text-3:#6a6a6a;--primary:#a93d2b;--primary-hover:#6a1400;--brand-100:#fbe9e8;--brand-200:#f8d4d1;--brand-300:#eaada7;--brand-400:#dc8a81;--brand-500:#6a1400;--brand-600:#370d00;--sq-light:#ebd3d1;--sq-dark:#b4756b;--green:#058a00;--green-light:#16a34a;--green-bg:#dcfce7;--red:#eb0000;--red-light:#dc2626;--red-bg:#fef2f2;--amber:#d0a42a;--amber-light:#ca8a04;--amber-bg:#fefce8;--blue:#2563eb;--border:#e5e5e5;--border-strong:#c9c9c9;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 12px #00000014;--shadow-board:0 4px 20px #0000001f;--r-sm:4px;--r-md:8px;--r-lg:12px;--board-size:min(520px, calc(100vw - 2.5rem))}@font-face{font-family:Gibson;src:url(/fonts/gibson-light.woff2)format("woff2");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:Gibson;src:url(/fonts/gibson-book.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Gibson;src:url(/fonts/gibson-book-italic.woff2)format("woff2");font-weight:300;font-style:italic;font-display:swap}@font-face{font-family:Gibson;src:url(/fonts/gibson-regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Gibson;src:url(/fonts/gibson-medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Gibson;src:url(/fonts/gibson-semibold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-body);color:var(--text-2);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Gibson,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:400}.hidden{display:none!important}.rookly-header{border-bottom:1px solid var(--border);background:#fff;justify-content:space-between;align-items:center;padding:.6rem 1.5rem;display:flex}.rookly-logo{align-items:center;text-decoration:none;display:flex}.rookly-logo img{width:auto;height:30px}.rookly-nav{background:var(--primary);-webkit-overflow-scrolling:touch;scrollbar-width:none;align-items:stretch;gap:0;height:44px;padding:0 1.5rem;display:flex;overflow-x:auto}.rookly-nav::-webkit-scrollbar{display:none}.rookly-nav a{color:#ffffffa6;white-space:nowrap;border-bottom:2px solid #0000;align-items:center;gap:.4rem;padding:0 1rem;font-size:.82rem;font-weight:500;text-decoration:none;transition:color .15s;display:flex;position:relative}.rookly-nav a:hover{color:#ffffffe6}.rookly-nav a.active{color:#fff;border-bottom-color:#fff;font-weight:500}.rookly-nav a .nav-icon{opacity:.7;width:16px;height:16px}.rookly-nav a.active .nav-icon{opacity:1}.rookly-user{color:var(--text-1);align-items:center;gap:.6rem;font-size:.9rem;font-weight:500;display:flex}.rookly-user-avatar{background:var(--brand-200);width:34px;height:34px;color:var(--primary);border:2px solid var(--brand-300);background-image:url(/img/avatar.svg);background-size:cover;border-radius:50%;justify-content:center;align-items:center;font-size:0;font-weight:600;display:flex}.rookly-user-avatar.has-initial{background-image:none;font-size:.85rem}.rookly-main{max-width:1140px;margin:0 auto;padding:1.5rem}.rookly-play-layout{align-items:flex-start;gap:1.5rem;display:flex}.rookly-board-area{flex-shrink:0}.rookly-board-header{color:var(--text-3);justify-content:space-between;align-items:center;margin-bottom:.5rem;padding:0 2px;font-size:.85rem;display:flex}.rookly-board-header .puzzle-rating{color:var(--text-2);font-weight:600}.rookly-panels{flex-direction:column;flex:1;gap:.75rem;min-width:280px;max-width:340px;display:flex}.panel{background:var(--bg-surface);border-radius:var(--r-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm);overflow:hidden}.panel-header{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:.6rem .85rem;transition:background .12s;display:flex}.panel-header:hover{background:var(--bg-elevated)}.panel-header-left{color:var(--text-2);align-items:center;gap:.5rem;font-size:.82rem;font-weight:600;display:flex}.panel-header-left svg{width:16px;height:16px;color:var(--primary);flex-shrink:0}.panel-header-right{align-items:center;gap:.35rem;display:flex}.panel-toggle{border:1px solid var(--border);cursor:pointer;width:22px;height:22px;color:var(--primary);background:0 0;border-radius:3px;justify-content:center;align-items:center;padding:0;transition:transform .2s;display:flex}.panel-toggle svg{width:12px;height:12px}.panel.collapsed .panel-toggle{transform:rotate(-90deg)}.panel-body{border-top:1px solid var(--border);opacity:1;max-height:600px;padding:.65rem .85rem .85rem;transition:max-height .25s,opacity .2s,padding .25s;overflow:hidden}.panel.collapsed .panel-body{opacity:0;border-top-color:#0000;max-height:0;padding-top:0;padding-bottom:0}.rookly-page-card{background:#fff;border-radius:16px;max-width:680px;margin:0 auto;padding:1.5rem}.rookly-card{background:#fff;border-radius:16px;padding:1.5rem}.stat-cards{gap:.75rem;width:100%;display:flex}@media (width<=500px){.stat-cards{flex-wrap:wrap}.stat-cards .stat-card{min-width:calc(50% - .5rem)}}.stat-card{border:1px solid var(--border);border-radius:var(--r-lg);text-align:center;flex-direction:column;flex:1;align-items:center;gap:.15rem;padding:.85rem .75rem;display:flex}.stat-card .stat-val{color:var(--text-1);font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:600;line-height:1.2}.stat-card .stat-label{color:var(--text-3);font-size:.68rem;font-weight:500}.dash-grid{grid-template-columns:repeat(2,1fr);gap:.75rem;display:grid}@media (width>=640px){.dash-grid{grid-template-columns:repeat(3,1fr)}}.dash-card{border:1px solid var(--border);border-radius:var(--r-lg);color:var(--text-1);cursor:pointer;background:#fff;flex-direction:column;align-items:center;gap:.6rem;padding:1.25rem .75rem;text-decoration:none;transition:transform .12s,border-color .15s,box-shadow .15s;display:flex}.dash-card:hover{border-color:var(--brand-300);box-shadow:var(--shadow-sm)}.dash-card:active{transform:scale(.95)}.dash-card .dash-icon{width:36px;height:36px;color:var(--primary)}.dash-card .dash-icon img{width:100%;height:100%}.dash-card .dash-title{text-align:center;font-size:.85rem;font-weight:500}.dash-card .dash-desc{color:var(--text-3);text-align:center;font-size:.7rem;line-height:1.35;display:none}.section-heading{color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.6rem;font-size:.75rem;font-weight:600}.rookly-divider{background:var(--brand-200);width:100%;height:1px;margin:1rem 0}#buttons{justify-content:center;gap:.5rem;margin-top:.5rem;display:flex}button{border:1px solid var(--border);cursor:pointer;background:var(--bg-surface);color:var(--text-2);border-radius:16px;padding:.5rem 1rem;font-size:.82rem;font-weight:500;transition:background .12s,transform .1s,border-color .12s}button:hover:not(:disabled){background:var(--bg-elevated);border-color:var(--border-strong)}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.btn-primary,#next-btn{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover:not(:disabled),#next-btn:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-secondary{background:var(--bg-surface);color:var(--primary);border-color:currentColor}.btn-secondary:hover:not(:disabled){color:var(--primary-hover)}#retry-btn{background:var(--amber);color:#fff;border-color:var(--amber)}#retry-btn:hover:not(:disabled){background:#b8922a;border-color:#b8922a}.rookly-link{color:var(--primary);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline;transition:color .12s}.rookly-link:hover{color:var(--primary-hover)}select{border-radius:var(--r-md);border:1px solid var(--border);background:var(--bg-surface);color:var(--text-2);cursor:pointer;flex:1;padding:.4rem .6rem;font-size:.78rem;transition:border-color .15s}select:hover{border-color:var(--border-strong)}select:focus{border-color:var(--primary);box-shadow:0 0 0 2px var(--brand-100);outline:none}.elo-panel-content{flex-direction:column;align-items:center;gap:.25rem;display:flex}#elo-display{justify-content:center;align-items:baseline;gap:.4rem;display:flex}.elo-label{color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;font-size:.7rem;font-weight:600}#elo-value{color:var(--text-1);font-variant-numeric:tabular-nums;font-size:2rem;font-weight:800;line-height:1.15;transition:color .3s}#elo-delta{font-variant-numeric:tabular-nums;min-width:2.5ch;font-size:.9rem;font-weight:700}#elo-stats{color:var(--text-3);font-size:.72rem}.puzzle-info-grid{grid-template-columns:auto 1fr;gap:.25rem .6rem;font-size:.8rem;display:grid}.puzzle-info-grid .label{color:var(--text-3);font-weight:500}.puzzle-info-grid .value{color:var(--text-2);font-weight:600}#color-indicator{border:1.5px solid var(--border-strong);vertical-align:middle;border-radius:50%;width:11px;height:11px;display:inline-block}#color-indicator.white{background:#f5f5f5}#color-indicator.black{background:#1a1a1a}.filter-group{flex-direction:column;gap:.5rem;display:flex}.filter-row{align-items:center;gap:.5rem;display:flex}.filter-row .label{color:var(--text-3);min-width:60px;font-size:.78rem;font-weight:500}.mute-toggle{color:var(--text-3);align-items:center;gap:.4rem;margin-top:.25rem;font-size:.78rem;display:flex}#mute-btn{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-surface);color:var(--text-3);padding:.3rem .65rem;font-size:.72rem;font-weight:500}#mute-btn:hover:not(:disabled){box-shadow:none;border-color:var(--border-strong);transform:none}#mute-btn.muted{opacity:.45;text-decoration:line-through}.notation-moves{color:var(--text-2);min-height:40px;font-size:.82rem;line-height:1.8}.notation-moves .move-number{color:var(--primary);opacity:.75;font-size:.75rem}.notation-moves .move{border-radius:var(--r-sm);cursor:default;padding:.12em .25em;transition:background .1s;display:inline-block}.notation-moves .move:hover{background:#a93d2b14}.notation-moves .move.active{background:#a93d2b26}#status{text-align:center;border-radius:var(--r-md);width:var(--board-size);letter-spacing:.01em;margin-top:.5rem;padding:.55rem 1rem;font-size:.85rem;font-weight:600}.status-info{background:var(--bg-elevated);color:var(--text-3)}.status-success{background:var(--green-bg);color:var(--green)}.status-error{background:var(--red-bg);color:var(--red)}.status-warning{background:var(--amber-bg);color:var(--amber)}#sub-status{color:var(--text-3);font-variant-numeric:tabular-nums;justify-content:center;gap:1.5rem;margin-top:.35rem;font-size:.78rem;display:flex}#history{scrollbar-width:thin;scrollbar-color:var(--border) transparent;max-height:240px;overflow:hidden auto}#history::-webkit-scrollbar{width:4px}#history::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:2px}#history-entries{flex-direction:column;gap:4px;display:flex}.hist-entry{border-radius:var(--r-sm);background:var(--bg-elevated);font-variant-numeric:tabular-nums;border-left:3px solid #0000;align-items:center;gap:.5rem;padding:.4rem .5rem;font-size:.72rem;line-height:1.25;display:flex}.hist-entry.solved{border-left-color:var(--green)}.hist-entry.mistakes{border-left-color:var(--amber)}.hist-entry.skipped{border-left-color:var(--red)}.hist-icon{text-align:center;width:16px;font-size:.8rem;line-height:1}.hist-entry.solved .hist-icon{color:var(--green)}.hist-entry.mistakes .hist-icon{color:var(--amber)}.hist-entry.skipped .hist-icon{color:var(--red)}.hist-rating{color:var(--text-2);flex:1;font-weight:600}.hist-time{color:var(--text-3)}.hist-delta{text-align:right;min-width:32px;font-size:.68rem;font-weight:600}.hist-delta.up{color:var(--green)}.hist-delta.down{color:var(--red)}#promotion-overlay{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0006;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}#promotion-picker{background:var(--bg-surface);border-radius:var(--r-lg);border:1px solid var(--border);gap:.35rem;padding:.6rem;display:flex;box-shadow:0 8px 36px #0003}.promo-piece{cursor:pointer;border-radius:var(--r-md);justify-content:center;align-items:center;padding:.5rem;transition:background .12s,transform .12s;display:flex}.promo-piece img{pointer-events:none;width:52px;height:52px}.promo-piece:hover{background:var(--bg-elevated);transform:scale(1.1)}.rookly-spinner{justify-content:center;align-items:center;display:flex}.rookly-spinner:after{content:"";border:2px solid #0000;border-bottom-color:var(--text-3);border-radius:50%;width:28px;height:28px;animation:.6s linear infinite spin}.race-play-layout{flex-direction:column;align-items:center;display:flex}.race-vis{width:var(--board-size);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-md);margin-top:.75rem;margin-bottom:.5rem;padding:.5rem .6rem}.race-lane{border-bottom:1px solid var(--border);align-items:center;gap:.4rem;padding:.3rem 0;display:flex}.race-lane--me{background:var(--brand-100)}.race-lane-info{flex-shrink:0;min-width:62px}.race-lane-name{color:var(--text-1);white-space:nowrap;text-overflow:ellipsis;max-width:62px;font-size:.72rem;font-weight:700;line-height:1.1;display:block;overflow:hidden}.race-lane-track{flex:1;align-items:center;gap:3px;min-height:28px;display:flex;position:relative;overflow-x:hidden}.race-score{text-align:right;min-width:24px;color:var(--text-1);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:1rem;font-weight:800}.race-score--pop{animation:.25s ease-out score-pop}.race-piece{filter:drop-shadow(0 1px 3px #0006);flex-shrink:0;width:28px;height:28px}.race-life{background:var(--green);border-radius:50%;width:7px;height:7px;transition:background .3s,opacity .3s}.race-life--lost{background:var(--red);opacity:.25}.race-trail-dot{border-radius:2px;flex-shrink:0;width:8px;height:8px}.race-trail-dot--lg{width:10px;height:10px}.race-trail-dot.solved{background:var(--green)}.race-trail-dot.mistake{background:var(--red)}.race-countdown-bar{border-top:1px solid var(--border);justify-content:center;margin-top:.15rem;padding:.2rem 0 0;display:flex}.race-countdown{font-variant-numeric:tabular-nums;color:var(--text-3);font-size:.85rem;font-weight:700}.race-countdown--urgent{color:var(--red-light)}.race-puzzle-info{flex-wrap:wrap;justify-content:center;align-items:center;gap:1.2rem;margin-bottom:.6rem;font-size:.8rem;display:flex}.race-label{color:var(--text-3)}.race-value{color:var(--text-2);font-weight:600}.race-color-dot{border:1.5px solid var(--border);vertical-align:middle;border-radius:50%;width:11px;height:11px;margin-right:2px;display:inline-block}.race-color-dot--white{background:#f0f0f0}.race-color-dot--black{background:#1a1a1a}.race-status{text-align:center;border-radius:var(--r-md);margin-top:.5rem;padding:.55rem 1rem;font-size:.85rem;font-weight:600}.race-status--dead{background:var(--red-bg);color:var(--red)}.race-status--active{background:var(--bg-elevated);color:var(--text-3)}.race-results-overlay{z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.race-results-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-lg);text-align:center;width:calc(100vw - 2rem);max-width:400px;padding:2rem 2.5rem;box-shadow:0 8px 40px #00000026}.race-results-lane{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-bottom:.4rem;display:flex}.race-btn-primary{border-radius:var(--r-md);cursor:pointer;background:var(--primary);color:#fff;border:none;padding:.5rem 1.2rem;font-size:.82rem;font-weight:600}.race-btn-secondary{border-radius:var(--r-md);cursor:pointer;background:var(--bg-elevated);color:var(--text-2);border:none;padding:.5rem 1.2rem;font-size:.82rem;font-weight:600}.fetchable-loader{color:var(--text-3);text-align:center;padding:1rem 0;font-size:.85rem}.fetchable-error{color:var(--red);text-align:center;padding:1rem 0;font-size:.85rem}@media (width<=860px){.rookly-play-layout{flex-direction:column;align-items:center}.rookly-panels{max-width:100%;width:var(--board-size)}.rookly-nav{-webkit-overflow-scrolling:touch;overflow-x:auto}}@keyframes delta-pop{0%{opacity:0;transform:scale(.3)translateY(6px)}60%{opacity:1;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}#elo-delta:not(.elo-fade){animation:.35s ease-out delta-pop}@keyframes status-pop{0%{opacity:.7;transform:scale(.97)}to{opacity:1;transform:scale(1)}}#status{animation:.18s ease-out status-pop}@keyframes hist-slide{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes spin{to{transform:rotate(360deg)}}.counting-up{color:var(--green)!important}.counting-down{color:var(--red)!important}.elo-up{color:var(--green)}.elo-down{color:var(--red)}.elo-fade{opacity:0;transition:opacity .8s 1.5s}#streak-badge{color:var(--amber);opacity:0;margin-left:.3rem;font-size:.72rem;font-weight:700;transition:opacity .3s;display:inline-block}#streak-badge.visible{opacity:1}
