:root{--ink:#213e34;--green:#387b51;--lime:#dcf08c;--line:#dfe5d9;--muted:#758076}*{box-sizing:border-box}body{margin:0;background:#fafbf6;color:var(--ink);font-family:'Be Vietnam Pro',sans-serif;font-size:14px}button,a,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #d1aa38;outline-offset:4px}header{height:90px;max-width:1240px;margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 25px}.brand{text-decoration:none;color:var(--ink);font-weight:800;font-size:25px;letter-spacing:-1px;display:flex;align-items:center}.green{color:#5e9358}.logo{background:#2d6245;color:var(--lime);font-size:18px;padding:9px;border-radius:12px;margin-right:10px;letter-spacing:-2px}nav{display:flex;gap:30px}nav button,footer button{border:0;background:none;color:#66766a;padding:12px 0}nav .active{color:#285c3e;font-weight:700;border-bottom:2px solid #58864b}.points{background:#f3efd9;border:1px solid #e9e0b8;padding:10px 17px;border-radius:30px;color:#8f6d23;font-weight:700}main{max-width:1190px;margin:auto}.intro{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;padding:52px 0 44px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:#67805e}h1{font-size:48px;line-height:1.3;letter-spacing:-2px;margin:18px 0}h1 em{font-style:normal;color:#65904d}p{line-height:1.8}.intro p{color:#6c786d;font-size:15px}.primary{border:0;border-radius:9px;background:#2d6547;color:white;padding:13px 21px;font-weight:600}.start{display:inline-flex;gap:33px;text-decoration:none;margin:13px 0 24px}.intro-meta{display:flex;gap:20px;font-size:10px;color:#7c877a}.art{position:relative;background:#edf3df;border-radius:50% 48% 45% 42%;height:330px;margin:13px 25px 0}.art svg{width:100%;height:285px;margin-top:20px}.spark{position:absolute;color:#96ac56;font-size:34px}.s1{left:35px;top:80px}.s2{right:20px;bottom:70px}.code-float{position:absolute;right:-10px;top:30px;background:white;box-shadow:0 6px 20px #354d3410;padding:15px;border:1px solid #dce4d1;border-radius:10px;transform:rotate(6deg);font-family:monospace;color:#516076}.code-float b{color:#5b974e}.bubble{position:absolute;left:4px;bottom:26px;background:#fff;padding:13px 18px;border-radius:12px;transform:rotate(-5deg);box-shadow:0 6px 20px #354d3410;font-size:12px}.art-tag{text-align:center;color:#8a967e;font-size:10px;letter-spacing:1px}.journey{display:flex;justify-content:space-between;align-items:center;padding:24px 0}h2{font-size:24px;letter-spacing:-.6px;margin:10px 0}.progress-info{font-size:11px;color:#71806c;width:190px;text-align:right}.track{height:6px;background:#e7ebdf;border-radius:5px;margin-top:10px}.track div{height:100%;background:#74a063;border-radius:5px;transition:width .3s}.app{display:grid;grid-template-columns:270px 1fr;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:white;scroll-margin-top:20px}aside{background:#f3f5ed;padding:24px 18px;border-right:1px solid var(--line)}.aside-title{font-size:10px;font-weight:700;letter-spacing:1px;display:flex;justify-content:space-between;margin-bottom:20px}.aside-title span{color:#95a08d;letter-spacing:0}.lesson{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid transparent;border-radius:11px;background:none;padding:15px 10px;color:#6a7867;margin-bottom:7px}.lesson.selected{background:white;border-color:#cbdcbd;box-shadow:0 3px 6px #24462204;color:#274e36}.lesson .num{display:grid;place-items:center;width:33px;height:33px;border:1px solid #dce3d2;border-radius:10px;font-size:12px;background:#f9faf5}.lesson.selected .num{background:#deedc6;border-color:#deedc6;color:#487042}.lesson b{font-size:12px;display:block}.lesson small{font-size:10px;display:block;margin-top:5px;color:#8b9586}.tip{border:1px dashed #d6dfc9;border-radius:10px;padding:15px 12px;margin-top:26px;font-size:10px}.tip p{color:#89927f;margin-bottom:0}.work{padding:28px 32px}.lesson-head{display:flex;justify-content:space-between;align-items:center;font-size:10px}.pill{background:#f0f5e7;color:#6f8b51;padding:6px 9px;border-radius:5px}.muted{color:#939c90}.work h2{font-size:25px;margin:18px 0 10px}.description{font-size:12px;color:#778471;margin-bottom:20px}.mission{display:flex;gap:12px;align-items:center;background:#f7f7ed;border:1px solid #ededdc;border-radius:9px;padding:14px;margin-bottom:18px}.mission>span{font-size:24px;color:#aa994d}.mission b{font-size:11px}.mission p{font-size:11px;margin:4px 0 0;color:#7c8168}.mission button{margin-left:auto;white-space:nowrap;font-size:10px;background:white;border:1px solid #e4e5d7;padding:8px;border-radius:6px;color:#737951}#hint{background:#fff8dc;font-size:12px;padding:12px;border-radius:8px;margin-bottom:15px;line-height:1.8}.editor{border:1px solid #304a40;border-radius:10px;overflow:hidden;background:#1f322b;color:#d3dfcf}.editor-head{display:flex;justify-content:space-between;background:#293e35;padding:12px 16px;font-size:11px}.editor-head i{display:inline-block;width:7px;height:7px;background:#b9d38c;border-radius:50%;margin-right:9px}.editor-head button{background:none;border:0;color:#9eafa0;font-size:10px}.code-area{display:flex;min-height:165px;padding:18px 0}.code-area>div{font:13px/1.9 monospace;text-align:right;color:#698373;padding:0 16px;white-space:pre}textarea{resize:vertical;flex:1;background:transparent;color:#dcf3b8;border:0;outline:none;font:14px/1.9 monospace;min-height:135px;width:100%;tab-size:4;padding:0 14px 0 0}.editor-footer{border-top:1px solid #364b40;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;font-size:9px;color:#93a898;gap:10px}.editor-footer .primary{background:#d7ef94;color:#2c4c31;padding:10px 18px;font-size:11px}#stop{border:1px solid #a98c75;background:none;color:#ffd4b2;border-radius:5px;padding:8px}.output-head{display:flex;justify-content:space-between;font-size:10px;padding:19px 0 10px}.output-head span{color:#919a89;font-size:9px}pre{font:12px/1.8 monospace;white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid #e5e9dd;border-radius:8px;background:#f9faf5;padding:16px;color:#758269;min-height:75px;max-height:250px;overflow:auto;margin:0}#feedback{font-size:12px;color:#4e783d;line-height:1.8;margin-top:10px}.bottom{display:flex;justify-content:space-between;align-items:center;margin-top:17px;font-size:9px;color:#9aa18f}.bottom button{background:none;border:0;color:#5c7a47;font-size:11px;font-weight:600}.values{display:flex;justify-content:space-between;margin:42px 0;padding:25px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.values>div{position:relative;padding-left:38px}.values span{position:absolute;left:0;top:0;font-size:11px;color:#9daf83}.values b{font-size:12px}.values p{font-size:10px;color:#8c9684;margin-bottom:0}footer{max-width:1190px;margin:20px auto 30px;display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#929a88}footer .brand{font-size:18px}footer button{font-size:10px}dialog{max-width:520px;border:1px solid var(--line);border-radius:16px;padding:30px;color:var(--ink)}dialog::backdrop{background:#173c3266}dialog p{font-size:13px}button:disabled{opacity:.6;cursor:wait}.inputbox{margin:10px 0;font-size:10px;color:#7b8974}.inputbox textarea{display:block;min-height:42px;height:42px;background:#f6f7ef;border:1px solid #e2e7d9;color:#31553e;padding:8px;border-radius:6px;font-size:12px;margin-top:5px}@media(max-width:900px){main,footer{margin-left:22px;margin-right:22px}h1{font-size:38px}.intro{gap:10px}.art{margin:20px 0;height:280px}.intro-meta{flex-wrap:wrap;gap:10px}.app{grid-template-columns:220px 1fr}.work{padding:22px}.muted{display:none}}@media(max-width:640px){header{height:73px;padding:0 18px}.brand{font-size:20px}nav{gap:15px}nav button{font-size:10px}.points{font-size:10px;padding:8px}.logo{display:none}.intro{padding:30px 0;grid-template-columns:1fr}.intro h1{font-size:36px}.art{height:260px;max-width:360px;width:90%;margin:15px auto}.art svg{height:230px}.intro p{font-size:13px}.intro-meta{font-size:9px}.journey{gap:15px}.journey h2{font-size:20px}.eyebrow{font-size:8px}.progress-info{width:120px;font-size:9px}.app{grid-template-columns:1fr}aside{border-right:0;border-bottom:1px solid var(--line);padding:16px}#lessons{display:flex;overflow:auto;gap:8px}.lesson{min-width:165px;margin:0;padding:10px}.tip{display:none}.aside-title{margin-bottom:12px}.work{padding:20px 16px}.work h2{font-size:22px}.mission{gap:8px;padding:10px}.mission p{font-size:10px}.values{gap:22px;flex-direction:column}.values p{margin-top:7px}footer{gap:15px;flex-wrap:wrap}footer>span{display:none}}

.library-filters{display:grid;gap:10px;margin:14px 0}.library-filters label{display:grid;gap:5px;font-size:13px}.library-filters input,.library-filters select{width:100%;padding:10px;border:1px solid #ccd7c6;border-radius:8px;background:white;color:#243d31}.paging{display:flex;justify-content:space-between;align-items:center}.paging button{padding:8px 16px}.sample-answer{margin:16px 0}.sample-answer summary{cursor:pointer;color:#42662e}.sample-answer pre{white-space:pre-wrap;padding:16px;background:#eff5e9;border-radius:10px}.lesson .num{min-width:38px;font-size:12px}
