:root{--bg:#f6f1e7;--surface:#fffdf8;--text:#24302a;--muted:#5d6a62;--accent:#1f7a5c;--accent-text:#fff;--border:#ddd5c4;--error:#b3352b;--mistake:#b85c00;--inaccuracy:#8a6d00;--bubble:#e4f2ea;--square-dark:#6f9c86;--square-light:#f0e9d6;--square-last:#ebbe468c;--square-selected:#1f7a5c8c;--square-target:#143c2d73;--square-peek:#4678c873;--square-peek-target:#2850aa99;--mark-hanging:#d3342a;--mark-attacked:#ec8a1e;--mark-free:#17a05d;--legend-hanging:#b3261e;--legend-attacked:#9a4f00;--legend-free:#127048;--mark-good:#17a05d99;--mark-bad:#d3342a99;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#17201c;--surface:#212c27;--text:#edf1ec;--muted:#a3b0a8;--accent:#45b78f;--accent-text:#0f1a15;--border:#38463f;--error:#ff8f84;--mistake:#ffb066;--inaccuracy:#e6cc5c;--bubble:#2d4238;--square-dark:#5b8571;--square-light:#d9d2bf;--legend-hanging:#ff8a80;--legend-attacked:#ffb066;--legend-free:#5fd39a}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);overscroll-behavior:none;margin:0}h1,h2,p{margin:0}h2{font-size:1.15rem}a{color:inherit}button,.button,input{font:inherit}button,.button{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--text);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;padding:8px 16px;text-decoration:none;display:inline-flex}button:disabled{opacity:.6;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.danger{border-color:var(--error);color:var(--error);font-weight:600}.link{color:var(--muted);background:0 0;border:0;padding:8px;text-decoration:underline}.muted{color:var(--muted);font-size:.92rem}.error{color:var(--error);font-size:.92rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:20px}.stack{flex-direction:column;gap:14px;display:flex}label{flex-direction:column;gap:6px;font-size:.95rem;display:flex}input:not([type=range]){border:1px solid var(--border);background:var(--bg);min-height:44px;color:var(--text);border-radius:10px;padding:8px 12px;font-size:16px}input[type=range]{accent-color:var(--accent);width:100%;height:32px}.auth{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:100%;padding:24px 16px;display:flex}.auth form{text-align:left;width:min(100%,380px);margin-top:16px}.logo{color:var(--accent);font-size:3.4rem;line-height:1}.topbar{justify-content:space-between;align-items:center;gap:8px;height:52px;padding:4px 16px;display:flex}.brand{align-items:center;gap:6px;min-width:44px;min-height:44px;font-weight:700;text-decoration:none;display:inline-flex}.game-tabs{align-items:center;gap:4px;min-width:0;display:flex}.game-tabs a:not(.brand){color:var(--muted);border-radius:10px;padding:8px 12px;font-weight:600;text-decoration:none}.game-tabs a[aria-current=page]{color:var(--text);background:var(--surface);box-shadow:inset 0 -3px 0 var(--accent)}.sk-card{background:#fffdf8;border:1px solid #b9b2a2;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:44px;height:62px;line-height:1;display:inline-flex}.sk-card b{font-size:1.15rem}.sk-card small{font-size:.55rem;font-weight:600}.sk-card.eichel{color:#7a4a1c}.sk-card.gras{color:#2f7a2a}.sk-card.herz{color:#c0271e}.sk-card.schellen{color:#8a5f00}.sk-table{grid-template-columns:1fr 1.4fr 1fr;grid-template-areas:"left top right""left trick right""bottom bottom bottom";align-items:center;gap:10px;display:grid}.sk-seat{border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-direction:column;gap:4px;min-width:0;padding:8px 10px;display:flex}.sk-seat.current{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);animation:1.2s ease-in-out infinite pulse}.sk-seat.left{grid-area:left}.sk-seat.top{grid-area:top}.sk-seat.right{grid-area:right}.sk-seat.bottom{grid-area:bottom}.sk-trick{color:#f5f2e6;background:#1f6b4f;border-radius:18px;grid-area:trick;grid-template-areas:".top.""left.right"".bottom.";place-items:center;min-height:170px;padding:8px;display:grid;position:relative}.sk-trick>.muted{color:#cfe3d8;text-align:center;grid-area:1/1/4/4}.sk-played{animation:.3s ease-out both slide-in}.sk-played.bottom{grid-area:bottom}.sk-played.left{grid-area:left}.sk-played.top{grid-area:top}.sk-played.right{grid-area:right}.sk-hand{flex-wrap:wrap;gap:4px;display:flex}.sk-hand.small .sk-card{width:32px;height:46px}.sk-hand.small .sk-card b{font-size:.9rem}.sk-hand-card{opacity:.55;background:0 0;border:0;border-radius:8px;min-height:0;padding:0}.sk-hand-card.playable{opacity:1}.sk-hand-card.playable:not(:disabled):hover .sk-card,.sk-hand-card.playable:not(:disabled):focus-visible .sk-card{transform:translateY(-6px)}.sk-hand-card .sk-card{transition:transform .15s}.sk-hand-card.trump .sk-card{box-shadow:inset 0 -4px #d9a400}.sk-hand-card.tip .sk-card{outline:3px solid var(--accent)}@media (width<=640px){.sk-table{grid-template-columns:1fr 1fr;grid-template-areas:"left right""top top""trick trick""bottom bottom"}}.card-groups{flex-wrap:wrap;gap:10px;display:flex}.card-groups .group{flex-direction:column;gap:4px;display:flex}.card-groups .felt-group{color:#f5f2e6;background:#1f6b4f;border-radius:12px;padding:6px 8px}.card-row{gap:4px;display:flex}.prompt{font-weight:600}@media (width<=520px){.brand{font-size:0}.brand span{font-size:1.3rem}}.brand span{color:var(--accent);font-size:1.3rem}.user{align-items:center;gap:4px;min-width:0;display:flex}.username{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.home{flex-direction:column;gap:16px;max-width:560px;margin:0 auto;padding:8px 16px 32px;display:flex}.segmented{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.segmented .selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);font-weight:600}.row{text-align:left;justify-content:space-between;gap:12px;width:100%}.game-loading{text-align:center;padding:32px 16px}.game{grid-template-columns:minmax(0,min(100%,100dvh - 240px));justify-content:center;gap:16px;padding:0 16px 16px;display:grid}.board-wrap{aspect-ratio:1;touch-action:none;border-radius:10px;align-self:start;width:100%;position:relative;overflow:hidden}.promotion{z-index:20;background:#0f1a15b3;flex-direction:column;justify-content:center;align-items:stretch;gap:8px;padding:15%;display:flex;position:absolute;inset:0}.promotion .link{color:#fff}.opponent{align-items:center;gap:12px;display:flex}.avatar{background:var(--accent);width:52px;height:52px;color:var(--accent-text);border-radius:50%;flex:none;place-items:center;font-size:1.9rem;display:grid}.avatar.thinking{animation:1s ease-in-out infinite bob}@keyframes bob{50%{transform:translateY(-4px)}}@media (prefers-reduced-motion:reduce){.avatar.thinking{animation:none}}.bubble{background:var(--bubble);border-radius:14px;padding:10px 14px;position:relative}.bubble:before{content:"";background:var(--bubble);width:14px;height:14px;position:absolute;top:50%;left:-7px;transform:translateY(-50%)rotate(45deg)}.result{font-size:1.05rem;font-weight:700}.moves{font-variant-numeric:tabular-nums;max-height:120px;margin:0;padding:0 0 0 2.2em;overflow-y:auto}.moves li span{min-width:4.5em;display:inline-block}.actions{flex-wrap:wrap;gap:8px;display:flex}.actions>*{flex:auto}.summary{text-align:center;grid-template-columns:repeat(5,1fr);gap:4px;margin:0;font-size:.72rem;display:grid}.summary dt{color:var(--muted)}.summary dd{margin:0;font-size:1.1rem;font-weight:700}.summary .blunder dd,.move.blunder{color:var(--error)}.summary .mistake dd,.move.mistake{color:var(--mistake)}.summary .inaccuracy dd,.move.inaccuracy{color:var(--inaccuracy)}.moves .move{background:0 0;border:0;justify-content:flex-start;min-width:4.5em;min-height:36px;padding:2px 6px}.moves .move.blunder,.moves .move.mistake,.moves .move.inaccuracy{font-weight:700}.moves .move[aria-current=true]{background:var(--bubble);border-radius:8px}.review-nav{justify-content:space-between;align-items:center;gap:8px;display:flex}.review-nav button{min-width:64px}.line{flex-direction:column;gap:4px;margin:0;padding:0 0 0 1.6em;display:flex}.line button{text-align:left;justify-content:flex-start;width:100%;min-height:36px;padding:2px 10px}.line button[aria-current=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);font-weight:600}.line .own{font-weight:600}.motif{margin:0;font-size:.92rem}.motif strong{display:block}.side h3{margin:0;font-size:1rem}.progress{background:var(--border);border-radius:5px;height:10px;overflow:hidden}.progress div{background:var(--accent);height:100%}.lesson{text-align:left;justify-content:space-between;gap:12px}.lesson span{flex-direction:column;gap:2px;font-weight:500;display:flex}.lesson small{font-weight:400}.lesson>small{flex:none}.lesson.current{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.check{flex-direction:row;align-items:center;gap:10px}.check input{width:22px;height:22px;min-height:0;accent-color:var(--accent);flex:none}.kinds{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.kinds button{min-height:40px;padding:4px 6px;font-size:.85rem}.kinds .selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);font-weight:600}.warning{border:2px solid var(--error);border-radius:12px;padding:12px}.legend{font-size:.82rem}.better{color:var(--accent);font-weight:600}.legend .hanging{color:var(--legend-hanging);font-weight:700}.legend .attacked{color:var(--legend-attacked);font-weight:700}.legend .free{color:var(--legend-free);font-weight:700}.choices{flex-direction:column;gap:6px;display:flex}.choices .right{border-color:var(--mark-free);box-shadow:inset 0 0 0 1px var(--mark-free);font-weight:600}.choices .wrong{border-color:var(--mark-hanging);box-shadow:inset 0 0 0 1px var(--mark-hanging)}.poker{gap:16px;max-width:1180px;margin:0 auto;padding:0 16px 16px;display:grid}.table{flex-direction:column;gap:10px;min-width:0;display:flex}.seats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;display:grid}.seat{border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}.seat.current{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.seat.winner{border-color:var(--mark-free);box-shadow:inset 0 0 0 2px var(--mark-free)}.seat.folded{opacity:.55}.seat-head{justify-content:space-between;align-items:center;display:flex}.button-chip{background:var(--text);width:22px;height:22px;color:var(--bg);border-radius:50%;place-items:center;font-size:.72rem;font-weight:700;display:grid}.seat-cards{align-items:center;gap:4px;min-height:58px;display:flex}.seat-info{font-size:.8rem}.seat-action{min-height:1.2em;font-size:.85rem;font-weight:600}.felt{color:#f5f2e6;background:#1f6b4f;border-radius:18px;flex-direction:column;align-items:center;gap:10px;padding:18px 12px;display:flex}.felt .muted{color:#cfe3d8}.board{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;min-height:64px;display:flex}.pot{text-align:center;font-weight:600}.card-face{color:#1c1c1c;background:#fffdf8;border:1px solid #b9b2a2;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;width:44px;height:58px;font-size:1.1rem;font-weight:700;line-height:1.05;display:inline-flex}.card-face small{font-size:1.15rem}.card-face.red{color:#c0271e}.card-face.back{background:repeating-linear-gradient(45deg,#2f5f8f,#2f5f8f 5px,#4a7cad 5px 10px)}.poker-actions{grid-template-columns:repeat(2,1fr);gap:6px;display:grid}.hint{background:var(--bubble);border-radius:12px;padding:10px 12px;font-size:.92rem}.poker-log{color:var(--muted);margin:0;padding:0;font-size:.82rem;list-style:none}.decisions{flex-direction:column;gap:10px;margin:0;padding:0;font-size:.9rem;list-style:none;display:flex}.decisions li{border-left:4px solid var(--border);padding-left:8px}.decisions .blunder{border-color:var(--error)}.decisions .mistake{border-color:var(--mistake)}.decisions .inaccuracy{border-color:var(--inaccuracy)}.decisions .best{border-color:var(--mark-free)}.hole{vertical-align:middle;gap:3px;display:inline-flex}.hole .card-face{width:30px;height:40px;font-size:.8rem}.hole .card-face small{font-size:.8rem}.dealt,.flipped{animation:.35s ease-out both deal;display:inline-flex}.flipped{animation-name:flip;animation-duration:.45s}.seat-action{animation:.3s ease-out pop}.bet-chip{color:#1c1c1c;background:#d9a400;border-radius:10px;margin-left:6px;padding:0 7px;font-weight:700;animation:.35s ease-out slide-in;display:inline-block}.pot{animation:.35s ease-out pop}.seat.current{animation:1.2s ease-in-out infinite pulse}.seat.winner{animation:.8s ease-out 2 glow}@keyframes deal{0%{opacity:0;transform:translateY(-24px)rotate(-8deg)scale(.85)}to{opacity:1;transform:none}}@keyframes flip{0%{opacity:0;transform:rotateY(90deg)}to{opacity:1;transform:none}}@keyframes pop{0%{opacity:.4;transform:scale(.85)}60%{opacity:1;transform:scale(1.06)}to{transform:none}}@keyframes slide-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes pulse{50%{box-shadow:inset 0 0 0 1px var(--accent), 0 0 0 4px #1f7a5c40}}@keyframes glow{50%{box-shadow:inset 0 0 0 2px var(--mark-free), 0 0 18px #17a05d99}}@media (prefers-reduced-motion:reduce){.dealt,.flipped,.seat-action,.bet-chip,.pot,.seat.current,.seat.winner{animation:none}}@media (width>=900px){.poker{grid-template-columns:minmax(0,1fr) 340px;align-items:start}}.tiles{grid-template-columns:1fr 1fr;gap:8px;display:grid}.elo{text-align:center;grid-template-columns:1fr 1fr;gap:8px;display:grid}.elo strong{color:var(--accent);font-size:1.8rem;display:block}.stats{border-collapse:collapse;width:100%;font-size:.92rem}.stats th,.stats td{text-align:right;border-bottom:1px solid var(--border);padding:6px 4px}.stats th:first-child,.stats td:first-child{text-align:left}.stats th{color:var(--muted);font-weight:500}.stats .weakest td{color:var(--error);font-weight:700}@media (aspect-ratio>=1){.game{grid-template-columns:minmax(0,calc(100dvh - 68px)) minmax(240px,340px);align-items:start}.moves{min-height:48px;max-height:calc(100dvh - 440px)}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.cube-page{grid-template-columns:minmax(0,1fr);gap:16px;max-width:1100px;margin:0 auto;padding:0 16px 24px;display:grid}@media (width>=900px){.cube-page{grid-template-columns:minmax(0,1fr) 360px;align-items:start}}.cube-stage{min-width:0}.cube-view{aspect-ratio:1;background:radial-gradient(circle at 50% 40%, var(--surface), var(--bg));border:1px solid var(--border);border-radius:18px;width:100%;min-width:220px;max-width:min(560px,100dvh - 200px);margin:0 auto}.cube-view.small{max-width:260px}.cube-view canvas{touch-action:none;cursor:grab;border-radius:18px;width:100%;height:100%;display:block}.cube-view canvas:active{cursor:grabbing}.cube-net{width:100%;height:100%;padding:12px;display:block}.move-buttons{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:6px;display:grid}.move-button{min-height:44px;padding:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700}.move-button.toggle.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.notation-input{flex-wrap:wrap;gap:8px;display:flex}.notation-input input{flex:180px;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.notation-input .error{flex-basis:100%}.alg-tokens{flex-wrap:wrap;gap:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.05rem;font-weight:700;display:flex}.alg-tokens span{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:3px 7px;transition:background .15s,color .15s}.alg-tokens .done{color:var(--muted);background:0 0;border-style:dashed}.alg-tokens .next{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.player-buttons{grid-template-columns:52px 52px 1fr 52px 52px;gap:6px;display:grid}.player-buttons button{padding:4px}.timer{-webkit-user-select:none;user-select:none;touch-action:none;border-width:2px;flex-direction:column;gap:6px;width:100%;min-height:150px}.timer .time{font-variant-numeric:tabular-nums;font-size:clamp(2.6rem,9vw,3.8rem);font-weight:700;line-height:1}.timer small{color:var(--muted)}.timer.holding .time{color:var(--error)}.timer.ready .time{color:var(--mark-free)}.timer.running{border-color:var(--accent)}.timer.inspecting .time{color:var(--mistake)}.scramble strong{color:var(--text);word-spacing:.2em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.cube-stats{grid-template-columns:repeat(4,1fr)}.cube-stats div{min-width:0}.solves{font-variant-numeric:tabular-nums;flex-direction:column;gap:4px;margin:0;padding:0 0 0 2.4em;display:flex}.solves li{display:list-item}.solves li>span{vertical-align:middle;display:inline-flex}.solve-time{min-width:7.5em;font-weight:600}.solve-actions{gap:4px}.solve-actions button{min-width:44px;min-height:36px;padding:2px 8px;font-size:.85rem}.solve-actions .selected{border-color:var(--error);color:var(--error);font-weight:700}.set-picker{flex-direction:column;gap:8px;display:flex}.set-group{flex-direction:column;gap:4px;display:flex}.set-links{flex-wrap:wrap;gap:6px;display:flex}.set-links .button{min-height:38px;padding:4px 10px;font-size:.9rem}.set-links .button[aria-current=page]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);font-weight:700}.case-group h3{color:var(--muted);margin:4px 0 0;font-size:.95rem}.case-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.case-item{border:1px solid var(--border);background:var(--surface);border-radius:12px;align-items:center;gap:10px;min-height:44px;padding:6px 10px;text-decoration:none;display:flex}.case-item:hover{border-color:var(--accent)}.case-item[aria-current=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.case-item span{flex-direction:column;gap:2px;min-width:0;display:flex}.case-item code{color:var(--muted);overflow-wrap:anywhere;font-size:.82rem}.last-layer{flex:none;width:68px;height:68px}.trainer-case{align-items:center;gap:12px;display:flex}.trainer-case .last-layer{width:96px;height:96px}.trainer-case>div{flex-direction:column;gap:4px;min-width:0;display:flex}.choices code{overflow-wrap:anywhere;text-align:left;font-size:.9rem}.methods{gap:4px 0;margin:0;display:grid}.methods dt{margin-top:6px;font-weight:700}.methods dd{color:var(--muted);margin:0;font-size:.95rem}.notation-help summary{cursor:pointer;min-height:32px;font-weight:600}.notation-help ul{flex-direction:column;gap:4px;margin:8px 0 0;padding-left:1.2em;font-size:.92rem;display:flex}@media (prefers-reduced-motion:reduce){.alg-tokens span{transition:none}}.real-cube{padding:12px 16px}.real-cube summary{cursor:pointer;align-items:center;min-height:32px;font-weight:600;display:flex}.real-cube p{margin-top:8px}@media (width<=700px){.topbar{flex-wrap:wrap;row-gap:0;height:auto;padding:4px 12px}.topbar .user{order:1;margin-left:auto}.topbar .game-tabs{scrollbar-width:none;flex-basis:100%;order:2;padding-bottom:4px;overflow-x:auto}.game-tabs a{flex:none}.game-tabs a:not(.brand){padding:8px 10px}}.move-button.toggle{grid-column:span 2;font-family:inherit;font-weight:600}@media (width>=640px) and (width<=899px) and (aspect-ratio>=1){.cube-page{grid-template-columns:minmax(0,1fr) minmax(260px,340px);align-items:start}}@media (aspect-ratio>=1){.cube-view{max-width:min(560px,100dvh - 120px)}}:root{--shadow:0 1px 2px #2823140f, 0 6px 20px #28231412;--shadow-hover:0 2px 4px #28231414, 0 10px 28px #2823141f;--accent-2:#2a9a73;--gold:#d9a400}@media (prefers-color-scheme:dark){:root{--shadow:0 1px 2px #0000004d, 0 6px 20px #00000040;--shadow-hover:0 2px 4px #00000059, 0 10px 28px #00000059;--accent-2:#5fcaa3}}.card{box-shadow:var(--shadow)}.topbar{z-index:40;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid color-mix(in srgb, var(--border) 60%, transparent);margin-bottom:12px;position:sticky;top:0}button,.button{transition:transform .12s,box-shadow .18s,border-color .18s,background-color .18s}button:not(:disabled):hover,.button:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--border));box-shadow:var(--shadow)}button:not(:disabled):active,.button:active{transform:scale(.97)}.primary{background:linear-gradient(180deg, var(--accent-2), var(--accent));box-shadow:0 2px 8px color-mix(in srgb, var(--accent) 35%, transparent)}.primary:not(:disabled):hover{box-shadow:0 4px 14px color-mix(in srgb, var(--accent) 45%, transparent)}.tiles .button{border-radius:16px;min-height:64px;font-weight:600}.lesson{transition:transform .15s,box-shadow .18s}.lesson:hover{box-shadow:var(--shadow-hover);transform:translateY(-1px)}.case-item{transition:transform .15s,box-shadow .18s,border-color .18s}.case-item:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.progress div{background:linear-gradient(90deg, var(--accent), var(--accent-2));transition:width .6s cubic-bezier(.2,.8,.2,1)}main{animation:.28s ease-out both page-in}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.xp-chip{border-radius:12px;align-items:center;gap:6px;min-height:44px;padding:0 8px;text-decoration:none;display:inline-flex;position:relative}.xp-chip:hover{background:var(--surface)}.goal-ring{--p:0%;background:conic-gradient(var(--accent) var(--p), var(--border) 0);border-radius:50%;flex:none;place-items:center;width:32px;height:32px;display:grid}.goal-ring>span{background:var(--bg);width:24px;height:24px;color:var(--text);border-radius:50%;place-items:center;font-size:.8rem;font-weight:800;display:grid}.goal-ring.large{width:64px;height:64px}.goal-ring.large>span{background:var(--surface);width:50px;height:50px;font-size:.9rem}.streak{filter:grayscale();opacity:.7;font-size:.9rem;font-weight:700}.streak.on{filter:none;opacity:1}.xp-toast{white-space:nowrap;background:linear-gradient(180deg, #f2c94c, var(--gold));color:#2a1f00;pointer-events:none;border-radius:999px;margin-top:4px;padding:6px 12px;font-weight:800;animation:1.6s ease-out both xp-pop;position:absolute;top:100%;right:0;box-shadow:0 6px 18px #d9a40066}.xp-toast.big{padding:10px 16px;font-size:1.1rem;animation-duration:2.6s}@keyframes xp-pop{0%{opacity:0;transform:translateY(-8px)scale(.8)}12%{opacity:1;transform:none}80%{opacity:1}to{opacity:0;transform:translateY(6px)}}.hero{background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 16%, var(--surface)), var(--surface))}.hero-top{align-items:center;gap:14px;display:flex}.level-badge{color:#2a1f00;background:linear-gradient(145deg, #f7d774, var(--gold));border-radius:18px;flex:none;place-items:center;width:64px;height:64px;font-size:1.8rem;font-weight:800;display:grid;transform:rotate(-4deg);box-shadow:0 6px 16px #d9a40059}.xp-bar{border-radius:7px;height:14px}.stat-tiles{grid-template-columns:1fr 1fr}.stat{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:16px;display:flex}.stat strong{font-size:1.5rem}.stat-icon{height:64px;font-size:2.2rem;line-height:64px}.heatmap{gap:3px;padding-bottom:4px;display:flex;overflow-x:auto}.heat-days,.heat-week{grid-template-rows:repeat(7,14px);gap:3px;display:grid}.heat-days small{color:var(--muted);padding-right:4px;font-size:.62rem;line-height:14px}.heat{background:var(--border);border-radius:3px;width:14px;height:14px}.heat.empty{background:0 0}.heat.h1{background:color-mix(in srgb, var(--accent) 30%, var(--border))}.heat.h2{background:color-mix(in srgb, var(--accent) 55%, var(--border))}.heat.h3{background:var(--accent)}.heat.h4{background:var(--gold)}.badges{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.badge{text-align:center;border:1px solid var(--border);background:var(--bg);border-radius:14px;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;display:flex}.badge .badge-icon{filter:grayscale();opacity:.35;font-size:1.8rem}.badge strong{font-size:.9rem}.badge small{font-size:.78rem}.badge:not(.on) strong{color:var(--muted)}.badge.on{border-color:color-mix(in srgb, var(--gold) 60%, var(--border));background:color-mix(in srgb, var(--gold) 10%, var(--surface));box-shadow:var(--shadow)}.badge.on .badge-icon{filter:none;opacity:1}@media (width<=520px){.xp-chip{padding:0 4px}}@media (prefers-reduced-motion:reduce){main,.xp-toast,.lesson,.case-item{transition:none;animation:none}.progress div{transition:none}button:not(:disabled):active,.button:active{transform:none}}.streak,.user .link{white-space:nowrap}.tiles .button{text-align:center}@media (width<=520px){.username{display:none}}.help-open{color:var(--accent);border-style:dashed;font-weight:600}.help{border-color:color-mix(in srgb, var(--accent) 40%, var(--border))}.help-head{justify-content:space-between;align-items:center;display:flex}.help-head h3{margin:0}.help-quick{flex-direction:column;gap:6px;display:flex}.help-quick button{text-align:left;justify-content:flex-start;font-size:.92rem}.help-log{flex-direction:column;gap:10px;max-height:340px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.help-q{font-size:.92rem;font-weight:600}.help-a{background:var(--bubble);white-space:pre-wrap;border-radius:12px;margin-top:4px;padding:10px 12px;font-size:.95rem}.help-a.thinking{color:var(--muted);animation:1.2s ease-in-out infinite pulse-text}@keyframes pulse-text{50%{opacity:.5}}@media (prefers-reduced-motion:reduce){.help-a.thinking{animation:none}}.steps tr.pending td{color:var(--muted)}.tournament-bar{background:color-mix(in srgb, var(--gold) 14%, var(--surface));border:1px solid color-mix(in srgb, var(--gold) 40%, var(--border));border-radius:12px;padding:8px 12px;font-size:.9rem}.ranges{padding:12px 16px}.ranges summary{cursor:pointer;align-items:center;min-height:32px;font-weight:600;display:flex}.range-seat{gap:6px;margin-top:10px}.range-grid{grid-template-columns:repeat(13,1fr);gap:1px;max-width:320px;font-size:.55rem;font-weight:600;display:grid}.range-grid span{aspect-ratio:1;background:var(--border);color:var(--muted);border-radius:2px;place-items:center;display:grid}.range-grid span.in{background:var(--accent);color:var(--accent-text)}select{font:inherit;border:1px solid var(--border);background:var(--bg);min-height:44px;color:var(--text);border-radius:10px;padding:8px 12px}
