.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
  Theme: GitHub
  Description: Light theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-light
  Current colors taken from GitHub's CSS
*/.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}:root{--bg-page: #f6f8fb;--bg-surface: #ffffff;--bg-soft: #f0f4f8;--bg-subtle: #f8fafc;--text-main: #172033;--text-secondary: #5b667a;--text-muted: #8a94a6;--border: #d8e0ea;--border-soft: #e7edf5;--primary: #2563eb;--primary-soft: #eaf1ff;--success: #16a34a;--success-soft: #eaf7ee;--warning: #d97706;--warning-soft: #fff4df;--danger: #dc2626;--danger-soft: #fff1f1;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 10px 30px rgba(15, 23, 42, .08)}*{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;background:var(--bg-page);color:var(--text-main);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;overflow-x:hidden}a{color:var(--primary)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#edf2f7}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.surface{background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:8px;box-shadow:var(--shadow-sm)}.section-title{color:var(--text-main);font-size:18px;font-weight:700;line-height:1.3}.muted{color:var(--text-secondary)}.app-menu .ant-menu-item,.app-menu .ant-menu-submenu-title{border-radius:8px}.app-menu .ant-menu-item-group-title{padding:16px 16px 6px}.app-sider .ant-layout-sider-children{height:100%;min-height:0}.sidebar-scroll{height:calc(100vh - 48px);overflow-x:hidden;overflow-y:auto;padding-bottom:16px;-ms-overflow-style:none;scrollbar-width:none}.sidebar-scroll .app-menu{padding-bottom:24px!important}.drawer-scroll{height:100%;overflow-x:hidden;overflow-y:auto;padding-bottom:calc(24px + env(safe-area-inset-bottom));-ms-overflow-style:none;scrollbar-width:none}.sidebar-scroll::-webkit-scrollbar,.drawer-scroll::-webkit-scrollbar{display:none;width:0;height:0}.ant-layout-sider-trigger{border-top:1px solid var(--border-soft);background:#fff!important;color:var(--text-secondary)!important}.phase-card,.layer-card,.achievement-card,.task-card{transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.phase-card:hover,.task-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.layer-card:hover,.achievement-card:hover{transform:translateY(-2px)}.markdown-body h2{margin:30px 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-soft);color:#1d4ed8;font-size:20px;line-height:1.35}.markdown-body h3{margin:22px 0 10px;color:#0f766e;font-size:16px;line-height:1.4}.markdown-body p{margin-bottom:14px;color:var(--text-secondary);font-size:14px;line-height:1.9}.markdown-body strong{color:var(--text-main)}.markdown-body code{padding:2px 6px;border:1px solid #dbeafe;border-radius:5px;background:#eff6ff;color:#1d4ed8;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:13px}.markdown-body pre{margin:14px 0;padding:16px;overflow-x:auto;border:1px solid var(--border-soft);border-radius:8px;background:#f8fafc}.markdown-body pre code{padding:0;border:0;background:transparent;color:#334155;font-size:13px}.markdown-body table{width:100%;margin:14px 0;border-collapse:collapse;overflow:hidden;border-radius:8px}.markdown-body th{padding:9px 12px;border:1px solid var(--border);background:#f1f5f9;color:var(--text-main);text-align:left;font-size:13px}.markdown-body td{padding:9px 12px;border:1px solid var(--border-soft);color:var(--text-secondary);font-size:13px;line-height:1.65}.markdown-body ul,.markdown-body ol{margin-bottom:14px;padding-left:22px}.markdown-body li{margin-bottom:5px;color:var(--text-secondary);font-size:14px;line-height:1.85}.terminal{overflow-y:auto;padding:16px;border:1px solid #dbe4ef;border-radius:8px;background:#f8fafc;color:#263445;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:12px;line-height:1.65;white-space:pre-wrap;word-break:break-word}.react-flow{background:#f8fafc}.react-flow__background pattern circle{fill:#cbd5e1}.ant-tabs-tabpane{animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.58}}@media (max-width: 900px){.desktop-only{display:none!important}}@media (max-width: 760px){html,body,#root{width:100%;max-width:100vw;overflow-x:hidden}.ant-layout,.ant-layout-content,.ant-row,.ant-col{min-width:0!important;max-width:100vw}.surface{max-width:100%;min-width:0;overflow-x:hidden}.surface:not(.ant-card){width:100%!important;max-width:calc(100vw - 28px)!important;padding:14px!important;margin-left:0!important;margin-right:0!important}.ant-card-head{padding-inline:14px!important}.ant-card-body{padding:14px!important}.ant-tabs-tab{margin-inline-start:0!important}.phase-tabs>.ant-tabs-nav{margin:0!important;padding:8px!important;border-bottom:0!important;background:#fff}.phase-tabs>.ant-tabs-nav:before{display:none}.phase-tabs .ant-tabs-nav-wrap{overflow-x:auto;overflow-y:hidden}.phase-tabs .ant-tabs-nav-list{width:100%;display:flex!important;gap:4px;transform:none!important;padding:3px;border:1px solid var(--border-soft);border-radius:10px;background:#f1f5f9}.phase-tabs .ant-tabs-tab{flex:1 0 auto;justify-content:center;min-width:0;margin:0!important;padding:7px 9px;border:0;border-radius:7px;background:transparent}.phase-tabs .ant-tabs-tab-active{background:#fff;box-shadow:0 1px 3px #0f172a1a}.phase-tabs .ant-tabs-tab-btn{width:100%;color:var(--text-secondary);text-align:center;font-size:13px;line-height:1.2}.phase-tabs .ant-tabs-tab-btn .anticon{display:none}.phase-tabs .ant-tabs-tab-active .ant-tabs-tab-btn{color:var(--primary)!important;font-weight:700}.phase-tabs .ant-tabs-ink-bar{display:none}.phase-tab-panel{padding:10px 8px 8px!important}.lesson-card{box-shadow:none!important}.lesson-card .ant-card-head{min-height:auto}.lesson-card .ant-card-head-title{padding:12px 0}.lesson-goals-grid{margin-left:0!important;margin-right:0!important;row-gap:8px!important}.lesson-goals-grid>.ant-col{padding-left:0!important;padding-right:0!important}.lesson-goal-item{min-height:auto!important;padding:10px 12px!important;border-color:var(--border-soft)!important;background:#fff!important;align-items:flex-start}.lesson-goal-index{width:22px!important;height:22px!important;font-size:12px!important}.lesson-goal-text{font-size:13px;line-height:1.65!important}.ant-typography,.markdown-body p,.markdown-body li{max-width:100%;overflow-wrap:anywhere}h1.ant-typography{word-break:break-all}.phase-toolbar{display:grid!important;grid-template-columns:1fr auto;gap:10px!important;align-items:center!important;margin-bottom:12px!important}.phase-actions{width:auto;max-width:none;justify-content:flex-end}.phase-nav-btn{display:none!important}.phase-complete-btn{width:auto!important;height:32px;padding-inline:11px!important;border-color:#9bbcff!important;border-radius:999px!important;background:#eef5ff!important;color:var(--primary)!important;box-shadow:none!important;font-size:12px;font-weight:700}.phase-complete-btn .anticon{font-size:12px}.complete-label-full{display:none!important}.complete-label-mobile{display:inline!important}.phase-hero-card{padding:14px!important;margin-bottom:12px!important}.phase-hero-card h1.ant-typography{margin-bottom:6px!important;font-size:24px!important;line-height:1.22!important}.phase-hero-card .ant-typography{font-size:13px;line-height:1.65!important}.phase-xp-card{padding:10px!important;margin-top:4px}.phase-xp-card .ant-typography{font-size:11px!important}.lesson-card .section-title{font-size:17px}.app-search{animation:fadeIn .16s ease}}.complete-label-mobile{display:none}
