@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";:root{font-family:Manrope,ui-sans-serif,system-ui,sans-serif;color:#17251f;background:#f5f7f4;font-synthesis:none;--ink:#17251f;--muted:#68766f;--line:#dce5de;--paper:#fff;--lime:#c9ee72;--teal:#126b5b;--soft:#edf3ed}*{box-sizing:border-box}html{background:#f5f7f4}body{margin:0}a{color:inherit;text-decoration:none}button,.button{font:inherit;cursor:pointer;border:0;border-radius:7px;padding:.72rem 1rem;min-height:42px;transition:background .18s,transform .18s,box-shadow .18s}button:focus-visible,a:focus-visible{outline:3px solid #7aafa2;outline-offset:3px}.primary{background:var(--ink);color:#fff;font-weight:800}.primary:hover{background:#285044;transform:translateY(-1px)}.secondary{background:#e7efe8;color:var(--ink);font-weight:700}.secondary:hover{background:#d8e7da}.danger{background:#a53e3a;color:#fff;font-weight:800}.danger:hover{background:#8c302d}.app-shell>header{height:72px;background:#fffffff0;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 max(24px,calc((100vw - 1240px)/2));gap:38px;position:sticky;top:0;z-index:10;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.brand{font-weight:800;letter-spacing:-.06em;font-size:1.35rem;color:var(--teal)}.brand:before{content:"// ";font-family:DM Mono,monospace;color:#a9ca4e;font-weight:400}.brand.big{font-size:2rem}.app-shell header nav{display:flex;gap:26px;flex:1}.app-shell header nav a{color:#607069;font-weight:700;font-size:.9rem}.app-shell header nav a:hover{color:var(--teal)}.user{display:flex;align-items:center;gap:9px;font-size:.84rem;font-weight:700;color:#54635d}.user img{width:34px;height:34px;border-radius:50%;border:2px solid #dcebd5}.user span{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}main{max-width:1240px;margin:auto;padding:38px 28px 96px}.hero{padding:60px 0 42px;max-width:850px}.hero.compact{padding-top:23px;padding-bottom:28px}.hero h1{font-size:clamp(2.35rem,6vw,4.8rem);line-height:.98;letter-spacing:-.075em;margin:.18em 0 .25em;color:var(--ink)}.hero p{font-size:1.05rem;color:var(--muted);line-height:1.7;max-width:690px}.eyebrow{font-family:DM Mono,monospace;font-size:.7rem;letter-spacing:.12em;font-weight:500;color:var(--teal);text-transform:uppercase}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));gap:20px}.card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:26px;transition:.2s;box-shadow:0 5px 18px #17251f09}.card:hover{transform:translateY(-3px);border-color:#9fbd9f;box-shadow:0 16px 32px #17251f1a}.card h2{font-size:1.5rem;letter-spacing:-.04em;margin:.7rem 0}.card p{color:var(--muted);line-height:1.6;min-height:72px}.tag{display:inline-block;padding:.28rem .55rem;background:var(--lime);border-radius:4px;font-family:DM Mono,monospace;font-size:.7rem;font-weight:500}.progress{height:7px;background:#e6ede6;border-radius:8px;overflow:hidden;margin:24px 0 11px}.progress span{height:100%;display:block;background:var(--teal);border-radius:8px}.card-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:.78rem;color:var(--muted)}.card-footer strong{color:var(--ink)}.module{margin:26px 0 36px}.module>h2{font-size:1.45rem;letter-spacing:-.045em;margin:0 0 14px}.lesson-list{background:var(--paper);border:1px solid var(--line);border-radius:12px;overflow:hidden}.lesson-row{display:flex;align-items:center;gap:18px;padding:18px 22px;border-bottom:1px solid #e7eee8;transition:background .15s}.lesson-row:last-child{border-bottom:0}.lesson-row:hover{background:#f3f8f1}.lesson-index{font-family:DM Mono,monospace;color:#91a39a;font-size:.78rem;width:28px}.grow{flex:1;min-width:0}.lesson-row strong{display:block;font-size:.96rem}.lesson-row small{display:block;margin-top:5px;color:var(--muted);font-size:.77rem}.status{color:var(--teal);font-size:.78rem;font-weight:800;white-space:nowrap}.lesson-row.done .lesson-index{color:var(--teal)}.lesson-row.done .status{color:#779345}.exam-banner{display:flex;align-items:center;justify-content:space-between;gap:24px;background:#e8eee8;border:1px solid #d5e1d5;border-radius:12px;padding:25px 28px}.exam-banner.unlocked{background:var(--ink);color:#fff;border-color:var(--ink)}.exam-banner.unlocked .eyebrow{color:var(--lime)}.exam-banner p{color:var(--muted);margin:.45rem 0 0;line-height:1.5}.exam-banner.unlocked p{color:#bbcbc2}.exam-banner h2{margin:.35rem 0;font-size:1.35rem}.lock{font-family:DM Mono,monospace;font-size:.75rem;color:#7e8d83}.exercise-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,245px),1fr));gap:13px}.muted{color:var(--muted);font-size:.9rem}.exercise-card{display:flex;flex-direction:column;gap:12px;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:19px;min-height:164px;transition:.18s}.exercise-card:hover{border-color:#9fbd9f;transform:translateY(-2px)}.exercise-card strong{font-size:.94rem}.exercise-card small{color:var(--muted);font-size:.75rem;line-height:1.5;flex:1}.exercise-card>span:last-child{font-size:.78rem;color:var(--teal);font-weight:800}.difficulty{display:inline-block;padding:.24rem .5rem;border-radius:3px;font-family:DM Mono,monospace;text-transform:uppercase;font-size:.63rem;background:#e5f0df;color:#4c713e}.difficulty.hard{background:#f7e1d8;color:#984730}.difficulty.medium{background:#f5edd4;color:#88702c}.exercise-no{float:right;font-family:DM Mono,monospace;color:#9aaba1;font-size:.72rem}.lesson-content{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:clamp(22px,5vw,48px);max-width:900px}.lesson-content h2{font-size:1.5rem;margin:0 0 1.5rem;color:var(--ink)}.lesson-content h3{font-size:1.2rem;margin:2rem 0 .75rem;color:var(--ink)}.lesson-content h4{font-size:1.05rem;margin:1.5rem 0 .5rem;color:#2c4b40}.lesson-content p{color:#3d5148;line-height:1.8;margin:.75rem 0}.lesson-content ul,.lesson-content ol{padding-left:1.5rem;color:#3d5148;line-height:1.8}.lesson-content li{margin:.4rem 0}.lesson-content code{background:#edf3ed;padding:.15rem .4rem;border-radius:4px;font-size:.9em;font-family:DM Mono,monospace}.lesson-content pre{background:#1c2d27;color:#e3f0e8;padding:1.25rem 1.5rem;border-radius:8px;overflow-x:auto;margin:1rem 0;line-height:1.6}.lesson-content pre code{background:none;color:inherit;padding:0}.lesson-content blockquote{border-left:3px solid #a9ca4e;padding:.75rem 1rem;margin:1rem 0;color:#4a6256;background:#f1f6ef;border-radius:0 8px 8px 0}.lesson-content a{color:#08715e;text-decoration:underline}.lesson-content hr{border:none;border-top:1px solid var(--line);margin:2rem 0}.lesson-content table{border-collapse:collapse;width:100%;margin:1rem 0}.lesson-content th,.lesson-content td{border:1px solid var(--line);padding:.5rem .75rem;text-align:left}.lesson-content th{background:#edf3ed;font-weight:700}.workspace{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);min-height:calc(100vh - 72px);background:#182a24;border:1px solid #29453c;border-radius:12px;overflow:hidden}.problem-pane{background:#f8faf7;padding:30px;overflow:auto}.problem-pane h1{font-size:clamp(1.5rem,3vw,2.2rem);line-height:1.05;letter-spacing:-.06em;margin:16px 0}.back{display:inline-block;color:var(--teal);font-size:.8rem;font-weight:800;margin-bottom:34px}.concepts{display:flex;flex-wrap:wrap;gap:6px;margin:18px 0}.concepts span{font-family:DM Mono,monospace;font-size:.65rem;background:#e6f0e7;color:#4d6a5d;padding:.3rem .45rem;border-radius:3px}.instructions p,.hint-box p{color:#53675d;font-size:.88rem;line-height:1.65}.hint-box{border-top:1px solid var(--line);margin-top:28px;padding-top:20px}.hint-box p{background:#eef5df;padding:10px;border-radius:5px}.code-pane{min-width:0;background:#1c2d27;padding:14px}.editor-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;color:#bbcec3;padding:0 4px 12px;font-family:DM Mono,monospace;font-size:.75rem}.editor-toolbar button{font-family:Manrope,sans-serif;padding:.5rem .8rem;min-height:36px}.result-panel{background:#10201b;color:#c9dbcf;border:1px solid #29483d;border-radius:7px;margin-top:12px;padding:14px;min-height:96px}.result-title{font-family:DM Mono,monospace;font-size:.72rem;color:#a9ca4e;text-transform:uppercase;letter-spacing:.08em}.result-panel pre{white-space:pre-wrap;color:#dcebe0;font-family:DM Mono,monospace;font-size:.78rem;line-height:1.5}.result-panel .error{color:#f39c88}.result-panel.pass{border-color:#75ad73}.result-panel.fail{border-color:#bd6d5e}.exam-start,.verify-card{max-width:700px;margin:8vh auto;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:clamp(26px,6vw,58px);box-shadow:0 14px 35px #17251f0d}.exam-start h1,.verify-card h1{font-size:clamp(2rem,5vw,3.5rem);letter-spacing:-.07em;line-height:1.05}.exam-start p,.verify-card p{color:var(--muted);line-height:1.7}.exam-facts{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin:28px 0}.exam-facts div{padding:16px;border-right:1px solid var(--line);background:#f5f8f4}.exam-facts div:last-child{border:0}.exam-facts strong,.exam-facts span{display:block}.exam-facts strong{font-size:1.45rem}.exam-facts span{font-size:.7rem;color:var(--muted);margin-top:4px}.score{font-size:4rem;font-weight:800;color:var(--teal);letter-spacing:-.08em}.exam-workspace{margin:-10px -28px -96px;background:#182a24;min-height:calc(100vh - 62px)}.exam-top{display:flex;align-items:center;gap:22px;padding:14px max(18px,calc((100vw - 1240px)/2));color:#d4e2d8}.exam-top span{font-family:DM Mono,monospace;font-size:.72rem;color:#a8bcb0}.exam-top .timer{color:var(--lime);margin-left:auto}.exam-top button{min-height:36px;padding:.5rem .8rem}.exam-workspace .workspace{border-radius:0;border:0;min-height:calc(100vh - 120px)}.question-nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px}.question-nav button{min-width:38px;padding:.4rem;background:#e2ece2;color:var(--ink);font-family:DM Mono,monospace;font-size:.75rem}.question-nav button.active{background:var(--teal);color:#fff}.certificate{display:flex;align-items:center;gap:25px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:28px}.certificate h2{margin:.5rem 0;font-size:1.35rem}.certificate p{color:var(--muted);font-size:.9rem}.certificate a,.verify-card{color:var(--teal)}.certificate code,.verify-card code{font-family:DM Mono,monospace;font-size:.75rem;background:#edf3ed;padding:.35rem .5rem;border-radius:3px}.seal{display:grid;place-items:center;flex:0 0 72px;height:72px;border-radius:50%;background:var(--ink);color:var(--lime);font-family:DM Mono,monospace;font-weight:500}.big-seal{margin-bottom:25px}.empty,.loading{padding:28px;color:var(--muted);background:var(--paper);border:1px dashed #b9cabe;border-radius:10px}.loading{text-align:center;max-width:500px;margin:70px auto}@media(max-width:760px){.app-shell>header{height:64px;padding:0 16px;gap:16px}.app-shell header nav{gap:14px}.app-shell header nav a{font-size:.75rem}.user span{display:none}main{padding:20px 16px 60px}.hero{padding:35px 0 28px}.hero h1{font-size:clamp(2.2rem,13vw,3.5rem)}.hero p{font-size:.95rem}.card{padding:21px}.lesson-row{align-items:flex-start;padding:16px;gap:10px}.lesson-row small{line-height:1.5}.status{font-size:0}.status:first-letter{font-size:1rem}.exam-banner{align-items:flex-start;flex-direction:column;padding:22px}.exam-facts{grid-template-columns:repeat(2,1fr)}.exam-facts div:nth-child(2){border-right:0}.exam-facts div:nth-child(-n+2){border-bottom:1px solid var(--line)}.workspace{display:flex;flex-direction:column;min-height:0;border-radius:8px}.problem-pane{max-height:none;padding:22px}.back{margin-bottom:20px}.code-pane{padding:10px}.code-pane .monaco-editor,.code-pane .overflow-guard{max-width:100%}.editor-toolbar{flex-wrap:wrap}.editor-toolbar div{display:flex;gap:6px}.exam-workspace{margin:-4px -16px -60px}.exam-top{padding:11px 14px;gap:10px;flex-wrap:wrap}.exam-top .timer{margin-left:0}.exam-top button{margin-left:auto}.exam-workspace .problem-pane{max-height:45vh}.certificate{align-items:flex-start;flex-direction:column;gap:16px}.seal{flex-basis:56px;width:56px;height:56px}.lesson-content{padding:22px 18px}.lesson-content pre{padding:1rem;max-width:calc(100vw - 70px)}.cards{grid-template-columns:1fr}}@media(max-width:390px){.app-shell header nav{gap:8px}.app-shell header nav a{font-size:.68rem}.brand{font-size:1.1rem}.editor-toolbar button{padding:.42rem .55rem;font-size:.75rem}}body{min-width:280px;min-height:100vh;min-height:100dvh;overflow-x:hidden}button:disabled{cursor:not-allowed;opacity:.58;transform:none}.app-shell header nav a{position:relative}.app-shell header nav a.active{color:var(--teal)}.app-shell header nav a.active:after{content:"";position:absolute;right:0;bottom:-10px;left:0;height:2px;border-radius:2px;background:var(--lime)}.exercise-card.done{border-color:#a7c99a;background:#fbfef9}.admin-facts{max-width:760px}.certificate code,.verify-card code{overflow-wrap:anywhere}.login-shell{position:relative;isolation:isolate;display:grid;min-height:100vh;min-height:100dvh;place-items:center;padding:24px;overflow:hidden;background:#14251f}.login-shell:before,.login-shell:after{content:"";position:absolute;z-index:-1;border-radius:50%}.login-shell:before{width:min(72vw,840px);height:min(72vw,840px);top:-40%;right:-18%;background:radial-gradient(circle,#396557 0,#234439 45%,transparent 70%)}.login-shell:after{width:420px;height:420px;bottom:-250px;left:-130px;border:1px solid #507064;background:repeating-linear-gradient(135deg,transparent 0 18px,#ffffff08 18px 19px)}.login-card{position:relative;width:min(520px,100%);padding:52px;background:var(--paper);border:1px solid #ffffff70;border-radius:14px;box-shadow:0 28px 80px #08120e66}.login-card:before{content:"";position:absolute;top:0;right:24px;left:24px;height:4px;border-radius:0 0 4px 4px;background:var(--lime)}.login-card h1{max-width:420px;margin:1.8rem 0 .8rem;font-size:clamp(2.5rem,6vw,3.6rem);line-height:.96;letter-spacing:-.075em}.login-card p{margin:0 0 30px;color:var(--muted);line-height:1.7}.login-card button{width:100%}@media(max-width:900px){.workspace{display:flex;flex-direction:column;min-height:0}.problem-pane{max-height:none}.user span{display:none}.exam-workspace .problem-pane{max-height:46vh}}@media(max-width:760px){.app-shell>header{height:auto;min-height:94px;padding:10px 16px;display:grid;grid-template-columns:1fr auto;grid-template-areas:"brand user" "nav nav";column-gap:12px;row-gap:7px}.app-shell>header .brand{grid-area:brand}.app-shell>header nav{grid-area:nav;gap:22px;min-width:0}.app-shell>header .user{grid-area:user}.app-shell header nav a{font-size:.78rem}.app-shell header nav a.active:after{bottom:-8px}.card p{min-height:0}.status{font-size:0}.status:first-letter{font-size:0}.status:after{content:"→";font-size:1rem}.lesson-row.done .status:after{content:"✓"}.login-card{padding:36px 24px}.login-card h1{font-size:clamp(2.2rem,14vw,3rem)}.lesson-content table{display:block;max-width:100%;overflow-x:auto}}@media(max-width:390px){.app-shell>header{padding-inline:12px}.app-shell header nav{gap:16px}.app-shell header nav a{font-size:.74rem}.user img{width:30px;height:30px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.exercise-position{margin:-8px 0 22px;color:var(--muted);font-size:.78rem;font-weight:700}.exercise-nav{display:flex;align-items:stretch;justify-content:space-between;gap:10px;margin-top:12px;padding-top:14px;border-top:1px solid #ffffff25}.exercise-nav .button{display:inline-flex;align-items:center;justify-content:center;text-align:center}.exercise-nav .primary{background:var(--lime);color:var(--ink)}.exercise-nav .primary:hover{background:#daf89a}.nav-disabled{display:flex;min-width:130px;flex-direction:column;align-items:center;justify-content:center;padding:.72rem 1rem;border-radius:7px;background:#e7efe8;color:var(--ink);font-weight:700;opacity:.58;text-align:center}.nav-disabled small{font-size:.65rem;font-weight:500;margin-top:3px}.exercise-nav>span:first-child{min-width:100px}#exercise-index{scroll-margin-top:96px}@media(max-width:760px){.exercise-nav{margin-top:24px}.exercise-nav .button,.nav-disabled{flex:1;min-width:0}.problem-pane .back{display:inline-block}}.lesson-progress{--progress:0%;width:68px;height:68px;flex:0 0 68px;border-radius:50%;display:grid;place-content:center;text-align:center;background:radial-gradient(circle,var(--paper) 60%,transparent 61%),conic-gradient(var(--teal) var(--progress),#dfe9e1 0);color:var(--teal)}.lesson-progress strong,.lesson-progress small{display:block;line-height:1.1}.lesson-progress strong{font-size:.92rem}.lesson-progress small{font-size:.56rem;color:var(--muted);margin-top:3px}.lesson-row.done .lesson-progress{color:#507a32;background:radial-gradient(circle,var(--paper) 60%,transparent 61%),conic-gradient(#73a94e var(--progress),#dfe9e1 0)}.logout{min-height:0;padding:.3rem .5rem;background:transparent;color:var(--muted);font-size:.75rem}.logout:hover{color:var(--teal);background:var(--soft)}.login-card form{display:grid;gap:14px}.login-card label{display:grid;gap:6px;color:var(--ink);font-size:.82rem;font-weight:700}.login-card input{width:100%;padding:.72rem .8rem;border:1px solid var(--line);border-radius:7px;font:inherit}.login-card input:focus{outline:3px solid #c9ee72;border-color:var(--teal)}.login-error{color:#a53e3a;font-size:.82rem}.login-google{width:100%;margin-top:12px;background:#e7efe8;color:var(--ink);font-weight:700}@media(max-width:760px){.lesson-progress{width:58px;height:58px;flex-basis:58px}.lesson-progress small{font-size:.5rem}.lesson-row{gap:8px}.user span{display:none}.logout{font-size:.7rem}}
