:root{--font-ui: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: "Fraunces", Georgia, serif;--bg: hsl(28 10% 8%);--bg-raised: hsl(28 9% 11%);--surface: hsl(28 8% 14%);--surface-2: hsl(28 8% 18%);--line: hsl(30 10% 24%);--line-soft: hsl(30 10% 20%);--text: hsl(40 25% 92%);--text-muted: hsl(35 10% 64%);--text-faint: hsl(35 8% 46%);--accent: hsl(38 82% 58%);--accent-strong: hsl(36 88% 50%);--accent-ink: hsl(30 40% 10%);--accent-soft: hsl(38 70% 58% / .14);--good: hsl(146 52% 48%);--good-soft: hsl(146 52% 48% / .16);--bad: hsl(2 72% 62%);--bad-soft: hsl(2 72% 62% / .16);--info: hsl(205 70% 62%);--sq-light: hsl(40 44% 84%);--sq-dark: hsl(27 30% 50%);--sq-last: hsl(48 90% 55% / .42);--sq-select: hsl(146 50% 45% / .5);--radius-sm: 8px;--radius: 14px;--radius-lg: 20px;--shadow-1: 0 1px 0 hsl(40 30% 90% / .04) inset, 0 1px 2px hsl(0 0% 0% / .35);--shadow-2: 0 1px 0 hsl(40 30% 90% / .05) inset, 0 10px 30px -10px hsl(0 0% 0% / .6);--shadow-board: 0 30px 60px -25px hsl(0 0% 0% / .75), 0 0 0 1px hsl(30 20% 4%);--ease: cubic-bezier(.2, .8, .2, 1);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-ui);font-size:15px;line-height:1.5;color:var(--text);background:radial-gradient(1200px 600px at 15% -10%,hsl(36 40% 22% / .35),transparent 60%),radial-gradient(900px 500px at 110% 10%,hsl(20 30% 18% / .3),transparent 60%),var(--bg);background-attachment:fixed;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}h1,h2,h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.015em;line-height:1.15;margin:0}button{font:inherit;color:inherit}a{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:40px;padding:0 1rem;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--text);font-weight:550;font-size:.92rem;letter-spacing:.005em;cursor:pointer;white-space:nowrap;box-shadow:var(--shadow-1);transition:background .16s var(--ease),transform .16s var(--ease),border-color .16s var(--ease)}.btn:hover{background:#3d3834;border-color:#544d45}.btn:active{transform:translateY(1px) scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg,var(--accent),var(--accent-strong));border-color:#ad741f;color:var(--accent-ink);box-shadow:0 1px #ffe69980 inset,0 8px 20px -8px #f2960d8c}.btn-primary:hover{background:linear-gradient(180deg,#f6bf51,#f3a220);border-color:#c38322}.btn-ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--text-muted)}.btn-ghost:hover{background:var(--surface-2);color:var(--text);border-color:transparent}.btn-danger:hover{color:var(--bad);border-color:#993633}.btn-sm{min-height:32px;padding:0 .75rem;font-size:.84rem}.icon-btn{width:40px;padding:0}.btn-sm.icon-btn{width:32px}.panel{background:linear-gradient(180deg,#292623,#24211e);border:1px solid var(--line-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-2)}.eyebrow{font-size:.72rem;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint)}.muted{color:var(--text-muted)}.field{display:grid;gap:.4rem}.field label{font-size:.82rem;font-weight:600;color:var(--text-muted)}.input,.textarea{width:100%;font:inherit;color:var(--text);background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.6rem .75rem;transition:border-color .16s var(--ease),background .16s var(--ease)}.input:focus,.textarea:focus{outline:none;border-color:var(--accent);background:#191715}.textarea{min-height:160px;resize:vertical;font-family:ui-monospace,JetBrains Mono,Menlo,monospace;font-size:.85rem;line-height:1.55}.segmented{display:inline-flex;padding:3px;gap:2px;background:var(--bg-raised);border:1px solid var(--line-soft);border-radius:999px}.segmented button{border:0;background:transparent;color:var(--text-muted);padding:.35rem .9rem;border-radius:999px;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .16s var(--ease),color .16s var(--ease)}.segmented button:hover{color:var(--text)}.segmented button[aria-pressed=true]{background:var(--surface-2);color:var(--text);box-shadow:var(--shadow-1)}.modal-backdrop{position:fixed;inset:0;z-index:50;display:flex;justify-content:center;align-items:flex-start;overflow-y:auto;padding:max(2.5rem,calc(env(safe-area-inset-top) + 1.5rem)) 1rem max(2rem,calc(env(safe-area-inset-bottom) + 1rem));background:#090806a6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fade-in .16s var(--ease)}.modal{width:min(560px,100%);margin:auto 0;padding:1.5rem;display:grid;gap:1.1rem;animation:rise-in .22s var(--ease)}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}.error-text{color:var(--bad);font-size:.85rem}.toast{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%);z-index:60;padding:.6rem 1rem;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);box-shadow:var(--shadow-2);font-size:.88rem;animation:rise-in .2s var(--ease)}@keyframes fade-in{0%{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}}.toast{animation-name:toast-in}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}.file-btn{justify-self:start;position:relative;overflow:hidden}.file-btn input{position:absolute;inset:0;opacity:0;cursor:pointer}.mini-board{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);flex:none;border-radius:6px;overflow:hidden;box-shadow:0 0 0 1px #0c0a08,0 6px 14px -6px #0009}.mini-board span{position:relative}.mini-board img{position:absolute;inset:0;width:100%;height:100%}.mb-l{background:var(--sq-light)}.mb-d{background:var(--sq-dark)}.tier-badge{display:inline-block;margin-left:.5rem;padding:.1rem .5rem;border-radius:999px;font-family:var(--font-ui);font-size:.7rem;font-weight:700;letter-spacing:.02em;vertical-align:middle}.tier-badge-mastered{background:var(--accent-soft);color:var(--accent)}.tier-badge-completed{background:#a7b3be29;color:#c8d1da}.home{width:min(1120px,100%);margin:0 auto;padding:clamp(1.5rem,4vw,3rem) clamp(1rem,4vw,2rem) 4rem;display:grid;gap:2rem}.home-intro{display:grid;gap:.6rem;max-width:640px;animation:rise-in .3s var(--ease)}.home-intro h1{font-size:clamp(1.9rem,4.2vw,2.8rem);letter-spacing:-.025em}.home-intro p.muted{font-size:1.02rem;max-width:54ch}.rep-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr));gap:1rem}.rep-card{display:grid;gap:1.1rem;padding:1.25rem;animation:rise-in .32s var(--ease) both;transition:transform .2s var(--ease),box-shadow .2s var(--ease)}.rep-card:hover{transform:translateY(-2px)}.rep-card:nth-child(2){animation-delay:40ms}.rep-card:nth-child(3){animation-delay:80ms}.rep-card-head{position:relative;display:flex;gap:.85rem;align-items:center}.rep-card-title h2{font-size:1.22rem}.rep-card-title p{margin:.15rem 0 0;font-size:.84rem}.side-badge{flex:none;display:grid;place-items:center;border-radius:12px;background:linear-gradient(160deg,var(--sq-light),hsl(38 35% 72%));box-shadow:0 1px #faf6eb99 inset,0 4px 10px -4px #0009}.side-badge-black{background:linear-gradient(160deg,var(--sq-dark),hsl(25 32% 38%))}.side-badge img{width:78%;height:78%}.rep-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin:0}.rep-stats>div{padding:.6rem .75rem;border-radius:var(--radius-sm);background:var(--bg-raised);border:1px solid var(--line-soft)}.rep-stats dt{font-size:.7rem;font-weight:650;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint)}.rep-stats dd{margin:.1rem 0 0;font-family:var(--font-display);font-size:1.5rem;font-weight:600;font-variant-numeric:tabular-nums}.rep-stats .is-hot{background:var(--accent-soft)}.rep-stats .is-hot dd{color:var(--accent)}.mastery{display:grid;gap:.4rem}.mastery-bar{height:6px;border-radius:999px;background:var(--bg-raised);overflow:hidden;box-shadow:0 1px 2px #0006 inset}.mastery-bar span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,hsl(146 45% 38%),var(--good));transition:width .5s var(--ease)}.mastery-label{font-size:.8rem;color:var(--text-muted)}.rep-card-actions{display:flex;gap:.5rem}.rep-card-actions .btn-primary{flex:1}.rep-new{display:flex;align-items:center;gap:1rem;min-height:140px;padding:1.25rem;border:1px dashed var(--line);border-radius:var(--radius-lg);background:#211e1c66;color:var(--text);text-align:left;cursor:pointer;transition:background .18s var(--ease),border-color .18s var(--ease)}.rep-new:hover{background:var(--surface);border-color:#5f574e}.rep-new>span:last-child{display:grid;gap:.15rem}.rep-new .muted{font-size:.85rem}.rep-new-plus{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--surface-2);font-size:1.5rem;color:var(--accent);transition:transform .2s var(--ease)}.rep-new:hover .rep-new-plus{transform:rotate(90deg)}.home-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:-1rem}.home-toolbar .muted{font-size:.85rem}.home-recs{display:grid;gap:.6rem;padding:1rem 1.15rem;animation:rise-in .32s var(--ease)}.home-recs-head{display:flex;justify-content:space-between;align-items:center}.home-recs-head .link-btn{font-size:.82rem}.home-recs ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:.5rem}.home-recs li{display:flex;align-items:center;gap:.65rem;padding:.55rem .7rem;border-radius:var(--radius-sm);background:var(--bg-raised)}.home-rec-text{display:grid;flex:1;min-width:0}.home-rec-text strong,.home-rec-text .muted{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-rec-text .muted{font-size:.8rem}.tiers-bar{position:relative}.tiers-bar span{position:absolute;inset:0 auto 0 0}.tiers-bar .tb-completed{background:#919eac}.tiers-bar .tb-mastered{background:linear-gradient(90deg,var(--accent-strong),var(--accent))}.rep-remove{position:absolute;top:-.35rem;right:-.35rem;opacity:0;font-size:.85rem;transition:opacity .16s var(--ease)}.rep-card:hover .rep-remove,.rep-remove:focus-visible{opacity:1}.rep-remove:hover{color:var(--bad)}@media (hover: none){.rep-remove{opacity:.7}}.rep-card-title{padding-right:1.5rem}.welcome{display:grid;gap:1rem;padding:1.4rem;background:linear-gradient(160deg,#40321c,#24211e 65%);animation:rise-in .32s var(--ease)}.welcome h2{font-size:1.35rem;margin:.2rem 0 .4rem}.welcome p.muted{margin:0;max-width:60ch}.learn-phase{display:grid;gap:.35rem}.learn-phase-bar{height:6px;border-radius:999px;background:#20303c;overflow:hidden}.learn-phase-bar span{display:block;height:100%;background:linear-gradient(90deg,#268ed9,#47cfeb);transition:width .5s var(--ease)}.learn-phase.is-learned .learn-phase-bar span{background:linear-gradient(90deg,hsl(146 45% 38%),var(--good))}.learn-phase.is-skipped .learn-phase-bar span{background:repeating-linear-gradient(-45deg,#c38822 0 6px,#735726 6px 12px)}.learn-phase-label{font-size:.78rem;color:var(--text-muted)}.learn-phase.is-skipped .learn-phase-label{color:#efbf6c}.home-level{margin-left:.6rem;padding:.1rem .5rem;border-radius:999px;background:var(--accent-soft);color:var(--accent);letter-spacing:.04em}.completed-bucket{display:grid;gap:.6rem}.completed-toggle{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border:1px solid var(--line-soft);border-radius:var(--radius);background:#211e1c99;color:var(--text);font-weight:650;cursor:pointer}.completed-toggle:hover{background:var(--surface)}.completed-list{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}.completed-row{display:flex;align-items:center;gap:.7rem;padding:.6rem .8rem;border-radius:var(--radius-sm);background:var(--bg-raised);animation:rise-in .22s var(--ease)}.completed-name{display:grid;flex:1;min-width:0}.completed-name .muted{font-size:.8rem}@media (max-width: 640px){.completed-row{flex-wrap:wrap}}.board-frame{width:100%;aspect-ratio:1;padding:clamp(5px,1.2%,10px);border-radius:14px;background:linear-gradient(145deg,#483628,#2b1f17);box-shadow:var(--shadow-board),0 1px #8f6d3d40 inset}.board{position:relative;width:100%;height:100%;border-radius:6px;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}.board.is-movable{cursor:pointer}.squares{position:absolute;inset:0;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr)}.sq{position:relative}.sq-light{background:var(--sq-light)}.sq-dark{background:var(--sq-dark)}.sq-last:after,.sq-selected:after,.sq-check:after{content:"";position:absolute;inset:0}.sq-last:after{background:var(--sq-last)}.sq-selected:after{background:var(--sq-select)}.sq-check:after{background:radial-gradient(circle,hsl(0 90% 55% / .85) 0%,hsl(0 90% 50% / .35) 45%,transparent 72%)}.coord{position:absolute;font-size:clamp(8px,1.6vmin,11px);font-weight:700;line-height:1;pointer-events:none;z-index:1}.sq-light .coord{color:var(--sq-dark)}.sq-dark .coord{color:var(--sq-light)}.coord-file{right:4%;bottom:4%}.coord-rank{left:5%;top:4%}.hint-dot{position:absolute;inset:36%;border-radius:50%;background:#203c2952;z-index:2}.hint-capture{position:absolute;inset:0;border-radius:50%;box-shadow:inset 0 0 0 clamp(3px,.9vmin,6px) #203c2959;z-index:2}.pieces{position:absolute;inset:0;pointer-events:none}.piece{position:absolute;top:0;left:0;width:12.5%;height:12.5%;background-size:100% 100%;background-repeat:no-repeat;transition:transform .21s var(--ease);will-change:transform;z-index:3;filter:drop-shadow(0 2px 1px hsl(0 0% 0% / .18));animation:piece-in .18s var(--ease)}.piece.is-dragging{transition:none;z-index:10;filter:drop-shadow(0 10px 8px hsl(0 0% 0% / .35))}@keyframes piece-in{0%{opacity:0}}.sq-flash{position:absolute;top:0;left:0;z-index:2;pointer-events:none;animation:flash .7s var(--ease) forwards}.sq-flash-good{background:#2eb86a99}.sq-flash-bad{background:#e8373099}@keyframes flash{0%{opacity:0}20%{opacity:1}to{opacity:0}}.arrows{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4}.arrow{opacity:.82;animation:arrow-in .26s var(--ease)}.arrow-hint{fill:#f99c10}.arrow-good{fill:#29a35e}.arrow-bad{fill:#e02f29}@keyframes arrow-in{0%{opacity:0}}.promo-backdrop{position:absolute;inset:0;z-index:20;display:grid;place-items:center;background:#0f0d0a8c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.promo{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:8px;width:62%;border-radius:14px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-2)}.promo-choice{aspect-ratio:1;border:0;border-radius:10px;background-color:var(--sq-light);background-size:86%;background-position:center;background-repeat:no-repeat;cursor:pointer;transition:transform .14s var(--ease),background-color .14s var(--ease)}.promo-choice:hover{transform:scale(1.06);background-color:#f5ebd6}.burst{position:absolute;top:0;left:0;z-index:6;pointer-events:none}.burst-ring{position:absolute;inset:8%;border-radius:50%;border:3px solid hsl(146 70% 55%);box-shadow:0 0 18px 4px #26d9748c;animation:burst-ring .62s cubic-bezier(.2,.8,.2,1) forwards}.burst-dot{position:absolute;left:50%;top:50%;width:9%;height:9%;margin:-4.5%;border-radius:50%;background:#fad542;box-shadow:0 0 6px #fad338;transform:rotate(var(--a)) translateY(0);animation:burst-dot .65s cubic-bezier(.15,.7,.25,1) forwards}.burst-dot:nth-child(odd){background:#4ce68f;box-shadow:0 0 6px #36e281}.burst-text{position:absolute;left:50%;top:0;transform:translate(-50%);font-family:var(--font-display);font-weight:700;font-size:clamp(12px,2.2vmin,18px);color:#fbde6a;text-shadow:0 2px 6px hsl(0 0% 0% / .7);white-space:nowrap;animation:burst-text .9s ease-out forwards}.burst.is-big .burst-ring{border-color:#fad338;box-shadow:0 0 26px 8px #f9ce1f99}@keyframes burst-ring{0%{transform:scale(.4);opacity:1}to{transform:scale(1.9);opacity:0}}@keyframes burst-dot{0%{transform:rotate(var(--a)) translateY(0) scale(1);opacity:1}to{transform:rotate(var(--a)) translateY(-260%) scale(.3);opacity:0}}@keyframes burst-text{0%{transform:translate(-50%,10%);opacity:0}20%{opacity:1}to{transform:translate(-50%,-140%);opacity:0}}.celebration{position:absolute;inset:0;z-index:30;display:grid;place-items:center;overflow:hidden;border-radius:14px;background:radial-gradient(circle at 50% 45%,#523b148c,#0f0d0ab3);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);cursor:pointer;animation:celebrate-in .26s var(--ease)}.confetti span{position:absolute;top:-4%;border-radius:2px;opacity:0;animation-name:confetti-fall;animation-timing-function:cubic-bezier(.25,.6,.4,1);animation-fill-mode:forwards}@keyframes confetti-fall{0%{transform:translate(0) rotate(0);opacity:1}85%{opacity:1}to{transform:translate(var(--drift),115vh) rotate(var(--rot));opacity:0}}.celebration-card{display:grid;justify-items:center;gap:.35rem;padding:1.4rem 2rem 1.1rem;border-radius:var(--radius-lg);background:linear-gradient(170deg,#4c3c24,#25211d);border:1px solid hsl(38 60% 45%);box-shadow:0 30px 60px -20px #000c,0 0 60px #f4a82540;text-align:center;animation:card-pop .52s cubic-bezier(.2,1.4,.4,1) both}.stars{display:flex;gap:.35rem;font-size:clamp(2rem,6vmin,3rem);line-height:1}.star{color:#544d45;transform:scale(0);animation:star-pop .42s cubic-bezier(.2,1.6,.4,1) forwards}.star.on{color:#ffcf3d;text-shadow:0 0 18px hsl(45 100% 55% / .7)}.celebration-title{font-family:var(--font-display);font-size:clamp(1.4rem,3.6vmin,2rem);letter-spacing:-.02em}.celebration-sub{color:var(--text-muted);font-size:.92rem;max-width:32ch}.celebration-xp{font-weight:800;font-size:1.15rem;color:#fbdc60;animation:xp-rise .7s .6s cubic-bezier(.2,1.4,.4,1) both}.celebration-badge{padding:.25rem .8rem;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-weight:800;font-size:.85rem;animation:xp-rise .6s .9s cubic-bezier(.2,1.4,.4,1) both}.celebration-hint{margin-top:.3rem;font-size:.72rem;color:var(--text-faint)}@keyframes celebrate-in{0%{opacity:0}}@keyframes card-pop{0%{transform:scale(.6) translateY(20px);opacity:0}}@keyframes star-pop{to{transform:scale(1)}}@keyframes xp-rise{0%{transform:translateY(10px) scale(.8);opacity:0}}@media (prefers-reduced-motion: reduce){.confetti{display:none}}.eval-bar{position:relative;width:clamp(16px,2.2vw,24px);align-self:stretch;border-radius:6px;overflow:hidden;background:#28231f;box-shadow:0 0 0 1px #0c0a08,var(--shadow-1);display:flex;flex-direction:column;justify-content:flex-end}.eval-bar.is-flipped{flex-direction:column-reverse}.eval-white{background:linear-gradient(180deg,#f8f6f2,#e2ded4);transition:height .45s var(--ease)}.eval-label{position:absolute;left:50%;transform:translate(-50%) rotate(0);font-size:clamp(8px,1.1vw,10px);font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none}.eval-bar .eval-label.on-white{bottom:4px;color:#372d25}.eval-bar .eval-label.on-black{top:4px;color:#e8e3d9}.eval-bar.is-flipped .eval-label.on-white{bottom:auto;top:4px}.eval-bar.is-flipped .eval-label.on-black{top:auto;bottom:4px}.board-with-eval{display:flex;gap:clamp(6px,1vw,10px);align-items:stretch}.board-with-eval>.board-frame{flex:1;min-width:0}.eval-readout{display:flex;align-items:baseline;gap:.5rem;font-size:.82rem;color:var(--text-muted)}.eval-readout strong{color:var(--text);font-size:1rem;font-variant-numeric:tabular-nums}.eval-bar.is-off{display:none}.engine-select select{appearance:none;font:inherit;font-size:.8rem;color:var(--text-muted);background:var(--bg-raised);border:1px solid var(--line-soft);border-radius:999px;padding:.3rem 1.6rem .3rem .7rem;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 13px) 55%,calc(100% - 9px) 55%;background-size:4px 4px;background-repeat:no-repeat;cursor:pointer}.engine-select select:hover{color:var(--text)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.verdict{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .55rem;margin:0;padding:.55rem .75rem;border-radius:var(--radius-sm);background:var(--bg-raised);font-size:.84rem;font-variant-numeric:tabular-nums;animation:fade-in .2s var(--ease)}.verdict.is-compact{padding:0;background:none;font-size:.8rem}.verdict-tag{font-weight:700}.verdict-detail{color:var(--text-muted)}.verdict-best .verdict-tag,.verdict-good .verdict-tag{color:var(--good)}.verdict-inaccuracy .verdict-tag{color:#f5ca47}.verdict-mistake .verdict-tag{color:#f59047}.verdict-blunder .verdict-tag{color:var(--bad)}.verdict-pending,.verdict-unknown{color:var(--text-faint)}.tour-ring{position:fixed;z-index:70;border-radius:12px;pointer-events:none;box-shadow:0 0 0 2px var(--accent),0 0 0 6px #ecab3c40,0 0 28px 4px #ecab3c59;transition:top .22s var(--ease),left .22s var(--ease),width .22s var(--ease),height .22s var(--ease);animation:tour-pulse 1.8s ease-in-out infinite}@keyframes tour-pulse{50%{box-shadow:0 0 0 2px var(--accent),0 0 0 9px #ecab3c1f,0 0 36px 6px #ecab3c40}}.tour-card{position:fixed;z-index:71;display:grid;gap:.4rem;padding:.9rem 1rem;border-radius:var(--radius);background:linear-gradient(170deg,#423624,#28231f);border:1px solid hsl(38 50% 40%);box-shadow:0 18px 40px -12px #000000b3;animation:rise-in .22s var(--ease);transition:top .22s var(--ease),left .22s var(--ease)}.tour-step{font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.tour-title{font-family:var(--font-display);font-size:1.05rem}.tour-card p{margin:0;font-size:.88rem;line-height:1.5;color:var(--text-muted)}.tour-actions{display:flex;justify-content:space-between;margin-top:.2rem}.trainer{width:min(1200px,100%);margin:0 auto;padding:clamp(.75rem,3vw,2rem);display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:clamp(1rem,2.5vw,2rem);align-items:start}.trainer-board{width:min(100%,calc(100dvh - 120px));justify-self:center;display:grid;gap:.5rem;animation:rise-in .3s var(--ease)}.trainer-side{display:grid;gap:1rem;padding:1.25rem;position:sticky;top:1rem;animation:rise-in .34s var(--ease)}.trainer-head{display:flex;gap:.75rem;align-items:center}.trainer-head h1{font-size:1.3rem}.trainer-controls{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem}.deck-strip{display:flex;flex-wrap:wrap;gap:.35rem 1rem;font-size:.84rem;color:var(--text-muted)}.deck-strip strong{color:var(--text);font-variant-numeric:tabular-nums}.tier-chip{padding:.05rem .55rem;border-radius:999px;background:var(--surface-2);color:var(--text-muted);font-size:.78rem;font-weight:600}.tier-completed{background:#a7b3be29;color:#c8d1da}.tier-mastered{background:var(--accent-soft);color:var(--accent)}.deck-session{margin-left:auto;color:var(--accent)}.feedback{min-height:3.4rem;display:flex;align-items:center;padding:.75rem 1rem;border-radius:var(--radius);background:var(--bg-raised);border:1px solid var(--line-soft);font-weight:550;line-height:1.4;transition:background .22s var(--ease),color .22s var(--ease)}.feedback-good{background:var(--good-soft);color:#90dfb2}.feedback-bad{background:var(--bad-soft);color:#f5a6a3;animation:nudge .3s var(--ease)}.feedback-teach{background:var(--accent-soft);color:#f9d286}@keyframes nudge{30%{transform:translate(-3px)}60%{transform:translate(2px)}}.thinking span{animation:blink 1.2s infinite}.thinking span:nth-child(2){animation-delay:.2s}.thinking span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,to{opacity:.2}50%{opacity:1}}.line-moves{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.3rem;min-height:2rem;font-variant-numeric:tabular-nums}.line-moves li{display:inline-flex;align-items:baseline;gap:.3rem;padding:.2rem .5rem;border-radius:6px;font-size:.9rem;font-weight:550;color:var(--text-muted);background:transparent;animation:fade-in .2s var(--ease)}.line-moves li.is-user{color:var(--text);background:var(--surface-2)}.line-moves li.is-user:after{content:"✓";font-size:.72rem;color:var(--good)}.line-moves li.is-taught:after{content:"★";color:var(--accent)}.line-moves li.is-missed{background:var(--bad-soft)}.line-moves li.is-missed:after{content:"✗";color:var(--bad)}.line-moves .num{font-size:.78rem;color:var(--text-faint)}.line-moves .is-next{color:var(--accent);border:1px dashed hsl(38 50% 40%)}.trainer-actions{display:flex;gap:.5rem;flex-wrap:wrap}.trainer-actions .btn-primary,.trainer-actions #hint{flex:1}.trainer-actions .icon-btn{font-size:1.1rem}kbd{font-family:var(--font-ui);font-size:.7rem;padding:.05rem .35rem;border-radius:4px;background:#0000002e;opacity:.8}.trainer-empty{display:grid;gap:.6rem;padding:1rem;border-radius:var(--radius);background:var(--bg-raised)}.trainer-empty h2{font-size:1.2rem}.trainer-empty p{margin:0;font-size:.9rem}.row{display:flex;gap:.5rem;flex-wrap:wrap}.trainer-foot{display:flex;justify-content:space-between;border-top:1px solid var(--line-soft);padding-top:.75rem}@media (max-width: 860px){.trainer{grid-template-columns:1fr}.trainer-board{width:min(100%,560px)}.trainer-side{position:static}.trainer-head{display:none}}.line-moves li.is-free{color:var(--text-faint);border:1px dashed var(--line)}.line-moves li.is-free-user{color:var(--text-muted)}.bot-panel{display:grid;gap:.35rem;padding:.7rem .85rem;border-radius:var(--radius-sm);background:var(--bg-raised);font-size:.85rem}.bot-panel input[type=range]{width:100%;accent-color:var(--accent)}.move-on{display:grid;gap:.35rem;padding:.85rem 1rem;border-radius:var(--radius);background:var(--accent-soft);animation:rise-in .24s var(--ease)}.move-on .muted{font-size:.85rem}.trainer-board .board-with-eval{position:relative}.gamebar{display:flex;align-items:center;gap:.75rem;font-size:.85rem}.streak{padding:.15rem .6rem;border-radius:999px;background:var(--surface-2);font-weight:700;font-variant-numeric:tabular-nums;transition:transform .2s var(--ease),background .2s var(--ease)}.streak.is-hot{background:linear-gradient(90deg,#da620b59,#f9bc0659);color:#ffdf80;animation:streak-pulse .9s ease-in-out infinite}@keyframes streak-pulse{50%{transform:scale(1.07)}}.level{display:inline-flex;align-items:center;gap:.4rem;font-weight:700}.level-bar{display:inline-block;width:70px;height:6px;border-radius:999px;background:var(--surface-2);overflow:hidden}.level-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--accent-strong),hsl(48 95% 62%));transition:width .6s var(--ease)}.best-streak{margin-left:auto;font-size:.78rem}.learn-banner{display:grid;gap:.45rem;padding:.8rem .9rem;border-radius:var(--radius);background:#408abf1f;border:1px solid hsl(205 50% 45% / .35)}.learn-banner-head{display:flex;justify-content:space-between;align-items:baseline;font-size:.9rem}.learn-banner-head .muted{font-size:.82rem}.learn-bar{height:7px;border-radius:999px;background:#243642;overflow:hidden}.learn-bar span{display:block;height:100%;background:linear-gradient(90deg,#268ed9,#47cfeb);transition:width .6s var(--ease)}.learn-note{font-size:.8rem}.segmented button.is-locked{opacity:.5;cursor:not-allowed}.builder{width:min(1200px,100%);margin:0 auto;padding:clamp(.75rem,3vw,2rem);display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,400px);gap:clamp(1rem,2.5vw,2rem);align-items:start}.builder-board{width:min(100%,calc(100dvh - 170px));justify-self:center;display:grid;gap:.75rem}.nav-bar{display:flex;justify-content:center;gap:.4rem}.builder-side{display:grid;gap:1rem;padding:1.25rem;position:sticky;top:1rem;max-height:calc(100dvh - 2rem);grid-template-rows:auto auto minmax(120px,1fr) auto auto auto auto}.builder-head{display:flex;gap:.75rem;align-items:center}.builder-title{flex:1;min-width:0}.title-input{width:100%;font-family:var(--font-display);font-size:1.3rem;font-weight:600;letter-spacing:-.015em;color:var(--text);background:transparent;border:1px solid transparent;border-radius:6px;padding:.05rem .3rem;margin-left:-.3rem;transition:border-color .16s var(--ease),background .16s var(--ease)}.title-input:hover{border-color:var(--line-soft)}.title-input:focus{outline:none;border-color:var(--accent);background:var(--bg-raised)}.builder-hint{margin:0;padding:.7rem .9rem;border-radius:var(--radius);background:var(--bg-raised);font-size:.88rem;color:var(--text-muted)}.builder-hint strong{color:var(--text)}.builder-tree{overflow:auto;min-height:120px;padding:.75rem;border-radius:var(--radius);background:var(--bg-raised);border:1px solid var(--line-soft)}.move-tree{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem;line-height:1.9}.mt-move{display:inline-flex;align-items:baseline;gap:.25rem;padding:.05rem .4rem;border:0;border-radius:5px;background:transparent;color:var(--text-muted);font-size:.9rem;font-weight:500;font-variant-numeric:tabular-nums;cursor:pointer;transition:background .12s var(--ease),color .12s var(--ease)}.mt-move.is-user{color:var(--text);font-weight:650}.mt-move:hover{background:var(--surface-2);color:var(--text)}.mt-move.is-current{background:var(--accent);color:var(--accent-ink)}.mt-move.is-current .num{color:#594026}.mt-move .num{font-size:.78rem;color:var(--text-faint);font-weight:500}.mt-dot{width:5px;height:5px;border-radius:50%;background:var(--info);align-self:center}.mt-variations{flex-basis:100%;display:grid;gap:.1rem;margin:.15rem 0 .25rem .5rem;padding-left:.6rem;border-left:1px solid var(--line)}.mt-variation{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem}.mt-empty{margin:0;font-size:.9rem}.builder-node{display:grid;gap:.6rem}.comment-input{min-height:64px;font-family:var(--font-ui);font-size:.88rem}.builder-stats{font-size:.82rem}@media (max-width: 860px){.builder{grid-template-columns:1fr}.builder-board{width:min(100%,560px)}.builder-side{position:static;max-height:none}.builder-tree{max-height:40vh}}.readonly-pill{margin-left:.5rem;padding:.05rem .45rem;border-radius:999px;background:var(--surface-2);color:var(--text-muted);letter-spacing:.06em}.title-static{font-size:1.3rem;margin-top:.1rem}.builder-comment{margin:0;padding:.6rem .8rem;border-radius:var(--radius-sm);background:var(--bg-raised);font-size:.88rem;color:var(--text-muted)}.builder-comment strong{color:var(--text)}.mt-glyph{color:#f59047;font-weight:700;font-size:.8rem}.nav-bar{flex-wrap:wrap}.signin-lede{margin:0}.signin-providers{display:grid;gap:.65rem;justify-items:stretch}.google-slot{display:flex;justify-content:center;min-height:44px;color-scheme:light}.apple-btn{min-height:44px;border-radius:999px;background:#fff;border-color:#fff;color:#000;font-weight:600;font-size:.95rem;gap:.55rem}.apple-btn:hover{background:#ebebeb;border-color:#ebebeb}.apple-logo{width:15px;height:18px;margin-top:-2px}.signin-dev{display:grid;gap:.5rem;padding:.9rem;border-radius:var(--radius);background:var(--bg-raised);border:1px dashed var(--line)}.signin-dev .input{flex:1;min-width:0}.signin-note{margin:0;padding:.75rem .9rem;border-radius:var(--radius);background:var(--bg-raised);color:var(--text-muted);font-size:.9rem}.signin-fine{margin:0;font-size:.78rem;color:var(--text-faint);line-height:1.5}.account{position:relative}.avatar-btn{position:relative;padding:0;border:0;background:none;cursor:pointer;border-radius:50%}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:linear-gradient(160deg,#564c43,#38332e);border:1px solid var(--line);font-weight:650;font-size:.9rem;color:var(--text);transition:transform .16s var(--ease),border-color .16s var(--ease)}.avatar-btn:hover .avatar{border-color:var(--accent);transform:scale(1.04)}.avatar-lg{width:42px;height:42px;font-size:1.05rem;flex:none}.sync-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--text-faint);flex:none}.avatar-btn .sync-dot{position:absolute;right:-1px;bottom:-1px;box-shadow:0 0 0 2px var(--bg)}.sync-synced{background:var(--good)}.sync-syncing{background:var(--accent);animation:pulse 1s ease-in-out infinite}.sync-offline{background:var(--text-faint)}.sync-error{background:var(--bad)}@keyframes pulse{50%{opacity:.35}}.account-menu{position:absolute;right:0;top:calc(100% + 10px);width:min(300px,calc(100vw - 2rem));padding:1rem;display:grid;gap:.85rem;z-index:40;animation:rise-in .18s var(--ease)}.account-who{display:flex;gap:.75rem;align-items:center}.account-who>div{display:grid;min-width:0}.account-who .muted,.account-who strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-who .muted{font-size:.85rem}.account-providers{font-size:.75rem;color:var(--text-faint)}.account-sync{display:flex;align-items:center;gap:.55rem;padding:.6rem .75rem;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--bg-raised);font-size:.85rem;text-align:left;cursor:pointer;transition:border-color .16s var(--ease)}.account-sync:hover{border-color:var(--line)}.account-sync .muted{margin-left:auto;font-size:.78rem}.account-actions{display:flex;justify-content:space-between;gap:.5rem}.account-fine{margin:0;font-size:.75rem;color:var(--text-faint)}.signin-divider{display:flex;align-items:center;gap:.75rem;color:var(--text-faint);font-size:.8rem}.signin-divider:before,.signin-divider:after{content:"";flex:1;height:1px;background:var(--line-soft)}.signin-form{display:grid;gap:.8rem}.signin-tabs{justify-self:start}.signin-hint{font-size:.78rem;color:var(--text-faint)}.games{width:min(1120px,100%);margin:0 auto;padding:clamp(1.5rem,4vw,2.5rem) clamp(1rem,4vw,2rem) 4rem;display:grid;gap:1.1rem}.games-head{display:grid;gap:.4rem;margin-bottom:.5rem;animation:rise-in .3s var(--ease)}.games-head h1{font-size:clamp(1.7rem,3.6vw,2.4rem);letter-spacing:-.025em}.games-gate{display:flex;gap:1.5rem;align-items:center;padding:clamp(1.25rem,4vw,2rem);animation:rise-in .32s var(--ease)}.games-gate>div{display:grid;gap:.75rem;justify-items:start;max-width:560px}.games-gate h2{font-size:1.4rem}.games-gate p{margin:0}.games-gate-art{width:clamp(64px,12vw,104px);flex:none;filter:drop-shadow(0 10px 20px hsl(0 0% 0% / .5));opacity:.92}.connect-form{width:100%}.connect-form .input{flex:1;min-width:180px}.cc-strip{display:grid;grid-template-columns:1fr auto;gap:.75rem 1rem;align-items:center;padding:1rem 1.25rem}.cc-who{display:flex;gap:.75rem;align-items:center;min-width:0}.cc-avatar{width:42px;height:42px;border-radius:10px;object-fit:cover}.cc-name{color:var(--text);font-weight:650;text-decoration:none}.cc-name:hover{color:var(--accent)}.cc-ratings{display:flex;flex-wrap:wrap;gap:.25rem .8rem;font-size:.82rem;color:var(--text-muted)}.cc-rating strong{color:var(--text);font-variant-numeric:tabular-nums}.cc-controls{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end;align-items:center}.cc-status{grid-column:1 / -1;margin:0;font-size:.8rem}.link-btn{border:0;padding:0;background:none;color:var(--accent);font-size:inherit;cursor:pointer}.link-btn:hover{text-decoration:underline}.spinner{width:12px;height:12px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.games-msg{margin:0}.notice{padding:.6rem .9rem;border-radius:var(--radius-sm);background:var(--good-soft);color:#9ce2bb;font-size:.9rem}.games-empty{padding:2rem;text-align:center}.tc-filter{justify-self:start}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem}.stat{display:grid;gap:.2rem;padding:1rem 1.1rem;animation:rise-in .3s var(--ease) both}.stat strong{font-family:var(--font-display);font-size:1.9rem;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.stat .muted{font-size:.82rem}.wdl{display:flex;height:6px;min-width:60px;border-radius:999px;overflow:hidden;background:var(--bg-raised);align-self:center}.wdl-w{background:var(--good)}.wdl-d{background:#958e83}.wdl-l{background:var(--bad)}.games-card{display:grid;gap:1rem;padding:1.25rem}.card-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.25rem 1rem}.card-head h2{font-size:1.2rem}.card-head .muted{font-size:.85rem}.chart{display:grid;gap:.4rem}.chart svg{width:100%;height:auto;touch-action:pan-y}.chart-grid{stroke:var(--line-soft);stroke-dasharray:3 4}.chart-label{fill:var(--text-faint);font-size:11px;font-family:var(--font-ui)}.chart-line{fill:none;stroke:var(--accent);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}.chart-dot{fill:var(--accent);stroke:var(--bg);stroke-width:2}.chart-cursor{stroke:var(--text-faint);stroke-width:1}.chart-readout{display:flex;gap:.5rem;align-items:baseline;font-size:.85rem;color:var(--text-muted)}.chart-readout strong{color:var(--text);font-size:1.05rem;font-variant-numeric:tabular-nums}.chart-readout .up{color:var(--good)}.chart-readout .down{color:var(--bad)}.chart-empty{margin:0}.cov-grid,.open-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:1.5rem}.cov-grid h3,.open-title{font-size:1rem;margin-bottom:.25rem}.cov-hint{margin:0 0 .75rem;font-size:.84rem}.cov-list{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.cov-item{display:flex;gap:.75rem;align-items:center;justify-content:space-between;padding:.7rem .85rem;border-radius:var(--radius-sm);background:var(--bg-raised);border:1px solid var(--line-soft);transition:border-color .16s var(--ease)}.cov-item:hover{border-color:var(--line)}.cov-line{display:grid;gap:.15rem;min-width:0}.cov-moves{font-weight:600;font-variant-numeric:tabular-nums}.cov-meta,.cov-book{font-size:.8rem}.cov-book{color:var(--text-muted)}.cov-book strong{color:var(--good)}.cov-actions{flex:none;display:flex;flex-direction:column;align-items:stretch;gap:.35rem}.cov-opening{justify-self:start;font-size:.72rem}.cov-played{color:var(--bad)}.open-title{display:flex;align-items:center;gap:.5rem;text-transform:capitalize}.open-table{width:100%;border-collapse:collapse;font-size:.88rem}.open-table th{text-align:left;font-size:.7rem;font-weight:650;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);padding:.4rem .5rem;border-bottom:1px solid var(--line-soft)}.open-table td{padding:.5rem;border-bottom:1px solid hsl(30 10% 18%)}.open-table td:first-child{max-width:0;width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.open-table .num{text-align:right;font-variant-numeric:tabular-nums}.open-table .wdl{width:100%}.recent{list-style:none;margin:0;padding:0;display:grid}.recent-row{display:grid;grid-template-columns:auto auto minmax(0,1.2fr) minmax(0,1.6fr) auto auto auto;gap:.75rem;align-items:center;padding:.55rem .25rem;border-bottom:1px solid hsl(30 10% 18%);font-size:.88rem}.recent-row:last-child{border-bottom:0}.outcome{display:grid;place-items:center;width:24px;height:24px;border-radius:6px;font-size:.75rem;font-weight:700}.outcome-win{background:var(--good-soft);color:var(--good)}.outcome-loss{background:var(--bad-soft);color:var(--bad)}.outcome-draw{background:var(--surface-2);color:var(--text-muted)}.recent-opp,.recent-open{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-meta{font-size:.8rem;white-space:nowrap}.recent-link{text-decoration:none;color:var(--text-faint)}.recent-link:hover{color:var(--accent)}@media (max-width: 720px){.cc-strip{grid-template-columns:1fr}.cc-controls{justify-content:flex-start}.recent-row{grid-template-columns:auto auto minmax(0,1fr) auto auto}.recent-open,.recent-meta{display:none}.cov-item{flex-direction:column;align-items:stretch}.games-gate{flex-direction:column;text-align:center}.games-gate>div{justify-items:center}}.top-trainings{display:grid;gap:.75rem}.top-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:.75rem}.top-card{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:1fr auto;gap:.75rem .85rem;padding:1.1rem;animation:rise-in .3s var(--ease) both}.top-card:first-child{background:linear-gradient(160deg,#40321c,#24211e 60%)}.top-rank{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--accent-soft);color:var(--accent);font-family:var(--font-display);font-size:1.2rem;font-weight:600}.top-body{display:grid;gap:.25rem;align-content:start}.top-body h3{font-size:1.08rem}.top-body p{margin:0;font-size:.85rem}.top-meter{display:block;height:4px;margin-top:.35rem;border-radius:999px;background:var(--surface-2);overflow:hidden}.top-meter span{display:block;height:100%;background:var(--bad);border-radius:inherit}.top-action{grid-column:2;justify-self:start}.library{width:min(1180px,100%);margin:0 auto;padding:clamp(1.5rem,4vw,2.5rem) clamp(1rem,4vw,2rem) 4rem;display:grid;gap:1.25rem}.library-head{display:grid;gap:.4rem;animation:rise-in .3s var(--ease)}.library-head h1{font-size:clamp(1.7rem,3.6vw,2.4rem);letter-spacing:-.025em}.library-head p.muted{margin:0;max-width:60ch}.lib-controls{position:sticky;top:62px;z-index:15;display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;padding:.6rem;margin:0 -.6rem;border-radius:var(--radius);background:#161412d1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.lib-search{flex:1;min-width:200px;border-radius:999px;padding-left:1rem}.recs{display:grid;gap:.9rem;padding:1.25rem}.recs h2{display:flex;align-items:center;gap:.5rem;font-size:1.15rem;text-transform:none}.recs-empty{margin:0}.rec-list{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.rec{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.85rem;align-items:center;padding:.8rem .9rem;border-radius:var(--radius-sm);background:var(--bg-raised);border:1px solid var(--line-soft);animation:rise-in .26s var(--ease) both}.rec-rank{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:.85rem}.rec-tip .rec-rank{background:var(--surface-2);color:var(--text-muted)}.rec-body{display:grid;gap:.2rem;min-width:0}.rec-body .muted{font-size:.84rem}.rec-try{font-size:.86rem}.rec-try .link-btn{font-weight:600}.rec-bar{display:block;height:4px;max-width:220px;border-radius:999px;background:var(--surface-2);overflow:hidden}.rec-bar span{display:block;height:100%;background:var(--bad);border-radius:inherit}.rec-actions{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end}.lib-group{display:grid;gap:.75rem}.lib-group-title{font-family:var(--font-ui);font-size:.75rem;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);margin-top:.5rem}.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,350px),1fr));gap:.85rem}.lib-card{display:grid;gap:.7rem;align-content:start;padding:1rem;transition:transform .2s var(--ease),box-shadow .3s var(--ease);animation:rise-in .28s var(--ease) both}.lib-card:hover{transform:translateY(-2px)}.lib-card.is-highlight{box-shadow:var(--shadow-2),0 0 0 2px var(--accent)}.lib-card-top{display:flex;gap:.9rem;align-items:flex-start}.lib-card-title{display:grid;gap:.35rem;min-width:0}.lib-card-title h3{font-size:1.1rem}.lib-badges{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.kind-badge{padding:.1rem .5rem;border-radius:999px;font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.kind-counter{background:var(--accent-soft);color:var(--accent)}.kind-tutorial{background:#4798d12e;color:#8cc8f2}.kind-system{background:var(--surface-2);color:var(--text-muted)}.eco{font-size:.72rem;color:var(--text-faint);font-variant-numeric:tabular-nums}.difficulty{display:inline-flex;gap:2px}.difficulty span{width:5px;height:5px;border-radius:50%;background:var(--surface-2)}.difficulty span.on{background:var(--text-muted)}.lib-summary{margin:0;font-size:.9rem;color:var(--text-muted);line-height:1.5}.lib-moves{margin:0;padding:.5rem .65rem;border-radius:var(--radius-sm);background:var(--bg-raised);font-size:.82rem;font-weight:550;font-variant-numeric:tabular-nums;line-height:1.6}.lib-links{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;margin:0;font-size:.8rem}.chip{padding:.12rem .55rem;border-radius:999px;background:var(--surface-2);border:1px solid transparent;color:var(--text);font-size:.78rem}.chip-link{cursor:pointer;transition:border-color .16s var(--ease),color .16s var(--ease)}.chip-link:hover{border-color:var(--accent);color:var(--accent)}.lib-card-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding-top:.6rem;border-top:1px solid var(--line-soft)}.lib-meta{font-size:.78rem}.lib-meta .bad{color:var(--bad)}.lib-meta .good{color:var(--good)}.lib-foot{font-size:.78rem;line-height:1.6}@media (max-width: 720px){.lib-controls{top:58px}.rec{grid-template-columns:auto minmax(0,1fr)}.rec-actions{grid-column:1 / -1;justify-content:flex-start}}.replay{width:min(1280px,100%);margin:0 auto;padding:clamp(1.25rem,3vw,2rem) clamp(.75rem,3vw,2rem) 3rem;display:grid;gap:1rem}.replay-page-head{display:grid;gap:.35rem}.replay-page-head h1{font-size:clamp(1.6rem,3.4vw,2.2rem);letter-spacing:-.025em}.replay-page-head p.muted{margin:0;max-width:62ch}.replay-gate{padding:1.5rem}.replay-layout{display:grid;grid-template-columns:minmax(260px,330px) minmax(0,1fr);gap:1rem;align-items:start}.replay-list{display:grid;gap:.6rem;padding:.85rem;position:sticky;top:72px;max-height:calc(100dvh - 90px);overflow:auto}.replay-list-head{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between}.replay-list ul{list-style:none;margin:0;padding:0;display:grid;gap:.3rem}.replay-row{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;gap:.15rem .6rem;align-items:center;padding:.55rem .65rem;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;text-align:left;cursor:pointer;transition:background .14s var(--ease),border-color .14s var(--ease)}.replay-row:hover{background:var(--bg-raised)}.replay-row.is-selected{background:var(--bg-raised);border-color:var(--line)}.replay-row .outcome{grid-row:1 / span 2}.replay-row-main{display:flex;gap:.4rem;align-items:baseline;min-width:0}.replay-row-main strong,.replay-row-main .muted{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.86rem}.replay-row-main .muted{font-size:.78rem}.replay-row-status{display:flex;gap:.35rem;align-items:center;font-size:.76rem;color:var(--text-faint)}.replay-row-status.has-mistake{color:var(--bad)}.replay-detail{display:grid;gap:1rem;padding:1.1rem}.replay-head{display:flex;gap:.7rem;align-items:center}.replay-head h2{font-size:1.2rem}.replay-head p{margin:.1rem 0 0;font-size:.84rem}.replay-body{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(280px,1fr);gap:1.1rem;align-items:start}.replay-board{display:grid;gap:.6rem}.replay-ply{min-width:9rem;text-align:center;font-size:.85rem;align-self:center;font-variant-numeric:tabular-nums}.replay-side{display:grid;gap:.9rem;align-content:start}.mistake-card{display:grid;gap:.5rem;padding:.9rem 1rem;border-radius:var(--radius);background:var(--bg-raised);border:1px solid var(--line-soft)}.mistake-card p{margin:0;font-size:.88rem}.mistake-line{font-size:1.05rem!important}.mistake-card .bad{color:var(--bad)}.mistake-card .good{color:var(--good)}.punish{color:var(--text-muted)}.quiz{display:grid;gap:.5rem;padding-top:.4rem;border-top:1px solid var(--line-soft)}.replay-moves{list-style:none;margin:0;padding:.5rem;display:flex;flex-wrap:wrap;gap:.15rem;max-height:180px;overflow:auto;border-radius:var(--radius-sm);background:var(--bg-raised)}.replay-moves button{display:inline-flex;gap:.25rem;padding:.1rem .35rem;border:0;border-radius:5px;background:transparent;color:var(--text-muted);font-size:.82rem;font-variant-numeric:tabular-nums;cursor:pointer}.replay-moves .num{color:var(--text-faint)}.replay-moves li.is-current button{background:var(--accent);color:var(--accent-ink)}.replay-moves li.is-mistake button{color:var(--bad);font-weight:700}.replay-moves li.is-punish button{color:#f59047;font-weight:650}.related h3{font-size:1rem;margin-bottom:.5rem}.related ul{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}.related-item{display:flex;gap:.75rem;justify-content:space-between;align-items:center;padding:.6rem .75rem;border-radius:var(--radius-sm);background:var(--bg-raised)}.related-item>div{display:grid;gap:.1rem;min-width:0}.related-item .muted{font-size:.8rem}@media (max-width: 1000px){.replay-layout,.replay-body{grid-template-columns:1fr}.replay-list{position:static;max-height:320px}}.app{min-height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;padding:.85rem clamp(1rem,4vw,2rem);padding-top:max(.85rem,env(safe-area-inset-top));border-bottom:1px solid hsl(30 10% 18% / .7);background:#161412b3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0;z-index:20}.topbar{gap:1rem}.topbar .account,.topbar>.btn{margin-left:auto}.topnav{display:flex;gap:.25rem;margin-left:clamp(.5rem,3vw,2rem)}.topnav a{padding:.35rem .75rem;border-radius:999px;color:var(--text-muted);text-decoration:none;font-size:.9rem;font-weight:550;transition:color .16s var(--ease),background .16s var(--ease)}.topnav a:hover{color:var(--text)}.topnav a[aria-current=page]{color:var(--text);background:var(--surface-2)}@media (max-width: 560px){.brand-name{display:none}.topnav{margin-left:0}}.brand{display:inline-flex;align-items:center;gap:.6rem;color:var(--text);text-decoration:none}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:linear-gradient(160deg,var(--accent),var(--accent-strong));box-shadow:0 1px #ffe69980 inset,0 4px 12px -4px #f2960d99;transition:transform .22s var(--ease)}.brand:hover .brand-mark{transform:rotate(-8deg)}.brand-mark img{width:80%;height:80%}.brand-name{font-family:var(--font-display);font-size:1.12rem;font-weight:600;letter-spacing:-.01em}
