@charset "UTF-8";.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}:root{--bg-0: #0A0A0C;--bg-1: #0E0E12;--bg-2: #141418;--surf-1: #16161C;--surf-2: #1C1C24;--surf-3: #23232C;--line: #2A2A33;--line-soft: #20202733;--red: #FF2A1F;--red-2: #E2231A;--red-deep: #B0140C;--red-glow: rgba(255, 42, 31, .55);--red-glow-soft: rgba(255, 42, 31, .18);--red-tint: rgba(255, 42, 31, .08);--tx-0: #F4F4F6;--tx-1: #B9B9C2;--tx-2: #7E7E89;--tx-3: #55555F;--bronze-1: #F0B894;--bronze-2: #C97D45;--bronze-3: #7A4421;--silver-1: #F5F7FA;--silver-2: #B7C0CC;--silver-3: #6E7886;--gold-1: #FCE8A6;--gold-2: #E7B23C;--gold-3: #97701A;--ok: #34D17F;--ok-dim: rgba(52, 209, 127, .14);--warn: #F2B441;--warn-dim: rgba(242, 180, 65, .14);--pending: #5B8DEF;--pending-dim: rgba(91, 141, 239, .14);--radius-s: 8px;--radius: 14px;--radius-l: 22px;--font-display: "Space Grotesk", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--shadow-card: 0 1px 0 rgba(255,255,255,.03) inset, 0 18px 40px -22px rgba(0,0,0,.9);--shadow-glow: 0 0 0 1px rgba(255,42,31,.35), 0 0 28px -4px var(--red-glow);--tx-strong: #fff;--on-accent: #fff;--bg-inset: #101015;--bg-inset-2: #1a1a20;--line-hover: #3a3a45;--avatar-1: #2a2a33;--avatar-2: #16161c;--topbar-bg: rgba(10, 10, 12, .72);--hero-1: #fff;--hero-2: #C9C9D2;--fx-opacity: 1}[data-theme=light]{--bg-0: #F6F6F8;--bg-1: #FFFFFF;--bg-2: #FFFFFF;--surf-1: #FFFFFF;--surf-2: #F0F0F3;--surf-3: #E7E7EC;--line: #E2E2E8;--line-soft: #d8d8e033;--tx-0: #16161C;--tx-1: #43434E;--tx-2: #6E6E7A;--tx-3: #9A9AA6;--tx-strong: #0A0A0C;--bg-inset: #EFEFF3;--bg-inset-2: #E9E9EF;--line-hover: #C9C9D4;--avatar-1: #E4E4EA;--avatar-2: #F7F7FA;--topbar-bg: rgba(255, 255, 255, .8);--hero-1: #16161C;--hero-2: #4A4A55;--red-glow: rgba(255, 42, 31, .3);--red-glow-soft: rgba(255, 42, 31, .12);--shadow-card: 0 1px 0 rgba(255, 255, 255, .6) inset, 0 14px 30px -22px rgba(20, 20, 30, .35);--fx-opacity: .45}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg-0);color:var(--tx-0);font-family:var(--font-display);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"ss01" 1}#root{min-height:100vh}.kicker{font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:var(--tx-2);font-weight:600;font-family:var(--font-mono)}.kicker--red{color:var(--red)}h1,h2,h3,h4{font-weight:700;letter-spacing:-.02em;margin:0;line-height:1.02}.display{font-weight:700;text-transform:uppercase;letter-spacing:-.02em;line-height:.92}.mono{font-family:var(--font-mono)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:20px;border:3px solid var(--bg-0)}::-webkit-scrollbar-thumb:hover{background:var(--line-hover)}.btn{font-family:var(--font-display);font-weight:600;font-size:14px;letter-spacing:.01em;border:none;border-radius:10px;padding:12px 20px;cursor:pointer;display:inline-flex;align-items:center;gap:9px;transition:transform .15s ease,box-shadow .25s ease,background .2s ease,border-color .2s ease;text-decoration:none;white-space:nowrap;user-select:none}.btn:active{transform:translateY(1px)}.btn--primary{background:linear-gradient(180deg,var(--red) 0%,var(--red-2) 100%);color:#fff;box-shadow:0 0 0 1px #ff5a5059 inset,0 8px 22px -8px var(--red-glow)}.btn--primary:hover{box-shadow:0 0 0 1px #ff786e80 inset,0 10px 30px -6px var(--red-glow);filter:brightness(1.06)}.btn--ghost{background:var(--surf-2);color:var(--tx-0);box-shadow:0 0 0 1px var(--line) inset}.btn--ghost:hover{background:var(--surf-3);box-shadow:0 0 0 1px var(--line-hover) inset}.btn--outline{background:transparent;color:var(--tx-0);box-shadow:0 0 0 1px var(--line) inset}.btn--outline:hover{box-shadow:0 0 0 1px var(--red) inset;color:var(--tx-strong)}.btn--lg{padding:15px 26px;font-size:15px;border-radius:12px}.btn--sm{padding:9px 14px;font-size:13px}.btn--block{width:100%;justify-content:center}.btn:disabled{opacity:.45;cursor:not-allowed}.card{background:linear-gradient(180deg,var(--surf-1) 0%,var(--bg-2) 100%);border-radius:var(--radius);box-shadow:0 0 0 1px var(--line) inset,var(--shadow-card);position:relative}.card--hover{transition:transform .25s ease,box-shadow .35s ease}.card--hover:hover{transform:translateY(-4px);box-shadow:0 0 0 1px #ff2a1f73 inset,0 0 34px -6px var(--red-glow),0 24px 48px -26px #000}.skill{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--tx-1);padding:2px 0}.skill__tick{flex:0 0 auto;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:var(--red-tint);box-shadow:0 0 0 1px #ff2a1f66 inset,0 0 10px -2px var(--red-glow)}.skill__tick svg{width:10px;height:10px}.skill--locked{color:var(--tx-3)}.skill--locked .skill__tick{background:var(--bg-inset-2);box-shadow:0 0 0 1px var(--line) inset}.bar{height:8px;border-radius:20px;background:var(--bg-inset-2);overflow:hidden;box-shadow:0 0 0 1px var(--line) inset}.bar__fill{height:100%;border-radius:20px;background:linear-gradient(90deg,var(--red-2),var(--red));box-shadow:0 0 14px -1px var(--red-glow);transition:width .8s cubic-bezier(.22,1,.36,1)}.pill{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;padding:5px 10px;border-radius:20px;color:var(--tx-1);box-shadow:0 0 0 1px var(--line) inset;background:var(--bg-inset-2)}.pill--red{color:var(--red);box-shadow:0 0 0 1px #ff2a1f66 inset;background:var(--red-tint)}.pill--ok{color:var(--ok);background:var(--ok-dim);box-shadow:0 0 0 1px #34d17f66 inset}.pill--warn{color:var(--warn);background:var(--warn-dim);box-shadow:0 0 0 1px #f2b44166 inset}.pill--pending{color:var(--pending);background:var(--pending-dim);box-shadow:0 0 0 1px #5b8def66 inset}.dot{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}.tier-bronze{--tier-1: var(--bronze-1);--tier-2: var(--bronze-2);--tier-3: var(--bronze-3)}.tier-silver{--tier-1: var(--silver-1);--tier-2: var(--silver-2);--tier-3: var(--silver-3)}.tier-gold{--tier-1: var(--gold-1);--tier-2: var(--gold-2);--tier-3: var(--gold-3)}.medal{position:relative;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 28%,var(--tier-1) 0%,var(--tier-2) 42%,var(--tier-3) 100%);box-shadow:0 0 0 2px #00000059,0 0 0 5px color-mix(in srgb,var(--tier-2) 60%,transparent),0 0 0 6px #0006,inset 0 2px 6px #ffffff8c,inset 0 -8px 18px #00000073,0 0 30px -4px color-mix(in srgb,var(--tier-1) 70%,transparent)}.medal:before{content:"";position:absolute;inset:14%;border-radius:50%;background:conic-gradient(from 220deg,transparent 0deg,rgba(255,255,255,.35) 60deg,transparent 130deg,rgba(0,0,0,.25) 220deg,transparent 300deg);mix-blend-mode:overlay}.medal:after{content:"";position:absolute;inset:11%;border-radius:50%;box-shadow:inset 0 0 0 1.5px #00000040,inset 0 0 0 3px color-mix(in srgb,var(--tier-1) 50%,transparent)}.medal__core{position:relative;z-index:2;font-family:var(--font-display);font-weight:700;text-transform:uppercase;color:#281608c7;text-shadow:0 1px 0 rgba(255,255,255,.4);display:grid;place-items:center;gap:1px;letter-spacing:.04em}.medal--locked{background:radial-gradient(circle at 35% 28%,#2a2a31,#1b1b21 60%,#131318);box-shadow:0 0 0 2px #0006,inset 0 2px 6px #ffffff0d,inset 0 -8px 18px #00000080}.medal--locked:before,.medal--locked:after{opacity:.25}.medal--locked .medal__core{color:var(--tx-3);text-shadow:none}.code{font-family:var(--font-mono);font-size:13px;line-height:1.65;background:#0c0c10;border-radius:var(--radius-s);box-shadow:0 0 0 1px var(--line) inset;overflow:hidden;margin:22px 0}.code__bar{display:flex;align-items:center;gap:8px;padding:9px 14px;background:#111116;box-shadow:0 1px 0 var(--line)}.code__bar .lt{width:10px;height:10px;border-radius:50%}.code__name{margin-left:8px;font-size:11px;color:var(--tx-2);letter-spacing:.04em}.code pre{margin:0;padding:16px 18px;overflow-x:auto}.code .c-key{color:#ff6a5e}.code .c-str{color:#7fd18f}.code .c-com{color:var(--tx-3);font-style:italic}.code .c-fn{color:#6fa8ff}.code .c-num{color:#e7b23c}.code .c-var{color:#e0e0e8}.theme-switching *,.theme-switching *:before,.theme-switching *:after{transition:none!important}.input,.textarea{width:100%;background:var(--bg-inset);border:none;box-shadow:0 0 0 1px var(--line) inset;border-radius:10px;padding:13px 15px;color:var(--tx-0);font-family:var(--font-display);font-size:14px;transition:box-shadow .2s ease}.input::placeholder,.textarea::placeholder{color:var(--tx-3)}.input:focus,.textarea:focus{outline:none;box-shadow:0 0 0 1.5px var(--red) inset,0 0 18px -6px var(--red-glow)}.textarea{resize:vertical;min-height:120px;line-height:1.6}.label{font-size:12px;color:var(--tx-2);letter-spacing:.08em;text-transform:uppercase;font-family:var(--font-mono);margin-bottom:9px;display:block}.divider{height:1px;background:var(--line);border:none;margin:0}.lock-badge{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:8px;background:var(--bg-inset-2);box-shadow:0 0 0 1px var(--line) inset;color:var(--tx-2)}.fade-in,.rise{opacity:1}.layout-shell{position:relative;z-index:1;min-height:100vh;display:grid;grid-template-columns:264px 1fr}.layout-course{display:grid;grid-template-columns:300px 1fr;gap:30px;align-items:start}.layout-submission{display:grid;grid-template-columns:1.4fr 1fr;gap:30px;align-items:start}.layout-trainer{display:grid;grid-template-columns:330px 1fr;gap:22px;align-items:start}.layout-split{display:grid;grid-template-columns:1.55fr 1fr;gap:22px}.grid-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.grid-tracks{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;align-items:stretch}.grid-badges{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-bottom:36px}@media(max-width:1100px){.grid-stats{grid-template-columns:repeat(2,1fr)}.grid-tracks,.grid-badges,.layout-split,.layout-submission{grid-template-columns:1fr}}@media(max-width:900px){.layout-shell{grid-template-columns:1fr}.layout-shell>aside{position:static!important;height:auto!important;flex-direction:row!important;flex-wrap:wrap;align-items:center;gap:8px;border-right:none!important;border-bottom:1px solid var(--line)}.layout-shell>aside>div{margin:0!important}.layout-course,.layout-trainer{grid-template-columns:1fr}.layout-course>aside{position:static!important;max-height:none}}@media(max-width:640px){.grid-stats{grid-template-columns:1fr}}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:inherit;background:none;border:none;cursor:pointer}.brand__mark{border-radius:8px;background:linear-gradient(135deg,var(--red),var(--red-deep));box-shadow:0 0 16px -2px var(--red-glow);display:grid;place-items:center;flex:0 0 auto}.avatar{display:grid;place-items:center;font-weight:700;background:linear-gradient(135deg,var(--avatar-1),var(--avatar-2));box-shadow:0 0 0 1px var(--line) inset;border-radius:10px;flex:0 0 auto}.avatar--sm{width:22px;height:22px;border-radius:7px;font-size:10px}.avatar--md{width:36px;height:36px;font-size:12px}.avatar--lg{width:52px;height:52px;border-radius:14px;font-size:17px}.avatar--xl{width:96px;height:96px;border-radius:24px;font-size:34px;box-shadow:0 0 0 1px var(--line) inset,0 0 30px -10px var(--red-glow);position:relative}.callout{display:flex;gap:13px;padding:15px 18px;border-radius:12px;background:var(--red-tint);box-shadow:0 0 0 1px #ff2a1f4d inset}.callout__icon{flex:0 0 auto;color:var(--red);margin-top:2px}.callout__text{margin:0;font-size:13.5px;line-height:1.6;color:var(--tx-0)}.callout--warn{background:var(--warn-dim);box-shadow:0 0 0 1px #f2b44159 inset}.callout--warn .callout__icon{color:var(--warn)}.callout--pending{background:var(--pending-dim);box-shadow:0 0 0 1px #5b8def59 inset}.callout--pending .callout__icon{color:var(--pending)}.list-row{display:flex;align-items:center;gap:14px;padding:13px 18px}.list-row+.list-row{border-top:1px solid var(--line)}.list-row__body{flex:1;min-width:0}.list-row__title{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-row__meta{font-size:11.5px;color:var(--tx-2);margin-top:3px}.list-row__meta--mono{font-family:var(--font-mono)}.seg{display:flex;gap:8px;background:var(--bg-inset);padding:5px;border-radius:12px;box-shadow:0 0 0 1px var(--line) inset}.seg__btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px;border-radius:8px;border:none;cursor:pointer;background:transparent;color:var(--tx-2);font-family:var(--font-display);font-size:13.5px;font-weight:600;transition:all .15s}.seg__btn--active{background:var(--surf-3);color:var(--tx-strong);box-shadow:0 0 0 1px var(--line) inset}.link-red{background:none;border:none;color:var(--red);font-family:var(--font-mono);font-size:12px;cursor:pointer;letter-spacing:.04em;text-decoration:none}.skill__tick--done{background:var(--red);box-shadow:0 0 12px -1px var(--red-glow)}.skill__dot{width:5px;height:5px;border-radius:50%;background:var(--tx-3)}.skill__label--done{color:var(--tx-0)}.section-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:18px}.section-head--spaced{margin-top:30px}.section-head__kicker{margin-bottom:9px}.section-head__title{font-size:23px}.bgfx{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;opacity:var(--fx-opacity)}.bgfx__layer{position:absolute;inset:0}.code .lt--r{background:#ff5f56}.code .lt--y{background:#ffbd2e}.code .lt--g{background:#27c93f}.brand-logo{display:block;width:auto}.brand-logo--light,[data-theme=light] .brand-logo--dark{display:none}[data-theme=light] .brand-logo--light{display:block}.theme-toggle{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:9px;border:none;cursor:pointer;background:transparent;color:var(--tx-2);box-shadow:0 0 0 1px var(--line) inset;transition:color .15s,box-shadow .15s}.theme-toggle:hover{color:var(--red);box-shadow:0 0 0 1px var(--line-hover) inset}.error-page{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px}.error-page__code{font-size:clamp(110px,22vw,220px);line-height:1;background:linear-gradient(180deg,var(--red) 0%,var(--red-deep) 120%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 40px var(--red-glow))}.error-page__title{font-size:clamp(22px,4vw,34px);margin-top:10px;color:var(--tx-strong)}.error-page__text{color:var(--tx-1);font-size:15px;line-height:1.6;max-width:440px;margin-top:14px}.error-page__actions{display:flex;gap:12px;margin-top:28px}.error-page__actions a{text-decoration:none}.lesson-list{margin:12px 0 0;padding-left:4px;list-style:none}.lesson-list li{position:relative;padding-left:22px;margin:7px 0;font-size:14.5px;line-height:1.65;color:var(--tx-1)}.lesson-list li:before{content:"";position:absolute;left:4px;top:9px;width:7px;height:7px;border-radius:50%;background:var(--red);box-shadow:0 0 8px var(--red-glow)}.video-embed{position:relative;margin:20px 0;aspect-ratio:16/9;border-radius:var(--radius-s);overflow:hidden;box-shadow:0 0 0 1px var(--line) inset;background:#000}.video-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.resources{margin-top:18px;border-radius:12px;background:var(--bg-inset);box-shadow:0 0 0 1px var(--line) inset;padding:14px 16px}.resources__title{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--tx-2);margin-bottom:8px}.resources__link{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:8px;text-decoration:none;color:var(--tx-0);font-size:13.5px;transition:background .15s,color .15s}.resources__link svg{color:var(--red);flex:0 0 auto}.resources__link:hover{background:var(--surf-2);color:var(--tx-strong)}.resources__label{flex:1;min-width:0}.resources__ext{color:var(--tx-3);font-size:12px}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
