:root{--xh-ink:#1e293b;--xh-mut:#64748b;--xh-faint:#94a3b8;--xh-line:#e7ebf1;--xh-border:#d4dce6;--xh-bg:#f8fafc;--xh-card:#fff;--xh-accent:#2563eb;--xh-accent-soft:#eef4ff;--xh-accent-line:#c5d8fb;--xh-pass-bg:#e7f8ed;--xh-pass-fg:#15803d;--xh-pass-line:#86efac;--xh-warn-bg:#fef5e1;--xh-warn-fg:#92590e;--xh-warn-line:#fcd77f;--xh-err-bg:#fdeceb;--xh-err-fg:#b42318;--xh-err-line:#f6b9b3;--xh-shadow:0 1px 2px rgba(2,6,23,.05);--xh-shadow-lift:0 4px 14px rgba(2,6,23,.09);--xh-ease:cubic-bezier(.4,0,.2,1)}html.dark{--xh-ink:#e8edf4;--xh-mut:#97a3b6;--xh-faint:#6b7888;--xh-line:#2b3648;--xh-border:#38465c;--xh-bg:#0f172a;--xh-card:#1a2336;--xh-accent:#6ea8ff;--xh-accent-soft:#1d2c4a;--xh-accent-line:#2f4673;--xh-pass-bg:#16331f;--xh-pass-fg:#86efac;--xh-pass-line:#2f6b3f;--xh-warn-bg:#3a2c0c;--xh-warn-fg:#fcd77f;--xh-warn-line:#6b5118;--xh-err-bg:#3a1a16;--xh-err-fg:#fca5a0;--xh-err-line:#7a3631;--xh-shadow:0 1px 2px rgba(0,0,0,.3);--xh-shadow-lift:0 4px 14px rgba(0,0,0,.4)}.xh-statusbar{z-index:40;display:flex;align-items:center;gap:14px;padding:7px 14px;margin:18px 0 6px;background:var(--xh-card);border:1px solid var(--xh-border);border-radius:10px;box-shadow:var(--xh-shadow);font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}.xh-statusbar.is-pinned{margin:0;border-radius:0 0 10px 10px;box-shadow:0 4px 14px rgba(2,6,23,.12)}.xh-streak{flex-shrink:0;display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--xh-warn-fg);background:var(--xh-warn-bg);border:1px solid var(--xh-warn-line);padding:3px 9px;border-radius:999px;white-space:nowrap}.xh-xp{flex-shrink:0;position:relative;display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--xh-accent);background:var(--xh-accent-soft);border:1px solid var(--xh-accent-line);padding:3px 9px;border-radius:999px;white-space:nowrap}.xh-xp b{font-variant-numeric:tabular-nums}.xh-xp b.xh-bump{animation:xh-bump .6s var(--xh-ease)}.xh-xp-gain{position:absolute;left:50%;bottom:100%;transform:translate(-50%,0);font-size:11px;font-weight:800;color:var(--xh-pass-fg);pointer-events:none;white-space:nowrap;opacity:0}.xh-xp-gain.is-shown{animation:xh-xp-rise 1.1s var(--xh-ease)}@keyframes xh-xp-rise{0%{opacity:0;transform:translate(-50%,6px)}25%{opacity:1}100%{opacity:0;transform:translate(-50%,-18px)}}.xh-progress{flex:1;display:flex;align-items:center;gap:10px}.xh-progress-count{flex-shrink:0;font-size:12px;font-weight:600;color:var(--xh-mut);white-space:nowrap}.xh-progress-count b{color:var(--xh-ink);display:inline-block}.xh-progress-count b.xh-bump{animation:xh-bump .6s var(--xh-ease)}@keyframes xh-bump{30%{transform:scale(1.5);color:#16a34a}}.xh-progress-track{flex:1;height:7px;background:var(--xh-line);border-radius:999px;overflow:hidden}.xh-progress-fill{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,#34d399,#16a34a);transition:width .55s var(--xh-ease)}.xh-progress-fill.xh-surge{animation:xh-fill-surge .85s var(--xh-ease)}@keyframes xh-fill-surge{40%{box-shadow:0 0 9px 1px rgba(22,163,74,.65);filter:brightness(1.15)}}.xh-progress-pct{flex-shrink:0;font-size:12px;font-weight:600;color:var(--xh-mut);font-variant-numeric:tabular-nums;white-space:nowrap}section.exercise{background:var(--xh-card);border:1px solid var(--xh-border);border-radius:10px;margin:12px 0;box-shadow:var(--xh-shadow)}section.exercise:not(.xh-card){padding:6px 18px}.exercise.xh-card{padding:0;overflow:hidden;transition:box-shadow .2s var(--xh-ease),border-color .2s var(--xh-ease)}.exercise.xh-card.is-open{box-shadow:var(--xh-shadow-lift)}.exercise.xh-card:hover{border-color:#b9c4d4}.exercise.xh-card.is-solved{border-color:var(--xh-pass-line)}.exercise.xh-card>.exercise-title{margin:0 !important;width:100%;max-width:none;font-family:inherit}.xh-ex-head{display:flex;align-items:flex-start;gap:4px 9px;width:100%;padding:14px 16px 12px;background:0;border:0;text-align:left;cursor:pointer;color:inherit;line-height:23px;font-family:'Helvetica Neue',Roboto,Arial,sans-serif}.is-solved .xh-ex-head{background:linear-gradient(180deg,var(--xh-pass-bg),transparent 75%)}.xh-ex-head:hover{background:var(--xh-accent-soft)}.xh-ex-head:focus-visible{outline:2px solid var(--xh-accent);outline-offset:-2px}.xh-ex-num{flex-shrink:0;font-family:'JetBrains Mono',monospace;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--xh-faint)}.xh-ex-name{flex:1;min-width:0;font-family:'IBM Plex Serif',Georgia,'Times New Roman',serif;font-size:22px;font-weight:700;line-height:1.3;color:var(--xh-ink)}.xh-diff{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--xh-mut)}.xh-diff-dots{display:inline-flex;gap:3px}.xh-diff-dots i{width:6px;height:6px;border-radius:50%;background:var(--xh-accent)}.xh-diff-dots i.xh-dot-off{background:var(--xh-border)}.xh-time{flex-shrink:0;font-size:11.5px;font-weight:600;color:var(--xh-mut);white-space:nowrap}.xh-state{flex-shrink:0;width:21px;height:21px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:2px solid var(--xh-border);font-size:12px;font-weight:700;color:transparent}.is-solved .xh-state{background:#16a34a;border-color:#16a34a;color:#fff}.xh-chevron{flex-shrink:0;width:16px;text-align:center;color:var(--xh-faint);font-size:11px;transition:transform .2s var(--xh-ease)}.xh-card.is-open .xh-chevron{transform:rotate(180deg)}.xh-ex-body{overflow:hidden;padding:0}.xh-card:not(.is-open) .xh-ex-body{height:0}.xh-card.xh-anim .xh-ex-body{transition:height .3s var(--xh-ease)}.xh-ex-inner{padding:2px 16px 16px}.xh-card.xh-anim .xh-ex-inner{transition:opacity .24s var(--xh-ease)}.xh-card:not(.is-open) .xh-ex-inner{opacity:0}@media(prefers-reduced-motion:reduce){.xh-card.xh-anim .xh-ex-body,.xh-card.xh-anim .xh-ex-inner{transition:none}}.xh-zone+.xh-zone{margin-top:22px}.xh-zone>.webr-container{margin:0}.xh-zone-help{background:var(--xh-bg);border:1px solid var(--xh-line);border-radius:10px;padding:13px 15px}.exercise .exercise-task{margin:0 0 14px;font-size:16px;line-height:1.65}.exercise .exercise-expected{margin:0}.exercise .exercise-expected>p:first-child{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--xh-mut);margin:0 0 7px}.exercise .exercise-expected pre{width:max-content;max-width:100%;margin:0;background:var(--xh-bg);border:1px solid var(--xh-line);border-radius:7px;padding:11px 14px;font-size:12.5px;line-height:1.55;color:var(--xh-mut);overflow:auto}.exercise .exercise-expected pre code{background:0;padding:0;color:inherit}.xh-card .xh-difficulty-src{display:none}.xh-zone-help .xh-hints{margin:0}.xh-zone-help .xh-hints+details.exercise-solution{margin-top:10px}details.exercise-solution{margin:0;border:0;background:0;border-radius:0}details.exercise-solution>summary{display:flex;align-items:center;gap:8px;list-style:none;padding:3px 0;background:0;font-size:13px;font-weight:600;color:var(--xh-accent);cursor:pointer;user-select:none}details.exercise-solution>summary::-webkit-details-marker{display:none}details.exercise-solution>summary:hover{color:var(--xh-ink)}details.exercise-solution>summary:focus-visible{outline:2px solid var(--xh-accent);outline-offset:2px}details.exercise-solution>summary::before{content:'';width:7px;height:7px;flex-shrink:0;margin:0 1px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .2s var(--xh-ease)}details.exercise-solution[open]>summary::before{transform:rotate(45deg)}details.exercise-solution>.webr-container{margin-top:11px}details.exercise-solution>.exercise-explanation{margin:11px 0 0;font-size:13px;line-height:1.6;color:var(--xh-mut)}details.exercise-solution>.exercise-explanation strong{color:var(--xh-ink)}.xh-verdict{display:none;align-items:flex-start;gap:9px;margin:12px 0 0;padding:11px 13px;border:1px solid transparent;border-radius:8px;font-size:13.5px;font-weight:600;line-height:1.5}.xh-verdict.is-shown{display:flex}.xh-verdict.is-running{background:var(--xh-bg);border-color:var(--xh-line);color:var(--xh-mut)}.xh-verdict.is-pass{background:var(--xh-pass-bg);border-color:var(--xh-pass-line);color:var(--xh-pass-fg)}.xh-verdict.is-mismatch{background:var(--xh-warn-bg);border-color:var(--xh-warn-line);color:var(--xh-warn-fg)}.xh-verdict.is-error{background:var(--xh-err-bg);border-color:var(--xh-err-line);color:var(--xh-err-fg)}.xh-verdict.is-pass,.xh-verdict.is-mismatch,.xh-verdict.is-error{animation:xh-verdict-in .3s var(--xh-ease)}@keyframes xh-verdict-in{from{transform:translateY(5px);opacity:0}to{transform:translateY(0);opacity:1}}.xh-check-svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.xh-check-svg path{stroke-dasharray:28;stroke-dashoffset:28;animation:xh-draw .45s .05s ease forwards}@keyframes xh-draw{to{stroke-dashoffset:0}}.xh-milestone{position:fixed;bottom:26px;left:50%;z-index:60;transform:translateX(-50%) translateY(14px);background:linear-gradient(150deg,#0f1d3a,#1e3a6b);color:#fff;font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;font-size:13px;font-weight:600;padding:9px 18px;border-radius:999px;box-shadow:0 8px 24px rgba(2,6,23,.3);opacity:0;pointer-events:none;transition:opacity .3s var(--xh-ease),transform .3s var(--xh-ease)}.xh-milestone::before{content:'\2728\00a0'}.xh-milestone.is-shown{opacity:1;transform:translateX(-50%) translateY(0)}.xh-verdict-icon{flex-shrink:0;font-size:14px;line-height:1.4}.xh-verdict-body{flex:1}.xh-verdict-detail{display:block;margin-top:3px;font-weight:400;font-size:12.5px;opacity:.9}.xh-spinner{display:inline-block;width:11px;height:11px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:xh-spin .6s linear infinite}@keyframes xh-spin{to{transform:rotate(360deg)}}.xh-setup-btn{display:block;margin-top:8px;font-size:12px;font-weight:600;padding:5px 11px;border-radius:6px;border:1px solid currentColor;background:0;color:inherit;cursor:pointer}.xh-check-row{display:flex;align-items:center;gap:11px;flex-wrap:wrap;margin:12px 0 0}.xh-check-btn{font-size:13.5px;font-weight:700;color:#fff;background:var(--xh-accent);border:0;border-radius:7px;padding:9px 18px;cursor:pointer}.xh-check-btn:hover{opacity:.92;color:#fff}.xh-check-btn:focus-visible{outline:2px solid var(--xh-accent);outline-offset:2px}.xh-done-btn{font-size:13.5px;font-weight:700;color:var(--xh-accent);background:var(--xh-accent-soft);border:1px solid var(--xh-accent-line);border-radius:7px;padding:8px 17px;cursor:pointer}.xh-done-btn:hover{background:#e3ecfd}.xh-done-btn:disabled{color:var(--xh-pass-fg);background:var(--xh-pass-bg);border-color:var(--xh-pass-line);cursor:default}.xh-done-btn:focus-visible{outline:2px solid var(--xh-accent);outline-offset:2px}.xh-check-status{display:none;align-items:center;gap:5px;font-size:13px;font-weight:700;padding:5px 11px;border-radius:7px}.xh-check-status.is-shown{display:inline-flex}.xh-check-status.is-running{color:var(--xh-mut);background:var(--xh-bg)}.xh-check-status.is-pass{color:var(--xh-pass-fg);background:var(--xh-pass-bg)}.xh-check-status.is-mismatch{color:var(--xh-warn-fg);background:var(--xh-warn-bg)}.xh-check-status.is-error{color:var(--xh-err-fg);background:var(--xh-err-bg)}.xh-check-status .xh-check-svg{width:15px;height:15px}.xh-hints{margin:0}.xh-hintbar{display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap}.xh-hintbar-label{font-size:12px;font-weight:700;color:var(--xh-mut)}.xh-hint-link{font-size:12.5px;font-weight:600;color:var(--xh-accent);background:0;border:0;padding:4px 0;cursor:pointer}.xh-hint-link:hover{text-decoration:underline}.xh-hint-link:focus-visible{outline:2px solid var(--xh-accent);outline-offset:2px}.xh-hint-link[disabled]{color:var(--xh-faint);cursor:default;text-decoration:none}.xh-hint{margin-top:9px;padding:10px 13px;font-size:13px;line-height:1.55;color:var(--xh-ink);background:var(--xh-accent-soft);border-left:3px solid var(--xh-accent-line);border-radius:0 7px 7px 0}.xh-hint b{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--xh-accent);margin-bottom:3px}.xh-ex-foot{display:flex;justify-content:flex-end;margin-top:20px}.xh-next{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--xh-accent);background:var(--xh-accent-soft);border:1px solid var(--xh-accent-line);border-radius:7px;padding:8px 15px;cursor:pointer}.xh-next:hover{background:var(--xh-accent);color:#fff}.xh-next:focus-visible{outline:2px solid var(--xh-accent);outline-offset:2px}.xh-next-arrow{transition:transform .15s var(--xh-ease)}.xh-next:hover .xh-next-arrow{transform:translateX(3px)}.xh-badge{display:none;margin:26px 0 10px;padding:28px 24px;text-align:center;color:#fff;background:linear-gradient(155deg,#0f1d3a,#1e3a6b);border-radius:14px;box-shadow:var(--xh-shadow-lift)}.xh-badge.is-shown{display:block;animation:xh-rise .5s var(--xh-ease)}@keyframes xh-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.xh-badge-medal{font-size:46px;line-height:1}.xh-badge .xh-badge-title{margin:8px 0 4px;font-size:22px;font-weight:700;color:#fff}.xh-badge .xh-badge-desc{margin:0 0 16px;font-size:14px;color:#c3cfe3}.xh-badge-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.xh-badge .xh-badge-btn{font-size:13px;font-weight:700;padding:9px 18px;border-radius:8px;border:0;cursor:pointer;text-decoration:none}.xh-badge .xh-badge-btn-primary{background:#fbbf24;color:#1e293b}.xh-badge .xh-badge-btn-primary:hover{background:#f5b30a;color:#1e293b}.xh-badge .xh-badge-btn-ghost{background:rgba(255,255,255,.14);color:#fff}.xh-cta{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:22px 0 0;padding:18px 22px;background:var(--xh-card);border:1px solid var(--xh-border);border-radius:12px;box-shadow:var(--xh-shadow)}.xh-cta-text strong{display:block;font-size:15px;color:var(--xh-ink)}.xh-cta-text span{font-size:13px;color:var(--xh-mut)}.xh-cta-btn{flex-shrink:0;font-size:13.5px;font-weight:700;color:#fff;background:var(--xh-accent);border-radius:8px;padding:10px 18px;text-decoration:none;white-space:nowrap}.xh-cta-btn:hover{opacity:.9;color:#fff}@media(max-width:600px){.xh-statusbar{grid-template-columns:1fr}.xh-hint-link{padding:8px 0}.xh-cta{flex-direction:column;align-items:flex-start}}@media(prefers-reduced-motion:reduce){.xh-progress-fill,.xh-chevron,.xh-next-arrow,.xh-badge.is-shown,.xh-verdict.is-pass,.xh-verdict.is-mismatch,.xh-verdict.is-error,.xh-progress-fill.xh-surge,.xh-progress-count b.xh-bump,.xh-xp b.xh-bump,.xh-xp-gain.is-shown,.xh-milestone{transition:none;animation:none}.xh-check-svg path{animation:none;stroke-dashoffset:0}.xh-spinner{animation-duration:1.4s}}