@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-vietnamese-400-normal-B7xT_GF5.woff2) format("woff2"),url(/assets/space-grotesk-vietnamese-400-normal-BIWiOVfw.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-latin-ext-400-normal-CfP_5XZW.woff2) format("woff2"),url(/assets/space-grotesk-latin-ext-400-normal-DRPE3kg4.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-latin-400-normal-CJ-V5oYT.woff2) format("woff2"),url(/assets/space-grotesk-latin-400-normal-BnQMeOim.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-vietnamese-500-normal-BmEvtly_.woff2) format("woff2"),url(/assets/space-grotesk-vietnamese-500-normal-BTqKIpxg.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-ext-500-normal-DUe3BAxM.woff2) format("woff2"),url(/assets/space-grotesk-latin-ext-500-normal-3dgZTiw9.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2) format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-vietnamese-600-normal-DUi7WF5p.woff2) format("woff2"),url(/assets/space-grotesk-vietnamese-600-normal-D6zpsUhD.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-ext-600-normal-DxxdqCpr.woff2) format("woff2"),url(/assets/space-grotesk-latin-ext-600-normal-VcznFIpX.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2) format("woff2"),url(/assets/space-grotesk-latin-600-normal-BflQw4A9.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-vietnamese-700-normal-DMty7AZE.woff2) format("woff2"),url(/assets/space-grotesk-vietnamese-700-normal-Duxec5Rn.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-ext-700-normal-BQnZhY3m.woff2) format("woff2"),url(/assets/space-grotesk-latin-ext-700-normal-HVCqSBdx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2) format("woff2"),url(/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color:#eef0f7;background:#0b1019;font-family:Space Grotesk,sans-serif;font-synthesis:none;--bg: #0b1019;--surface: #101722;--line: #293342;--text: #eef0f7;--muted: #a5adbd;--violet: #8b5cf6;--violet-strong: #7c3aed;--cyan: #42c8f5;--green: #7bdc65;--orange: #ff7b31}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100vh;margin:0;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.app-shell{min-height:100vh;height:100vh;display:grid;grid-template-rows:auto minmax(0,1fr) 108px;overflow:hidden;background:var(--bg)}.header-region{min-width:0}.topbar{display:flex;align-items:center;gap:26px;min-width:0;padding:20px 28px;border-bottom:1px solid var(--line);background:#0d131d}.brand{flex:0 0 auto;font-size:28px;font-weight:700;letter-spacing:-1.2px;color:var(--violet)}.brand span{color:var(--text)}.brand-button{padding:0;border:0;background:transparent}.header-divider{width:1px;height:44px;background:#3a4350}.section-label{flex:0 0 auto;font-size:18px;color:#d5d8e1}.lab-heading{display:flex;align-items:flex-start;gap:16px;min-width:340px;flex:1}.lab-badge{margin-top:3px;padding:3px 8px;border:1px solid var(--violet);border-radius:6px;color:#b69afc;font-size:13px;font-weight:600;white-space:nowrap}.lab-heading h1{margin:0;font-size:20px;line-height:1.25;font-weight:600;letter-spacing:-.35px}.lab-heading p{margin:7px 0 0;color:var(--muted);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mission-progress{flex:0 0 250px;padding-left:24px;border-left:1px solid var(--line)}.mission-progress>span{display:block;font-size:14px;font-weight:600}.mission-progress-row{display:flex;align-items:center;gap:14px;margin-top:5px}.mission-progress-row strong{color:var(--muted);font-size:13px;font-weight:500;white-space:nowrap}.progress-track{height:6px;width:110px;overflow:hidden;border-radius:10px;background:#283141}.progress-track div{height:100%;border-radius:inherit;background:var(--violet);transition:width .28s ease}.hint-button,.ghost-button,.secondary-button,.primary-button{border-radius:7px;display:inline-flex;align-items:center;justify-content:center;gap:9px;color:var(--text);transition:background .16s ease,border-color .16s ease,transform .16s ease}.hint-button{flex:0 0 auto;min-height:46px;padding:0 16px;border:1px solid #485261;background:transparent}.hint-button:hover,.hint-button.active{background:#1b2432;border-color:#6c7583}.hint-banner{min-height:48px;display:flex;align-items:center;gap:12px;padding:10px 28px;color:#d9d2ff;background:#211a37;border-bottom:1px solid #4b3678;font-size:14px}.hint-banner svg{color:#b699ff}.hint-banner span{flex:1}.hint-banner button{border:0;background:transparent;color:#b9a4f7}.workspace{min-height:0;display:grid;grid-template-columns:minmax(0,2fr) minmax(320px,1fr)}.terminal-panel,.system-panel{min-height:0;display:grid;grid-template-rows:72px minmax(0,1fr);background:var(--surface)}.terminal-panel{border-right:1px solid var(--line)}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--line)}.panel-title{display:flex;align-items:center;gap:12px;color:#a886ff;font-size:18px;font-weight:600}.ghost-button{min-height:40px;padding:0 14px;border:1px solid #46505e;background:#141b26;font-size:14px}.ghost-button:hover{background:#202a39}.terminal-body{overflow:auto;padding:28px 30px 36px;background:#101722;scrollbar-width:none}.terminal-body::-webkit-scrollbar{display:none}.terminal-line,.terminal-input-row{min-height:26px;font-family:IBM Plex Mono,monospace;font-size:clamp(12.5px,1.13vw,16px);line-height:1.65;color:#e8eaf0;white-space:pre-wrap}.terminal-line.command{margin-top:17px}.terminal-prompt,.terminal-input-row label{color:var(--green);margin-right:10px}.terminal-line.muted{color:#758094}.terminal-line.error{color:#ff9b65}.terminal-line.success{color:#a4ef91}.terminal-line.warning{color:#ffd27c}.terminal-input-row{display:flex;align-items:baseline;margin-top:16px}.terminal-input-row label{flex:0 0 auto}.terminal-input-row input{flex:1;min-width:40px;padding:0;border:0;outline:none;color:#f4f5fa;background:transparent;caret-color:#fff;font-family:inherit;font-size:inherit;line-height:inherit}.system-panel{grid-template-rows:72px minmax(0,1fr)}.system-map{min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 24px;overflow:auto;background:#121a25}.map-node{display:flex;flex-direction:column;align-items:center;gap:clamp(3px,.5vh,6px);text-align:center}.node-label{font-size:clamp(13px,1.7vh,15px);line-height:1.2;font-weight:600}.node-icon{width:clamp(68px,10vh,84px);height:clamp(68px,10vh,84px);display:grid;place-items:center;border:2px solid currentColor;border-radius:50%;background:#121b27}.node-icon svg{width:clamp(30px,4.5vh,40px);height:clamp(30px,4.5vh,40px)}.node-icon.cyan{color:var(--cyan)}.node-icon.violet{color:var(--violet)}.node-icon.success{color:var(--green)}.server-icon{position:relative}.server-icon i{position:absolute;width:10px;height:10px;right:17px;bottom:17px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px #121b27}.map-node strong{color:var(--green);font-size:clamp(12px,1.55vh,14px);line-height:1.2}.map-node small{color:var(--muted);font-size:clamp(11px,1.4vh,13px);line-height:1.2}.connector{position:relative;width:190px;min-height:clamp(42px,6vh,58px);display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;line-height:1.25;font-weight:600}.connector:before{content:"";position:absolute;inset:0 auto;left:50%;border-left:3px dashed currentColor;opacity:.8}.connector svg,.connector span{position:relative;z-index:1;background:#121a25}.connector span{max-width:150px;padding:3px 6px}.connector.blocked{color:var(--orange)}.connector.connected{color:var(--green)}.connector.compact{min-height:54px;width:40px}.connector.compact svg{box-shadow:0 0 0 5px #121a25}.actionbar{min-width:0;display:flex;align-items:center;gap:26px;padding:18px 28px;border-top:1px solid var(--line);background:#0d141e}.task-summary{min-width:330px;display:flex;align-items:center;gap:16px}.task-icon{width:48px;height:48px;flex:0 0 auto;display:grid;place-items:center;border:1px solid #586170;border-radius:50%}.task-summary>div:last-child{display:flex;flex-direction:column;gap:5px}.task-summary strong{font-size:14px}.task-summary span{max-width:470px;color:var(--muted);font-size:13px;line-height:1.4}.validation-message{max-width:420px;display:flex;align-items:center;gap:10px;margin-left:auto;font-size:13px;line-height:1.4}.validation-message.error{color:#ffac82}.validation-message.success{color:#a5ec94}.action-buttons{display:flex;align-items:center;gap:14px;margin-left:auto}.secondary-button,.primary-button{min-height:54px;padding:0 24px;font-weight:600;white-space:nowrap}.secondary-button{border:1px solid #515c6b;background:#121a25}.secondary-button:hover{background:#1b2533}.primary-button{min-width:220px;border:1px solid var(--violet);background:var(--violet-strong)}.primary-button:hover:not(:disabled){background:#6d28d9;transform:translateY(-1px)}.primary-button:disabled{cursor:default;background:#246539;border-color:#4c9b60;opacity:1}.course-shell{width:100%;min-width:0;min-height:100vh;height:100vh;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) 102px;overflow:hidden;background:var(--bg)}.course-topbar{min-width:0;min-height:92px;display:flex;align-items:center;gap:26px;padding:18px 28px;border-bottom:1px solid var(--line);background:#0d131d}.course-track-name{flex:0 0 auto;color:#d5d8e1;font-size:17px}.course-heading{min-width:320px;display:flex;align-items:flex-start;gap:15px;flex:1}.course-heading>div{display:flex;flex-direction:column;gap:5px}.course-heading strong{font-size:19px;font-weight:600}.course-heading span:not(.lab-badge){color:var(--muted);font-size:13px}.course-progress-head{width:245px;padding-left:22px;border-left:1px solid var(--line)}.course-progress-head>span{display:block;font-size:13px;font-weight:600}.course-progress-head>div{display:flex;align-items:center;gap:12px;margin-top:6px}.course-progress-head strong{flex:0 0 auto;color:var(--muted);font-size:12px;font-weight:500}.course-workspace{min-width:0;min-height:0;display:grid;grid-template-columns:218px minmax(0,1fr) 286px}.lesson-sidebar{min-height:0;padding:28px 22px;border-right:1px solid var(--line);background:#101823}.lesson-sidebar-title{display:flex;align-items:center;gap:9px;padding:0 6px 25px;color:#a985ff;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.lesson-list{position:relative;display:flex;flex-direction:column;gap:8px}.lesson-list:before{content:"";position:absolute;top:30px;bottom:30px;left:27px;border-left:1px dashed #546174}.lesson-step{position:relative;z-index:1;width:100%;min-height:88px;display:grid;grid-template-columns:48px 1fr;align-items:center;gap:10px;padding:10px 8px;border:0;border-left:3px solid transparent;color:#bbc1cf;background:transparent;text-align:left}.lesson-step:hover:not(:disabled){background:#151f2c}.lesson-step.current{color:#a985ff;border-left-color:var(--violet);background:#151e2b}.lesson-step:disabled{cursor:not-allowed;opacity:.48}.lesson-number{width:38px;height:38px;display:grid;place-items:center;border:1px solid #5f6a79;border-radius:50%;color:#c4cad5;background:#121a25}.lesson-step.current .lesson-number{border-color:var(--violet);color:#d6c8ff}.lesson-step.complete .lesson-number{border-color:#4c9360;color:#8fe07d}.lesson-step>span:last-child{min-width:0;display:flex;flex-direction:column;gap:6px}.lesson-step strong{font-size:15px;font-weight:600;line-height:1.3}.lesson-step small{color:#8f99aa;font-size:12px}.lesson-content{min-width:0;min-height:0;overflow:auto;padding:30px 44px 36px;background:#111925;scrollbar-width:none}.lesson-content::-webkit-scrollbar{display:none}.lesson-eyebrow{margin-bottom:8px;color:#9c77ff;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.lesson-content h1{margin:0;color:#f5f6fa;font-size:32px;line-height:1.18;letter-spacing:-.65px}.lesson-lead{max-width:720px;margin:10px 0 24px;color:var(--muted);font-size:15px;line-height:1.55}.interactive-diagram{margin:18px 0 22px;padding:14px 16px 16px;border:1px solid #303b4a;border-radius:9px;background:#0e1722}.diagram-toolbar{min-height:38px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid #293544}.diagram-toolbar>span{display:inline-flex;align-items:center;gap:8px;color:#9ea8b8;font-size:12px}.diagram-toolbar>span svg{color:#9f7cff}.diagram-toolbar button{min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 12px;border:1px solid #694ab9;border-radius:6px;color:#e8deff;background:#2a1d4d;font-size:12px;font-weight:600}.diagram-toolbar button:hover:not(:disabled){background:#3c276e}.diagram-toolbar button:disabled{cursor:wait;opacity:.75}.course-flow{display:grid;grid-template-columns:1fr 78px 1fr 78px 1fr;align-items:center;min-height:158px;padding:15px 0 11px}.flow-fragment,.map-fragment{display:contents}.course-flow-node{min-width:0;display:flex;flex-direction:column;align-items:center;gap:9px;padding:5px;border:0;border-radius:8px;color:inherit;background:transparent;text-align:center}.course-flow-node:hover{background:#141f2d}.course-flow-node>span{font-size:15px;font-weight:600}.course-flow-node small{max-width:190px;min-height:36px;color:#9da6b7;font-size:12px;line-height:1.45}.course-node{width:80px;height:80px;display:grid;place-items:center;border:2px solid currentColor;border-radius:50%;background:#111a26;font-style:normal}.course-node.cyan{color:var(--cyan)}.course-node.violet{color:var(--violet)}.course-flow-node.active .course-node{box-shadow:0 0 0 5px #27354a,0 0 24px #42c8f529}.course-flow-node.active .course-node.violet{box-shadow:0 0 0 5px #342653,0 0 24px #8b5cf62e}.course-flow-node.visited>span{color:#9ee491}.course-flow-node.visited .course-node{color:var(--green)}.course-flow.running .course-flow-node.active .course-node{animation:flowPulse .85s ease-in-out infinite alternate}.course-flow-link{position:relative;display:flex;align-items:center;justify-content:center;color:var(--cyan)}.course-flow-link:before{content:"";position:absolute;left:0;right:0;border-top:2px dashed currentColor;opacity:.7}.course-flow-link svg{position:relative;z-index:1;padding:2px;background:#111925}.course-flow-link.blocked{color:var(--orange)}.course-flow-link:not(.reached){color:#4b586b}.course-flow-link.reached{color:var(--green)}.course-flow-link.blocked.reached{color:var(--orange)}.diagram-inspector{min-height:72px;display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 14px;border:1px solid #34516a;border-radius:7px;background:#101d29}.diagram-inspector.blocked{border-color:#744225;background:#211914}.inspector-icon{width:38px;height:38px;display:grid;place-items:center;border:1px solid #4b6983;border-radius:50%;color:var(--cyan)}.diagram-inspector.blocked .inspector-icon{border-color:#8c4b27;color:var(--orange)}.diagram-inspector>div:nth-child(2){min-width:0;display:grid;grid-template-columns:auto 1fr;align-items:baseline;column-gap:9px}.diagram-inspector>div:nth-child(2)>span{color:#78869a;font-size:10px;letter-spacing:.07em;text-transform:uppercase}.diagram-inspector strong{font-size:14px}.diagram-inspector p{grid-column:1 / -1;margin:3px 0 0;color:#9fa9b9;font-size:11px;line-height:1.4}.inspector-state{display:inline-flex;align-items:center;gap:7px;padding:7px 9px;border-radius:5px;color:#9bdc90;background:#15261c;font-size:11px;font-weight:600;white-space:nowrap}.diagram-inspector.blocked .inspector-state{color:#ffad7d;background:#2b1c16}@keyframes flowPulse{0%{transform:scale(1)}to{transform:scale(1.045)}}.concept-block{margin-top:22px;padding-top:24px;border-top:1px solid #303a49}.concept-block h2{margin:0 0 16px;font-size:18px}.concept-rows{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.concept-rows div{display:flex;flex-direction:column;gap:7px}.concept-rows strong{color:#bda8ff;font-size:15px}.concept-rows span{color:var(--muted);font-size:13px;line-height:1.45}.course-command-example{overflow:hidden;margin:22px 0;border:1px solid #3a4657;border-radius:8px;background:#0e1621}.course-command-title{display:flex;align-items:center;gap:10px;padding:13px 18px;color:#a985ff;border-bottom:1px solid #303b4a;font-size:14px}.course-command-title code,.secondary-example code{color:var(--green);font-family:IBM Plex Mono,monospace}.course-command-example pre,.annotated-example pre{margin:0;padding:20px;color:#e9edf5;font-family:IBM Plex Mono,monospace;font-size:14px;line-height:1.65;white-space:pre-wrap}.explanation-callout{display:flex;align-items:flex-start;gap:12px;padding:16px 18px;color:#a7ee95;border-left:3px solid #69c95e;background:#14231c}.explanation-callout>div{display:flex;flex-direction:column;gap:5px}.explanation-callout span{color:#b9c8bd;font-size:13px;line-height:1.45}.secondary-example{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:14px;margin-top:24px;padding-top:20px;border-top:1px solid #303a49}.secondary-example>span{color:var(--muted);font-size:13px}.secondary-example code{padding:6px 10px;border:1px solid #3a4657;border-radius:5px;background:#0e1621}.secondary-example p{margin:0;color:#9ca6b6;font-size:13px}.firewall-lesson .interactive-diagram{margin-top:12px}.firewall-lesson .course-flow{min-height:148px;padding-top:8px;padding-bottom:8px}.firewall-lesson .course-node{width:78px;height:78px}.port-explanation{padding:16px 0 20px;border-bottom:1px solid #303a49}.port-explanation strong{color:#a985ff;font-size:15px}.port-explanation p{margin:7px 0 0;color:var(--muted);font-size:13px;line-height:1.5}.annotated-example{display:grid;grid-template-columns:minmax(360px,.62fr) minmax(210px,.38fr);gap:26px;padding-top:20px}.example-label{display:block;margin-bottom:8px;color:#a985ff;font-size:14px;font-weight:600}.example-command{display:block;margin-bottom:8px;color:var(--green);font-family:IBM Plex Mono,monospace;font-size:14px;font-weight:500}.annotated-example pre{border:1px solid #3a4657;border-radius:7px;background:#0e1621}.annotated-example ul{display:flex;flex-direction:column;justify-content:center;gap:22px;margin:22px 0 0;padding:0;list-style:none}.annotated-example li{display:grid;grid-template-columns:10px 1fr;gap:10px;color:#aeb6c5;font-size:12px;line-height:1.45}.annotated-example li i{width:8px;height:8px;margin-top:5px;border-radius:50%}.cyan-dot{background:var(--cyan)}.violet-dot{background:var(--violet)}.orange-dot{background:var(--orange)}.quiz-scenario{display:flex;align-items:center;gap:13px;margin:24px 0;padding:16px 18px;color:#ffb184;border-left:3px solid var(--orange);background:#251b18}.quiz-scenario>div{display:flex;flex-direction:column;gap:4px}.quiz-scenario span{color:#c9b6ab;font-size:13px}.quiz-options{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;border:0}.quiz-options legend{margin-bottom:12px;font-size:15px;font-weight:600}.quiz-options label{min-height:58px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:13px;padding:0 18px;border:1px solid #3a4657;border-radius:7px;background:#121b27}.quiz-options label:hover{border-color:#6d5d9c}.quiz-options label.selected{border-color:var(--violet);background:#1b1730}.quiz-options label.correct{border-color:#529c5e;background:#14261b}.quiz-options input{width:18px;height:18px;accent-color:var(--violet)}.quiz-options label>svg{color:var(--green)}.quiz-feedback{margin-top:14px;padding:13px 16px;font-size:13px;line-height:1.45}.quiz-feedback.success{color:#a7e99a;background:#14261b}.quiz-feedback.error{color:#ffb08a;background:#281b18}.lesson-meta{min-height:0;padding:28px 30px;border-left:1px solid var(--line);background:#101823}.meta-title{display:block;margin-bottom:16px;color:#a985ff;font-size:14px;font-weight:600}.lesson-meta>strong{font-size:18px}.course-progress-bar{height:8px;margin-top:18px;overflow:hidden;border-radius:10px;background:#273141}.course-progress-bar i{display:block;height:100%;border-radius:inherit;background:var(--violet);transition:width .2s ease}.meta-time{display:flex;align-items:center;gap:9px;margin-top:24px;color:var(--muted);font-size:14px}.meta-divider{height:1px;margin:30px 0;background:#303a49}.meta-tip{display:flex;align-items:flex-start;gap:12px;color:#a985ff}.meta-tip svg{flex:0 0 auto;padding:5px;border:1px solid var(--violet);border-radius:50%}.meta-tip p{margin:0;color:#aeb6c5;font-size:13px;line-height:1.5}.scenario-ready{display:flex;align-items:flex-start;gap:9px;margin-top:30px;padding:14px;color:#b6a2ee;border:1px solid #4c3e71;border-radius:7px;font-size:12px;line-height:1.45}.course-footer{min-width:0;display:flex;align-items:center;gap:24px;padding:18px 28px;border-top:1px solid var(--line);background:#0d141e}.course-back,.course-next{min-height:54px;display:inline-flex;align-items:center;justify-content:center;gap:10px;border-radius:7px;color:var(--text);font-weight:600}.course-back{min-width:132px;border:0;background:transparent}.course-back:hover:not(:disabled){background:#151e2b}.course-back:disabled{opacity:.3;cursor:default}.footer-lesson-name{display:flex;flex-direction:column;gap:3px;margin-right:auto}.footer-lesson-name span{color:#8e98aa;font-size:11px;text-transform:uppercase;letter-spacing:.08em}.footer-lesson-name strong{font-size:14px}.course-next{min-width:222px;padding:0 24px;border:1px solid var(--violet);background:var(--violet-strong)}.course-next:hover:not(:disabled){background:#6d28d9;transform:translateY(-1px)}.course-next:disabled{cursor:not-allowed;opacity:.45}.track-shell{min-height:100vh;background:var(--bg)}.track-topbar{min-height:92px;display:flex;align-items:center;gap:25px;padding:18px 30px;border-bottom:1px solid var(--line);background:#0d131d}.track-heading{min-width:0;display:flex;align-items:center;gap:13px;flex:1;color:#b89cff}.track-heading>div{min-width:0;display:flex;flex-direction:column;gap:4px}.track-heading strong{color:var(--text);font-size:19px;font-weight:600}.track-heading span{color:var(--muted);font-size:13px}.track-progress{flex:0 0 auto;display:flex;align-items:center;gap:14px;color:var(--muted);font-size:13px}.track-progress .progress-track{width:150px}.track-layout{min-height:calc(100vh - 92px);display:grid;grid-template-columns:330px minmax(0,1fr)}.track-intro{padding:52px 36px;border-right:1px solid var(--line);background:#101823}.track-intro h1{margin:12px 0 18px;font-size:34px;line-height:1.08;letter-spacing:-.8px}.track-intro>p{margin:0;color:var(--muted);font-size:15px;line-height:1.65}.learning-mode{margin-top:26px;padding:16px;border:1px solid #334052;border-radius:9px;background:#0d151f}.learning-mode>span{display:block;margin-bottom:11px;color:#c8d0dc;font-size:12px;font-weight:600}.learning-mode>div{display:grid;grid-template-columns:1fr 1fr;gap:7px}.learning-mode button{min-height:52px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:7px 9px;border:1px solid #39475a;border-radius:7px;color:#9ca7b7;background:#141e2a;font-size:11px;font-weight:600;line-height:1.2}.learning-mode button:hover{border-color:#6e56b4;color:#e8e2fa}.learning-mode button.active{border-color:#815bdc;color:#f0eaff;background:#352461;box-shadow:inset 0 0 0 1px #4d367f}.learning-mode small{display:block;margin-top:11px;color:#7f8b9c;font-size:11px;line-height:1.45}.track-outcome{display:flex;align-items:flex-start;gap:12px;margin:32px 0;padding:18px;border:1px solid #34523e;border-radius:9px;background:#102019;color:#87db75}.track-outcome>div{display:flex;flex-direction:column;gap:5px}.track-outcome strong{color:#b9efae;font-size:14px}.track-outcome span{color:#8fa99a;font-size:12px;line-height:1.45}.track-stack{padding-top:25px;border-top:1px solid var(--line)}.track-stack>span{color:#929cad;font-size:12px;text-transform:uppercase;letter-spacing:.08em}.track-stack>div{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.track-stack i{padding:6px 9px;border:1px solid #3d4756;border-radius:5px;color:#b8c0ce;background:#141d29;font-size:12px;font-style:normal}.scenario-catalog{min-width:0;padding:38px 42px 54px;background:#111925}.catalog-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:26px}.catalog-heading h2{margin:5px 0 0;font-size:27px;letter-spacing:-.45px}.catalog-heading>span{color:var(--muted);font-size:13px}.category-list{display:flex;flex-direction:column;gap:34px}.lab-category{min-width:0;padding-top:25px;border-top:1px solid #344052}.lab-category:first-child{padding-top:0;border-top:0}.category-heading{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:15px;margin-bottom:17px}.category-index{width:40px;height:40px;display:grid;place-items:center;border:1px solid #5f47a0;border-radius:9px;color:#b69afc;background:#211936;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500}.category-copy{min-width:0}.category-copy>span{color:#8d73d7;font-size:10px;font-weight:600;letter-spacing:.09em;text-transform:uppercase}.category-copy h3{margin:3px 0 2px;font-size:20px;letter-spacing:-.25px}.category-copy p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.category-progress{min-width:145px;display:flex;flex-direction:column;align-items:flex-end;gap:7px;color:#8f99aa;font-size:11px}.category-progress .progress-track{width:145px}.scenario-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.scenario-card{position:relative;min-width:0;padding:18px;overflow:hidden;border:1px solid #303b4a;border-radius:9px;background:#0f1722;transition:border-color .16s ease,transform .16s ease,background .16s ease}.scenario-card:hover{border-color:#66519c;background:#121c29;transform:translateY(-2px)}.scenario-card.complete{border-color:#31583b}.scenario-card.locked{border-color:#27313e;background:#0d141d}.scenario-card.locked:hover{border-color:#334052;transform:none}.scenario-card.locked .scenario-icon,.scenario-card.locked .scenario-skills,.scenario-card.locked h3,.scenario-card.locked>p{opacity:.55}.scenario-card-top{min-height:21px;display:flex;align-items:center;gap:8px}.scenario-order{color:#647085;font-family:IBM Plex Mono,monospace;font-size:11px}.scenario-done{margin-left:auto;display:inline-flex;align-items:center;gap:5px;color:#8de27c;font-size:12px}.scenario-locked{margin-left:auto;display:inline-flex;align-items:center;gap:5px;color:#778397;font-size:12px}.scenario-icon{width:44px;height:44px;display:grid;place-items:center;margin:15px 0 12px;border:1px solid #4d3b7a;border-radius:8px;color:#a985ff;background:#1b1630}.scenario-icon svg{width:27px;height:27px}.scenario-track{color:#9d7cf5;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.scenario-card h3{margin:5px 0 7px;font-size:18px;line-height:1.22;letter-spacing:-.2px}.scenario-card>p{min-height:35px;margin:0;color:var(--muted);font-size:12px;line-height:1.45}.scenario-skills{display:flex;flex-wrap:wrap;gap:5px;margin:13px 0 15px}.scenario-skills span{padding:4px 7px;border-radius:4px;color:#9fa8b8;background:#192332;font-size:10px}.scenario-card-footer{display:flex;align-items:center;gap:11px;padding-top:13px;border-top:1px solid #293443;color:#8f99aa;font-size:11px}.scenario-card-footer>span{display:inline-flex;align-items:center;gap:5px}.scenario-card-footer button{min-height:34px;display:inline-flex;align-items:center;gap:6px;margin-left:auto;padding:0 11px;border:1px solid #7654ce;border-radius:6px;color:#ece7ff;background:#362266;font-size:11px;font-weight:600;white-space:nowrap}.scenario-card-footer button:hover{background:#4a2b8d}.scenario-card-footer button:disabled{cursor:not-allowed;border-color:#344050;color:#778397;background:#18212c}.track-return{min-width:92px}@media(min-width:1500px){.scenario-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:1180px){.course-workspace{grid-template-columns:218px minmax(0,1fr)}.lesson-meta{display:none}.course-progress-head{width:205px}.annotated-example{grid-template-columns:1fr}.annotated-example ul{display:grid;grid-template-columns:repeat(3,1fr);margin-top:0;gap:12px}.track-layout{grid-template-columns:275px minmax(0,1fr)}.track-intro{padding:40px 28px}.scenario-catalog{padding:34px 28px 46px}}@media(max-width:880px){.course-shell{height:auto;min-height:100vh;grid-template-rows:auto auto auto;overflow:visible}.course-topbar{flex-wrap:wrap;gap:15px;padding:17px 20px}.course-topbar .header-divider,.course-track-name{display:none}.course-heading{order:3;min-width:0;flex-basis:100%}.course-progress-head{margin-left:auto;padding-left:0;border:0;width:auto}.course-progress-head .progress-track{display:none}.course-workspace{display:block}.lesson-sidebar{width:100%;min-width:0;position:sticky;top:0;z-index:5;padding:10px 14px;border-right:0;border-bottom:1px solid var(--line);overflow:hidden}.lesson-sidebar-title{display:none}.lesson-list{width:100%;min-width:0;flex-direction:row;gap:4px;overflow-x:auto;scrollbar-width:none}.lesson-list::-webkit-scrollbar{display:none}.lesson-list:before{display:none}.lesson-step{min-width:155px;min-height:64px;grid-template-columns:34px 1fr;padding:7px;border-left:0;border-bottom:3px solid transparent}.lesson-step.current{border-bottom-color:var(--violet)}.lesson-number{width:30px;height:30px}.lesson-content{padding:28px 22px 38px;overflow:visible}.course-flow{grid-template-columns:1fr;gap:10px}.course-flow-link{min-height:28px;transform:rotate(90deg)}.concept-rows{grid-template-columns:1fr}.course-footer{position:sticky;bottom:0;z-index:6;padding:14px 18px}.footer-lesson-name{display:none}.course-next{flex:1}.track-topbar{flex-wrap:wrap;padding:17px 20px}.track-topbar .header-divider{display:none}.track-heading{order:3;flex-basis:100%}.track-progress{margin-left:auto}.track-layout{display:block}.track-intro{padding:32px 24px;border-right:0;border-bottom:1px solid var(--line)}.track-intro h1{max-width:650px;font-size:30px}.track-outcome{max-width:520px;margin:24px 0}.scenario-catalog{padding:30px 22px 42px}.category-progress{min-width:120px}.category-progress .progress-track{width:120px}}@media(max-width:520px){.course-progress-head{display:none}.course-topbar .hint-button{margin-left:auto}.course-heading strong{font-size:17px}.lesson-content h1{font-size:27px}.course-command-example pre,.annotated-example pre{padding:16px;font-size:12px}.secondary-example,.annotated-example,.annotated-example ul{grid-template-columns:1fr}.course-back{min-width:54px;width:54px;font-size:0}.course-next{min-width:0;padding:0 14px;font-size:13px}.interactive-diagram{padding:12px}.diagram-toolbar{align-items:stretch;flex-direction:column}.diagram-toolbar button{width:100%}.diagram-inspector{grid-template-columns:38px minmax(0,1fr)}.inspector-state{grid-column:1 / -1;justify-content:center}.track-topbar{gap:14px}.track-progress{display:none}.track-heading strong{font-size:17px}.track-heading span{white-space:normal}.track-intro{padding:28px 18px}.track-intro h1{font-size:28px}.scenario-catalog{padding:27px 16px 38px}.catalog-heading{display:block}.catalog-heading>span{display:block;margin-top:9px}.category-list{gap:30px}.category-heading{grid-template-columns:40px minmax(0,1fr);align-items:start;gap:12px}.category-index{width:36px;height:36px}.category-copy h3{font-size:19px}.category-progress{grid-column:2;width:100%;min-width:0;align-items:stretch;margin-top:3px}.category-progress .progress-track{width:100%}.scenario-grid{grid-template-columns:1fr}.scenario-card{padding:19px}}@media(max-width:1100px){.topbar{gap:16px}.section-label,.topbar>.header-divider:nth-of-type(2){display:none}.mission-progress{flex-basis:190px}.mission-progress-row{align-items:flex-start;flex-direction:column;gap:6px}.workspace{grid-template-columns:minmax(0,1.65fr) minmax(280px,.75fr)}.validation-message{display:none}}@media(max-width:820px){.app-shell{height:auto;min-height:100vh;grid-template-rows:auto auto auto;overflow:visible}.topbar{flex-wrap:wrap;padding:18px 20px}.brand{font-size:23px}.topbar>.header-divider{display:none}.lab-heading{min-width:0;order:3;flex-basis:100%}.mission-progress{margin-left:auto;padding-left:0;border-left:0;flex-basis:auto}.mission-progress-row .progress-track{display:none}.hint-button{min-height:40px}.lab-heading p{white-space:normal}.workspace{min-height:900px;grid-template-columns:1fr;grid-template-rows:minmax(560px,1fr) auto}.terminal-panel{border-right:0;border-bottom:1px solid var(--line)}.system-panel{min-height:550px}.actionbar{flex-wrap:wrap;padding:18px 20px}.task-summary{min-width:0;flex:1 1 100%}.action-buttons{width:100%}.secondary-button,.primary-button{flex:1;min-width:0;padding:0 14px}}@media(max-width:520px){.mission-progress{display:none}.hint-button{margin-left:auto;font-size:0;padding:0 12px}.hint-button svg{width:22px;height:22px}.lab-heading h1{font-size:18px}.panel-header{padding:0 18px}.ghost-button{font-size:0;padding:0 11px}.terminal-body{padding:22px 18px 32px}.secondary-button{font-size:0;flex:0 0 54px;padding:0}.primary-button{font-size:14px}}.editor-entry,.editor-header-button,.editor-document-actions button,.editor-primary,.editor-secondary{min-height:38px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 13px;border:1px solid #455164;border-radius:7px;color:var(--text);background:#141d29;font-size:12px;font-weight:600;white-space:nowrap}.editor-entry:hover,.editor-header-button:hover,.editor-document-actions button:hover,.editor-secondary:hover{border-color:#7559bd;background:#1b2635}.editor-entry{flex:0 0 auto;color:#d9ceff;border-color:#54417e;background:#171425}.editor-shell{min-height:100vh;height:100vh;display:grid;grid-template-rows:82px minmax(0,1fr);overflow:hidden;background:var(--bg)}.editor-topbar{min-width:0;display:flex;align-items:center;gap:20px;padding:15px 26px;border-bottom:1px solid var(--line);background:#0d131d}.editor-heading{min-width:210px;display:flex;align-items:center;gap:11px;color:#b494ff}.editor-heading>div{display:flex;flex-direction:column;gap:3px}.editor-heading strong{color:var(--text);font-size:17px}.editor-heading span{color:var(--muted);font-size:11px}.local-storage-state{min-width:0;display:flex;align-items:center;gap:9px;margin-left:auto;color:#87dc76}.local-storage-state>span{min-width:0;display:flex;flex-direction:column;gap:2px}.local-storage-state strong{font-size:11px;text-transform:uppercase;letter-spacing:.07em}.local-storage-state span span{max-width:250px;color:#8e99aa;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.editor-header-button.primary,.editor-primary{border-color:#805bdd;background:#4b278e}.editor-header-button.primary:hover,.editor-primary:hover:not(:disabled){background:#6230bd}.editor-layout{min-height:0;display:grid;grid-template-columns:280px minmax(0,1fr)}.draft-library{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;border-right:1px solid var(--line);background:#0e1620}.draft-library>header{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;border-bottom:1px solid var(--line)}.draft-library>header>div{display:flex;flex-direction:column;gap:4px}.draft-library>header span{color:#8b96a8;font-size:10px;text-transform:uppercase;letter-spacing:.08em}.draft-library>header strong{font-size:14px}.draft-library>header button{width:36px;height:36px;display:grid;place-items:center;border:1px solid #6e51b5;border-radius:7px;color:#d8ccff;background:#271c42}.draft-list{min-height:0;overflow-y:auto;padding:10px}.draft-list>button{width:100%;display:grid;grid-template-columns:34px minmax(0,1fr);gap:10px;margin-bottom:7px;padding:12px;border:1px solid transparent;border-radius:8px;color:var(--text);background:transparent;text-align:left}.draft-list>button:hover{background:#151f2c}.draft-list>button.active{border-color:#604a99;background:#1b1730;box-shadow:inset 3px 0 #8b5cf6}.draft-number{width:30px;height:30px;display:grid;place-items:center;border:1px solid #4b3c74;border-radius:7px;color:#b397f8;background:#211936;font-family:IBM Plex Mono,monospace;font-size:10px}.draft-list button>div{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px}.draft-list button strong{width:100%;overflow:hidden;font-size:12px;white-space:nowrap;text-overflow:ellipsis}.draft-list button small{width:100%;overflow:hidden;color:#7f8b9e;font-size:10px;white-space:nowrap;text-overflow:ellipsis}.draft-status{display:inline-flex;align-items:center;gap:4px;margin-top:3px;color:#a6afbe;font-size:9px;text-transform:uppercase;letter-spacing:.06em}.draft-status.ready{color:#8ce07b}.draft-storage-note{display:flex;align-items:flex-start;gap:10px;margin:10px;padding:13px;border:1px solid #324052;border-radius:8px;color:#9e83eb;background:#111b27}.draft-storage-note>div{display:flex;flex-direction:column;gap:4px}.draft-storage-note strong{color:#c8d0dc;font-size:11px}.draft-storage-note span{color:#7f8b9d;font-size:10px;line-height:1.45}.editor-workspace{min-width:0;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr) 72px;background:#111925}.editor-titlebar{min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:15px 26px;border-bottom:1px solid var(--line)}.editor-titlebar>div:first-child{min-width:0;display:flex;align-items:flex-start;gap:12px}.editor-titlebar h1{max-width:620px;margin:0;overflow:hidden;font-size:20px;white-space:nowrap;text-overflow:ellipsis}.editor-titlebar p{margin:4px 0 0;color:#7e899a;font-size:10px}.editor-document-actions{display:flex;align-items:center;gap:8px}.editor-document-actions button{min-height:34px;padding:0 10px;font-size:10px}.editor-document-actions button.danger{color:#ffb091;border-color:#674538;background:#211713}.editor-document-actions button.danger:hover{border-color:#ad603f;background:#301c16}.editor-stepper{min-width:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:0 26px;border-bottom:1px solid var(--line);background:#0f1722}.editor-stepper button{min-width:0;min-height:72px;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:9px;padding:10px 12px;border:0;border-bottom:3px solid transparent;color:#788497;background:transparent;text-align:left}.editor-stepper button:hover{color:#c9d0db;background:#141e2b}.editor-stepper button.active{color:#dcd3f8;border-bottom-color:var(--violet);background:#19172a}.editor-stepper button.visited{color:#8bd77d}.editor-stepper button>span{width:27px;height:27px;display:grid;place-items:center;border:1px solid currentColor;border-radius:50%;font-family:IBM Plex Mono,monospace;font-size:10px}.editor-stepper button>div{min-width:0;display:flex;flex-direction:column;gap:3px}.editor-stepper strong{font-size:11px}.editor-stepper small{overflow:hidden;font-size:9px;white-space:nowrap;text-overflow:ellipsis}.editor-stage{min-height:0;overflow:auto;padding:24px 28px 38px}.editor-stage-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:21px}.editor-stage-heading>div{min-width:0}.editor-stage-heading>div>span{color:#9678e6;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}.editor-stage-heading h2{margin:4px 0 2px;font-size:24px;letter-spacing:-.35px}.editor-stage-heading p{margin:0;color:var(--muted);font-size:11px}.editor-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.editor-field{min-width:0;display:flex;flex-direction:column;gap:7px;color:#b9c2cf;font-size:11px;font-weight:600}.editor-field.wide,.editor-subsection.wide{grid-column:1 / -1}.editor-field input,.editor-field textarea,.editor-field select,.flow-author-card input,.flow-author-card select{width:100%;border:1px solid #3a4657;border-radius:7px;outline:none;color:#edf0f6;background:#0d151f;font-family:Space Grotesk,sans-serif;font-size:12px}.editor-field input,.editor-field select,.flow-author-card input,.flow-author-card select{min-height:40px;padding:0 11px}.editor-field textarea{min-height:64px;resize:vertical;padding:10px 11px;line-height:1.45}.editor-field input:focus,.editor-field textarea:focus,.editor-field select:focus,.flow-author-card input:focus,.flow-author-card select:focus{border-color:#8b5cf6;box-shadow:0 0 0 2px #8b5cf626}.editor-field small{color:#788496;font-size:9px;font-weight:400}.editor-subsection{margin-top:3px;padding:14px 0 2px;border-top:1px solid #303b4a}.editor-subsection>div{display:flex;flex-direction:column;gap:3px}.editor-subsection span{font-size:13px;font-weight:600}.editor-subsection small{color:#8792a2;font-size:10px}.course-author-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(310px,.75fr);align-items:start;gap:22px}.flow-author-card{display:grid;grid-template-columns:30px minmax(120px,.55fr) minmax(190px,1fr) 120px;align-items:center;gap:8px;padding:10px;border:1px solid #303c4c;border-radius:8px;background:#0f1722}.flow-author-card>span{width:26px;height:26px;display:grid;place-items:center;border-radius:50%;color:#c5b4f6;background:#2a1d4b;font-family:IBM Plex Mono,monospace;font-size:10px}.course-author-preview{position:sticky;top:0;padding:20px;border:1px solid #3b4657;border-radius:10px;background:#0d151f;box-shadow:0 18px 40px #0003}.preview-label{display:flex;align-items:center;gap:7px;margin-bottom:22px;color:#9a83df;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.07em}.course-author-preview h3{margin:6px 0 9px;font-size:21px;line-height:1.2}.course-author-preview>p{margin:0 0 19px;color:var(--muted);font-size:11px;line-height:1.55}.author-flow{display:flex;flex-direction:column;gap:7px}.author-flow-item{min-width:0;display:grid;grid-template-columns:27px minmax(0,1fr) auto;align-items:center;gap:8px;padding:9px;border:1px solid #2f3c4d;border-radius:7px;background:#111c28}.author-flow-item>span{width:25px;height:25px;display:grid;place-items:center;border:1px solid #6a4dab;border-radius:50%;color:#bb9fff;font-size:9px}.author-flow-item>div{min-width:0;display:flex;flex-direction:column;gap:2px}.author-flow-item strong{font-size:10px}.author-flow-item small{overflow:hidden;color:#7f8b9c;font-size:9px;white-space:nowrap;text-overflow:ellipsis}.author-flow-item>svg{color:#61459e;transform:rotate(90deg)}.preview-command{margin-top:15px;overflow:hidden;border:1px solid #303b4a;border-radius:7px;background:#0a1119}.preview-command code{display:block;padding:9px 11px;color:#b8a0fb;border-bottom:1px solid #303b4a;font-family:IBM Plex Mono,monospace;font-size:9px}.preview-command pre{min-height:54px;margin:0;padding:10px 11px;overflow:auto;color:#b7c0cd;font-family:IBM Plex Mono,monospace;font-size:9px;white-space:pre-wrap}.practice-author-list{display:flex;flex-direction:column;gap:12px}.author-guidance{display:flex;align-items:flex-start;gap:10px;padding:13px 15px;border:1px solid #465b3f;border-radius:8px;color:#89da78;background:#102018}.author-guidance>div{display:flex;flex-direction:column;gap:3px}.author-guidance strong{color:#b8e9ae;font-size:12px}.author-guidance span{color:#829b88;font-size:10px}.command-author-card{border:1px solid #303c4c;border-radius:9px;background:#0f1722}.command-author-card>header{min-height:56px;display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid #2c3746}.command-author-card>header>span{width:29px;height:29px;display:grid;place-items:center;border:1px solid #694dad;border-radius:7px;color:#bea4ff;background:#211838;font-family:IBM Plex Mono,monospace;font-size:10px}.command-author-card>header>div{display:flex;flex-direction:column;gap:1px}.command-author-card>header small{color:#788497;font-size:8px;text-transform:uppercase;letter-spacing:.08em}.command-author-card>header strong{font-size:12px}.command-author-card>header select{min-height:32px;margin-left:auto;padding:0 9px;border:1px solid #3b4859;border-radius:6px;color:#aeb7c5;background:#131d29;font-size:9px}.command-author-card .editor-form-grid{padding:14px}.validation-author-layout{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(0,1.2fr);gap:18px}.validation-card,.manifest-preview{min-width:0;border:1px solid #344153;border-radius:10px;background:#0f1722}.validation-card>header{display:flex;align-items:center;gap:12px;padding:18px;color:#ff9b69;border-bottom:1px solid #344153}.validation-card>header.valid{color:#83dc70}.validation-card>header>div{display:flex;flex-direction:column;gap:4px}.validation-card>header strong{color:var(--text);font-size:14px}.validation-card>header span{color:#8e99a9;font-size:10px}.validation-list{display:flex;flex-direction:column;gap:8px;padding:17px}.validation-list>div{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid #314737;border-radius:7px;color:#98dd89;background:#102019;font-size:10px}.validation-list>div.error{align-items:flex-start;color:#ffa379;border-color:#563b31;background:#211611}.validation-list>div.error span{display:flex;flex-direction:column;gap:2px;color:#b99687}.validation-list>div.error strong{color:#ffb08c;font-size:9px;text-transform:uppercase}.validation-card>.editor-primary{margin:0 17px 17px}.editor-primary:disabled{cursor:not-allowed;opacity:.38}.manifest-preview{overflow:hidden}.manifest-preview>header{min-height:64px;display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #344153;color:#a78bfa}.manifest-preview>header>div{display:flex;flex-direction:column;gap:2px}.manifest-preview>header strong{color:var(--text);font-size:12px}.manifest-preview>header span{color:#7f8b9d;font-size:9px}.manifest-preview>header>span{margin-left:auto;padding:4px 7px;border-radius:5px;background:#1b2634}.manifest-preview pre{height:370px;margin:0;padding:16px;overflow:auto;color:#aab5c4;background:#0a1119;font-family:IBM Plex Mono,monospace;font-size:9px;line-height:1.55}.editor-test-layout{min-height:430px;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.55fr);border:1px solid #344153;border-radius:10px;overflow:hidden;background:#0f1722}.test-terminal{min-width:0;display:grid;grid-template-rows:58px minmax(0,1fr);border-right:1px solid #344153}.test-terminal>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px;border-bottom:1px solid #344153}.test-terminal>header>div{display:flex;align-items:center;gap:8px;color:#a88cff}.test-terminal>header strong{color:var(--text);font-size:12px}.test-terminal>header button{min-height:31px;padding:0 9px;border:1px solid #445165;border-radius:6px;color:#b8c1ce;background:#141e2a;font-size:9px}.test-terminal-body{min-height:0;overflow:auto;padding:18px;background:#0a1119}.test-terminal-body>div,.test-terminal-body form{min-height:23px;color:#d7dce5;font-family:IBM Plex Mono,monospace;font-size:10px;line-height:1.55;white-space:pre-wrap}.test-terminal-body>div.warning{color:#ffd27c}.test-terminal-body>div.error{color:#ff9b69}.test-terminal-body>div.success{color:#93e780}.test-terminal-body div span,.test-terminal-body form label{margin-right:7px;color:#7cdc69}.test-terminal-body form{display:flex;align-items:baseline;margin-top:9px}.test-terminal-body form label{flex:0 0 auto}.test-terminal-body form input{min-width:0;flex:1;padding:0;border:0;outline:0;color:#eef1f6;background:transparent;font:inherit}.test-mission{min-width:0;padding:20px;background:#111b27}.test-mission h3{margin:5px 0 8px;font-size:19px;line-height:1.2}.test-mission>p{margin:0;color:var(--muted);font-size:10px;line-height:1.5}.test-progress{margin:18px 0 13px}.test-progress>span{display:block;margin-bottom:7px;color:#8d98a9;font-size:9px}.test-progress .progress-track{width:100%}.test-task-list{display:flex;flex-direction:column;gap:7px}.test-task-list button{min-width:0;display:grid;grid-template-columns:25px minmax(0,1fr);align-items:center;gap:8px;padding:9px;border:1px solid #344153;border-radius:7px;color:#b3bdca;background:#0d151f;text-align:left}.test-task-list button:hover{border-color:#674ea3;background:#151d2b}.test-task-list button.done{color:#93dd85;border-color:#3a573e;background:#102019}.test-task-list button>span{width:24px;height:24px;display:grid;place-items:center;border:1px solid currentColor;border-radius:50%}.test-task-list button>div{min-width:0;display:flex;flex-direction:column;gap:2px}.test-task-list button strong{font-size:9px;text-transform:uppercase;letter-spacing:.06em}.test-task-list button small{overflow:hidden;color:#778496;font-family:IBM Plex Mono,monospace;font-size:8px;white-space:nowrap;text-overflow:ellipsis}.runtime-state{display:flex;align-items:center;gap:7px;margin-top:14px;padding:10px;border:1px solid #344153;border-radius:7px;color:#8e99a9;background:#0f1722;font-size:9px}.runtime-state.ready{color:#8cdd7d;border-color:#3b5841;background:#102019}.editor-footer{min-width:0;display:flex;align-items:center;gap:14px;padding:11px 26px;border-top:1px solid var(--line);background:#0d141e}.editor-footer>span{display:inline-flex;align-items:center;gap:6px;margin:0 auto;color:#7e8999;font-size:9px}.editor-footer .editor-primary,.editor-footer .editor-secondary{min-height:42px}@media(max-width:1120px){.local-storage-state{display:none}.editor-layout{grid-template-columns:230px minmax(0,1fr)}.course-author-layout{grid-template-columns:1fr}.course-author-preview{position:static}.validation-author-layout,.editor-test-layout{grid-template-columns:1fr}.test-terminal{min-height:390px;border-right:0;border-bottom:1px solid #344153}}@media(max-width:820px){.editor-shell{height:auto;min-height:100vh;overflow:visible;grid-template-rows:auto auto}.editor-topbar{flex-wrap:wrap;gap:12px;padding:14px 18px}.editor-topbar .header-divider,.editor-heading span{display:none}.editor-heading{min-width:0;margin-right:auto}.editor-layout{display:block}.draft-library{display:block;border-right:0;border-bottom:1px solid var(--line)}.draft-library>header,.draft-storage-note{display:none}.draft-list{display:flex;gap:7px;overflow-x:auto;padding:9px 14px}.draft-list>button{min-width:220px;margin:0}.editor-workspace{display:block}.editor-titlebar{padding:14px 18px}.editor-document-actions button{font-size:0;width:34px;padding:0}.editor-stepper{padding:0 12px;overflow-x:auto}.editor-stepper button{min-width:145px}.editor-stage{padding:22px 18px 32px}.editor-footer{position:sticky;bottom:0;z-index:5;padding:10px 14px}.editor-footer>span{display:none}.editor-footer .editor-primary{margin-left:auto}}@media(max-width:560px){.editor-header-button{width:38px;padding:0;font-size:0}.editor-titlebar h1{max-width:210px;font-size:16px}.editor-form-grid{grid-template-columns:1fr}.editor-field.wide,.editor-subsection.wide{grid-column:auto}.flow-author-card{grid-template-columns:28px minmax(0,1fr)}.flow-author-card input:nth-of-type(2),.flow-author-card select{grid-column:2}.editor-stage-heading{align-items:flex-start}.editor-stage-heading .draft-status{flex:0 0 auto}.editor-test-layout{min-height:700px}.editor-footer button{min-width:44px;padding:0 10px;font-size:0}.editor-footer button svg{margin:0}}
