:root{--color-bg: #faf9f7;--color-surface: #f1eeeb;--color-surface-raised: #e7e3df;--color-surface-editor: #f5f3f0;--color-border: #dbd6d0;--color-border-subtle: #eae6e2;--color-text: #2c2c2e;--color-text-secondary: #6b6b70;--color-text-tertiary: #9b9ba0;--color-text-inverse: #faf9f7;--color-accent: #3d9b8f;--color-accent-hover: #338a7f;--color-accent-subtle: rgba(61, 155, 143, .1);--color-secondary: #d08c60;--color-secondary-hover: #c07c50;--color-secondary-subtle: rgba(208, 140, 96, .1);--color-error: #c75050;--color-error-subtle: rgba(199, 80, 80, .08);--color-warning: #c49a3c;--color-warning-subtle: rgba(196, 154, 60, .08);--color-info: #5088b5;--color-info-subtle: rgba(80, 136, 181, .08);--color-success: #3d9b8f;--color-scrollbar-track: #eeebe8;--color-scrollbar-thumb: #d5d0cb;--color-scrollbar-thumb-hover: #c0bab4;--shadow-sm: 0 1px 2px rgba(44, 44, 46, .06);--shadow-md: 0 2px 8px rgba(44, 44, 46, .08)}.global-nav{position:fixed;top:0;left:0;right:0;z-index:200;display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 1.5rem;background:#faf9f7eb;backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border, #dbd6d0)}.global-nav-brand{display:inline-flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.1rem;color:var(--color-accent, #3d9b8f);text-decoration:none}.global-nav-logo{display:block;width:28px;height:28px;object-fit:contain}.global-nav-links{display:flex;gap:1.5rem}.global-nav-links a{color:var(--color-text-secondary, #6b6b70);text-decoration:none;font-size:.875rem;font-weight:500;transition:color .2s}.global-nav-links a:hover{color:var(--color-text, #2c2c2e)}.global-nav-links .global-nav-active{color:var(--color-accent, #3d9b8f)}.global-nav-left{display:flex;align-items:center;gap:12px}@media(max-width:768px){.global-nav-links{gap:1rem}.global-nav-links a{font-size:.8rem}}@media(max-width:480px){.global-nav-links a:not(.global-nav-active){display:none}}.hamburger{display:none;background:none;border:none;color:var(--text);font-size:20px;cursor:pointer;padding:4px}@media(max-width:768px){.hamburger{display:block}}.sidebar-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:90}.sidebar{position:fixed;top:48px;left:0;bottom:0;width:260px;background:var(--surface);border-right:1px solid var(--color-border, #dbd6d0);overflow-y:auto;z-index:100;display:flex;flex-direction:column;transition:transform .2s ease}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--color-border, #dbd6d0)}.sidebar-title{background:none;border:none;color:var(--accent);font-size:16px;font-weight:700;cursor:pointer;padding:0}.sidebar-title:hover{text-decoration:underline}.sidebar-close{display:none;background:none;border:none;color:var(--text);font-size:18px;cursor:pointer;padding:4px}.sidebar-nav{flex:1;overflow-y:auto;padding:8px 0}.sidebar-category{margin-bottom:4px}.sidebar-category-btn{display:flex;align-items:center;gap:8px;width:100%;padding:8px 16px;background:none;border:none;color:var(--text);font-size:13px;font-weight:600;cursor:pointer;text-align:left}.sidebar-category-btn:hover{background:#2c2c2e0d}.sidebar-category-btn .arrow{font-size:8px;line-height:1;width:12px;text-align:center;transition:transform .15s ease;display:inline-block;flex-shrink:0}.sidebar-category-btn .arrow.open{transform:rotate(90deg)}.sidebar-category-icon{font-size:14px}.sidebar-tutorial-list{list-style:none;margin:0;padding:0}.sidebar-tutorial-btn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:6px 16px 6px 40px;background:none;border:none;color:var(--color-text-secondary, #6b6b70);font-size:12px;cursor:pointer;text-align:left}.sidebar-tutorial-btn:hover{background:#2c2c2e0d;color:var(--text)}.sidebar-tutorial-btn.active{color:var(--accent);background:#3d9b8f1a}.tutorial-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.difficulty-badge{font-size:9px;padding:1px 6px;border-radius:8px;color:var(--color-text-inverse, #fff);font-weight:600;text-transform:uppercase;white-space:nowrap;flex-shrink:0}.sidebar-step-list{list-style:none;margin:2px 0;padding:0;counter-reset:step}.sidebar-step-btn{display:block;width:100%;padding:4px 16px 4px 52px;background:none;border:none;color:var(--color-text-secondary, #6b6b70);font-size:11px;cursor:pointer;text-align:left;position:relative}.sidebar-step-btn:before{counter-increment:step;content:counter(step) ".";position:absolute;left:40px;color:var(--color-text-tertiary, #9b9ba0)}.sidebar-step-btn:hover{color:var(--text)}.sidebar-step-btn.active{color:var(--accent);font-weight:600}.sidebar-subcategories{padding-left:8px}.sidebar-subcategory{margin-bottom:4px}.sidebar-subcategory-label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);padding:6px 12px 2px;opacity:.7}@media(max-width:768px){.sidebar-overlay{display:block}.sidebar{transform:translate(-100%)}.sidebar.sidebar-open{transform:translate(0)}.sidebar-close{display:block}}.catalog{padding:0 24px 48px}.catalog-hero{text-align:center;padding:64px 24px 40px;background:linear-gradient(135deg,var(--bg) 0%,var(--surface) 50%,var(--color-surface-raised, #e7e3df) 100%);border-radius:12px;margin-bottom:40px}.catalog-hero h1{font-size:36px;margin:0 0 12px;color:var(--text)}.catalog-hero p{font-size:16px;color:var(--color-text-secondary, #6b6b70);max-width:600px;margin:0 auto;line-height:1.6}.catalog-paths{margin-bottom:32px}.catalog-paths h2{font-size:18px;margin:0 0 16px;color:var(--text)}.path-cards{display:flex;gap:12px;overflow-x:auto;padding-bottom:8px;scrollbar-width:thin}.path-card{flex:0 0 220px;display:flex;flex-direction:column;gap:6px;padding:16px;background:var(--surface);border:1px solid var(--color-border, #dbd6d0);border-radius:10px;cursor:pointer;text-align:left;color:var(--text);transition:border-color .15s,background .15s}.path-card:hover{border-color:var(--accent)}.path-card.active{border-color:var(--accent);background:#3d9b8f14}.path-icon{font-size:24px}.path-title{font-size:14px;font-weight:600}.path-desc{font-size:11px;color:var(--color-text-secondary, #6b6b70);line-height:1.4}.catalog-filters{display:flex;align-items:center;gap:16px;margin-bottom:24px}.catalog-filters label{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--color-text-secondary, #6b6b70)}.catalog-filters select{background:var(--surface);color:var(--text);border:1px solid var(--color-border, #dbd6d0);border-radius:6px;padding:4px 8px;font-size:13px}.clear-filter{background:none;border:none;color:var(--accent);font-size:12px;cursor:pointer;text-decoration:underline}.catalog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.tutorial-card{display:flex;flex-direction:column;gap:8px;padding:20px;background:var(--surface);border:1px solid var(--color-border, #dbd6d0);border-radius:10px;cursor:pointer;text-align:left;color:var(--text);transition:border-color .15s,transform .15s}.tutorial-card:hover{border-color:var(--accent-secondary);transform:translateY(-2px)}.card-badges{display:flex;gap:6px}.badge{font-size:10px;padding:2px 8px;border-radius:8px;font-weight:600;text-transform:uppercase}.badge.difficulty{color:var(--color-text-inverse, #fff)}.badge.mode{background:#3d9b8f26;color:var(--accent)}.tutorial-card h3{font-size:15px;margin:0}.tutorial-card p{font-size:12px;color:var(--color-text-secondary, #6b6b70);margin:0;line-height:1.5}.no-results{grid-column:1 / -1;text-align:center;color:var(--color-text-secondary, #6b6b70);padding:40px}@media(max-width:1200px){.catalog-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.catalog-grid{grid-template-columns:1fr}.catalog-hero h1{font-size:28px}.path-card{flex:0 0 180px}}.interactive-step{display:grid;grid-template-columns:1fr 1fr;gap:1rem;min-height:400px}.interactive-editor{display:flex;flex-direction:column;gap:.5rem}.interactive-toolbar{display:flex;align-items:center;gap:.5rem}.analyze-btn{padding:.4rem 1rem;background:var(--accent, #3d9b8f);color:var(--color-text-inverse, #fff);border:none;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:600}.analyze-btn:hover:not(:disabled){opacity:.9}.analyze-btn:disabled{opacity:.5;cursor:not-allowed}.reset-btn{padding:.4rem .8rem;background:transparent;color:var(--text-secondary, #6b6b70);border:1px solid var(--border, #dbd6d0);border-radius:4px;cursor:pointer;font-size:.85rem}.reset-btn:hover{background:#2c2c2e0d}.status-text{font-size:.8rem;color:var(--text-secondary, #6b6b70)}.status-compiling,.status-parsing,.status-converting,.status-analyzing{color:var(--accent, #3d9b8f)}.status-ready{color:var(--accent-secondary)}.status-error{color:var(--color-error, #c75050)}.code-editor-container{position:relative;flex:1;min-height:300px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.85rem;line-height:1.5;border:1px solid var(--border, #dbd6d0);border-radius:4px;background:var(--surface, #f1eeeb)}.code-editor-container:focus-within{border-color:var(--accent, #3d9b8f)}.code-highlight-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;margin:0;padding:.75rem .75rem .75rem 0;white-space:pre;font:inherit;line-height:inherit;color:transparent}.code-edit-layer{position:relative;display:block;width:100%;height:100%;min-height:300px;background:transparent;color:var(--text, #2c2c2e);padding:.75rem .75rem .75rem 3.5em;font:inherit;line-height:inherit;border:none;outline:none;resize:vertical;tab-size:2;white-space:pre;overflow:auto}.code-line{padding-left:3.5em;position:relative;height:1.5em}.code-line .line-number{position:absolute;left:0;width:3em;text-align:right;color:var(--color-text-tertiary, #9b9ba0);user-select:none;font:inherit;line-height:inherit}.code-line.highlighted{background:#3d9b8f26;border-left:3px solid #3d9b8f}.code-line.highlighted .line-number{color:#3d9b8f}.error-message{padding:.5rem .75rem;background:#c750501a;border:1px solid rgba(199,80,80,.3);border-radius:4px;color:var(--color-error, #c75050);font-size:.8rem;font-family:monospace;white-space:pre-wrap;max-height:100px;overflow-y:auto}.interactive-graph{position:relative;min-height:300px;border:1px solid var(--border, #dbd6d0);border-radius:4px;overflow:hidden}.graph-empty-hint{display:flex;align-items:center;justify-content:center;height:100%;min-height:300px;color:var(--text-secondary, #6b6b70);font-size:.9rem;text-align:center;padding:2rem}.graph-empty-icon{font-size:2.5rem;margin-bottom:.75rem;opacity:.4}.graph-empty-shortcut{margin-top:.4rem;font-size:.75rem;opacity:.6}.graph-empty-shortcut kbd{padding:.1em .4em;border:1px solid var(--border, #dbd6d0);border-radius:3px;font-family:inherit;font-size:.85em;background:#2c2c2e0d}.graph-stale-banner{position:absolute;top:0;left:0;right:0;padding:.35rem .75rem;background:#3d9b8f1f;border-bottom:1px solid rgba(61,155,143,.25);color:var(--color-warning, #338a7f);font-size:.8rem;text-align:center;z-index:10}@media(max-width:768px){.interactive-step{grid-template-columns:1fr}}.stepper-controls{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;border-top:1px solid var(--border);background:var(--bg-secondary);min-height:48px}.stepper-controls-left{display:flex;gap:4px}.stepper-controls-center{flex:1;text-align:center}.stepper-controls-right{display:flex;gap:4px}.stepper-btn{background:none;border:1px solid var(--border);border-radius:6px;color:var(--text);cursor:pointer;padding:4px 10px;font-size:14px;transition:background .15s,border-color .15s;display:inline-flex;align-items:center;justify-content:center}.stepper-btn:hover:not(:disabled){background:var(--bg-primary);border-color:var(--accent)}.stepper-btn:disabled{opacity:.35;cursor:not-allowed}.stepper-btn-play{font-size:16px;padding:4px 14px}.stepper-btn svg{display:block}.stepper-btn-speed{font-family:monospace;font-size:13px;min-width:40px}.step-counter{font-size:13px;color:var(--text-muted);font-family:monospace}.phase-bar{display:flex;align-items:center;padding:6px 16px;gap:0;overflow-x:auto;flex-shrink:0}.phase-item{display:flex;align-items:center;white-space:nowrap}.phase-arrow{color:var(--text-muted);font-size:12px;margin:0 6px;opacity:.5}.phase-node{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:2px 0}.phase-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.phase-pending .phase-dot{border:1.5px solid var(--text-muted);background:transparent}.phase-pending .phase-label{color:var(--text-muted)}.phase-active .phase-dot{background:var(--accent);box-shadow:0 0 6px #3d9b8f66}.phase-active .phase-label{color:var(--accent);font-weight:600}.phase-completed .phase-dot{background:var(--text-muted)}.phase-completed .phase-label{color:var(--text-muted)}.pseudocode-rail{width:280px;min-width:280px;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;background:var(--bg-secondary)}.pseudocode-title{font-family:monospace;font-size:11px;font-weight:700;color:var(--accent);padding:8px 10px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid var(--border);flex-shrink:0}.pseudocode-lines{flex:1;overflow-y:auto;overflow-x:auto;padding:4px 0}.pseudocode-line{display:flex;align-items:flex-start;font-family:monospace;font-size:11px;line-height:1.5;padding:0 6px 0 0;border-left:3px solid transparent}.pseudocode-line-active{border-left-color:var(--accent);background:#3d9b8f14}.pseudocode-line-visited{opacity:.6}.pseudocode-gutter{width:24px;min-width:24px;text-align:right;padding-right:6px;color:var(--text-muted);font-size:10px;line-height:1.5;user-select:none}.pseudocode-check{color:var(--accent-secondary);font-size:10px}.pseudocode-lineno{opacity:.5}.pseudocode-text{white-space:pre;color:var(--text)}.pseudocode-line-active .pseudocode-text{color:var(--accent);font-weight:500}@media(max-width:900px){.pseudocode-rail{display:none}}.algorithm-stepper{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--bg-secondary);margin-top:16px;display:flex;flex-direction:column;height:calc(100vh - 228px)}.algorithm-stepper-loading,.algorithm-stepper-error{padding:32px;text-align:center;color:var(--text-muted)}.algorithm-stepper-error{color:var(--color-error, #c75050)}.stepper-header{border-bottom:1px solid var(--border);flex-shrink:0}.stepper-header-top{display:flex;align-items:center;justify-content:space-between;padding:8px 16px}.stepper-action{color:var(--accent);font-size:14px;font-weight:600;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.stepper-step-label{font-size:12px;color:var(--text-muted);font-family:monospace;margin-left:12px;flex-shrink:0}.stepper-main{display:flex;flex:1;min-height:0;overflow:hidden}.stepper-main .stepper-graph{flex:1;min-height:0;overflow:hidden;display:flex}.stepper-main .stepper-graph .graph-viewer{height:100%!important;min-height:unset!important}.stepper-bottom{display:grid;grid-template-columns:2fr 3fr;border-top:1px solid var(--border);flex-shrink:0;height:35%;min-height:140px;max-height:260px;overflow:hidden}.stepper-bottom-left{border-right:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column}.stepper-bottom-right{overflow-y:auto;display:flex;flex-direction:column}.stepper-section-header{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);padding:6px 12px;border-bottom:1px solid var(--border);flex-shrink:0;font-weight:500}.stepper-bottom-left .explanation-panel{padding:8px 12px;flex:1}.stepper-bottom-left .explanation-action{display:none}.stepper-bottom-left .explanation-body{font-size:13px;line-height:1.5}.stepper-bottom-right .state-inspector{padding:8px 12px}@media(max-width:900px){.stepper-main{flex-direction:column}.stepper-bottom{grid-template-columns:1fr;grid-template-rows:auto auto}.stepper-bottom-left{border-right:none;border-bottom:1px solid var(--border);max-height:120px}}.state-inspector{padding:12px 16px}.inspector-section{margin-bottom:12px}.inspector-section:last-child{margin-bottom:0}.inspector-section h4{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin:0 0 8px}.inspector-empty{font-size:13px;color:var(--text-muted);font-style:italic}.worklist-waves{display:flex;gap:12px;flex-wrap:wrap}.worklist-wave{display:flex;align-items:center;gap:4px}.wave-rank{font-size:11px;color:var(--text-muted);font-family:monospace}.wave-values{display:flex;gap:2px}.wave-value{background:var(--accent);color:var(--color-text-inverse, #fff);padding:1px 6px;border-radius:3px;font-size:12px;font-family:monospace}.pts-table{display:flex;flex-direction:column;gap:4px}.pts-row{display:flex;align-items:center;gap:8px;padding:2px 6px;border-radius:4px;font-size:13px;font-family:monospace}.pts-row.changed{background:#3d9b8f26}.pts-var{font-weight:600;min-width:24px}.pts-arrow{color:var(--text-muted)}.pts-locs{color:var(--accent)}.pts-badge{font-size:10px;background:#3d9b8f40;color:var(--accent);padding:0 4px;border-radius:3px;margin-left:auto}.constraint-list{display:flex;flex-direction:column;gap:2px}.constraint-row{display:flex;align-items:center;gap:6px;font-size:13px;font-family:monospace;padding:2px 4px}.constraint-type{font-size:11px;padding:0 4px;border-radius:3px;text-transform:uppercase;font-weight:600}.constraint-type.addr{background:#dbeafe;color:#1e40af}.constraint-type.copy{background:#fef3c7;color:#92400e}.constraint-type.load{background:#d1fae5;color:#065f46}.constraint-type.store{background:#fce7f3;color:#9d174d}.constraint-type.gep{background:#e0e7ff;color:#3730a3}.constraint-check{color:var(--accent-secondary)}.constraint-pending{color:var(--text-muted)}.path-edge-list{display:flex;flex-direction:column;gap:2px}.path-edge{font-size:12px;font-family:monospace;padding:2px 4px;border-radius:3px}.path-edge.highlighted{background:#3d9b8f26}.path-edge-more{font-size:12px;color:var(--text-muted);font-style:italic}.summary-edge-list{display:flex;flex-direction:column;gap:2px}.summary-edge{font-size:12px;font-family:monospace;padding:2px 4px}.facts-list{display:flex;flex-direction:column;gap:4px}.facts-row{padding:2px 6px;border-radius:4px;font-size:13px;font-family:monospace}.facts-row.changed{background:#3d9b8f26}.interval-bars{display:flex;flex-direction:column;gap:8px}.interval-bar-row{display:flex;align-items:center;gap:8px}.interval-var-name{min-width:32px;font-family:monospace;font-size:13px;font-weight:600}.interval-bar-track{flex:1;height:20px;background:var(--bg-primary);border-radius:4px;position:relative;overflow:hidden}.interval-bar-fill{position:absolute;top:0;height:100%;background:var(--accent);opacity:.4;border-radius:4px}.interval-label{min-width:80px;font-family:monospace;font-size:12px;color:var(--text-muted);text-align:right}.interval-op{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:13px}.interval-op-type{font-weight:600;font-size:12px;text-transform:uppercase;padding:1px 6px;border-radius:3px}.interval-op-type.widen{background:#fecaca;color:#991b1b}.interval-op-type.narrow{background:#bbf7d0;color:#166534}.interval-op-type.join{background:#bfdbfe;color:#1e40af}.mssa-query{font-style:italic;font-size:13px;color:var(--text-muted);margin-bottom:8px}.walk-chain{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.walk-entry{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:13px;font-family:monospace}.walk-type-badge{font-size:11px;padding:0 4px;border-radius:3px;text-transform:uppercase;font-weight:600}.walk-type-badge.load{background:#d1fae5;color:#065f46}.walk-type-badge.store{background:#fce7f3;color:#9d174d}.walk-type-badge.phi{background:#e0e7ff;color:#3730a3}.walk-alias{font-size:12px;padding:1px 6px;border-radius:3px}.walk-alias.may{background:#fef3c7;color:#92400e}.walk-alias.must{background:#fecaca;color:#991b1b}.walk-alias.no{background:#bbf7d0;color:#166534}.walk-arrow{color:var(--text-muted);padding-left:16px;font-size:14px}.tutorial-page{display:flex;flex-direction:column;min-height:calc(100vh - 48px)}.tutorial-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:80px 24px;color:var(--color-text-secondary, #6b6b70)}.spinner{width:32px;height:32px;border:3px solid var(--color-border, #dbd6d0);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.tutorial-error{padding:80px 24px;text-align:center}.tutorial-error h2{color:var(--color-error, #c75050);margin-bottom:8px}.tutorial-error button{margin-top:16px;padding:8px 20px;background:var(--accent);color:var(--color-text-inverse, #fff);border:none;border-radius:6px;cursor:pointer;font-size:14px}.tutorial-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--color-border, #dbd6d0);flex-wrap:wrap;gap:12px}.tutorial-header-left{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}.tutorial-header h1{font-size:20px;margin:0;color:var(--text)}.step-counter{font-size:13px;color:var(--color-text-secondary, #6b6b70)}.tutorial-header-right{display:flex;gap:8px}.nav-btn{padding:6px 16px;background:var(--surface);color:var(--text);border:1px solid var(--color-border, #dbd6d0);border-radius:6px;cursor:pointer;font-size:13px;transition:background .15s}.nav-btn:hover:not(:disabled){background:#2c2c2e14}.nav-btn:disabled{opacity:.4;cursor:not-allowed}.progress-bar{height:3px;background:var(--color-border, #dbd6d0)}.progress-fill{height:100%;background:var(--accent);transition:width .3s ease;border-radius:0 2px 2px 0}:root{--bg: var(--color-bg, #faf9f7);--surface: var(--color-surface, #f1eeeb);--text: var(--color-text, #2c2c2e);--accent: var(--color-accent, #3d9b8f);--accent-secondary: var(--color-secondary, #3d9b8f)}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code,pre,.cm-editor{font-family:JetBrains Mono,Fira Code,Cascadia Code,monospace}.app-layout{padding-top:48px}.app-main{margin-left:260px;min-height:calc(100vh - 48px)}html{scrollbar-width:thin;scrollbar-color:var(--color-scrollbar-thumb, #c4bab0) var(--bg)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-scrollbar-track, var(--bg))}::-webkit-scrollbar-thumb{background:var(--color-scrollbar-thumb, #c4bab0);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-scrollbar-thumb-hover, #a89e94)}.step-content{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:24px;min-height:calc(100vh - 128px)}.step-content-single{grid-template-columns:1fr}.step-left{overflow-y:auto;max-height:calc(100vh - 168px);padding-right:16px}.step-left h2{font-size:22px;margin:0 0 16px;color:var(--text)}.step-prose{font-size:14px;line-height:1.7;color:var(--color-text-secondary, #6b6b70)}.step-prose h3{color:var(--text);margin-top:24px}.step-prose code{background:#2c2c2e14;padding:2px 6px;border-radius:4px;font-size:13px}.step-prose pre{background:var(--color-surface-editor, #f5f3f0);padding:12px 16px;border-radius:8px;overflow-x:auto}.step-prose a{color:var(--accent)}.step-right{position:sticky;top:72px;height:fit-content;max-height:calc(100vh - 168px)}.graph-viewer{background:var(--surface);border:1px solid var(--color-border, #dbd6d0);border-radius:10px;min-height:300px;height:100%}.graph-placeholder{display:flex;align-items:center;justify-content:center;min-height:300px;background:var(--surface);border:1px solid var(--color-border, #dbd6d0);border-radius:10px;color:var(--color-text-secondary, #6b6b70);font-size:14px}.code-block{margin:16px 0;border-radius:8px;overflow:hidden;border:1px solid var(--color-border, #dbd6d0)}.code-block .cm-editor{font-size:13px;max-height:400px}.code-block .cm-scroller{overflow:auto}.cm-highlighted-line{background:#3d9b8f26!important}.playground-embed{margin:16px 0;border:1px solid var(--color-border, #dbd6d0);border-radius:10px;overflow:hidden}.playground-embed-header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:#3d9b8f1a;border-bottom:1px solid var(--color-border, #dbd6d0);font-size:13px}.playground-embed-header a{color:var(--accent-secondary);text-decoration:none;font-size:12px}.playground-embed-header a:hover{text-decoration:underline}.local-section{margin:16px 0}.local-toggle{display:flex;align-items:center;gap:8px;background:none;border:1px solid var(--color-border, #dbd6d0);border-radius:6px;color:var(--color-text-secondary, #6b6b70);padding:8px 14px;cursor:pointer;font-size:13px;transition:background .15s}.local-toggle:hover{background:#2c2c2e0d}.local-toggle .arrow{font-size:8px;line-height:1;width:12px;text-align:center;transition:transform .15s ease;display:inline-block;flex-shrink:0}.local-toggle .arrow.open{transform:rotate(90deg)}.local-content{margin-top:8px;padding:12px 16px;background:var(--surface);border:1px solid var(--color-border, #dbd6d0);border-radius:8px}.local-cmd{margin-bottom:12px}.local-cmd-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;font-size:12px;color:var(--color-text-secondary, #6b6b70)}.copy-btn{background:#2c2c2e14;border:none;color:var(--accent);padding:2px 10px;border-radius:4px;cursor:pointer;font-size:11px}.copy-btn:hover{background:#2c2c2e1f}.local-cmd pre{background:var(--color-surface-editor, #f5f3f0);padding:10px 14px;border-radius:6px;overflow-x:auto;font-size:13px;margin:0}.download-link{display:inline-block;color:var(--accent);font-size:13px;text-decoration:none;border-bottom:1px dashed var(--accent)}.download-link:hover{border-bottom-style:solid}.challenge-box{margin:20px 0;padding:16px 20px;background:#3d9b8f14;border:1px solid rgba(61,155,143,.3);border-radius:10px}.challenge-header{font-size:14px;font-weight:700;color:var(--accent);margin-bottom:8px}.challenge-box p{font-size:13px;color:var(--color-text-secondary, #6b6b70);margin:0;line-height:1.6}@media(max-width:1200px){.step-content{grid-template-columns:1fr}.step-right{position:static;max-height:400px}}@media(max-width:768px){.app-main{margin-left:0}.step-content{padding:16px;gap:16px}.step-left{max-height:none;padding-right:0}}@media(max-width:480px){.step-left h2{font-size:18px}.step-prose{font-size:13px}}
