:root{--theory-img-width: 400px;--theory-img-height: 260px;--pe-bg: #f9f9fc;--pe-surface: #ffffff;--pe-outline: #7e7576;--bg: #ffffff;--bg-subtle: #fafafa;--bg-muted: #f3f3f3;--bg-inset: #eeeeee;--bg-hover: #f0f0f0;--bg-active: #e8e8e8;--bg-inverse: #111111;--text: #111111;--text-secondary: #333333;--text-muted: #666666;--text-faint: #888888;--text-inverse: #ffffff;--border: #dddddd;--border-strong: #bbbbbb;--border-focus: #000000;--accent: #000000;--accent-hover: #333333;--accent-soft: #f0f0f0;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .06);--shadow-md: 0 8px 24px rgba(0, 0, 0, .08);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .12);--status-ok-bg: #eeeeee;--status-ok-text: #111111;--status-warn-bg: #e8e8e8;--status-warn-text: #333333;--status-err-bg: #dddddd;--status-err-text: #000000;--status-info-bg: #f0f0f0;--status-info-text: #222222;--ide-bg: #ffffff;--ide-toolbar: #fafafa;--ide-border: #dddddd;--ide-text: #111111;--ide-sim-bg: #f5f5f5;--ide-canvas-bg: #fafafa}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;background:var(--bg);color:var(--text-secondary);font-family:Geist,system-ui,sans-serif;font-size:13px;overflow:hidden}body{display:flex;flex-direction:column}#app{flex:1;min-height:0;display:flex;flex-direction:column;position:relative;z-index:1;overflow:hidden}.material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;display:inline-block;vertical-align:middle;line-height:1;font-size:18px}.auth-page{flex:1;min-height:0;width:100%;height:100%;display:flex;flex-direction:column;background:var(--pe-bg);color:var(--text);overflow:auto;color-scheme:light}.auth-nav{position:sticky;top:0;z-index:50;background:var(--pe-bg);border-bottom:1px solid var(--accent)}.auth-nav-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 24px;max-width:100%}.auth-nav-inner--simple{justify-content:flex-start}.auth-footer-inner--simple{display:block;grid-template-columns:none}.auth-nav-brand{display:flex;align-items:center;gap:10px}.auth-nav-brand-btn{border:none;background:transparent;padding:0;cursor:pointer;font:inherit;color:inherit}.auth-nav-logo{width:48px;height:48px;object-fit:contain;color:#111!important}.auth-nav-title{font-size:22px;font-weight:700;letter-spacing:-.03em;color:var(--accent);text-transform:uppercase}.auth-nav-links{display:flex;align-items:center;gap:24px;margin-left:24px}.auth-nav-link{background:none;border:none;cursor:pointer;padding:0;font:inherit;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);text-decoration:none;transition:color .15s}.auth-nav-link:hover{color:var(--accent);text-decoration:underline;text-underline-offset:4px}@media(max-width:960px){.auth-nav-links{display:none}}.auth-nav-actions{display:flex;align-items:center;gap:12px;margin-left:auto}.auth-nav-text{background:none;border:none;cursor:pointer;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);padding:4px 12px}.auth-nav-text:hover{color:var(--accent);text-decoration:underline;text-underline-offset:4px}.auth-nav-btn{background:var(--accent);color:var(--text-inverse);border:none;cursor:pointer;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:6px 16px}.auth-nav-btn:hover{opacity:.9}.auth-main{flex:1;display:flex;align-items:center;justify-content:center;padding:32px 16px;position:relative;overflow:hidden}.auth-main--register{align-items:flex-start;justify-content:center;padding:32px 16px 48px;overflow:auto;background:#fdfdfe}.auth-screen{flex:1;min-height:0;width:100%;height:100%;overflow:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:32px;position:relative;z-index:2;background:var(--pe-bg)}.auth-screen-grid{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.03;background-image:radial-gradient(#000 1px,transparent 1px);background-size:24px 24px}.auth-brand{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;position:relative;z-index:1}.auth-logo-img{width:88px;height:88px;object-fit:contain}.auth-kicker{margin:0;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text)}.auth-brand h1{margin:0;font-size:24px;font-weight:700;color:var(--text);letter-spacing:-.02em}.auth-sub{margin:4px 0 0;color:var(--text-muted);font-size:14px;max-width:320px;line-height:1.5}.auth-card,.login-card{width:min(440px,92vw);background:var(--pe-surface);border:1px solid var(--accent);border-radius:0;padding:32px;box-shadow:4px 4px 0 0 var(--accent);position:relative;z-index:3}.auth-card.center{text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}.auth-card-head{margin-bottom:24px}.auth-secure-label{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.auth-secure-label .material-symbols-outlined{font-size:16px;font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.auth-card-title{margin:0;font-size:32px;font-weight:700;color:var(--accent);letter-spacing:-.02em;line-height:1.2}.auth-card-sub{margin:8px 0 0;color:var(--text-muted);font-size:14px;line-height:1.5}.auth-form{display:flex;flex-direction:column}.auth-form>*+*{margin-top:20px}.auth-field-group{display:flex;flex-direction:column}.auth-field-group>*+*{margin-top:4px}.auth-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.auth-field-label{display:block;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.auth-field-wrap{position:relative}.auth-field-wrap .field,.auth-input{height:42px;border-radius:0;border:1px solid var(--pe-outline);background:var(--pe-surface);color:#111;-webkit-text-fill-color:#111;caret-color:#111;padding:0 40px 0 12px;font-size:13px;outline:none;width:100%;font-family:JetBrains Mono,monospace;color-scheme:light}.auth-field-wrap .field:focus,.auth-input:focus{border:2px solid var(--accent);padding:0 39px 0 11px;color:#111;-webkit-text-fill-color:#111}.auth-field-wrap .field::selection,.auth-input::selection{background:#111;color:#fff;-webkit-text-fill-color:#fff}.auth-field-wrap .field::-moz-selection,.auth-input::-moz-selection{background:#111;color:#fff}.auth-field-wrap--no-icon .field,.auth-field-wrap--no-icon .auth-input{padding:0 12px}.auth-field-wrap--no-icon .field:focus,.auth-field-wrap--no-icon .auth-input:focus{padding:0 11px}.auth-field-icon{position:absolute;inset:0 12px 0 auto;display:flex;align-items:center;pointer-events:none;color:var(--pe-outline)}.auth-field-wrap:focus-within .auth-field-icon{color:var(--accent)}.auth-forgot{background:none;border:none;cursor:pointer;padding:0;font-size:12px;font-weight:500;color:var(--text-muted)}.auth-forgot:hover{color:var(--accent)}.auth-remember{display:flex;align-items:center;gap:8px}.auth-checkbox{width:16px;height:16px;border:2px solid var(--accent);border-radius:0;accent-color:var(--accent);cursor:pointer}.auth-remember label{font-size:12px;font-weight:500;color:var(--text-muted);cursor:pointer;user-select:none}.auth-submit{display:flex;align-items:center;justify-content:center;gap:8px;height:48px;font-size:11px}.auth-submit:active{transform:translateY(1px)}.auth-submit .material-symbols-outlined{font-size:16px}.auth-card-foot{margin-top:24px;padding-top:20px;border-top:1px solid #e2e2e5;display:flex;flex-direction:column;align-items:center;gap:8px}.auth-foot-hint{font-size:12px;color:var(--text-muted)}.auth-footer-link{background:none;border:none;cursor:pointer;padding:0;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);text-decoration:none}.auth-footer-link:hover{text-decoration:underline;text-underline-offset:4px}.auth-deco{display:none;position:absolute;bottom:32px;right:32px;opacity:.1;pointer-events:none}.auth-deco-outer{width:192px;height:192px;border:1px solid var(--accent);display:flex;align-items:center;justify-content:center;transform:rotate(45deg)}.auth-deco-inner{width:128px;height:128px;border:1px solid var(--accent);display:flex;align-items:center;justify-content:center}.auth-deco-core{width:64px;height:64px;background:var(--accent)}.auth-footer{background:var(--accent);border-top:2px solid var(--accent);color:var(--text-inverse)}.auth-footer-inner{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:32px 24px;max-width:100%}.auth-footer-title{font-size:18px;font-weight:700;margin-bottom:12px}.auth-footer-copy{margin:0;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;opacity:.8}.auth-footer-links{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:flex-end}.auth-footer-links .auth-footer-link{color:var(--text-inverse);opacity:.8}.auth-footer-links .auth-footer-link:hover{opacity:1}.auth-inline-link{color:var(--accent);font-weight:700;text-decoration:underline;text-underline-offset:2px}@media(min-width:1024px){.auth-deco{display:block}.auth-nav-links{display:flex}}.register-layout{width:min(960px,100%);display:grid;grid-template-columns:1fr;gap:32px;position:relative;z-index:2}.register-aside-inner{position:sticky;top:88px}.register-headline{margin:0 0 16px;font-size:32px;font-weight:700;line-height:1.2;letter-spacing:-.02em;text-transform:uppercase;color:var(--accent)}.register-lead{margin:0 0 32px;padding-left:16px;border-left:2px solid var(--accent);color:var(--text-muted);font-size:14px;line-height:1.6;max-width:320px}.register-visual{position:relative;aspect-ratio:1;border:1px solid var(--accent);background:#fff;padding:4px;overflow:hidden;max-width:320px}.register-visual-img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.25);transition:transform .7s ease}.register-visual:hover .register-visual-img{transform:scale(1.05)}.register-visual-tag{position:absolute;right:0;bottom:0;background:var(--accent);color:var(--text-inverse);font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px}.register-features{margin-top:32px;display:flex;flex-direction:column;gap:16px}.register-feature{display:flex;align-items:flex-start;gap:8px}.register-feature .material-symbols-outlined{font-size:18px;margin-top:2px}.register-feature-title{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent)}.register-feature-sub{font-size:12px;color:var(--text-muted);margin-top:2px}.register-form-col{display:flex;flex-direction:column;gap:32px}.register-section{position:relative;border:1px solid var(--pe-outline);background:#fff;padding:24px;transition:border-color .15s}.register-section--focus{border-color:var(--accent)}.register-section-tag{position:absolute;top:-12px;left:16px;background:#fff;padding:0 4px;border-left:1px solid var(--accent);border-right:1px solid var(--accent);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent)}.register-section-body{padding-top:8px}.register-grid{display:grid;gap:16px}.register-grid--2{grid-template-columns:1fr}.register-field{display:flex;flex-direction:column;gap:4px}.register-input{width:100%;border:1px solid var(--pe-outline);background:#fff;color:var(--text);font-family:JetBrains Mono,monospace;font-size:13px;padding:8px 12px;outline:none;transition:border-color .15s,border-width .15s}.register-input:focus{border:2px solid var(--accent);padding:7px 11px}.register-select{-webkit-appearance:none;appearance:none;background-image:url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.4c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095.3c3.6-3.6%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.4-13.1z%22%2F%3E%3C%2Fsvg%3E);background-repeat:no-repeat;background-position:right 12px center;background-size:10px;padding-right:32px}.register-actions{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.register-terms{display:flex;align-items:center;gap:8px;align-self:stretch;margin-bottom:4px}.register-terms label{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);cursor:pointer;user-select:none}.register-submit{width:100%;border:none;cursor:pointer;background:var(--accent);color:var(--text-inverse);font-family:JetBrains Mono,monospace;font-size:18px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:16px 32px;transition:transform .15s,opacity .15s}.register-submit:hover{transform:scale(1.02)}.register-submit:active{transform:scale(1)}.register-submit--busy{opacity:.5;transform:none}.block-shadow{box-shadow:4px 4px 0 0 var(--accent)}.register-meta{font-family:JetBrains Mono,monospace;font-size:10px;font-style:italic;color:var(--pe-outline)}.register-note{align-self:stretch;text-align:left;margin:8px 0 0}.register-login-link{align-self:center;margin-top:8px}@media(min-width:768px){.register-grid--2{grid-template-columns:1fr 1fr}.register-submit{width:auto;min-width:240px}}@media(min-width:1024px){.register-layout{grid-template-columns:4fr 8fr;gap:32px}}.auth-logo{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:20px;color:var(--text-inverse);background:var(--accent);box-shadow:var(--shadow-sm)}.auth-tabs{display:flex;gap:6px;margin-bottom:16px;background:var(--bg-muted);padding:4px;border-radius:0;border:1px solid var(--border)}.auth-tabs button{flex:1;height:34px;border:none;border-radius:7px;cursor:pointer;background:transparent;color:var(--text-muted);font-size:13px;font-weight:600;pointer-events:auto}.auth-tabs button.active{background:var(--accent);color:var(--text-inverse)}.field{height:42px;border-radius:0;border:1px solid var(--pe-outline);background:var(--pe-surface);color:var(--text);padding:0 12px;font-size:14px;outline:none;width:100%;font-family:JetBrains Mono,monospace}.field:focus{border:2px solid var(--accent);padding:0 11px}select.field{cursor:pointer}.btn-primary{height:44px;border:none;border-radius:0;cursor:pointer;font-size:13px;font-weight:700;background:var(--accent);color:var(--text-inverse);font-family:JetBrains Mono,monospace;letter-spacing:.06em;text-transform:uppercase;pointer-events:auto}.btn-primary:disabled{opacity:.6;cursor:default}.btn-block{width:100%}.btn-link{background:none;border:none;color:var(--text);cursor:pointer;font-size:13px}.auth-note{color:var(--text-muted);font-size:12px;margin:12px 0 0;line-height:1.5}.auth-server{position:fixed;bottom:10px;right:12px;background:none;border:none;color:var(--text-faint);font-size:11px;cursor:pointer}.status-badge{padding:4px 12px;border-radius:999px;font-size:12px;font-weight:700}.status-badge.pending{background:var(--status-warn-bg);color:var(--status-warn-text)}.status-badge.rejected{background:var(--status-err-bg);color:var(--status-err-text)}.lms-top{height:54px;flex:0 0 54px;display:flex;align-items:center;gap:14px;padding:0 18px;background:var(--bg);border-bottom:1px solid var(--border)}.lms-top .brand{font-weight:700;color:var(--text);font-size:15px;display:flex;align-items:center;gap:10px}.lms-top .brand .dot{width:26px;height:26px;border-radius:8px;background:var(--bg-inverse);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:12px}.lms-top .spacer{flex:1}.lms-user{color:var(--text-muted);font-size:13px}.lms-user b{color:var(--text)}.lms-content{flex:1;min-height:0;overflow:auto}.dash{max-width:1100px;margin:0 auto;padding:26px 24px 60px}.dash h2{color:var(--text);margin:0 0 4px}.dash .muted{color:var(--text-muted);margin:0 0 22px}.chapter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.chapter-card{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:10px;position:relative;transition:transform .08s,border-color .08s}.chapter-card.unlocked{cursor:pointer}.chapter-card.unlocked:hover{transform:translateY(-2px);border-color:var(--border-focus)}.chapter-card.locked{opacity:.7}.chapter-card .idx{font-size:11px;color:var(--text-faint);letter-spacing:.6px;text-transform:uppercase}.chapter-card .title{font-size:15px;font-weight:600;color:var(--text);line-height:1.35}.chapter-card .foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto}.pill{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px}.pill.locked{background:var(--bg-inset);color:var(--text-muted)}.pill.not_started{background:var(--status-info-bg);color:var(--text)}.pill.in_progress{background:var(--status-warn-bg);color:var(--status-warn-text)}.pill.completed{background:var(--status-ok-bg);color:var(--status-ok-text)}.lock-ico{font-size:15px}.chapter-workspace{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;background:var(--pe-bg);--chapter-footer-h: 32px}.chapter-topbar{flex:0 0 40px;height:40px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 12px 0 10px;background:var(--accent);color:var(--text-inverse);border-bottom:1px solid var(--text-inverse);z-index:20}.chapter-topbar-left{display:flex;align-items:center;gap:16px;min-width:0}.chapter-back{display:inline-flex;align-items:center;gap:4px;border:none;background:transparent;color:var(--text-inverse);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;padding:0}.chapter-back:hover{text-decoration:underline}.chapter-back .material-symbols-outlined{font-size:16px}.chapter-topbar-title{margin:0;font-size:18px;font-weight:700;letter-spacing:-.03em;color:var(--text-inverse);white-space:nowrap}.chapter-topbar-nav{display:none!important}.chapter-topbar-link{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#ffffff8c;text-decoration:none}.chapter-topbar-link:hover{color:var(--text-inverse);text-decoration:underline}.chapter-topbar-link.active{color:var(--text-inverse);border-bottom:2px solid var(--text-inverse);padding-bottom:2px}.chapter-topbar-right{display:flex;align-items:center;gap:12px;margin-left:auto}.chapter-step-progress{display:flex;flex-direction:column;align-items:flex-end}.chapter-step-progress-text{font-family:JetBrains Mono,monospace;font-size:10px;line-height:1.2;color:#ffffff8c}.chapter-step-progress-bar{width:120px;height:4px;background:#e4e4e7;margin-top:4px;overflow:hidden}.chapter-step-progress-fill{height:100%;background:var(--text-inverse);width:20%;transition:width .3s ease}.chapter-topbar-icon{border:none;background:transparent;color:var(--text-inverse);cursor:pointer;padding:4px;display:flex;align-items:center}.chapter-steps-wrap{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 10px;background:#f4f4f6;border-bottom:1px solid var(--border)}.chapter-steps-bar{display:flex;align-items:center;gap:2px;overflow-x:auto;flex:1;min-width:0}.chapter-step-tab{display:inline-flex;align-items:center;gap:6px;border:none;background:transparent;color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:6px 10px;border-radius:6px;cursor:pointer;white-space:nowrap;transition:background 75ms,color 75ms}.chapter-step-tab:hover:not(.active):not(.locked){background:#e6e6ea}.chapter-step-tab.active{background:var(--accent);color:var(--text-inverse)}.chapter-step-tab.locked{opacity:.45;cursor:not-allowed}.chapter-step-num{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700}.chapter-steps-meta{display:flex;align-items:center;gap:8px;flex-shrink:0;max-width:48%}.chapter-steps-actions{display:flex;align-items:center;gap:6px}.chapter-toolbar-status{display:none;font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chapter-workspace--ide .chapter-toolbar-status{display:inline-block}.chapter-toolbar-btn{-webkit-appearance:none;appearance:none;border:1px solid var(--border);background:#fff;color:var(--text);font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:6px 10px;border-radius:6px;cursor:pointer;white-space:nowrap}.chapter-toolbar-btn:hover{background:#f0f0f2}.chapter-cta-btn--compact{padding:6px 12px!important;font-size:11px!important;gap:4px!important;min-height:0!important}.chapter-cta-btn--compact .material-symbols-outlined{font-size:16px!important}.chapter-status-dot{width:8px;height:8px;background:var(--accent);display:inline-block}.chapter-module-tag{display:none;font-family:JetBrains Mono,monospace;font-size:10px;color:var(--accent);white-space:nowrap}.chapter-workspace--ide .chapter-module-tag{display:none}.chapter-workspace--ide{--chapter-footer-h: 0px}.chapter-workspace--ide .chapter-workspace-footer{display:none!important}.chapter-step-body{flex:1;min-height:0;overflow:hidden;position:relative;display:flex;flex-direction:column;padding-bottom:calc(var(--chapter-footer-h) + 8px)}.chapter-workspace-footer{flex:0 0 var(--chapter-footer-h);height:var(--chapter-footer-h);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px;background:#fff;border-top:1px solid var(--accent);font-family:JetBrains Mono,monospace;font-size:11px;z-index:20}.chapter-footer-left{font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chapter-footer-links{display:none;gap:16px}.chapter-footer-links a{color:var(--text-muted);text-transform:uppercase;font-size:11px;font-weight:700;letter-spacing:.05em;text-decoration:none}.chapter-footer-links a:hover{color:var(--accent);text-decoration:underline}.chapter-follow-banner{padding:8px 16px;background:#eeedf0;border-bottom:1px solid var(--accent);color:var(--text-secondary);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;text-align:center}.chapter-panel{max-width:860px;margin:0 auto;padding:32px 24px 80px;overflow:auto;flex:1}.chapter-panel-copy{font-size:18px;line-height:1.75;color:var(--accent)}.chapter-panel-actions{margin-top:24px}.chapter-cta-btn{display:inline-flex;align-items:center;gap:8px;font-family:JetBrains Mono,monospace;letter-spacing:.06em;text-transform:uppercase}.workspace-shell:not(.hidden){flex:1;min-height:0;display:flex;flex-direction:column}.serif-reading-area{font-family:"PT Serif",Georgia,serif;line-height:1.75}.theory-reader--stitch{flex:1;min-height:0;display:flex;flex-direction:column;height:100%;background:#fff}.theory-reading-bar{flex:0 0 auto;display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:6px 16px;background:#fff;border-bottom:1px solid var(--accent)}.theory-reading-kicker{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);margin-right:4px}.theory-size-group{display:flex;border:1px solid var(--accent)}.theory-size-btn{border:none;background:#fff;padding:6px 8px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;cursor:pointer;text-transform:uppercase}.theory-size-btn:not(:last-child){border-right:1px solid var(--accent)}.theory-size-btn:hover{background:#eeedf0}.theory-size-readout{padding:6px 16px;border-right:1px solid var(--accent);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;background:#eeedf0}.theory-select-wrap{position:relative}.theory-reading-select{-webkit-appearance:none;appearance:none;border:1px solid var(--accent);background:#fff;padding:6px 32px 6px 12px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;outline:none}.theory-select-wrap .material-symbols-outlined{position:absolute;right:6px;top:50%;transform:translateY(-50%);pointer-events:none;font-size:16px}.theory-workspace-body{flex:1;min-height:0;display:flex;overflow:hidden}.theory-read-progress{flex:0 0 3px;height:3px;background:#00000014;position:relative;z-index:2}.theory-read-progress-fill{height:100%;width:0%;background:var(--accent);transition:width .12s ease-out}.theory-hero{margin-bottom:28px;padding:16px 18px;border:1px solid var(--accent);background:linear-gradient(135deg,#f8f8fc,#eeedf0)}.theory-hero-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.theory-hero-badge{display:inline-block;padding:4px 10px;background:var(--accent);color:var(--text-inverse);font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.theory-hero-chip{display:inline-flex;align-items:center;gap:4px;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}.theory-hero-chip .material-symbols-outlined{font-size:14px}.theory-hero-tagline{margin:0;font-family:Geist,system-ui,sans-serif;font-size:14px;color:var(--text-muted);line-height:1.5}.theory-reader-stage{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}.theory-reader-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;background:#fff;background-image:radial-gradient(circle at 1px 1px,rgba(0,0,0,.04) 1px,transparent 0);background-size:24px 24px}.theory-reader-page{max-width:42rem;margin:0 auto;padding:32px 24px 0}.theory-reader-head{margin-bottom:24px}.theory-reader-title{margin:0 0 12px;font-size:clamp(26px,4vw,36px);font-weight:700;letter-spacing:-.02em;line-height:1.15;color:var(--accent)}.theory-reader-rule{height:4px;width:96px;background:var(--accent)}.theory-reader-content{color:var(--accent);font-size:18px}.theory-reader-content p{margin:0 0 1.2em}.theory-reader-content .theory-lead{font-size:1.12em;line-height:1.85;padding-left:14px;border-left:3px solid var(--accent)}.theory-reader-content .theory-lead:first-letter{float:left;font-size:3.2em;line-height:.85;padding-right:10px;padding-top:4px;font-weight:700}.theory-reader-content strong{font-weight:700}.theory-reader-content .theory-section-head{margin-top:1.6em;padding-bottom:6px;border-bottom:2px solid rgba(0,0,0,.08)}.theory-fun-list li{margin-bottom:.5em;padding-left:4px}.theory-fun-list li::marker{color:var(--accent);font-weight:700}.theory-callout{margin:1.5em 0;padding:14px 16px 16px;border:2px solid var(--accent);background:#fff;box-shadow:4px 4px #0000000f}.theory-callout-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.theory-callout-head .material-symbols-outlined{font-size:18px}.theory-reader-content blockquote,.theory-reader-content .theory-note{margin:1.5em 0}.theory-float-figure{border:1px solid rgba(0,0,0,.12);padding:8px;background:#fff;box-shadow:0 8px 24px #0000000f}.theory-reader-spacer{height:128px}.theory-sticky-wrap{position:fixed;bottom:calc(var(--chapter-footer-h) + 8px);left:0;z-index:30;padding:16px;pointer-events:none}.theory-sticky-cta{pointer-events:auto;display:inline-flex;align-items:center;gap:12px;border:none;background:var(--accent);color:var(--text-inverse);font-family:JetBrains Mono,monospace;font-size:14px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:14px 24px;cursor:pointer;box-shadow:4px 4px #00000026;transition:transform .12s,box-shadow .12s}.theory-sticky-cta:hover{background:#333;transform:translate(-1px,-1px);box-shadow:5px 5px #0000002e}.theory-sticky-cta:disabled{opacity:.45;cursor:not-allowed;transform:none}.theory-sticky-cta .material-symbols-outlined{font-size:18px}.theory-reader--stitch[data-theme=sepia] .theory-reader-scroll{background-color:#f4ecd8;background-image:radial-gradient(circle at 1px 1px,rgba(0,0,0,.05) 1px,transparent 0)}.theory-reader--stitch[data-theme=sepia] .theory-hero{background:linear-gradient(135deg,#faf3e3,#efe4cf)}.theory-reader--stitch[data-theme=sepia] .theory-reader-title,.theory-reader--stitch[data-theme=sepia] .theory-reader-content{color:#1a1a1a}.theory-reader--stitch[data-theme=dark] .theory-reader-scroll{background-color:#111;background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.06) 1px,transparent 0)}.theory-reader--stitch[data-theme=dark] .theory-hero{background:linear-gradient(135deg,#1a1a1a,#0d0d0d);border-color:#fff3}.theory-reader--stitch[data-theme=dark] .theory-hero-badge{background:#fff;color:#111}.theory-reader--stitch[data-theme=dark] .theory-hero-tagline{color:#ffffff8c}.theory-reader--stitch[data-theme=dark] .theory-reader-title,.theory-reader--stitch[data-theme=dark] .theory-reader-content{color:#f5f5f5}.theory-reader--stitch[data-theme=dark] .theory-callout{background:#1a1a1a;border-color:#ffffff40;box-shadow:4px 4px #ffffff0a}.theory-reader--stitch[data-theme=dark] .theory-callout-head{color:#fff}.theory-reader--stitch[data-theme=dark] .theory-lead{border-left-color:#fff}.chapter-workspace[data-reader-theme]:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:#000;opacity:calc(1 - var(--reader-lux, 1));z-index:100;transition:opacity .15s ease}.theory-lux-group{display:inline-flex;align-items:center;gap:8px;padding:0 4px;min-width:140px}.theory-lux-group .material-symbols-outlined{font-size:18px;color:var(--text-muted)}.theory-lux-slider{width:88px;height:4px;accent-color:var(--accent);cursor:pointer}.theory-lux-readout{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.04em;min-width:36px;color:var(--text-muted)}.theory-tool-btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--accent);background:#fff;color:var(--accent);width:34px;height:34px;padding:0;cursor:pointer;margin-left:auto}.theory-tool-btn:hover{background:#eeedf0}.theory-tool-btn .material-symbols-outlined{font-size:20px}.chapter-workspace[data-reader-theme=dark]{background:#0a0a0a;--pe-bg: #0a0a0a}.chapter-workspace[data-reader-theme=dark] .theory-reader--stitch{background:#0a0a0a}.chapter-workspace[data-reader-theme=dark] .chapter-steps-wrap{background:#111;border-bottom-color:#ffffff1f}.chapter-workspace[data-reader-theme=dark] .chapter-step-tab{color:#ffffff73}.chapter-workspace[data-reader-theme=dark] .chapter-step-tab:hover:not(.active):not(.locked){background:#1c1c1c}.chapter-workspace[data-reader-theme=dark] .chapter-step-tab.active{background:#fff;color:#111}.chapter-workspace[data-reader-theme=dark] .chapter-module-tag{color:#ffffff73}.chapter-workspace[data-reader-theme=dark] .chapter-module-bar{background:#333}.chapter-workspace[data-reader-theme=dark] .chapter-module-fill{background:#fff}.chapter-workspace[data-reader-theme=dark] .chapter-workspace-footer{background:#111;border-top-color:#ffffff1f}.chapter-workspace[data-reader-theme=dark] .chapter-footer-left{color:#ffffff73}.chapter-workspace[data-reader-theme=dark] .chapter-footer-links a{color:#fff6}.chapter-workspace[data-reader-theme=dark] .chapter-footer-links a:hover{color:#fff}.chapter-workspace[data-reader-theme=dark] .theory-reading-bar{background:#111;border-bottom-color:#ffffff1f}.chapter-workspace[data-reader-theme=dark] .theory-reading-kicker,.chapter-workspace[data-reader-theme=dark] .theory-lux-readout,.chapter-workspace[data-reader-theme=dark] .theory-lux-group .material-symbols-outlined{color:#ffffff73}.chapter-workspace[data-reader-theme=dark] .theory-size-group,.chapter-workspace[data-reader-theme=dark] .theory-reading-select,.chapter-workspace[data-reader-theme=dark] .theory-tool-btn{border-color:#fff3;background:#1a1a1a;color:#f0f0f0}.chapter-workspace[data-reader-theme=dark] .theory-size-btn{background:#1a1a1a;color:#f0f0f0}.chapter-workspace[data-reader-theme=dark] .theory-size-btn:hover,.chapter-workspace[data-reader-theme=dark] .theory-tool-btn:hover{background:#252525}.chapter-workspace[data-reader-theme=dark] .theory-size-readout{background:#252525;color:#f0f0f0}.chapter-workspace[data-reader-theme=dark] .theory-size-btn:not(:last-child),.chapter-workspace[data-reader-theme=dark] .theory-size-readout{border-color:#ffffff26}.chapter-workspace[data-reader-theme=dark] .theory-read-progress{background:#ffffff14}.chapter-workspace[data-reader-theme=dark] .theory-read-progress-fill{background:#fff}.chapter-workspace[data-reader-theme=dark] .theory-hero-chip{color:#ffffff73}.chapter-workspace[data-reader-theme=dark] .theory-reader-title{color:#fff}.chapter-workspace[data-reader-theme=dark] .theory-reader-rule{background:#fff}.chapter-workspace[data-reader-theme=dark] .theory-section-head{border-bottom-color:#ffffff1f}.chapter-workspace[data-reader-theme=dark] .theory-float-figure{background:#1a1a1a;border-color:#ffffff26}.chapter-workspace[data-reader-theme=dark] .theory-sticky-cta{background:#fff;color:#111;box-shadow:4px 4px #ffffff1f}.chapter-workspace[data-reader-theme=dark] .theory-sticky-cta:hover{background:#e8e8e8}.chapter-workspace[data-reader-theme=sepia]{background:#ebe3d0;--pe-bg: #ebe3d0}.chapter-workspace[data-reader-theme=sepia] .theory-reader--stitch{background:#ebe3d0}.chapter-workspace[data-reader-theme=sepia] .chapter-steps-wrap{background:#e4dcc8;border-bottom-color:#0000001f}.chapter-workspace[data-reader-theme=sepia] .chapter-step-tab:hover:not(.active):not(.locked){background:#d8d0bc}.chapter-workspace[data-reader-theme=sepia] .chapter-workspace-footer{background:#e4dcc8;border-top-color:#0000001f}.chapter-workspace[data-reader-theme=sepia] .theory-reading-bar{background:#e4dcc8;border-bottom-color:#0000001f}.chapter-workspace[data-reader-theme=sepia] .theory-size-btn:hover,.chapter-workspace[data-reader-theme=sepia] .theory-tool-btn:hover{background:#d8d0bc}.chapter-workspace[data-reader-theme=sepia] .theory-reader-scroll{background-color:#f4ecd8}.chapter-workspace[data-reader-theme=light] .theory-reader--stitch{background:#fff}.chapter-workspace--theory-immersive .chapter-topbar,.chapter-workspace--theory-immersive .chapter-steps-wrap,.chapter-workspace--theory-immersive .chapter-workspace-footer,.chapter-workspace--theory-immersive .theory-reading-bar{display:none!important}.chapter-workspace--theory-immersive .chapter-step-body{padding-bottom:0}.chapter-workspace--theory-immersive .theory-sticky-wrap{bottom:20px}.chapter-workspace--theory-immersive .theory-reader-page{max-width:52rem;padding-top:48px}.theory-reader--immersive .theory-hero{display:none}.theory-immersive-hud{display:none;position:fixed;top:12px;right:12px;z-index:200;align-items:center;gap:8px;padding:6px 8px;background:#000000b8;backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.15);border-radius:8px}.theory-reader--immersive .theory-immersive-hud{display:flex}.theory-immersive-exit{display:inline-flex;align-items:center;gap:6px;border:none;background:transparent;color:#fff;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;padding:6px 8px;border-radius:4px}.theory-immersive-exit:hover{background:#ffffff1a}.theory-immersive-exit .material-symbols-outlined{font-size:18px}.theory-immersive-lux{display:inline-flex;align-items:center;gap:6px;padding-left:8px;border-left:1px solid rgba(255,255,255,.15)}.theory-immersive-lux .material-symbols-outlined{font-size:16px;color:#ffffffb3}.theory-immersive-lux .theory-lux-readout{color:#ffffffb3}.theory-immersive-lux .theory-lux-slider{width:72px;accent-color:#fff}@media(max-width:767px){.theory-reading-bar{gap:10px;padding:8px 12px}.theory-lux-group{min-width:120px}.theory-lux-slider{width:64px}.theory-tool-btn{margin-left:0}}@media(min-width:768px){.chapter-topbar-nav{display:none!important}.chapter-steps-meta,.chapter-footer-links{display:flex}.theory-reader-page{padding:48px 32px 0;max-width:46rem}}@media(min-width:1024px){.theory-reader-page{padding:56px 40px 0;max-width:48rem}}.chapter-view{display:flex;flex-direction:column;height:100%;min-height:0}.btn-primary.disabled,.btn-primary:disabled{opacity:.45;cursor:not-allowed}.step-body{flex:1;min-height:0;overflow:auto;position:relative;display:flex;flex-direction:column}.theory{max-width:860px;margin:0 auto;padding:26px 24px 60px}.theory h3{color:var(--text)}.theory p{line-height:1.7;color:var(--text-secondary);font-size:14px;white-space:pre-wrap}.theory-photos{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0}.theory-photos img{width:min(var(--theory-img-width, 400px),100%);height:var(--theory-img-height, 260px);object-fit:contain;object-position:center;background:#0000000a;border-radius:10px;border:1px solid var(--border);cursor:zoom-in}.theory-reader{display:flex;flex-direction:column;flex:1;min-height:0;height:100%}.theory-reader-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:5}.reader-toolbar-label{font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--text-muted);margin-right:4px}.reader-tool-btn{min-width:34px;height:32px;padding:0 10px;border-radius:8px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text);cursor:pointer;font-size:14px;font-weight:600}.reader-tool-btn:hover{border-color:var(--border-focus);color:var(--text)}.reader-size-label{min-width:42px;text-align:center;font-size:12px;color:var(--text-muted);font-weight:600}.reader-select{height:32px;border-radius:8px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text);padding:0 10px;font-size:12px;cursor:pointer}.theory-reader-scroll{flex:1;min-height:0;overflow:auto;scroll-behavior:smooth}.theory-reader-stage{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.theory-scroll-body{position:relative;min-height:100%}.theory-doodle-layer{position:absolute;top:0;left:0;width:100%;pointer-events:none;z-index:4}.theory-doodle-layer.doodle-active{pointer-events:auto;cursor:crosshair;touch-action:none}.teaching-follow-badge{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:6;background:var(--bg-inverse);color:var(--text-inverse);font-size:12px;font-weight:700;padding:6px 14px;border-radius:999px;box-shadow:var(--shadow-sm);pointer-events:none}.reader-tool-btn.teaching-toggle.active{background:var(--accent);border-color:var(--accent);color:var(--text-inverse)}.reader-tool-btn.active:not(.teaching-toggle){background:var(--accent);border-color:var(--accent);color:var(--text-inverse)}.theory-reader-content.teach-line-select{cursor:pointer;user-select:none}.theory-reader-content.teach-line-select .teach-line:hover{background:linear-gradient(90deg,#ffd6406b,#ffe67838)!important;box-shadow:inset 4px 0 #f0b400;border-radius:4px;outline:none}.theory-reader:has(.theory-doodle-layer.doodle-active) .theory-reader-content{user-select:none}.theory-reader-content .teach-line-highlight{background:linear-gradient(90deg,#ffd6409e,#ffec8c61)!important;box-shadow:inset 5px 0 #e6a800,0 0 0 1px #e6a80059;border-radius:4px;transition:background .15s ease,box-shadow .15s ease}.theory-reader[data-theme=sepia] .theory-reader-content .teach-line-highlight{background:linear-gradient(90deg,#ffc4488c,#ffdc8c52)!important;box-shadow:inset 5px 0 #c98900,0 0 0 1px #c989004d}.theory-reader[data-theme=light] .theory-reader-content .teach-line-highlight{background:linear-gradient(90deg,#ffdc50a6,#fff09666)!important;box-shadow:inset 5px 0 #e6a800,0 0 0 1px #e6a80066}.theory-reader[data-theme=dark] .theory-reader-content .teach-line-highlight{background:linear-gradient(90deg,#409cff6b,#64b4ff38)!important;box-shadow:inset 5px 0 #4ea1ff,0 0 0 1px #4ea1ff73}.theory-reader[data-theme=dark] .theory-reader-content.teach-line-select .teach-line:hover{background:linear-gradient(90deg,#409cff47,#64b4ff24)!important;box-shadow:inset 4px 0 #4ea1ff}.teacher-dash{max-width:1120px;margin:0 auto}.th-root{flex:1;min-height:0;display:flex;flex-direction:column;background:radial-gradient(ellipse 80% 50% at 10% -10%,rgba(0,0,0,.04),transparent 55%),linear-gradient(180deg,#f4f4f7 0%,var(--pe-bg) 40%);color:var(--text)}.th-top{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 28px;border-bottom:1px solid rgba(0,0,0,.08);background:#ffffffb8;backdrop-filter:blur(10px)}.th-brand{display:flex;align-items:center;gap:12px;min-width:0}.th-brand img{border-radius:6px}.th-brand-title{font-family:JetBrains Mono,ui-monospace,monospace;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.th-brand-sub{font-size:12px;color:var(--text-muted);margin-top:1px}.th-top-right{display:flex;align-items:center;gap:14px;flex-shrink:0}.th-version{font-size:11px;color:var(--text-faint);font-family:JetBrains Mono,monospace}.th-user{font-size:13px;font-weight:600}.th-logout{height:32px;padding:0 12px;border:1px solid var(--accent);background:#fff;color:var(--accent);font-size:12px;font-weight:600;cursor:pointer}.th-logout:hover{background:#111;color:#fff}.th-page{flex:1;min-height:0;overflow:auto;padding:28px 28px 64px;max-width:1120px;width:100%;margin:0 auto;box-sizing:border-box}.th-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px;flex-wrap:wrap}.th-kicker{margin:0 0 6px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-family:JetBrains Mono,monospace}.th-hero h1{margin:0;font-size:clamp(28px,4vw,40px);font-weight:700;letter-spacing:-.03em;line-height:1.1}.th-hero-sub{margin:10px 0 0;color:var(--text-muted);font-size:14px;max-width:42ch;line-height:1.45}.th-hero-tools{display:flex;flex-direction:column;gap:6px;align-items:flex-end}.th-class-label{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);font-family:JetBrains Mono,monospace}.th-class-sel{height:40px;min-width:140px;padding:0 12px;border:1px solid var(--accent);background:#fff;font-size:14px;font-weight:600;cursor:pointer}.th-nav{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px;margin-bottom:28px}.th-nav-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 12px 12px;border:1px solid rgba(0,0,0,.1);background:#fff;text-align:left;cursor:pointer;transition:border-color .12s,transform .12s,background .12s;min-height:96px}.th-nav-card:hover{border-color:var(--accent);transform:translateY(-1px)}.th-nav-card.active{background:#111;border-color:#111;color:#fff}.th-nav-card.active .th-nav-blurb{color:#ffffff8c}.th-nav-ico{font-size:22px;line-height:1}.th-nav-label{font-size:13px;font-weight:700}.th-nav-blurb{font-size:11px;color:var(--text-muted);line-height:1.3}.th-nav-badge{position:absolute;top:8px;right:8px;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#e53935;color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.th-stage{background:#fff;border:1px solid rgba(0,0,0,.1);padding:22px 22px 28px;min-height:280px}.th-stage-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.th-stage-head h2{margin:0;font-size:20px;font-weight:700;letter-spacing:-.02em}.th-hint{margin:6px 0 0;color:var(--text-muted);font-size:13px;line-height:1.45;max-width:56ch}.th-filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.th-search{min-width:200px;flex:1}.th-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}.th-stat{padding:18px 16px;border:1px solid rgba(0,0,0,.08);background:#fafafa}.th-stat-n{font-size:32px;font-weight:700;letter-spacing:-.03em;line-height:1}.th-stat-l{margin-top:8px;font-size:12px;color:var(--text-muted)}.th-quick{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.th-quick-btn{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:18px 16px;border:1px solid rgba(0,0,0,.12);background:#fff;cursor:pointer;text-align:left;transition:border-color .12s,background .12s}.th-quick-btn:hover{border-color:var(--accent)}.th-quick-btn.primary{background:#111;color:#fff;border-color:#111}.th-quick-btn.primary small{color:#ffffff8c}.th-quick-btn .material-symbols-outlined{font-size:22px}.th-quick-btn span:nth-child(2){font-size:14px;font-weight:700}.th-quick-btn small{font-size:12px;color:var(--text-muted)}.th-chapter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.th-chapter{display:flex;flex-direction:column;gap:10px;padding:16px;border:1px solid rgba(0,0,0,.1);background:#fafafa;text-align:left;cursor:pointer;transition:border-color .12s,transform .12s}.th-chapter:hover{border-color:var(--accent);transform:translateY(-1px);background:#fff}.th-chapter-meta{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--text-muted);font-family:JetBrains Mono,monospace;text-transform:uppercase;letter-spacing:.04em}.th-chapter-title{font-size:15px;font-weight:700;line-height:1.3}.th-chapter-cta{font-size:12px;color:var(--text-muted);margin-top:auto}.teach-panel{max-width:1120px;margin:0 auto;padding:8px 4px 48px;animation:teach-in .35s ease both}.teach-panel--desk{padding:0 0 32px}@keyframes teach-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.teach-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;border-bottom:1px solid rgba(0,0,0,.08);margin-bottom:20px;background:linear-gradient(180deg,rgba(0,0,0,.03) 0%,transparent 72%),repeating-linear-gradient(-12deg,transparent,transparent 11px,rgba(0,0,0,.015) 11px,rgba(0,0,0,.015) 12px);margin-left:-8px;margin-right:-8px;padding:8px 8px 22px;border-radius:0}.teach-kicker{margin:0 0 8px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.teach-title{margin:0;font-size:clamp(28px,3.6vw,40px);font-weight:700;letter-spacing:-.035em;line-height:1.05;color:var(--text)}.teach-sub{margin:12px 0 0;max-width:48ch;font-size:14px;line-height:1.5;color:var(--text-muted)}.teach-hero-tools{display:flex;flex-direction:column;gap:6px;align-items:stretch;min-width:160px}.teach-class-label{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.teach-class-sel,.teach-class-pill{height:44px;min-width:160px;padding:0 14px;border:1.5px solid #111;background:#fff;color:#111;font-size:15px;font-weight:700;letter-spacing:-.01em;cursor:pointer;box-shadow:3px 3px #111}.teach-class-pill{display:flex;align-items:center;cursor:default;box-shadow:none;background:#111;color:#fff}.teach-class-sel:focus{outline:2px solid #111;outline-offset:2px}.teach-steps{list-style:none;margin:0 0 28px;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.teach-steps li{display:flex;gap:12px;align-items:flex-start;padding:14px 14px 14px 12px;border:1px solid rgba(0,0,0,.1);background:#fff;min-height:88px}.teach-steps li strong{display:block;font-size:13px;font-weight:700;margin-bottom:4px;letter-spacing:-.01em}.teach-steps li span:not(.teach-step-n){display:block;font-size:12px;line-height:1.4;color:var(--text-muted)}.teach-step-n{flex:0 0 auto;width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:#111;color:#fff;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:700}.teach-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.teach-section-head h3{margin:0;font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-family:JetBrains Mono,monospace;color:var(--text)}.teach-meta{font-size:12px;color:var(--text-muted);font-family:JetBrains Mono,monospace}.teach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.teach-chapter{display:grid;grid-template-columns:56px 1fr;gap:0;min-height:148px;padding:0;border:1.5px solid rgba(0,0,0,.12);background:#fff;text-align:left;cursor:pointer;overflow:hidden;transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease}.teach-chapter:hover{border-color:#111;transform:translateY(-2px);box-shadow:4px 4px #111}.teach-chapter:hover .teach-chapter-cta{color:#111}.teach-chapter:focus-visible{outline:2px solid #111;outline-offset:2px}.teach-chapter.is-locked{background:#f6f6f6}.teach-chapter.is-locked .teach-chapter-idx{background:#e8e8e8;color:var(--text-muted)}.teach-chapter-idx{display:flex;align-items:flex-start;justify-content:center;padding-top:18px;background:#111;color:#fff;font-family:JetBrains Mono,monospace;font-size:18px;font-weight:700;letter-spacing:-.04em}.teach-chapter-body{display:flex;flex-direction:column;gap:8px;padding:16px 16px 14px;min-width:0}.teach-chapter-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.teach-chapter-label{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.teach-badge{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border:1px solid rgba(0,0,0,.12)}.teach-badge.is-open{background:#111;border-color:#111;color:#fff}.teach-badge.is-locked{background:transparent;color:var(--text-muted)}.teach-chapter-title{font-size:15px;font-weight:700;line-height:1.35;letter-spacing:-.015em;color:var(--text);flex:1}.teach-chapter-cta{margin-top:auto;font-size:12px;font-weight:600;color:var(--text-muted);transition:color .12s}.teach-empty,.teach-loading{grid-column:1 / -1;padding:36px 20px;text-align:center;border:1px dashed rgba(0,0,0,.18);background:#fff9;color:var(--text-muted);font-size:14px}@media(max-width:820px){.teach-steps{grid-template-columns:1fr}.teach-hero{align-items:flex-start}.teach-hero-tools,.teach-class-sel,.teach-class-pill{width:100%}}@media(max-width:560px){.teach-grid{grid-template-columns:1fr}.teach-chapter{min-height:0}}.th-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.th-table{width:100%}.th-row-actions{display:flex;gap:8px;flex-wrap:wrap}.th-empty{padding:36px 16px;text-align:center;color:var(--text-muted);font-size:14px;border:1px dashed rgba(0,0,0,.12)}@media(max-width:900px){.th-top{padding:12px 16px}.th-page{padding:20px 16px 48px}.th-stats,.th-quick{grid-template-columns:1fr}.th-nav{grid-template-columns:repeat(2,1fr)}.th-hero-tools{align-items:flex-start;width:100%}.th-class-sel{width:100%}.th-stage{padding:16px}}@media(max-width:480px){.th-nav{grid-template-columns:1fr 1fr}.th-brand-sub{display:none}}.theory-reader-page{width:100%;max-width:min(1080px,92vw);margin:0 auto;padding:36px 40px 48px}.theory-reader-title{font-size:1.55em;font-weight:700;line-height:1.25;margin:0 0 1.2em;letter-spacing:-.02em}.theory-reader-content p{margin:0 0 1.15em;line-height:1.75;text-align:left;hyphens:auto}.theory-reader-content .align-left,.theory-reader-content [style*="text-align: left"],.theory-reader-content [style*="text-align:left"]{text-align:left}.theory-reader-content .align-center,.theory-reader-content [style*="text-align: center"],.theory-reader-content [style*="text-align:center"]{text-align:center}.theory-reader-content .align-right,.theory-reader-content [style*="text-align: right"],.theory-reader-content [style*="text-align:right"]{text-align:right}.theory-reader-content [style*="text-align: justify"],.theory-reader-content [style*="text-align:justify"]{text-align:justify}.theory-reader-content h2{font-size:1.25em;margin:1.3em 0 .6em;font-weight:700}.theory-reader-content h3{font-size:1.08em;margin:1.1em 0 .5em;font-weight:700}.theory-reader-content ul,.theory-reader-content ol{margin:0 0 1.1em 1.2em}.theory-reader-content li{margin-bottom:.35em}.theory-reader-content hr{border:none;border-top:1px solid rgba(128,128,128,.25);margin:1.5em 0}.theory-reader-content blockquote{margin:1.1em 0;padding:.55em 1em;border-left:3px solid rgba(128,128,128,.45);opacity:.92}.theory-inline-figure,.theory-reader-figure{margin:1.5em auto;text-align:center;width:min(var(--theory-img-width, 400px),100%);max-width:100%}.theory-inline-figure img,.theory-reader-figure img,.theory-reader-content img,.theory-doc-page img{display:block;width:min(var(--theory-img-width, 400px),100%);height:var(--theory-img-height, 260px);margin:0 auto;object-fit:contain;object-position:center;background:#0000000a;border-radius:10px;box-shadow:0 8px 28px #0000002e;cursor:zoom-in}.theory-doc-page .theory-inline-figure img{cursor:pointer}.theory-reader-content p:last-child{margin-bottom:0}.theory-table-wrap{overflow-x:auto;margin:1.2em 0}.theory-reader-content table.theory-table,.theory-doc-page table.theory-table{width:100%;border-collapse:collapse;font-size:.92em;line-height:1.5}.theory-reader-content table.theory-table th,.theory-reader-content table.theory-table td,.theory-doc-page table.theory-table th,.theory-doc-page table.theory-table td{border:1px solid rgba(91,70,54,.35);padding:8px 12px;vertical-align:top;text-align:left}.theory-reader-content table.theory-table th,.theory-doc-page table.theory-table th{background:#5b46361a;font-weight:700}.theory-reader[data-theme=dark] .theory-reader-content table.theory-table th,.theory-reader[data-theme=dark] .theory-reader-content table.theory-table td{border-color:#c8d2dc40}.theory-reader[data-theme=dark] .theory-reader-content table.theory-table th{background:#ffffff14}.theory-reader[data-theme=light] .theory-reader-content table.theory-table th,.theory-reader[data-theme=light] .theory-reader-content table.theory-table td{border-color:#2b334033}.theory-reader[data-theme=light] .theory-reader-content table.theory-table th{background:#2b33400f}.theory-reader-empty{font-style:italic;opacity:.75}.theory-reader-gallery{display:flex;flex-direction:column;gap:22px;margin-top:2em;padding-top:1.5em;border-top:1px solid rgba(128,128,128,.25)}.theory-reader-figure{margin:0}.theory-reader-figure figcaption{margin-top:8px;font-size:.72em;opacity:.65;text-align:center}.theory-reader-footer{flex-shrink:0;margin-top:auto}.theory-reader[data-theme=dark] .theory-reader-scroll{background:linear-gradient(180deg,#111,#000)}.theory-reader[data-theme=dark] .theory-reader-title,.theory-reader[data-theme=dark] .theory-reader-content{color:#fff}.theory-reader[data-theme=dark] .theory-reader-toolbar{background:#111;border-bottom-color:#333}.theory-reader[data-theme=dark] .reader-tool-btn,.theory-reader[data-theme=dark] .reader-select{background:#222;border-color:#444;color:#fff}.theory-reader[data-theme=sepia] .theory-reader-scroll{background:linear-gradient(180deg,#f5f5f5,#eee)}.theory-reader[data-theme=sepia] .theory-reader-title{color:#111}.theory-reader[data-theme=sepia] .theory-reader-content{color:#222}.theory-reader[data-theme=sepia] .theory-reader-figure figcaption{color:#666}.theory-reader[data-theme=sepia] .theory-reader-gallery{border-top-color:#0000001f}.theory-reader[data-theme=light] .theory-reader-scroll{background:linear-gradient(180deg,#fff,#fafafa)}.theory-reader[data-theme=light] .theory-reader-title{color:#000}.theory-reader[data-theme=light] .theory-reader-content{color:#111}.theory-reader[data-theme=light] .theory-reader-figure figcaption{color:#666}.theory-reader[data-theme=light] .theory-reader-gallery{border-top-color:#0000001a}.reader-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20000;background:#000000eb;display:flex;flex-direction:column}.reader-lightbox-bar{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:12px 16px;background:#0000008c;border-bottom:1px solid rgba(255,255,255,.08)}.reader-lightbox-zoom{margin-right:auto;font-size:13px;color:var(--text-secondary);font-weight:600;min-width:48px}.reader-lightbox-close{font-size:16px;padding:0 12px}.reader-lightbox-viewport{flex:1;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;cursor:grab;touch-action:none}.reader-lightbox-viewport.dragging{cursor:grabbing}.reader-lightbox-viewport img{max-width:none;max-height:none;width:auto;height:auto;max-width:min(92vw,100%);max-height:min(82vh,100%);object-fit:contain;transform-origin:center center;user-select:none;pointer-events:none;border-radius:4px;box-shadow:0 20px 60px #00000080}@media(max-width:640px){.theory-reader-page{max-width:100%;padding:24px 16px 36px}.theory-reader-toolbar{padding:8px 12px}.reader-select{max-width:110px}}.step-guide{background:var(--bg-muted);border:1px solid var(--border);color:var(--text-secondary);padding:10px 14px;border-radius:8px;margin:0 0 12px;font-size:13px}.workspace-shell{flex:1;min-height:0;display:flex;flex-direction:column;position:relative;padding-bottom:var(--chapter-footer-h, 32px)}.workspace-shell .ide-wrap{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.sim-workspace{flex:1;min-height:0;display:flex;overflow:hidden}.sim-sidebar{width:260px;flex-shrink:0;display:none;flex-direction:column;border-right:1px solid var(--accent);background:var(--pe-bg);font-family:JetBrains Mono,monospace}.sim-sidebar-head{padding:16px;border-bottom:1px solid var(--accent);background:#eeedf0}.sim-sidebar-kicker{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent)}.sim-sidebar-ready{font-size:10px;font-weight:700;letter-spacing:.12em;color:var(--text-muted);margin-top:2px}.sim-sidebar-nav{flex:1;padding:8px 0;overflow:auto}.sim-sidebar-section{padding:12px 16px 4px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);opacity:.5}.sim-sidebar-item{display:flex;align-items:center;gap:12px;padding:10px 16px;font-size:11px;font-weight:700;color:var(--text-muted);cursor:default}.sim-sidebar-item.active{background:var(--accent);color:var(--text-inverse)}.sim-sidebar-item .material-symbols-outlined{font-size:20px}.sim-sidebar-pins{padding:12px 16px;border-top:1px solid var(--accent)}.sim-pin-row{display:flex;justify-content:space-between;align-items:center;font-size:11px;padding:6px 0;border-bottom:1px solid rgba(0,0,0,.08)}.sim-pin-badge{padding:2px 4px;border:1px solid var(--accent);font-size:10px;text-transform:uppercase}.sim-pin-badge.filled{background:var(--accent);color:var(--text-inverse)}.sim-sidebar-exit{display:flex;align-items:center;gap:12px;width:100%;border:none;border-top:1px solid var(--accent);background:transparent;padding:12px 16px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);cursor:pointer}.sim-sidebar-exit:hover{background:#eeedf0}.sim-main{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}.sim-action-bar{flex:0 0 64px;height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:#fff;border-top:1px solid var(--accent)}.sim-reset-btn{border:1px solid var(--accent);background:#fff;color:var(--accent);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:10px 16px;cursor:pointer}.sim-reset-btn:hover{background:#eeedf0}.sim-action-right{display:flex;align-items:center;gap:16px}.sim-action-status{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-muted)}.chapter-module-progress{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.chapter-module-bar{width:128px;height:4px;background:#dfe0e0;position:relative;overflow:hidden}.chapter-module-fill{height:100%;background:var(--accent);width:40%;transition:width .3s ease}@media(min-width:1024px){.sim-sidebar{display:flex}}.ide-root--stitch{background:#fff}.ide-root--stitch #body{flex:1;min-height:0}.ide-toolbar-aux{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 10px;background:#f7f7f9;border-bottom:1px solid var(--border);flex-wrap:nowrap}.ide-app-toolbar .ide-toolbar-aux-left,.ide-app-toolbar .ide-toolbar-aux-right{flex-wrap:nowrap}.ide-toolbar-sep{width:1px;height:18px;background:var(--border);margin:0 4px}.ide-tool-btn--primary{background:#111!important;color:#fff!important;border-color:#111!important;font-weight:700}.ide-tool-btn--primary:hover{filter:.92}.ide-toolbar-aux-left,.ide-toolbar-aux-right{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.ide-tool-btn--stitch .material-symbols-outlined{font-size:18px;line-height:1}.ide-run-hidden{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;overflow:hidden}.ide-tool-btn--stitch{height:28px;padding:0 10px;border-radius:0;border:1px solid var(--accent);background:#fff;color:var(--accent);font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin-left:0}.mode-toggle--stitch{margin-left:0;border-radius:0;border:1px solid var(--accent);background:#fff}.mode-toggle--stitch .mode-btn{border-radius:0;font-size:10px;text-transform:uppercase}.compile-mode-toggle{margin-left:8px}.compile-mode-toggle{margin-left:8px;flex-shrink:0}.compile-mode-toggle .mode-btn{min-width:4.5rem;padding:4px 8px}.ide-root--stitch #editor-column{flex:0 0 50%;border-right:none;background:#fff}.ide-column-divider{flex:0 0 5px;width:5px;cursor:col-resize;background:#0000000f;border-left:1px solid var(--accent);border-right:1px solid var(--accent);transition:background .15s}.ide-column-divider:hover{background:#0000001f}.ide-editor-head{height:40px;flex:0 0 40px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--accent);background:#f3f3f6}.ide-editor-head-left{display:flex;align-items:center;gap:8px;min-width:0}.ide-editor-head-right{display:flex;align-items:center;gap:10px;flex-shrink:0}.ide-pane-fs-btn{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 10px;border:1px solid var(--accent);background:#fff;color:var(--accent);font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;cursor:pointer}.ide-pane-fs-btn .material-symbols-outlined{font-size:16px}.ide-pane-fs-btn:hover{background:#eeedf0}.ide-pane-fs-btn.active{background:var(--accent);color:#fff}.sim-action-left{display:flex;align-items:center;gap:12px;min-width:0;flex:1}.ide-editor-head-left .material-symbols-outlined{font-size:18px;color:var(--text-muted)}.ide-editor-head .file-name{margin:0;padding:0;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);max-width:180px}.ide-editor-path{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted)}.ide-serial-panel{height:96px;flex:0 0 96px;border-top:1px solid var(--accent);background:#000}.ide-serial-panel #output-header{height:28px;background:#000;color:#ffffff80;font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.04em;text-transform:uppercase;padding:0 8px}.ide-serial-baud{display:inline-flex;align-items:center;margin-left:8px}.ide-serial-baud select{height:18px;border-radius:3px;border:1px solid rgba(255,255,255,.22);background:#ffffff0f;color:#ffffffbf;font-family:JetBrains Mono,monospace;font-size:10px;padding:0 2px;cursor:pointer}.ide-serial-baud select:hover{border-color:var(--accent);color:#d8f3dc}.ide-serial-baud select option{background:#0b0b0b;color:#d8f3dc}.ide-serial-connected{margin-left:auto;margin-right:8px}.ide-serial-panel #btn-clear-output{border-color:#ffffff40;background:transparent;color:#fff9}.ide-serial-send{display:flex;gap:6px;padding:6px 8px;border-top:1px solid rgba(255,255,255,.08);background:#00000040}.ide-serial-send input{flex:1;min-width:0;height:26px;border-radius:4px;border:1px solid rgba(255,255,255,.15);background:#00000059;color:#e8ffe8;font:12px/1 Consolas,monospace;padding:0 8px}.ide-serial-send button{height:26px;padding:0 10px;border-radius:4px;border:1px solid rgba(255,255,255,.18);background:#1b4332;color:#d8f3dc;font-size:11px;cursor:pointer}.ide-serial-send button:hover{background:#2d6a4f}.ide-serial-panel #output-body{background:#000;color:#22c55e;font-family:JetBrains Mono,monospace;font-size:12px}.ide-serial-panel .output-line-info{color:#22c55e}.ide-serial-panel .output-line-error{color:#f87171}.ide-serial-panel .output-line-system{color:#ffffff73}#sim-pane{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;background:var(--pe-bg);position:relative}.ide-sim-toolbar{flex:0 0 40px;height:40px;display:flex;align-items:center;justify-content:space-between;padding:0 12px;background:#fff;border-bottom:1px solid var(--accent);gap:8px}.ide-sim-toolbar-left{display:flex;align-items:center;gap:4px;flex:1;min-width:0;overflow-x:auto}.ide-sim-toolbar-divider{width:1px;height:24px;background:#00000026;flex-shrink:0}.ide-sim-toolbar-right{display:flex;align-items:center;gap:4px;flex-shrink:0}.ide-sim-run{display:inline-flex;align-items:center;gap:6px;border:none;background:var(--accent);color:var(--text-inverse);font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:6px 12px;cursor:pointer}.ide-sim-run:disabled{opacity:.45;cursor:not-allowed}.ide-sim-run .material-symbols-outlined{font-size:16px}.ide-sim-icon-btn{border:1px solid rgba(0,0,0,.15);background:#fff;color:var(--accent);padding:4px;cursor:pointer;display:flex;align-items:center}.ide-sim-icon-btn:disabled{opacity:.35;cursor:not-allowed}.ide-sim-icon-btn .material-symbols-outlined{font-size:16px}.ide-sim-canvas-wrap{flex:1;min-height:0;position:relative;overflow:hidden}.ide-sim-overlay{position:absolute;top:48px;right:12px;z-index:5;background:#ffffffd9;border:1px solid var(--accent);padding:8px;pointer-events:none;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.ide-sim-overlay-item{display:flex;align-items:center;gap:8px;margin-bottom:4px}.ide-sim-overlay-item:last-child{margin-bottom:0}.ide-sim-dot{width:8px;height:8px;background:var(--accent);flex-shrink:0}.ide-sim-dot.outline{background:transparent;border:1px solid var(--accent)}.ide-sim-dot.lit{background:#2ecc71;border:none;box-shadow:0 0 8px #2ecc71d9}.ide-root--stitch #wb-tools{flex:0 0 auto;height:auto;padding:0;background:transparent;border:none;gap:4px}.ide-root--stitch .wb-palette{flex:0 0 200px;width:200px;border-right:1px solid var(--accent);background:#f3f3f6}.ide-root--stitch .wb-palette-head{background:#eeedf0;border-bottom:1px solid var(--accent);color:var(--accent)}.ide-root--stitch .wb-palette-title{color:var(--accent)}.ide-root--stitch #wb-palette-search{margin:8px;border-radius:0;border-color:var(--accent);font-family:JetBrains Mono,monospace;font-size:10px}.ide-root--stitch .wb-palette-item{border-radius:0;border-color:#0000001f;background:#fff}.ide-root--stitch .wb-palette-item:hover{border-color:var(--accent);background:#fff}.ide-root--stitch .wb-part-name{text-transform:uppercase;letter-spacing:.04em;color:var(--accent)}.ide-root--stitch #wb-tools button[data-act]{border:1px solid rgba(0,0,0,.15);border-radius:0;background:#fff;padding:6px;font-size:0;width:32px;height:32px;position:relative}.ide-root--stitch #wb-tools button[data-act=rotate]:after{content:"↻";font-size:14px;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.ide-root--stitch #wb-tools button[data-act=justify]:after{content:"▥";font-size:15px;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.ide-root--stitch #wb-tools button[data-act=smartwire]:after{content:"⚡";font-size:13px;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.ide-root--stitch #wb-tools button[data-act=delete]:after{content:"⌫";font-size:14px;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.ide-root--stitch #wb-tools button[data-act=undo]:after{content:"↶";font-size:16px;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.ide-root--stitch #wb-tools button[data-act=redo]:after{content:"↷";font-size:16px;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.ide-root--stitch #wb-tools button[data-act=clear]:after{content:"✕";font-size:14px;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.ide-root--stitch #wb-tools button[data-act]:disabled{opacity:.35;pointer-events:none}.ide-root--stitch #wb-hint,.ide-root--stitch #wb-tools button[data-act=zin],.ide-root--stitch #wb-tools button[data-act=zout],.ide-root--stitch #wb-tools button[data-act=fit],.ide-root--stitch .wb-sep{display:none!important}.ide-root--stitch #wb-svg{background-color:#f9f9fc;background-image:linear-gradient(to right,#e2e2e5 1px,transparent 1px),linear-gradient(to bottom,#e2e2e5 1px,transparent 1px);background-size:20px 20px}.ide-root--stitch #sim-column #wb{height:100%;display:flex;flex-direction:row}.ide-root--stitch #wb-main{flex:1;min-height:0;display:flex;flex-direction:column}.ide-root--stitch #wb-add-wrap{display:none}.ide-root--stitch .sim-action-right .chapter-cta-btn{display:inline-flex;align-items:center;gap:8px;font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:10px 20px}.ide-root--stitch.ide-layout-hardware #toolbar,.ide-root--stitch.ide-layout-hardware #editor-column,.ide-root--stitch.ide-layout-hardware #divider{display:none!important}.ide-root--stitch.ide-layout-hardware #body{flex-direction:column}.ide-root--stitch.ide-layout-hardware #sim-pane{flex:1;width:100%;min-height:0}.ide-root--stitch.ide-layout-hardware .ide-sim-toolbar-right,.ide-root--stitch.ide-layout-hardware .ide-sim-overlay{display:none}.ide-root--stitch.ide-layout-code #sim-pane,.ide-root--stitch.ide-layout-code #divider{display:none!important}.ide-root--stitch.ide-layout-code #editor-column{flex:1 1 100%!important;max-width:none!important;max-height:none!important;border-right:none}.ide-root--stitch.ide-layout-split #editor-column{flex:0 0 50%}.ide-root.ide-pane-fs-code #sim-pane,.ide-root.ide-pane-fs-code #divider{display:none!important}.ide-root.ide-pane-fs-code #editor-column{flex:1 1 100%!important;max-width:none!important;max-height:none!important;border-right:none}.ide-root.ide-pane-fs-hardware #editor-column,.ide-root.ide-pane-fs-hardware #divider{display:none!important}.ide-root.ide-pane-fs-hardware #body{flex-direction:column}.ide-root.ide-pane-fs-hardware #sim-pane{flex:1;width:100%;min-height:0}.ide-root.ide-pane-fs-hardware #toolbar{display:flex!important}.sim-step-hint{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-muted);letter-spacing:.02em;max-width:min(520px,55vw);line-height:1.4}.ide-host{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column}.ide-host>.polaris-loader--compact{flex:1;height:100%;min-height:0}.step-actions{display:flex;gap:10px;padding:12px 18px;border-top:1px solid var(--border);background:var(--bg)}.code-box{background:var(--bg-muted);border:1px solid var(--border);border-radius:8px;padding:14px;font-family:Consolas,monospace;font-size:13px;color:var(--text);white-space:pre;overflow:auto;max-height:340px}.upload-steps{max-width:760px;margin:0 auto;padding:24px}.upload-steps ol{line-height:1.9;color:var(--text-secondary)}.admin{max-width:1280px;margin:0 auto;padding:22px 22px 60px}.admin-brand-copy{display:flex;flex-direction:column;gap:2px;line-height:1.15}.admin-brand-title{font-weight:700;font-size:15px}.admin-brand-sub{font-size:11px;text-transform:uppercase;letter-spacing:.08em;opacity:.55;font-weight:600}.admin-panel{min-height:420px}.site-admin-list{display:flex;flex-direction:column;gap:12px;margin-top:12px}.site-admin-card{display:flex;gap:14px;align-items:flex-start;border:1px solid #e2e2e5;padding:12px;background:#fff}.site-admin-thumb{width:140px;height:84px;object-fit:cover;background:#f3f3f6;flex-shrink:0;border:1px solid #e2e2e5}.site-admin-card-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.admin-tabs{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap}.admin-tabs--pill button{border:1px solid var(--border, #ddd);background:#fff;color:var(--text, #111);padding:9px 14px;cursor:pointer;font-size:13px;font-weight:600;border-radius:999px}.admin-tabs button{border:1px solid var(--border, #ddd);background:transparent;color:var(--text, #111);padding:8px 14px;cursor:pointer;font-size:13px;font-weight:600}.admin-tabs button.active,.admin-tabs--pill button.active{background:var(--accent, #000);color:var(--text-inverse, #fff);border-color:var(--accent, #000)}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border, #eee);vertical-align:top}.table th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;opacity:.7}.ad-dash{display:flex;flex-direction:column;gap:18px}.ad-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.ad-title{margin:0 0 6px;font-size:22px;font-weight:700;letter-spacing:-.02em}.ad-durable-note{margin:8px 0 0;font-size:12px;font-weight:600;letter-spacing:.02em;color:#166534}.ad-hero-actions{display:flex;align-items:center;gap:10px}.ad-live-badge{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--text-muted, #666);padding:6px 10px;border:1px solid var(--border, #ddd);background:#fff}.ad-live-dot{width:8px;height:8px;border-radius:50%;background:#ccc}.ad-live-dot.on{background:#16a34a;box-shadow:0 0 0 3px #16a34a2e}.ad-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.ad-metric{padding:16px;border:1px solid var(--border, #e5e5e5);background:#fff}.ad-metric--live{border-color:#16a34a;background:#f7fdf9}.ad-metric-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#666}.ad-metric-value{margin-top:6px;font-size:28px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.03em}.ad-metric-hint{margin-top:6px;font-size:12px;color:#777}.ad-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.ad-card{border:1px solid var(--border, #e5e5e5);background:#fff;padding:16px}.ad-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.ad-card-head h4{margin:0;font-size:14px;font-weight:700}.ad-pill{font-size:11px;font-weight:700;padding:3px 8px;border:1px solid var(--border, #ddd);background:#f7f7f7}.ad-bars,.ad-stack{display:flex;flex-direction:column;gap:8px}.ad-bar-row{display:grid;grid-template-columns:72px 1fr 110px;gap:10px;align-items:center}.ad-bar-label,.ad-bar-value{font-size:12px;font-variant-numeric:tabular-nums;color:#444}.ad-bar-value{text-align:right}.ad-bar-track{height:10px;background:#f0f0f0;overflow:hidden}.ad-bar-track--sm{height:6px}.ad-bar-fill{height:100%;background:#111;min-width:0;transition:width .35s ease}.ad-bar-fill--warn{background:#444}.ad-stack-row{display:flex;flex-direction:column;gap:4px}.ad-stack-meta{display:flex;justify-content:space-between;gap:10px;font-size:12px}.ad-stack-val{color:#666;font-variant-numeric:tabular-nums}.ad-sys-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.ad-sys-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#666}.ad-sys-value{margin-top:4px;font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}.ad-person-name{font-weight:600}.ad-person-id{font-size:11px;color:#777;margin-top:2px}.ad-screen{display:inline-block;padding:2px 8px;border:1px solid var(--border, #ddd);font-size:12px;font-weight:600}.ad-actions{display:flex;flex-wrap:wrap;gap:6px}.ad-table{margin-top:4px}.ad-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border, #e5e5e5);background:#fff}.ad-mode-bar{display:inline-flex;gap:6px}.ad-mode-btn{border:1px solid var(--border, #ddd);background:#fff;padding:8px 12px;font-size:12px;font-weight:700;cursor:pointer}.ad-mode-btn.active{background:#111;color:#fff;border-color:#111}.ad-month-nav{display:inline-flex;align-items:center;gap:8px}.ad-month-nav.hidden{display:none}.ad-month-title{font-weight:700;min-width:140px;text-align:center}.ad-nav-btn{width:32px;height:32px;border:1px solid var(--border, #ddd);background:#fff;cursor:pointer;font-size:18px;line-height:1}.ad-range-label{margin-left:auto;font-size:12px;font-weight:600;color:#555}.ad-calendar-host{position:relative}.ad-cal-pop{position:absolute;z-index:20;top:0;left:0;width:min(360px,100%);padding:14px;border:1px solid var(--border, #ddd);background:#fff;box-shadow:0 12px 40px #0000001f}.ad-cal-pop-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.ad-cal-pop-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}.ad-cal-year{flex:1;height:34px;border:1px solid var(--border, #ddd);padding:0 8px}.ad-cal-months{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.ad-cal-month{height:36px;border:1px solid var(--border, #ddd);background:#fff;cursor:pointer;font-weight:600;font-size:12px}.ad-cal-month.has-data{border-color:#111}.ad-cal-month.active{background:#111;color:#fff}.ad-history-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.ad-history-item{padding:12px 14px;border:1px solid var(--border, #e5e5e5);background:#fafafa}.ad-history-k{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#666}.ad-history-v{display:block;margin-top:4px;font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}.ad-card--chart{overflow:hidden}.ad-card-sub{margin-top:4px;font-size:12px;color:#666;font-weight:500}.ad-cols-scroll{overflow-x:auto;padding-bottom:4px}.ad-cols{display:flex;align-items:flex-end;gap:4px;min-height:160px;min-width:max(100%,520px);padding-top:8px}.ad-col{flex:1 1 0;min-width:14px;display:flex;flex-direction:column;align-items:center;gap:6px;height:150px}.ad-col-bar-wrap{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center}.ad-col-bar{width:70%;max-width:18px;background:#111;min-height:2px;transition:height .3s ease}.ad-col--empty .ad-col-bar{background:#e8e8e8;height:2px!important}.ad-col-label{font-size:10px;color:#666;font-variant-numeric:tabular-nums}.ad-heat{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.ad-heat-dow{text-align:center;font-size:11px;color:#888;font-weight:600}.ad-heat-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;border:1px solid #eee;background:#f5f5f5;color:#333}.ad-heat-cell--pad{visibility:hidden}.ad-heat-lv0{background:#f3f3f3}.ad-heat-lv1{background:#d4d4d4}.ad-heat-lv2{background:#a3a3a3;color:#fff}.ad-heat-lv3{background:#525252;color:#fff}.ad-heat-lv4{background:#171717;color:#fff}.ad-heat-legend{display:flex;align-items:center;gap:6px;margin-top:12px;font-size:11px;color:#666}.ad-heat-swatch{width:14px;height:14px;aspect-ratio:auto}@media(max-width:900px){.ad-charts,.ad-sys-grid{grid-template-columns:1fr}.ad-bar-row{grid-template-columns:56px 1fr 80px}.ad-range-label{margin-left:0;width:100%}}.btn-sm{height:28px;padding:0 10px;border-radius:6px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text);cursor:pointer;font-size:12px}.btn-sm.good{background:var(--accent);border-color:var(--accent);color:var(--text-inverse)}.btn-sm.bad{background:var(--bg-muted);border-color:var(--border-strong);color:var(--text)}.btn-sm.toggle-on{background:var(--accent);border-color:var(--accent);color:var(--text-inverse)}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.admin-editor{display:grid;grid-template-columns:1fr 1fr;gap:18px}.admin-editor .col{display:flex;flex-direction:column;gap:10px}.admin-editor label{font-size:12px;color:var(--text-muted)}.admin-editor textarea{width:100%;min-height:120px;border-radius:8px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text);padding:10px;font-family:inherit;font-size:13px;resize:vertical}.admin-editor textarea.code{font-family:Consolas,monospace;min-height:200px}.admin-chapter-editor{max-width:1100px}.admin-preview-tabs{display:flex;align-items:center;gap:6px;margin:14px 0 12px;flex-wrap:wrap}.admin-preview-tab{-webkit-appearance:none;appearance:none;border:1px solid var(--border);background:var(--bg-muted);color:var(--text-muted);font:inherit;font-size:13px;font-weight:600;padding:8px 16px;border-radius:8px;cursor:pointer}.admin-preview-tab.is-active{background:#111;border-color:#111;color:#fff}.admin-preview-refresh{margin-left:4px}.admin-chapter-preview-pane{display:flex;flex-direction:column;gap:14px;min-height:420px}.admin-chapter-preview-banner{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.02em;color:#166534;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;padding:8px 12px}.admin-chapter-preview-banner .material-symbols-outlined{font-size:18px}.admin-chapter-preview-host{position:relative;min-height:480px;max-height:min(70vh,760px);overflow:hidden;border:1px solid var(--border);border-radius:12px;background:#fafafa}.admin-chapter-preview-host .theory-reader{height:100%;min-height:480px;max-height:min(70vh,760px)}.admin-chapter-preview-code-wrap{border:1px solid var(--border);border-radius:10px;background:var(--bg-muted);padding:12px 14px}.admin-chapter-preview-code-label{font-size:12px;font-weight:700;color:var(--text);margin-bottom:4px}.admin-chapter-preview-meta{font-size:12px;color:var(--text-muted);margin-bottom:8px}.admin-chapter-preview-code{margin:0;max-height:180px;overflow:auto;font-family:JetBrains Mono,Consolas,monospace;font-size:12px;line-height:1.45;white-space:pre-wrap;word-break:break-word;color:var(--text)}.admin-field-label{display:block;font-size:12px;color:var(--text-muted);margin:14px 0 6px;font-weight:600}.storage-panel{max-width:980px}.storage-toolbar{margin:12px 0 16px}.storage-summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:18px}.storage-card{border:1px solid var(--border);border-radius:10px;padding:12px 14px;background:var(--bg-muted)}.storage-card-label{font-size:11px;color:var(--text-muted);font-weight:600;margin-bottom:4px}.storage-card-value{font-size:15px;font-weight:700;color:var(--text);word-break:break-word}.storage-tree{display:flex;flex-direction:column;gap:10px}.storage-folder{border:1px solid var(--border);border-radius:10px;background:var(--bg);overflow:hidden}.storage-folder-head{display:flex;align-items:center;gap:8px;padding:12px 14px;cursor:pointer;user-select:none;background:var(--bg-muted)}.storage-folder-head:hover{filter:brightness(.98)}.storage-chevron{display:inline-block;width:14px;color:var(--text-muted);transition:transform .15s ease}.storage-folder-head.open .storage-chevron{transform:rotate(90deg)}.storage-folder-title{font-weight:700;font-size:14px}.storage-folder-sub{margin-left:auto;font-size:12px;color:var(--text-muted)}.storage-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--bg);border:1px solid var(--border);color:var(--text-muted)}.storage-folder-body{padding:8px 10px 12px;border-top:1px solid var(--border)}.storage-folder-body .storage-folder{margin:8px 0}.storage-row{display:flex;align-items:center;gap:12px;padding:8px 6px;border-bottom:1px solid var(--border)}.storage-row:last-child{border-bottom:0}.storage-thumb{width:44px;height:44px;border-radius:8px;object-fit:cover;background:var(--bg-muted);border:1px solid var(--border);flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--text-muted);font-weight:700;overflow:hidden}.storage-thumb.missing{color:#b42318;border-color:#f5c2c0;background:#fff5f5}.storage-thumb.chapter{background:var(--accent);color:var(--text-inverse);border-color:var(--accent)}.storage-row-meta{flex:1;min-width:0}.storage-row-name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.storage-row-sub{font-size:12px;color:var(--text-muted);margin-top:2px;line-height:1.35}.storage-row-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.storage-row-actions a.btn-sm{display:inline-flex;align-items:center;text-decoration:none;line-height:28px}.theory-doc-editor{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#e8e8e8;box-shadow:var(--shadow-md)}.theory-doc-editor--pro{display:flex;flex-direction:column;min-height:640px}.theory-doc-editor--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:12000;border-radius:0;border:none;min-height:100vh;max-height:100vh;background:#dcdcdc;box-shadow:none}.theory-doc-editor--fullscreen .theory-doc-canvas{max-height:none;flex:1;padding:24px 20px 40px}.theory-doc-editor--fullscreen .theory-doc-sheet{max-width:min(920px,92vw)}body.theory-doc-focus-lock{overflow:hidden}.theory-doc-menubar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px 10px;border-bottom:1px solid var(--border);background:#f3f3f3;position:sticky;top:0;z-index:6}.doc-menu{position:relative}.doc-menu-trigger{-webkit-appearance:none;appearance:none;border:1px solid transparent;background:transparent;color:var(--text);font:inherit;font-size:13px;font-weight:600;padding:6px 10px;border-radius:6px;cursor:pointer}.doc-menu-trigger:hover,.doc-menu-trigger.is-open{background:#fff;border-color:var(--border)}.doc-menu-panel{display:none;position:absolute;top:calc(100% + 2px);left:0;min-width:220px;padding:6px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 32px #00000024;z-index:20}.doc-menu-panel.is-open{display:flex;flex-direction:column;gap:2px}.doc-menu-item{-webkit-appearance:none;appearance:none;width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;border:none;background:transparent;color:var(--text);font:inherit;font-size:13px;text-align:left;padding:8px 10px;border-radius:6px;cursor:pointer}.doc-menu-item:hover{background:#f3f3f3}.doc-menu-item.is-danger{color:#b91c1c}.doc-menu-shortcut{font-size:11px;color:#888;font-weight:600}.doc-menu-sep{height:1px;margin:4px 6px;background:var(--border)}.doc-focus-hint{font-size:11px;font-weight:700;color:#166534;background:#ecfdf5;border:1px solid #bbf7d0;border-radius:999px;padding:4px 10px;margin-right:6px}.doc-zoom-label{min-width:42px;text-align:center;font-size:11px;font-weight:700;color:#555}.theory-doc-toolbar,.theory-doc-ribbon{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;padding:10px 12px 12px;border-bottom:1px solid var(--border);background:linear-gradient(#fff,#f6f6f6);position:sticky;top:0;z-index:5}.theory-doc-editor--fullscreen .theory-doc-menubar,.theory-doc-editor--fullscreen .theory-doc-ribbon{position:relative;top:auto}.doc-tool-group{display:flex;flex-direction:column;gap:4px;padding-right:10px;border-right:1px solid var(--border)}.doc-tool-group:last-of-type{border-right:none}.doc-tool-group-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#777;font-weight:700}.doc-tool-group-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.doc-tool-btn{height:30px;min-width:30px;padding:0 9px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--text);cursor:pointer;font-size:12px;font-weight:700}.doc-tool-btn:hover{background:#eee;border-color:var(--border)}.doc-tool-btn.is-active,.doc-tool-btn.doc-tool-accent{background:#111;color:#fff;border-color:#111}.doc-tool-btn.doc-tool-danger{color:#b91c1c}.doc-tool-sep{width:1px;height:22px;background:var(--border);margin:0 4px}.doc-tool-spacer{flex:1;min-width:8px}.doc-style-select{height:30px;border:1px solid var(--border);background:#fff;padding:0 8px;font-size:12px;font-weight:600;border-radius:6px;max-width:130px}.doc-dirty{font-size:11px;font-weight:700;padding:4px 8px;border-radius:999px;align-self:center}.doc-dirty.is-dirty{background:#fff3cd;color:#856404}.doc-dirty.is-clean{background:#e8f5e9;color:#1b5e20}.doc-image-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--border);background:#fafafa}.doc-image-bar.hidden{display:none}.doc-image-bar-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#666;margin-right:4px}.theory-doc-canvas{flex:1;overflow:auto;padding:28px 16px 36px;background:radial-gradient(circle at 1px 1px,rgba(0,0,0,.04) 1px,transparent 0) 0 0 / 18px 18px,#dcdcdc;max-height:68vh}.theory-doc-sheet{max-width:820px;margin:0 auto;background:#fff;box-shadow:0 1px 2px #0000000f,0 18px 48px #0000001f;min-height:900px}.theory-doc-page{min-height:900px;max-height:none;overflow:visible;padding:72px 64px 88px;background:#fff;color:#1a1a1a;font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,Times New Roman,serif;font-size:17px;line-height:1.75;outline:none}.theory-doc-page:empty:before,.theory-doc-page[data-placeholder]:not(:focus):has(p:only-child br:only-child):before{content:attr(data-placeholder);color:#aaa;pointer-events:none}.theory-doc-page h2{font-size:1.55em;margin:1.35em 0 .55em;font-weight:700;letter-spacing:-.02em}.theory-doc-page h3{font-size:1.2em;margin:1.1em 0 .45em;font-weight:700}.theory-doc-page p{margin:0 0 .95em}.theory-doc-page .align-left,.theory-doc-page [style*="text-align: left"],.theory-doc-page [style*="text-align:left"]{text-align:left}.theory-doc-page .align-center,.theory-doc-page [style*="text-align: center"],.theory-doc-page [style*="text-align:center"]{text-align:center}.theory-doc-page .align-right,.theory-doc-page [style*="text-align: right"],.theory-doc-page [style*="text-align:right"]{text-align:right}.theory-doc-page ul,.theory-doc-page ol{margin:0 0 1em 1.35em}.theory-doc-page li{margin-bottom:.35em}.theory-doc-page hr{border:none;border-top:1px solid #ddd;margin:1.6em 0}.theory-doc-page blockquote{margin:1.1em 0;padding:.75em 1.1em;border-left:3px solid #111;background:#f7f7f7;color:#333}.theory-doc-page a{color:#0b57d0;text-decoration:underline}.theory-doc-page .theory-inline-figure{margin:1.4em 0;text-align:center}.theory-doc-page .theory-inline-figure.align-left{text-align:left}.theory-doc-page .theory-inline-figure.align-right{text-align:right}.theory-doc-page .theory-inline-figure.theory-img-sm img{max-width:40%}.theory-doc-page .theory-inline-figure.theory-img-md img{max-width:70%}.theory-doc-page .theory-inline-figure.theory-img-lg img{max-width:100%}.theory-doc-page .theory-inline-figure img.selected{outline:3px solid #111;outline-offset:3px}.theory-doc-status{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 14px;border-top:1px solid var(--border);background:#fff;font-size:12px;color:#555}.doc-status-item.muted{color:#888}.doc-status-sep{width:1px;height:12px;background:#ddd}.theory-pdf-embed{margin:1.6em 0;border-radius:12px;overflow:hidden;border:1px solid rgba(61,47,36,.15);background:#f8f4ee}.theory-pdf-embed iframe.theory-pdf-frame,.theory-reader-content .theory-pdf-embed iframe.theory-pdf-frame{display:block;width:100%;min-height:72vh;border:0;background:#fff}.theory-pdf-embed p{margin:0;padding:10px 14px;font-size:.9em;text-align:center}.theory-pdf-embed a{color:var(--text);text-decoration:underline}.photo-drop{border:1px dashed var(--border-strong);border-radius:8px;padding:10px;text-align:center;color:var(--text-muted)}.thumb{width:100%;max-height:130px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.empty{text-align:center;color:var(--text-faint);padding:40px}#lms-toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%) translateY(20px);padding:11px 18px;border-radius:10px;color:var(--text-inverse);font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:1000;box-shadow:var(--shadow-md)}#lms-toast.show{opacity:1;transform:translate(-50%) translateY(0)}#lms-toast.toast-info{background:var(--accent);color:var(--text-inverse)}#lms-toast.toast-success{background:var(--text);color:var(--text-inverse)}#lms-toast.toast-error{background:var(--text-secondary);color:var(--text-inverse)}.ide-shell{flex:1;min-height:0;display:grid;grid-template-columns:var(--ide-sidebar-width, 260px) 1fr;grid-template-rows:var(--ide-toolbar-height, 48px) 1fr var(--ide-footer-height, 32px);grid-template-areas:"sidebar topbar" "sidebar main" "sidebar footer";background:var(--pe-bg);position:relative}.ide-shell-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:45}.ide-shell-overlay.show{display:block}.ide-shell-topbar{grid-area:topbar;height:var(--ide-toolbar-height, 48px);display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--pe-bg);border-bottom:1px solid var(--accent);z-index:30}.ide-shell-menu{display:flex;align-items:center;justify-content:center;border:1px solid var(--accent);background:#fff;cursor:pointer;padding:4px;color:var(--accent);flex-shrink:0}.ide-shell-menu:hover{background:#eeedf0}.ide-shell-menu .material-symbols-outlined{font-size:22px}.ide-shell.ide-shell--sidebar-hidden{grid-template-columns:1fr;grid-template-areas:"topbar" "main" "footer"}.ide-shell.ide-shell--sidebar-hidden .ide-shell-sidebar{display:none}.ide-shell-brand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:900;letter-spacing:-.03em;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ide-shell-logo{flex-shrink:0}.ide-shell-search{display:none;align-items:center;gap:8px;border:1px solid var(--accent);padding:2px 8px;margin-left:auto}.ide-shell-search-input{border:none;background:transparent;outline:none;width:180px;font-family:JetBrains Mono,monospace;font-size:13px;text-transform:uppercase;color:var(--text)}.ide-shell-actions{display:flex;align-items:center;gap:4px;margin-left:auto}.ide-shell-icon-btn{border:none;background:transparent;cursor:pointer;padding:6px;color:var(--accent);display:flex;align-items:center}.ide-shell-icon-btn:hover{background:var(--surface-container-high, #e8e8eb)}.ide-shell-sidebar{grid-area:sidebar;display:flex;flex-direction:column;background:#f3f3f6;border-right:1px solid var(--accent);min-height:0;z-index:40}.ide-sidebar-head{padding:16px;border-bottom:1px solid var(--accent)}.ide-sidebar-brand{display:flex;align-items:center;gap:10px;margin-bottom:14px}.ide-sidebar-brand-name{font-size:13px;font-weight:800;letter-spacing:.04em}.ide-sidebar-user{display:flex;align-items:center;gap:8px;margin-bottom:12px}.ide-sidebar-avatar{width:40px;height:40px;background:var(--accent);color:var(--text-inverse);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}.ide-sidebar-id{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent)}.ide-sidebar-meta{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted)}.ide-sidebar-cta{width:100%;border:none;background:var(--accent);color:var(--text-inverse);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:8px 12px;cursor:pointer}.ide-sidebar-cta:hover{opacity:.9}.ide-sidebar-cta:active{transform:translate(1px)}.ide-sidebar-nav{flex:1;padding:8px 0;display:flex;flex-direction:column}.ide-nav-link{display:flex;align-items:center;gap:8px;width:100%;border:none;background:transparent;color:var(--accent);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;padding:10px 16px;cursor:pointer;text-align:left}.ide-nav-link:hover{background:#e8e8eb}.ide-nav-link.active{background:var(--accent);color:var(--text-inverse)}.ide-nav-link .material-symbols-outlined{font-size:20px}.ide-sidebar-foot{border-top:1px solid var(--accent);padding:8px 0 12px;display:flex;flex-direction:column}.ide-session-clock{display:flex;align-items:center;gap:8px;margin:4px 16px 0;padding:8px 10px;border:1px solid var(--border, #ddd);background:var(--bg-inset, #f5f5f5);color:var(--text-muted, #555);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.ide-session-clock .material-symbols-outlined{font-size:16px}.ide-session-clock-time{margin-left:auto;color:var(--accent, #000);font-variant-numeric:tabular-nums}.ide-sidebar-logout{margin:8px 16px 0;border:1px solid var(--accent);background:transparent;color:var(--accent);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:8px 12px;cursor:pointer}.ide-sidebar-logout:hover{background:#fff}.ide-shell-main{grid-area:main;min-height:0;overflow:auto;background:var(--pe-bg)}.ide-shell-main:has(.shell-page){overflow:hidden;display:flex;flex-direction:column}.ide-workspace.shell-content{flex:none;min-height:auto;overflow:visible}.ide-workspace.shell-content:has(.shell-page){flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.ide-shell-footer{grid-area:footer;height:var(--ide-footer-height, 32px);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px;background:var(--pe-bg);border-top:1px solid var(--accent);font-family:JetBrains Mono,monospace;font-size:10px;z-index:30}.ide-footer-left{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ide-footer-links{display:none;gap:16px}.ide-footer-links a{color:var(--accent);text-decoration:none;text-transform:uppercase;font-size:13px}.ide-footer-links a:hover{text-decoration:underline}.ide-footer-status{display:flex;align-items:center;gap:6px;color:var(--text-muted);white-space:nowrap}.ide-footer-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:ide-pulse 2s ease-in-out infinite}@keyframes ide-pulse{0%,to{opacity:1}50%{opacity:.35}}.dash-page{max-width:1152px;margin:0 auto;padding:24px 24px 40px;display:flex;flex-direction:column;gap:24px}.dash-header{margin-bottom:4px}.dash-greeting{margin:0;font-size:32px;font-weight:700;letter-spacing:-.02em;color:var(--accent);line-height:1.2}.dash-sub{margin:4px 0 0;font-family:JetBrains Mono,monospace;font-size:13px;color:var(--text-muted)}.dash-hero-grid{display:grid;grid-template-columns:1fr;gap:24px}.dash-featured{position:relative;border:2px solid var(--accent);padding:24px;min-height:240px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;background:#fff}.dash-featured--empty{justify-content:flex-start;gap:8px}.dash-kicker{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;color:var(--text-muted);margin-bottom:4px}.dash-featured-title{margin:0;font-size:24px;font-weight:600;line-height:1.2;color:var(--accent);max-width:28rem}.dash-featured-sub{margin:8px 0 0;font-size:14px;color:var(--text-muted);line-height:1.5}.dash-featured-btn{align-self:flex-start;margin-top:20px;border:none;background:var(--accent);color:var(--text-inverse);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:10px 24px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;position:relative;z-index:2}.dash-featured-btn:hover{transform:translate(4px);transition:transform .15s}.dash-featured-deco{position:absolute;right:-48px;bottom:-48px;opacity:.05;pointer-events:none}.dash-featured-deco-icon{font-size:240px!important}.dash-summary{border:1px solid var(--accent);padding:24px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:#fff}.dash-progress-ring{position:relative;width:128px;height:128px;display:flex;align-items:center;justify-content:center;margin-bottom:16px;border:4px solid #e2e2e5}.dash-progress-spin{position:absolute;top:0;right:0;bottom:0;left:0;border-top:4px solid var(--accent);animation:dash-spin 3s linear infinite}@keyframes dash-spin{to{transform:rotate(360deg)}}.dash-progress-inner{display:flex;flex-direction:column;align-items:center;z-index:1}.dash-progress-value{font-size:32px;font-weight:700;line-height:1;color:var(--accent)}.dash-progress-label{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted);margin-top:2px}.dash-summary-stats{display:flex;flex-direction:column;gap:4px}.dash-stat{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--text-muted)}.dash-stat strong{color:var(--accent)}.dash-chapters{display:flex;flex-direction:column;gap:16px}.dash-section-head{display:flex;align-items:flex-end;gap:16px}.dash-section-head h3{margin:0;font-size:18px;font-weight:600;text-transform:uppercase;letter-spacing:-.01em;color:var(--accent)}.dash-section-rule{flex:1;height:1px;background:var(--accent);margin-bottom:6px}.dash-section-tag{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted);margin-bottom:4px}.dash-chapter-grid{display:grid;grid-template-columns:1fr;gap:16px}.dash-chapter-card{border:1px solid var(--accent);padding:16px;min-height:180px;display:flex;flex-direction:column;background:#fff}.dash-chapter-card.unlocked{cursor:pointer;transition:background .15s}.dash-chapter-card.unlocked:hover{background:#f3f3f6}.dash-chapter-card.locked{opacity:.6;border-color:var(--pe-outline)}.dash-chapter-top{display:flex;justify-content:space-between;align-items:flex-start}.dash-chapter-num{width:32px;height:32px;border:1px solid var(--accent);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:var(--accent)}.dash-chapter-num.muted{border-color:var(--pe-outline);color:var(--pe-outline)}.dash-status-pill{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.04em;padding:4px 8px;background:var(--accent);color:var(--text-inverse)}.dash-status-pill.in_progress{background:var(--text-secondary)}.dash-status-pill.completed{background:var(--text-muted)}.dash-locked-label{display:flex;align-items:center;gap:4px;font-family:JetBrains Mono,monospace;font-size:10px;color:var(--pe-outline)}.dash-lock-icon{font-size:14px!important}.dash-chapter-title{margin:12px 0 0;font-size:18px;font-weight:600;line-height:1.35;color:var(--accent);flex:1}.dash-chapter-title.muted{color:var(--pe-outline)}.dash-chapter-progress{margin-top:12px;padding-top:8px;border-top:1px solid rgba(0,0,0,.08)}.dash-chapter-progress-head{display:flex;justify-content:space-between;margin-bottom:4px;font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted)}.dash-chapter-progress-head span:last-child{color:var(--accent)}.dash-bar{height:4px;background:#e2e2e5;overflow:hidden}.dash-bar-fill{height:100%;background:var(--accent);transition:width .5s ease}.dash-locked-foot{margin:12px 0 0;padding-top:8px;border-top:1px solid rgba(126,117,118,.15);font-family:JetBrains Mono,monospace;font-size:10px;color:var(--pe-outline);text-align:center}.dash-status-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--accent);border:1px solid var(--accent)}.dash-status-cell{background:var(--pe-bg);padding:16px}.dash-status-label{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted);margin-bottom:4px;text-transform:uppercase}.dash-status-value{display:flex;align-items:center;gap:8px;font-family:JetBrains Mono,monospace;font-size:13px;text-transform:uppercase;color:var(--accent)}.dash-status-dot{width:8px;height:8px;background:var(--accent);flex-shrink:0}.dash-loading{padding:40px 24px;color:var(--text-faint);font-family:JetBrains Mono,monospace}@media(min-width:768px){.ide-shell-search{display:flex}.ide-shell-actions{margin-left:0}.ide-footer-links{display:flex}.dash-chapter-grid{grid-template-columns:repeat(2,1fr)}.dash-status-grid{grid-template-columns:repeat(4,1fr)}}@media(min-width:1024px){.dash-hero-grid{grid-template-columns:2fr 1fr}.dash-chapter-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:1180px){.ide-shell{grid-template-columns:1fr;grid-template-areas:"topbar" "main" "footer"}.ide-shell-menu{display:flex}.ide-shell.ide-shell--sidebar-hidden{grid-template-columns:1fr;grid-template-areas:"topbar" "main" "footer"}.ide-shell.ide-shell--sidebar-hidden .ide-shell-sidebar{display:flex}.ide-shell-brand{font-size:14px;max-width:42vw}.ide-shell-sidebar{position:fixed;top:0;left:0;bottom:0;width:min(280px,86vw);transform:translate(-100%);transition:transform .2s ease;box-shadow:4px 0 #00000014;z-index:50}.ide-shell-sidebar.open{transform:translate(0)}.ide-footer-left{display:none}.dash-page{padding:16px 12px 32px}.dash-greeting{font-size:24px}.dash-featured-title{font-size:20px}}.app-shell:not(.ide-shell){flex:1;min-height:0;display:flex;flex-direction:column;position:relative}.topbar{height:58px;flex:0 0 58px;display:flex;align-items:center;gap:14px;padding:0 18px;background:var(--bg-subtle);border-bottom:1px solid var(--border);z-index:5}.topbar .brand{font-weight:800;color:var(--text);font-size:16px;display:flex;align-items:center;gap:10px}.topbar-logo,.drawer-logo{object-fit:contain;flex-shrink:0}.topbar .brand .dot,.drawer-brand .dot{width:28px;height:28px;border-radius:9px;background:var(--bg-inverse);display:flex;align-items:center;justify-content:center;color:var(--text-inverse);font-weight:800;font-size:12px}.topbar-title{color:var(--text-muted);font-size:14px;font-weight:600}.topbar .spacer{flex:1}.topbar-chip{color:var(--text-muted);font-size:13px}.topbar-chip b{color:var(--text)}.topbar-avatar{width:34px;height:34px;border-radius:50%;background:var(--bg-inverse);color:var(--text-inverse);font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center}.hamburger{width:40px;height:40px;border-radius:9px;border:1px solid var(--border);background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer}.hamburger:hover{border-color:var(--border-focus)}.hamburger span{width:18px;height:2px;background:var(--text);border-radius:2px}.drawer-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000080;opacity:0;pointer-events:none;transition:opacity .18s;z-index:40}.drawer-overlay.show{opacity:1;pointer-events:auto}.drawer{position:absolute;top:0;left:0;bottom:0;width:264px;z-index:41;background:var(--bg-muted);border-right:1px solid var(--border);transform:translate(-100%);transition:transform .2s ease;display:flex;flex-direction:column;box-shadow:var(--shadow-md)}.drawer.open{transform:translate(0)}.drawer-brand{display:flex;align-items:center;gap:12px;padding:18px 18px 16px;border-bottom:1px solid var(--border)}.drawer-title{color:var(--text);font-weight:800;font-size:15px}.drawer-sub{color:var(--text-faint);font-size:11px}.drawer-nav{display:flex;flex-direction:column;gap:4px;padding:14px 12px;flex:1}.drawer-link{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:9px;cursor:pointer;background:transparent;border:none;color:var(--text-secondary);font-size:14px;font-weight:600;text-align:left;width:100%}.drawer-link .ico{font-size:16px;width:20px;text-align:center}.drawer-link:hover{background:var(--bg-hover);color:var(--text)}.drawer-link.active{background:var(--bg-hover);color:var(--text);box-shadow:inset 3px 0 0 var(--accent)}.drawer-foot{border-top:1px solid var(--border);padding:14px;display:flex;flex-direction:column;gap:10px}.drawer-user{display:flex;align-items:center;gap:10px}.drawer-user .avatar{width:36px;height:36px;border-radius:50%;background:var(--bg-inverse);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:13px}.drawer-user .nm{color:var(--text);font-weight:600;font-size:13px}.drawer-user .rl{color:var(--text-faint);font-size:11px}.drawer-logout{height:34px;border-radius:8px;border:1px solid var(--border-strong);background:var(--bg-muted);color:var(--status-err-text);cursor:pointer;font-weight:600}.drawer-logout:hover{background:var(--bg-inset)}.shell-content{flex:1;min-height:0;overflow:auto}.dash-loading,.dash-hero,.section-h,.chapter-grid{max-width:1120px;margin-left:auto;margin-right:auto}.dash-loading{padding:40px 24px;color:var(--text-faint)}.dash-hero{display:flex;gap:22px;padding:28px 24px 8px;align-items:stretch}.hero-left{flex:1;min-width:0;display:flex;flex-direction:column;gap:16px}.hero-hi{font-size:24px;font-weight:800;color:var(--text)}.hero-sub{color:var(--text-muted);font-size:13px;margin-top:-8px}.continue-card{background:var(--bg-muted);border:1px solid var(--border);border-radius:16px;padding:20px 22px;cursor:pointer;display:flex;flex-direction:column;gap:10px;transition:transform .1s,border-color .1s;position:relative;overflow:hidden}.continue-card:hover{transform:translateY(-2px);border-color:var(--border-focus)}.continue-tag{font-size:11px;letter-spacing:1.2px;font-weight:800;color:var(--text-muted);text-transform:uppercase}.continue-title{font-size:19px;font-weight:700;color:var(--text);line-height:1.3}.continue-meta{color:var(--text-muted);font-size:13px}.continue-btn{align-self:flex-start;padding:0 20px;margin-top:6px}.hero-right{flex:0 0 220px;background:var(--bg-subtle);border:1px solid var(--border);border-radius:16px;padding:20px;display:flex;flex-direction:column;align-items:center;gap:8px;justify-content:center}.ring{position:relative;width:80px;height:80px}.ring-bg{fill:none;stroke:var(--bg-inset);stroke-width:7}.ring-fg{fill:none;stroke:var(--accent);stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset .6s ease}.ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.ring-label b{color:var(--text);font-size:18px}.ring-label span{color:var(--text-faint);font-size:10px}.stat-line{color:var(--text-secondary);font-size:13px}.stat-line b{color:var(--text)}.stat-line.muted{color:var(--text-muted)}.section-h{color:var(--text);font-size:18px;padding:22px 24px 12px;margin:0}.chapter-grid{padding:0 24px 60px}.bar{height:7px;border-radius:999px;background:var(--bg-inset);overflow:hidden}.bar-fill{height:100%;border-radius:999px;background:var(--accent);transition:width .5s ease}.chapter-card.completed{border-color:var(--border-strong)}.chapter-card .cc-top{display:flex;align-items:center;justify-content:space-between}.chapter-card .cc-idx{font-size:12px;font-weight:800;color:var(--text);background:var(--bg-inset);border:1px solid var(--border);width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center}.chapter-card .cc-title{font-size:15px;font-weight:600;color:var(--text);line-height:1.35;min-height:40px}.chapter-card .cc-foot{font-size:11px;color:var(--text-muted);margin-top:2px}.hidden{display:none!important}.ide-root{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column}.ide-root.ide-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:var(--ide-bg)}.mode-toggle{display:flex;margin-left:14px;background:var(--bg-muted);border:1px solid var(--border);border-radius:8px;padding:3px;gap:2px}.mode-btn{height:26px;padding:0 12px;border:none;border-radius:6px;background:transparent;color:var(--text-muted);cursor:pointer;font-size:12px;font-weight:700}.mode-btn.active{background:var(--accent);color:var(--text-inverse)}.ide-tool-btn{height:30px;padding:0 12px;border-radius:6px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text-secondary);cursor:pointer;font-size:12px;margin-left:8px}.ide-tool-btn:hover{background:var(--bg-hover);border-color:var(--border-focus)}.ide-auto-wrap{display:inline-flex;align-items:center;gap:6px;margin-left:8px;font-size:12px;color:var(--text-muted);cursor:pointer;user-select:none}.ide-auto-wrap input{accent-color:var(--accent);cursor:pointer}.ide-menu-wrap{position:relative}.ide-menu{position:absolute;top:36px;right:0;z-index:120;min-width:200px;max-width:min(360px,calc(100vw - 24px));background:var(--bg);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-md);overflow-x:hidden;overflow-y:auto;padding:4px}#files-menu{left:0;right:auto;min-width:240px;max-height:min(60vh,420px)}#examples-menu{min-width:280px;max-height:70vh;overflow-y:auto}#toolbar,.ide-toolbar-aux,.ide-root.ide-fullscreen #toolbar,.ide-root.ide-fullscreen .ide-toolbar-aux{overflow:visible}.ide-menu-item{padding:9px 12px;border-radius:6px;color:var(--text-secondary);font-size:13px;cursor:pointer}.ide-menu-item:hover{background:var(--bg-hover);color:var(--text)}.ide-menu-item.muted{color:var(--text-faint);cursor:default}.ide-menu-item.muted:hover{background:transparent;color:var(--text-faint)}.ide-menu-sep{padding:8px 12px 4px;font-size:10px;letter-spacing:.8px;text-transform:uppercase;color:var(--text-muted)}.ide-menu-item.file-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.ide-menu-item.file-row.active{background:var(--bg-hover)}.file-row-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-row-act{opacity:.5;font-size:12px;padding:0 4px}.file-row-act:hover,.file-row-del:hover{opacity:1;color:var(--text)}.file-name{color:var(--text-secondary);font-size:13px;font-weight:600;margin-left:10px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-radius:5px;padding:3px 8px}.file-name:hover{background:var(--bg-hover);color:var(--text)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;background:#0000008c;display:flex;align-items:center;justify-content:center}.modal-card{width:360px;max-width:92vw;background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:20px;box-shadow:var(--shadow-lg)}.modal-title{color:var(--text);font-size:15px;font-weight:700;margin-bottom:14px}.modal-label{display:block;font-size:12px;color:var(--text-muted);margin:12px 0 6px}.modal-label:first-of-type{margin-top:0}.muted-cell{color:var(--text-faint);font-style:italic}.modal-input{width:100%;height:40px;border-radius:8px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text);padding:0 12px;font-size:14px;outline:none}.modal-input:focus{border-color:var(--border-focus)}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.modal-actions .btn-sm{height:34px;padding:0 16px}.modal-actions .btn-primary{height:34px;padding:0 18px}.modal-actions .btn-primary.danger{background:var(--bg-inverse)}#workspace-stack{position:relative;flex:1;min-height:0}#workspace-stack #editor-container{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:#fff}#workspace-stack #editor-container .monaco-editor{width:100%!important;height:100%!important}#workspace-stack #editor-container .monaco-editor .cursor{background-color:#111!important;border-color:#111!important;width:2px!important}#workspace-stack #editor-container .monaco-editor .line-numbers{color:#6b6b6b!important}#workspace-stack #editor-container .monaco-editor .suggest-widget{z-index:40!important}.ide-show-board-btn{background:var(--accent)!important;color:var(--text-inverse)!important;border-color:var(--accent)!important}.ide-show-board-btn:hover{filter:brightness(1.05)}#blockly-host{position:absolute;top:0;right:0;bottom:0;left:0}#output-header{justify-content:space-between}#btn-clear-output{height:18px;padding:0 8px;border-radius:4px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text-muted);cursor:pointer;font-size:10px}#btn-clear-output:hover{background:var(--bg-hover);color:var(--text)}.blocklyToolboxDiv{background:var(--bg)!important;border-right:1px solid var(--border)!important;color:var(--text)!important}.blocklyFlyoutBackground{fill:var(--bg-subtle)}.blocklyMainBackground{fill:var(--bg)!important}#toolbar{height:48px;flex:0 0 48px;background:var(--ide-toolbar);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 12px}#app-title{font-weight:600;font-size:14px;color:var(--text)}#status-dot{width:10px;height:10px;border-radius:50%;margin-left:12px;background:var(--text-faint)}#status-dot.status-idle{background:var(--text-faint)}#status-dot.status-running,#status-dot.status-compiling{background:var(--accent);animation:pulse 1s infinite}#status-dot.status-paused{background:var(--text-muted);animation:none}#status-dot.status-stopped{background:var(--text-faint)}#status-dot.status-error{background:var(--text-secondary)}@keyframes pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}#toolbar-spacer{flex:1}#toolbar button{height:32px;padding:0 14px;border-radius:4px;border:none;font-size:13px;cursor:pointer;margin-left:8px}#btn-run{background:var(--accent);color:var(--text-inverse);font-weight:600}#btn-run:disabled{background:var(--bg-inset);color:var(--text-faint);cursor:default}#btn-stop{background:var(--text-secondary);color:var(--text-inverse)}#btn-stop:disabled{background:var(--bg-inset);color:var(--text-faint);cursor:default}#btn-pause{background:var(--text-muted);color:var(--text-inverse)}#btn-pause:disabled{background:var(--bg-inset);color:var(--text-faint);cursor:default}#btn-reset{background:var(--bg-inset);color:var(--text-secondary)}#body{flex:1;display:flex;min-height:0}#editor-column{flex:0 0 55%;display:flex;flex-direction:column;min-height:0}#editor-tabs{flex:0 0 30px;display:flex;align-items:stretch;background:var(--bg-subtle);border-bottom:1px solid var(--border);overflow-x:auto}.ed-tab{display:flex;align-items:center;gap:6px;padding:0 10px;font-size:12px;color:var(--text-muted);border-right:1px solid var(--border);cursor:pointer;white-space:nowrap}.ed-tab.active{background:var(--ide-bg);color:var(--text);border-bottom:2px solid var(--accent)}.ed-tab-close{opacity:.6;font-size:14px}.ed-tab-close:hover{opacity:1;color:var(--text)}.ed-tab-add{padding:0 12px;display:flex;align-items:center;color:var(--text-faint);cursor:pointer;font-size:16px}.ed-tab-add:hover{color:var(--text)}#editor-container{flex:1;min-height:0}.err-line{background:#00000014}.err-gutter{background:var(--text);width:4px!important;margin-left:2px}.err-line-margin{background:#00000014}.err-glyph{background:var(--text);border-radius:50%;width:10px!important;height:10px!important;margin:5px 0 0 5px}.monaco-editor .err-line{border-left:2px solid var(--text)}.demo-line{background:#0000000f}.demo-gutter{background:var(--text);width:4px!important;margin-left:2px}.demo-glyph{background:var(--text);border-radius:50%;width:10px!important;height:10px!important;margin:5px 0 0 5px}.monaco-editor .demo-line{border-left:2px solid var(--text-muted)}#output-panel{height:150px;flex:0 0 150px;border-top:1px solid var(--border);display:flex;flex-direction:column}#output-header{height:24px;flex:0 0 24px;background:var(--ide-toolbar);padding:0 10px;display:flex;align-items:center;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}#output-body{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:6px 10px;font-family:Consolas,Menlo,monospace;font-size:12.5px;line-height:1.5;background:var(--bg);color:var(--text)}.output-line-info{color:var(--text)}.output-line-error{color:var(--text);font-weight:600}.output-line-system{color:var(--text-muted);font-style:italic}#divider{width:6px;flex:0 0 6px;background:var(--bg-inset);cursor:col-resize}#divider:hover{background:var(--accent)}#sim-column{flex:1;background:var(--ide-sim-bg);display:flex;min-height:0;min-width:0;overflow:hidden}#wb{flex:1;display:flex;flex-direction:row;min-width:0;min-height:0}#wb.wb-sim-locked .wb-palette{opacity:.55;pointer-events:none}#wb.wb-sim-locked .wb-part .wb-sel{stroke-dasharray:4 3}#wb.wb-sim-locked .wb-part{cursor:default}#wb.wb-sim-locked .joy-stick,#wb.wb-sim-locked .joy-base,#wb.wb-sim-locked .joy-cap{cursor:grab}#wb.wb-sim-locked .joy-stick:active,#wb.wb-sim-locked .joy-cap:active{cursor:grabbing}.joy-cap{fill:#ef5350;stroke:#b71c1c;stroke-width:1;cursor:grab;pointer-events:none}.wb-palette{flex:0 0 220px;width:220px;display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--border);background:var(--bg-subtle)}.wb-palette-head{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-muted)}.wb-palette-head .material-symbols-outlined{font-size:18px;color:var(--text-muted)}.wb-palette-title{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text)}#wb-palette-search{flex:0 0 auto;margin:8px;padding:7px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text);font-size:12px;font-family:inherit}#wb-palette-search:focus{outline:none;border-color:var(--border-focus)}.wb-palette-list{flex:1;min-height:0;overflow-y:auto;padding:4px 8px 12px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.wb-palette-cat{padding:10px 4px 4px;font-family:JetBrains Mono,monospace;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);opacity:.65}.wb-palette-item{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:6px;width:100%;margin-bottom:6px;padding:10px 6px 8px;border:1px solid var(--border);border-radius:4px;background:var(--bg);cursor:pointer;text-align:center;transition:border-color .12s,background .12s}.wb-palette-item:hover{border-color:var(--accent);background:var(--bg-hover)}.wb-palette-item:active{transform:scale(.98)}.wb-part-ico{width:64px;height:48px;flex-shrink:0;pointer-events:none}.wb-palette-note{margin:0 8px 8px;padding:8px 10px;border-radius:4px;border:1px dashed var(--border);background:var(--bg);font-size:10px;line-height:1.35;color:var(--text-muted)}.wb-palette-note strong{display:block;margin-bottom:4px;color:var(--text);font-size:10px}.wb-palette-item.is-exhausted{opacity:.45;cursor:not-allowed}.wb-palette-qty{font-family:JetBrains Mono,monospace;font-size:9px;font-weight:700;color:var(--accent, #1565c0);letter-spacing:.02em}.wb-part-name{font-family:JetBrains Mono,monospace;font-size:9px;font-weight:700;letter-spacing:.03em;line-height:1.3;color:var(--text);word-break:break-word}#wb-main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}#wb-add-wrap{position:relative}#wb-add-btn{height:26px;padding:0 12px;border-radius:4px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text-secondary);cursor:pointer;font-size:12px;font-weight:600;display:flex;align-items:center;gap:6px}#wb-add-btn:hover,#wb-add-btn.open{background:var(--bg-hover);border-color:var(--border-focus)}.wb-caret{font-size:10px;opacity:.8}#wb-add-menu{position:absolute;top:32px;left:0;z-index:30;width:340px;max-height:70vh;display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-md);overflow:hidden}#wb-add-menu.hidden{display:none}#wb-add-search{margin:8px;padding:7px 10px;border-radius:5px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text);font-size:12px;outline:none}#wb-add-search:focus{border-color:var(--border-focus)}#wb-add-list{overflow-y:auto;padding:0 6px 8px}.wb-add-cat{position:sticky;top:0;z-index:1;background:var(--bg);padding:8px 8px 4px;font-size:10px;letter-spacing:.8px;text-transform:uppercase;color:var(--text-muted)}.wb-add-item{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:6px;cursor:pointer;color:var(--text-secondary)}.wb-add-item:hover{background:var(--bg-hover)}.wb-add-ico{flex:0 0 46px;width:46px;height:34px;background:var(--bg-muted);border:1px solid var(--border);border-radius:5px;padding:2px}.wb-add-name{font-size:13px;line-height:1.2}#wb-main{flex:1;display:flex;flex-direction:column;min-width:0;position:relative}#wb-tools{flex:0 0 38px;display:flex;align-items:center;gap:6px;padding:0 10px;background:var(--bg-subtle);border-bottom:1px solid var(--border)}#wb-tools button{height:26px;padding:0 10px;border-radius:4px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text-secondary);cursor:pointer;font-size:12px}#wb-tools button:disabled{opacity:.4;cursor:default;pointer-events:none}#wb-tools button:hover:not(:disabled){background:var(--bg-hover)}.wb-sep{width:1px;height:20px;background:var(--border);margin:0 4px}#wb-hint{color:var(--text-faint);font-size:11px;margin-left:auto}#wb-svg{flex:1;width:100%;background:var(--ide-canvas-bg);cursor:default;touch-action:manipulation;overscroll-behavior:contain}.wb-grid-line{stroke:#e0e0e0;stroke-width:1}.wb-part{cursor:grab}.wb-part .wb-sel{fill:none;stroke:none}.wb-part:hover .wb-sel,.wb-part.selected .wb-sel{stroke:var(--bg-inverse);stroke-width:1.5;stroke-dasharray:6 4;fill:#4cc2ff0a;animation:wb-dash-march .45s linear infinite}.wb-part.selected .wb-sel{stroke-width:1.8}#wb-part-tags{pointer-events:none}.wb-part-tag-bg{fill:#ffffffeb;stroke:#37474f38;stroke-width:1}.wb-part-tag-text{fill:#37474f;font-family:IBM Plex Sans,Segoe UI,system-ui,sans-serif;font-size:11px;font-weight:600;letter-spacing:.02em;dominant-baseline:alphabetic;paint-order:stroke fill;stroke:#ffffffd9;stroke-width:2.5px}.wb-usb-power{pointer-events:none}.wb-usb-power .wb-usb-glow{fill:#2ecc7100;opacity:0;transition:fill .35s ease,opacity .35s ease}.wb-usb-power.wb-usb-connected .wb-usb-glow{fill:#2ecc7159;opacity:1;animation:wb-usb-pulse 1.6s ease-in-out infinite}.wb-usb-power .wb-usb-plug-group{transition:transform .55s cubic-bezier(.22,1.15,.36,1)}.wb-usb-power .wb-usb-plug-img{pointer-events:none}.wb-usb-power.wb-usb-docking .wb-usb-plug-group{filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}.wb-usb-power.wb-usb-connected .wb-usb-plug-group{filter:drop-shadow(0 0 5px rgba(46,204,113,.65))}@keyframes wb-usb-pulse{0%,to{opacity:.55}50%{opacity:1}}.wb-body{pointer-events:all;filter:url(#wb-soft-shadow)}.wb-body:has(image){filter:none}.wb-body:has(foreignObject),.wb-body:has(.wb-px-screen){filter:none}.wb-overlay{pointer-events:none}.wb-px-screen{pointer-events:none;image-rendering:pixelated}#wb-pins,.wb-pin-group{pointer-events:none}.wb-pin-hit{fill:transparent;stroke:none;cursor:crosshair;pointer-events:all}.wb-pin-group:hover .pin-pad,.wb-pin-group.pending .pin-pad{stroke:#fff;stroke-width:1.2;filter:brightness(1.15)}.wb-pin-group.pending .pin-hole{fill:var(--bg-inverse)}.wb-pin-label{fill:#b8c4c6;font:6.5px Consolas,monospace;pointer-events:none;opacity:.85}#wb-junctions{pointer-events:none}.wb-junction{fill:url(#wb-grad-gold);stroke:#7a6318;stroke-width:.8}#wb-wires{pointer-events:none}#wb-wires .wb-wire-hit{fill:none;stroke:transparent;stroke-width:14;cursor:pointer;pointer-events:stroke}#wb-wires .wb-wire-node{pointer-events:all;cursor:move}.wb-wire{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.wb-wire-group:hover .wb-wire,.wb-wire.sel{stroke-dasharray:7 5;animation:wb-dash-march .4s linear infinite}.wb-wire.sel{stroke-width:3;cursor:grabbing}.wb-wire-node{fill:var(--bg-inverse);stroke:#fff;stroke-width:1.5;cursor:move}.wb-wire-node:hover{fill:var(--text-muted);r:8}.wb-wire-end{fill:url(#wb-grad-gold);stroke:#7a6318;stroke-width:.6;pointer-events:none}.wb-temp-wire{fill:none;stroke:#43a047;stroke-width:2.5;stroke-dasharray:6 4;stroke-linejoin:round;display:none;pointer-events:none}@keyframes wb-dash-march{to{stroke-dashoffset:-18}}.wb-prop-hint{font-size:11px;color:var(--text-muted);line-height:1.35;margin-bottom:8px}#wb-props{position:absolute;right:12px;bottom:12px;width:220px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px;display:none;box-shadow:var(--shadow-md)}.wb-prop-title{font-weight:600;color:var(--text);margin-bottom:8px;font-size:13px}.wb-prop-row{display:flex;align-items:center;gap:8px;margin:6px 0;color:var(--text-muted);font-size:12px}.wb-prop-row input[type=range]{flex:1}.wb-prop-color,.wb-prop-value{flex:1;background:var(--bg-subtle);color:var(--text-secondary);border:1px solid #444;border-radius:4px;padding:2px}.wb-prop-actions{display:flex;gap:6px;margin-top:10px}.wb-prop-btn{flex:1;height:28px;border-radius:4px;border:1px solid var(--border);background:var(--bg-muted);color:var(--text-secondary);cursor:pointer;font-size:12px}.wb-prop-btn:hover{background:var(--bg-hover)}.wb-prop-btn.danger{background:var(--bg-inset);border-color:var(--border-strong)}.wb-prop-btn.toggle.on{background:var(--bg-active);border-color:var(--border-focus)}.wb-swatch{width:18px;height:18px;border-radius:4px;cursor:pointer;border:1px solid #555}.p-silk{fill:#e8eff0;font:7.5px system-ui,sans-serif;opacity:.92}.p-title{fill:#f5f8f9;font:700 11px system-ui,sans-serif}.p-small{fill:#dce6e8;font:7.5px system-ui,sans-serif;opacity:.9}.p-tiny{fill:#eef4f5;font:6px system-ui,sans-serif;opacity:.85}.p-brand{fill:#f2fafb;font:700 12px system-ui,sans-serif;letter-spacing:1.2px;opacity:.92}.p-chip{fill:#8fa3a6;font:7.5px Consolas,monospace}.p-pin{fill:#c5d5d8;font:6px Consolas,monospace}.p-leg{stroke:url(#wb-grad-leg);stroke-width:2.2;stroke-linecap:round}.pcb{fill:url(#wb-grad-pcb);stroke:#004548;stroke-width:1.2}.pcb-blue{fill:#1a3d5c;stroke:#0c2745;stroke-width:1.2}.pcb-green{fill:#1b5e40;stroke:#0d3d28;stroke-width:1.2}.pcb-brown{fill:#6d4c2f;stroke:#3e2a18;stroke-width:1.2}.pcb-esp{fill:#1a1a1f;stroke:#000;stroke-width:1.2}.shield{fill:#d8dce0;stroke:#8a8f94;stroke-width:.8}.hdr{fill:#141418;stroke:#000;stroke-width:.8}.pin-pad,.hdr-pad{fill:url(#wb-grad-gold);stroke:#8a7020;stroke-width:.55}.pin-hole,.pin-hole2{fill:#1a1408;stroke:#3d3010;stroke-width:.4}.metal{fill:url(#wb-grad-metal);stroke:#6d757a;stroke-width:.8}.ic-body{fill:#1c1c20;stroke:#000;stroke-width:.8}.dip-notch{fill:#0a0a0c;stroke:none}.dip-pin-lab{fill:#cfd8dc;font:700 8px JetBrains Mono,Consolas,monospace;dominant-baseline:middle}.dip-pin-hint{fill:#78909c;font:6px JetBrains Mono,Consolas,monospace;dominant-baseline:middle}.ic-dot{fill:#555}.onled{fill:#3a1818;stroke:#2a0808;stroke-width:.6;transition:fill 60ms linear,opacity 60ms linear,filter 60ms linear}.cap{fill:#1b2a44;stroke:#0c1526;stroke-width:1}.chip-notch{fill:#2a2a2a}.led-grn{fill:#43a047}.led-yel{fill:#c9b030}.jack-port{fill:#5a6066;stroke:#3a3f44;stroke-width:.5}.bat-body{fill:#d9a441;stroke:#8a681f;stroke-width:1.5}.bat-cap{fill:#9aa0a6}.bat-nub{fill:#c2c8cd}.holder{fill:#222;stroke:#000;stroke-width:1.5}.coin{fill:#cfd3d6;stroke:#888;stroke-width:1}.led-glass{stroke:#00000038;stroke-width:1;transition:fill 60ms linear,fill-opacity 60ms linear}.led-base{transition:fill 60ms linear,fill-opacity 60ms linear}.led-halo{pointer-events:none;filter:blur(4px);transition:opacity 60ms linear,r 60ms linear}.led-core{pointer-events:none;filter:blur(2px);transition:opacity 60ms linear}#__bulb{transition:filter 60ms linear}.buzzer-body{fill:#121316;stroke:#000;stroke-width:1}.buzzer-ring{fill:none;stroke:#2a2a30;stroke-width:1}.buzzer-mesh{stroke:#3a3a42;stroke-width:.6;opacity:.7}.buzzer-hole{fill:#080808;stroke:#333;stroke-width:.5}.wb-part.active .buzzer-body{stroke:#b8960a}.relay-can{fill:#2454a8;stroke:#143060;stroke-width:.8}.fan-blade{fill:#90a4ae;stroke:#546e7a;stroke-width:1}.gearbox{fill:#f5d142;stroke:#b39a1e;stroke-width:2}.wheel{fill:#222;stroke:#000;stroke-width:2}.wheel-hub{fill:#999}.pump-body{fill:#1565c0;stroke:#0d3d78;stroke-width:2}.pump-out{fill:#90a4ae}.pump-hub{fill:#cfd8dc}.tap-pipe{fill:#90a4ae;stroke:#546e7a;stroke-width:1.5}.tap-body{fill:#cfd8dc;stroke:#607d8b;stroke-width:1.5}.tap-spout{fill:#b0bec5;stroke:#546e7a;stroke-width:1}.tap-lever{fill:#ef5350;stroke:#c62828;stroke-width:1}.tap-handle{transform-box:fill-box;transform-origin:bottom center;transition:transform .2s}.tap-handle.open{transform:rotate(-55deg)}.tap-stream{fill:none;stroke:#4fc3f7;stroke-width:4;stroke-linecap:round;stroke-dasharray:6 5;animation:tap-flow .35s linear infinite}.tap-stream-2{stroke:#81d4fa;stroke-width:2.5;animation-duration:.28s}.tap-splash{fill:#4fc3f773;animation:tap-splash .6s ease-in-out infinite alternate}@keyframes tap-flow{to{stroke-dashoffset:-22}}@keyframes tap-splash{0%{opacity:.35}to{opacity:.75}}.wb-part.tap-on .tap-body{fill:#bbdefb}@keyframes wbspin{to{transform:rotate(360deg)}}@keyframes wbspin-rev{to{transform:rotate(-360deg)}}.spin,.wb-part.spin .wheel,#__fan.spin,#__pump-rotor.spin,#__mshaft.spin{animation:wbspin .6s linear infinite;transform-box:fill-box;transform-origin:center}.spin-rev,.wb-part.spin-rev .wheel,#__fan.spin-rev,#__pump-rotor.spin-rev,#__mshaft.spin-rev{animation:wbspin-rev .6s linear infinite;transform-box:fill-box;transform-origin:center}.wb-part.spin,.wb-part.spin-rev{animation:none}.lcd-bezel{fill:#0c0c0c}.lcd-text-sm{fill:#e8edff;font:20px Consolas,monospace;letter-spacing:5px;white-space:pre}.wb-disp-view{width:100%;height:100%;overflow:hidden;display:flex;flex-direction:column;box-sizing:border-box;margin:0;padding:0}.wb-disp-row{display:grid;flex:1 1 0;min-height:0;grid-template-columns:repeat(var(--disp-cols, 16),1fr)}.wb-disp-cell{overflow:hidden;display:flex;align-items:center;justify-content:center;color:#e8edff;font-family:Consolas,Courier New,monospace;font-size:var(--disp-font-size, 12px);font-weight:400;line-height:1;box-sizing:border-box;border-right:1px solid rgba(255,255,255,.06);border-bottom:1px solid rgba(255,255,255,.06)}.wb-disp-row .wb-disp-cell:last-child{border-right:none}.wb-disp-view>.wb-disp-row:last-child .wb-disp-cell{border-bottom:none}.oled-screen{fill:#05060a;stroke:#222;stroke-width:1}.oled-text{fill:#4cc2ff;font:700 16px Consolas,monospace}.oled-line{fill:#4cc2ff;font:10px Consolas,monospace;white-space:pre}.tft-screen{fill:#081018;stroke:#222;stroke-width:1}.tft-text{fill:#3fd07a;font:700 20px Consolas,monospace}.seg-body{fill:#0e0e12;stroke:#000;stroke-width:1}.seg-face{fill:#18181c;stroke:none}.seg{fill:#2a1010;opacity:.35}.seg.on{fill:#e02020;opacity:1;filter:drop-shadow(0 0 3px rgba(255,40,40,.85))}.clock-digit{fill:#e02020;font:700 36px Consolas,monospace;opacity:.35}.clock-digit.on{opacity:1}.rgb-halo{opacity:0;pointer-events:none;transition:opacity .12s}.wb-part.lit .rgb-glass{filter:brightness(1.15)}.clock-colon{fill:#e02020;font:700 30px Consolas,monospace;opacity:.35}.btn-frame{fill:#eceff1;stroke:#9aa0a6;stroke-width:.8}.btn-well{fill:#1e1e24;stroke:#2e2e36;stroke-width:.6}.btn-mount{fill:#2a2a30;stroke:#111;stroke-width:.4}.btn-cap{fill:url(#wb-grad-btn);stroke:#6a1010;stroke-width:.8;transform-box:fill-box;transform-origin:center;transition:transform .05s,filter .05s}.btn-shine{fill:#ffffff47;pointer-events:none}.btn-cap.down{transform:translateY(2px);filter:brightness(1.12)}.switch-housing{fill:#e8eaed;stroke:#9aa0a6;stroke-width:1.5}.switch-well{fill:#1e1e24;stroke:#2e2e36;stroke-width:1}.switch-rocker{transition:transform .22s cubic-bezier(.4,0,.2,1);cursor:pointer}.switch-rocker.on{transform:rotate(-22deg)}.switch-rocker:not(.on){transform:rotate(22deg)}.switch-lever{fill:#f0f0f2;stroke:#bdbdbd;stroke-width:1.5;transition:fill .2s,stroke .2s}.switch-rocker.on .switch-lever{fill:#e8f5e9;stroke:#43a047}.switch-label{fill:#666;font:700 13px system-ui,sans-serif;pointer-events:none;transition:fill .2s}.switch-rocker.on .switch-label{fill:#2e7d32}.switch-led{fill:#2a2a30;stroke:#555;stroke-width:1;transition:fill .25s,filter .25s}.switch-led.lit{fill:#43a047;filter:drop-shadow(0 0 5px rgba(67,160,71,.95));animation:switch-glow 1.4s ease-in-out infinite}.switch-tag-off,.switch-tag-on{fill:#7a7a84;font:600 6.5px system-ui,sans-serif;pointer-events:none}.wb-part.switch-on .switch-tag-on{fill:#7ee08e}.wb-part:not(.switch-on) .switch-tag-off{fill:#d6d6dc}@keyframes switch-glow{0%,to{filter:drop-shadow(0 0 4px rgba(67,160,71,.8))}50%{filter:drop-shadow(0 0 9px rgba(126,224,142,1))}}.touch-pad{fill:#33475e;stroke:#5a7899;stroke-width:1.5}.touch-pad.down{fill:#4cc2ff}.kp-btn{fill:#232a36;stroke:#3a4456;stroke-width:1.5}.kp-key{cursor:pointer}.kp-key:hover .kp-btn{fill:#2e3646}.kp-key.pressed .kp-btn{fill:#3a2323;stroke:#f85149}.kp-label{fill:#f2f4f8;font:600 15px system-ui,sans-serif;pointer-events:none}.joy-base{fill:#111;stroke:#000;stroke-width:2;cursor:grab}.joy-stick{fill:#b71c1c;stroke:#7f0000;stroke-width:2;cursor:grab}.joy-cap{fill:#ef5350;stroke:#b71c1c;stroke-width:1;pointer-events:none}.wb-part.joy-pressed .joy-stick{fill:#7f0000}.knob-body{fill:#2b2b30;stroke:#000;stroke-width:2}.knob-mark{fill:#4cc2ff}.preset-body{fill:#1f6ecb;stroke:#0d3d78;stroke-width:1.5}.pir-dome{fill:#e7e7ea;stroke:#b7b7ba;stroke-width:1.5;opacity:.9}.us-eye{fill:#7a7a7a;stroke:#333;stroke-width:2}.dht-body{fill:#2b7de0;stroke:#16407a;stroke-width:2}.dht-vent{fill:#16407a}.reed{fill:#cfd8dc;stroke:#90a4ae;stroke-width:1}.res-body{fill:#c9b896;stroke:#8a7858;stroke-width:.8}.diode-body{fill:#141414;stroke:#000;stroke-width:.8}.diode-band{fill:#c8c8c8;stroke:#888;stroke-width:.4}.to92{fill:#141414;stroke:#000;stroke-width:.8}.to92-flat{fill:#2a2a2a}.xtor-sym{stroke:#9a9aa4;stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round}.wb-part.xtor-on .to92{fill:#1e3a24}.wb-part.xtor-on .to92-flat{fill:#2a4a30}.wb-part.xtor-on .xtor-sym{stroke:#7dcea0}.lens-ring{fill:#333;stroke:#000;stroke-width:2}.lens{fill:#0a3d62;stroke:#1e5f8f;stroke-width:2}.bboard{fill:#f3f3ee;stroke:#c8c8c0;stroke-width:1.5}.bboard-trench{fill:#d9d9d2;stroke:none}.rail-red{stroke:#e53935;stroke-width:1.6;opacity:.85}.rail-blue{stroke:#1e88e5;stroke-width:1.6;opacity:.85}.bb-rail-break{stroke:#9e9e9e;stroke-width:1;stroke-dasharray:2 2}.bhole{fill:#8e8e86}.bb-row-label,.bb-col-label,.bb-rail-label{fill:#6a6a64;font:8px IBM Plex Mono,Consolas,monospace;text-anchor:middle}.bb-rail-label{fill:#555;font-weight:700;font-size:10px}.bracket{fill:#cfd3d6;stroke:#8a8f94;stroke-width:2}.chassis{fill:#37474f;stroke:#1c262b;stroke-width:2}.iron-handle{fill:#b71c1c;stroke:#7f0000;stroke-width:1}.iron-tip{fill:#c2c8cd}.spool{fill:#9aa0a6;stroke:#666;stroke-width:2}.spool-hole{fill:#17171a}#circuit-wrap{width:100%;display:flex;justify-content:center}#circuit-svg{width:100%;max-width:1040px;height:auto}.pcb{fill:url(#wb-grad-pcb);stroke:#004548;stroke-width:1.2}.pcb-inner{fill:none;stroke:#00686b;stroke-width:.8;opacity:.7}.hole{fill:#063033;stroke:#b8c8ca;stroke-width:1}.chip-socket{fill:#23262c;stroke:#000;stroke-width:.8}.chip{fill:#141418;stroke:#000;stroke-width:.8}.chip-dot{fill:#5a5a5a}.chip-leg{fill:#9aa0a6}.chip-label{fill:#8fa3a6;font:8px Consolas,monospace;letter-spacing:.5px}.metal{fill:url(#wb-grad-metal);stroke:#6d757a;stroke-width:.8}.jack{fill:#121418;stroke:#000;stroke-width:.8}.jack-port{fill:#5a6066}.jack-hole{fill:#2a2a2a}.led-on{fill:#43a047}.led-tx,.led-rx{fill:#c9b030}.silk-brand{fill:#eef7f8;font:700 14px system-ui,sans-serif;letter-spacing:2px;opacity:.88}.silk-small{fill:#d3eef1;font:8px system-ui,sans-serif;letter-spacing:1px;opacity:.72}.silk-tiny{fill:#e6f4f5;font:5.5px system-ui,sans-serif;opacity:.75}.header{fill:#141418;stroke:#000;stroke-width:.8}.pin-pad{fill:url(#wb-grad-gold);stroke:#8a7020;stroke-width:.55}.pin-hole{fill:#1a1408;stroke:#3d3010;stroke-width:.4}.pin-label{fill:#c5d5d8;font:8px Consolas,monospace}.wire{fill:none;stroke-linecap:round;filter:drop-shadow(0 1px 1.5px rgba(0,0,0,.55))}.wire-pad{stroke:#00000059;stroke-width:.75}.conn-label{fill:#9fb0b3;font:8px Consolas,monospace}.part-title{fill:#b6c6c9;font:10px system-ui,sans-serif;letter-spacing:.5px}.lcd-pcb{fill:#1f7a3d;stroke:#0f4a24;stroke-width:2}.lcd-hole{fill:#0f4a24;stroke:#cfe8d8;stroke-width:1.5}.lcd-bezel{fill:#0c0c0c;stroke:#000;stroke-width:1}.lcd-screen{fill:#2440d8;stroke:#16267a;stroke-width:2}.lcd-grid{stroke:#ffffff0f;stroke-width:1}.lcd-text{fill:#e8edff;font:26px Consolas,Courier New,monospace;letter-spacing:8px;white-space:pre}.servo-body{fill:#2f74d0;stroke:#1b4e96;stroke-width:2}.servo-tab{fill:#4f8ee0;stroke:#1b4e96;stroke-width:1}.servo-screw{fill:#cdd6e0}.servo-hub-outer{fill:#eceff1}.servo-hub{fill:#6b7378}.servo-horn{fill:#fafafa;stroke:#cfd8dc;stroke-width:1}.servo-horn-tip{fill:#e53935}.servo-ribbon{fill:#263238;stroke:#10171b;stroke-width:1}#servo-arm{transform-box:fill-box;transform-origin:left center;transform:rotate(0);transition:transform .35s ease}.angle-label{fill:#dfe7e8;font:700 13px Consolas,monospace}.keypad-pcb{fill:#e6e6e2;stroke:#b8b8b2;stroke-width:2}.keypad-border{fill:none;stroke:#9a9a94;stroke-width:1.5}.keypad-ribbon{fill:#cfcfc8;stroke:#a0a099;stroke-width:1}.keypad-ribbon-line{stroke:#8a8a84;stroke-width:1}.keypad-btn{cursor:pointer}.keypad-btn rect{fill:#232a36;stroke:#3a4456;stroke-width:1.5;transition:fill 60ms ease,stroke 60ms ease}.keypad-btn text{fill:#f2f4f8;font:600 17px system-ui,sans-serif;pointer-events:none}.keypad-btn:hover rect{fill:#2e3646}.keypad-btn:active rect,.keypad-btn.pressed rect{fill:#3a2323;stroke:#f85149}.led{fill:#5a1414;stroke:#2a0808;stroke-width:1.5;transition:fill 60ms linear,filter 60ms linear,opacity 60ms linear}.led-ring{fill:none;stroke:#cfd8dc;stroke-width:1;opacity:.4}.led-state{fill:#6f7d7f;font:700 11px Consolas,monospace}.led-state.high{fill:#ff6b6b}.lib-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;background:#00000073;display:flex;align-items:center;justify-content:center}.lib-dialog{background:var(--bg);border:1px solid var(--border);border-radius:10px;width:min(520px,92vw);max-height:80vh;overflow:auto;padding:18px 20px;color:var(--text-secondary);box-shadow:var(--shadow-lg)}.lib-dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.lib-dialog-head h3{margin:0;font-size:16px;color:var(--text)}.lib-dialog-close{background:none;border:none;color:var(--text-faint);font-size:22px;cursor:pointer}.lib-dialog-hint{font-size:12px;color:var(--text-muted);margin:0 0 14px;line-height:1.45}.lib-upload-row{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.lib-list{display:flex;flex-direction:column;gap:10px}.lib-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 12px;background:var(--bg-subtle);border-radius:8px;border:1px solid var(--border)}.lib-row-main strong{color:var(--text)}.lib-ver{margin-left:8px;font-size:11px;color:var(--text-faint)}.lib-headers{margin-top:6px;font-size:11px;line-height:1.6}.lib-headers code{background:var(--bg-muted);padding:1px 5px;border-radius:4px;margin-right:4px}.lib-meta{margin-top:4px;font-size:11px;color:var(--text-faint)}.sdk-dialog{width:min(560px,94vw)}.sdk-status{font-size:13px;line-height:1.5;margin:0 0 12px;padding:10px 12px;border-radius:8px;background:var(--bg-subtle);border:1px solid var(--border)}.sdk-steps{margin:0 0 14px;padding-left:1.25rem;font-size:12px;color:var(--text-muted);line-height:1.55}.sdk-steps code{font-size:11px}.sdk-actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.sdk-ok{color:#16a34a;font-weight:600}.sdk-warn{color:#ca8a04;font-weight:600}.sdk-bad{color:#dc2626;font-weight:600}.lib-path{opacity:.85;font-size:10px!important}.lib-tree{opacity:.9}.lib-empty{color:var(--text-faint);font-size:13px;margin:0}.lib-del{flex-shrink:0;color:var(--text)}.polaris-loader{position:relative;display:flex;align-items:center;justify-content:center;background:var(--pe-bg);overflow:hidden}.polaris-loader--full{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;min-height:100dvh;min-height:100vh}.polaris-loader--compact{flex:1;min-height:280px;width:100%}.polaris-loader-grid{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.04;background-image:radial-gradient(#000 1px,transparent 1px);background-size:24px 24px;pointer-events:none}.polaris-loader-card{position:relative;z-index:1;width:min(420px,92vw);background:var(--pe-surface);border:1px solid var(--accent);box-shadow:4px 4px 0 0 var(--accent);padding:32px 28px 28px;text-align:center}.polaris-loader-card--compact{width:min(360px,90vw);padding:24px 20px 20px}.polaris-loader-logo-wrap,.polaris-loader-lottie-wrap{display:flex;justify-content:center;align-items:center;margin-bottom:16px}.polaris-loader-lottie{width:160px;height:160px;max-width:42vw;max-height:42vw}.polaris-loader-fallback{width:48px;height:48px;margin:0 auto;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:polaris-spin .8s linear infinite}@keyframes polaris-spin{to{transform:rotate(360deg)}}.polaris-loader-lottie svg{width:100%!important;height:100%!important;display:block}.polaris-loader-card--compact .polaris-loader-lottie{width:120px;height:120px}.polaris-loader-logo{width:96px;height:96px;object-fit:contain;animation:polaris-logo-in .6s ease-out both}.polaris-loader-card--compact .polaris-loader-logo{width:72px;height:72px}.polaris-loader-progress{margin-top:18px}.polaris-loader-progress.hidden{display:none}.polaris-loader-kicker{margin:0 0 6px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}.polaris-loader-title{margin:0;font-family:Geist,system-ui,sans-serif;font-size:clamp(20px,4vw,26px);font-weight:700;letter-spacing:-.02em;color:var(--text);line-height:1.2}.polaris-loader-tagline{margin:10px 0 0;font-size:13px;color:var(--text-muted);line-height:1.5}.polaris-loader-pct{margin:0 0 8px;font-family:JetBrains Mono,monospace;font-size:28px;font-weight:700;letter-spacing:.04em;color:var(--accent);line-height:1}.polaris-loader-card--compact .polaris-loader-pct{margin:0 0 6px;font-size:22px}.polaris-loader-bar{margin:0 auto 14px;width:100%;height:8px;background:var(--bg-inset);border:1px solid var(--border);overflow:hidden}.polaris-loader-bar-fill{height:100%;width:0%;background:var(--accent);transform-origin:left center;transition:width .18s ease-out}.polaris-loader-bar-fill--determinate{animation:none!important;transform:none!important}.polaris-loader-bar-fill:not(.polaris-loader-bar-fill--determinate){width:35%;animation:polaris-bar 1.4s ease-in-out infinite}.polaris-loader-status{margin:0;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-secondary);min-height:1.2em}.polaris-loader-meta{margin:14px 0 0;font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}@keyframes polaris-bar{0%{transform:translate(-100%);width:30%}50%{width:55%}to{transform:translate(320%);width:30%}}@keyframes polaris-logo-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.route-loading,.ide-loading{flex:1;min-height:200px;display:flex;align-items:center;justify-content:center}.ide-loading{flex-direction:column;gap:12px;color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:12px;letter-spacing:.06em;text-transform:uppercase}.ide-loading:before{content:"";width:48px;height:48px;background-color:currentColor;color:var(--text);-webkit-mask:url(/logo_without_name.svg) center / contain no-repeat;mask:url(/logo_without_name.svg) center / contain no-repeat;opacity:.9;animation:polaris-logo-in .6s ease-out both}.ide-loading-err{color:var(--status-err-text);text-align:center;padding:20px;text-transform:none;letter-spacing:0;font-family:system-ui,sans-serif}.ide-loading-err:before{display:none}@media(max-width:1180px){html,body{overflow:auto;height:auto;min-height:100%;-webkit-text-size-adjust:100%}#app,.app-shell{min-height:100dvh;min-height:100vh}.shell-content,.ide-shell-main{overflow:hidden;min-height:0}.chapter-view{height:100%;min-height:0;overflow:hidden}.sim-sidebar{display:none!important}.sim-action-bar{flex:0 0 auto;height:auto;flex-wrap:wrap;gap:10px;padding:10px 12px}.sim-action-right{flex-wrap:wrap}#body,.ide-root--stitch #body{flex-direction:column;min-height:0}#divider,.ide-column-divider,.ide-root--stitch .ide-column-divider{display:none!important}#editor-column,.ide-root--stitch #editor-column{flex:0 0 auto!important;width:100%!important;max-width:none!important;min-height:180px;max-height:40vh;border-right:none!important;border-bottom:1px solid var(--accent)}#sim-column,#sim-pane,.ide-root--stitch #sim-pane{flex:1 1 auto;width:100%;min-width:0;min-height:240px;border-top:none}.ide-root--stitch.ide-layout-hardware #sim-pane,.ide-root--stitch.ide-layout-split #sim-pane{flex:1;min-height:240px}.ide-root--stitch.ide-layout-code #editor-column{flex:1 1 100%!important;max-height:none}.ide-root--stitch.ide-layout-split #editor-column{flex:0 0 auto!important;max-height:38vh}.ide-root.ide-pane-fs-code #editor-column{max-height:none!important;flex:1 1 100%!important}.ide-root.ide-pane-fs-hardware #editor-column{display:none!important}.ide-root.ide-fullscreen #body{flex-direction:column}.ide-root.ide-fullscreen #editor-column{max-height:none;flex:1}.ide-root.ide-fullscreen #sim-column,.ide-root.ide-fullscreen #sim-pane{flex:1;min-height:240px}.ide-sim-overlay{display:none}#wb,.ide-root--stitch #sim-column #wb{flex-direction:column!important}.wb-palette,.ide-root--stitch .wb-palette{order:2;flex:0 0 auto!important;width:100%!important;max-width:none!important;height:auto;max-height:108px;border-right:none!important;border-top:1px solid var(--accent);background:#f3f3f6}.wb-palette-head,#wb-palette-search,.ide-root--stitch #wb-palette-search{display:none}.wb-palette-list{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;gap:6px;overflow-x:auto;overflow-y:hidden;padding:8px 10px;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-width:thin}.wb-palette-cat{display:none}.wb-palette-item,.ide-root--stitch .wb-palette-item{flex:0 0 76px;width:76px;margin:0;padding:8px 4px 6px;min-height:72px}.wb-part-ico,.ide-root--stitch .wb-part-ico{width:48px;height:36px}.wb-part-name,.ide-root--stitch .wb-part-name{font-size:8px;line-height:1.2}#wb-main,.ide-root--stitch #wb-main{order:1;flex:1 1 auto;min-height:0;min-width:0}#toolbar{height:auto;min-height:44px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding:6px 8px;gap:4px;-webkit-overflow-scrolling:touch;scrollbar-width:none}#toolbar::-webkit-scrollbar{display:none}#toolbar-spacer{display:none}#toolbar .file-name{max-width:96px;font-size:11px;margin-left:0}.ide-toolbar-aux{flex-wrap:nowrap;overflow-x:auto;gap:6px;padding:6px 8px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.ide-toolbar-aux::-webkit-scrollbar{display:none}.ide-toolbar-aux-left,.ide-toolbar-aux-right{flex-wrap:nowrap;flex-shrink:0}.mode-toggle{margin-left:0}.mode-btn{padding:0 8px;font-size:11px;height:32px;min-width:44px}.ide-tool-btn,.ide-tool-btn--stitch{margin-left:0;padding:0 10px;font-size:11px;height:32px;min-height:32px;white-space:nowrap}#btn-run,#btn-stop,#btn-pause,#btn-reset{height:32px;padding:0 10px;font-size:12px;margin-left:0}.ide-editor-head{height:36px;flex:0 0 36px;padding:0 10px}.ide-editor-path{display:none}.ide-serial-panel,#output-panel{height:min(80px,16vh);flex:0 0 min(80px,16vh)}.ide-serial-send{display:none}#examples-menu,#libraries-menu,#files-menu{min-width:min(280px,calc(100vw - 24px));max-width:calc(100vw - 16px)}#wb-add-menu{width:min(340px,calc(100vw - 24px));max-height:min(70vh,420px)}.dash-hero{flex-direction:column;padding:20px 16px 8px}.hero-right{flex:none;width:100%;flex-direction:row;justify-content:space-around;padding:16px}.hero-hi{font-size:20px}.section-h{padding:18px 16px 10px;font-size:16px}.chapter-grid{padding:0 16px 48px;grid-template-columns:1fr}.dash{padding:20px 16px 48px}.admin{padding:16px 14px 48px;overflow-x:auto}.admin .table{min-width:520px}.admin-editor{grid-template-columns:1fr}.teacher-dash{padding:0 14px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.table{min-width:520px}.theory-photos{grid-template-columns:1fr}}@media(max-width:1180px)and (max-height:720px){#editor-column,.ide-root--stitch #editor-column,.ide-root--stitch.ide-layout-split #editor-column{max-height:30vh;min-height:140px}.ide-serial-panel,#output-panel{height:56px;flex:0 0 56px}.wb-palette,.ide-root--stitch .wb-palette{max-height:84px}.ide-shell-topbar,.ide-shell{--ide-toolbar-height: 44px;--ide-footer-height: 28px}}@media(max-width:900px){.dash-hero{flex-direction:column;padding:20px 16px 8px}.hero-right{flex:none;width:100%;flex-direction:row;justify-content:space-around;padding:16px}.hero-hi{font-size:20px}.section-h{padding:18px 16px 10px;font-size:16px}.chapter-grid{padding:0 16px 48px;grid-template-columns:1fr}.dash{padding:20px 16px 48px}.admin{padding:16px 14px 48px;overflow-x:auto}.admin .table{min-width:520px}.admin-editor{grid-template-columns:1fr}.teacher-dash{padding:0 14px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.table{min-width:520px}}@media(max-width:768px){#editor-column,.ide-root--stitch #editor-column{max-height:42vh;min-height:160px}.ide-serial-send{display:flex}.ide-serial-panel,#output-panel{height:auto;flex:0 0 auto;min-height:100px;max-height:28vh}.auth-nav-inner{padding:8px 12px;flex-wrap:wrap}.auth-nav-links{display:none}.auth-nav-title{font-size:14px}.auth-main{padding:20px 12px 32px;align-items:flex-start;padding-top:8vh}.auth-main--register{padding-top:20px}.register-aside-inner{position:static}.register-headline{font-size:24px}.register-visual{max-width:100%}.auth-card,.login-card{width:100%;padding:20px 18px}.auth-card-title{font-size:24px}.auth-deco{display:none!important}.auth-footer-inner{grid-template-columns:1fr;gap:20px;padding:24px 16px}.auth-footer-links{justify-content:flex-start}.auth-screen{padding:20px 16px 48px;justify-content:flex-start;padding-top:12vh}.auth-brand{flex-direction:column;text-align:center;gap:10px}.auth-brand h1{font-size:20px}.auth-server{position:static;align-self:center;margin-top:8px;padding:8px}.topbar{height:52px;flex:0 0 52px;padding:0 12px;gap:10px}.topbar-chip,.topbar-title{display:none}.topbar .brand{font-size:14px}.topbar .brand .dot{width:24px;height:24px;font-size:11px}.hamburger{width:36px;height:36px}.chapter-head{flex-wrap:wrap;padding:10px 12px;gap:8px}.chapter-head .title{flex:1 1 100%;order:3;font-size:13px;line-height:1.35;white-space:normal}.chapter-prog-text{display:none}.chapter-prog{width:72px}.steps{padding:8px 10px;gap:4px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.steps::-webkit-scrollbar{display:none}.step-tab{padding:6px 10px;font-size:11px;flex-shrink:0}.step-tab .num{width:18px;height:18px;font-size:10px}.step-guide{margin:8px 12px 0;font-size:12px}.workspace-shell .step-guide{margin:8px 12px 0}.step-actions{flex-wrap:wrap;padding:10px 12px;gap:8px}.step-actions .btn-primary,.step-actions .btn-sm{flex:1 1 auto;min-width:120px}.theory{padding:18px 14px 40px}.upload-steps{padding:16px 14px}.code-box{max-height:220px;font-size:12px}.theory-reader-toolbar{flex-wrap:wrap;gap:6px;padding:8px 10px}.theory-reader-toolbar button{font-size:11px;padding:0 8px;height:30px}.theory-reader-page{padding:20px 14px 32px;font-size:15px}.modal-card{padding:16px}.modal-actions{flex-wrap:wrap}.modal-actions .btn-primary,.modal-actions .btn-sm{flex:1}.admin-tabs{flex-wrap:wrap}.row{gap:8px}}@media(max-width:480px){.step-tab{padding:6px 8px}.step-tab:not(.active) .step-label-text{display:none}.step-tab.active{padding:6px 12px}.continue-title{font-size:16px}.chapter-card .cc-title{min-height:auto}#btn-examples,#btn-libraries,#btn-save{display:none}#btn-fullscreen{order:20}.ide-pane-fs-btn span:last-child:not(.material-symbols-outlined){display:none}}.student-terminal-page{display:flex;flex-direction:column;height:100%;min-height:0;padding:20px 24px 16px;gap:16px}.student-terminal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.student-terminal-title{margin:0 0 6px;font-size:clamp(22px,3vw,28px);font-weight:700;letter-spacing:-.02em}.student-terminal-sub{margin:0;color:var(--text-muted);font-size:14px;max-width:520px}.student-terminal-header-actions{display:flex;gap:8px;flex-wrap:wrap}.student-terminal-action{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--accent);background:#fff;color:var(--accent);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:8px 12px;cursor:pointer}.student-terminal-action:hover{background:#eeedf0}.student-terminal-action.primary{background:var(--accent);color:var(--text-inverse)}.student-terminal-action.primary:hover{background:#333}.student-terminal-body{flex:1;min-height:0;display:flex;flex-direction:column;border:1px solid var(--accent);background:#0d1117;overflow:hidden}.student-terminal-chrome{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:8px 12px;background:#161b22;border-bottom:1px solid rgba(255,255,255,.08)}.student-terminal-dots{display:flex;gap:6px}.student-terminal-dots .dot{width:10px;height:10px;border-radius:50%}.student-terminal-dots .dot.red{background:#ff5f57}.student-terminal-dots .dot.yellow{background:#febc2e}.student-terminal-dots .dot.green{background:#28c840}.student-terminal-chrome-title{flex:1;font-family:JetBrains Mono,monospace;font-size:11px;color:#ffffff8c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-terminal-status{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.06em;color:#3fb950}.student-terminal-host{flex:1;min-height:280px;padding:4px 8px 8px}.student-terminal-host .xterm{height:100%}.student-terminal-host .xterm-viewport{overflow-y:auto!important}.student-terminal-foot{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted);letter-spacing:.03em}.chapter-terminal-panel{flex:1;min-height:0;display:flex;flex-direction:column;padding:16px;gap:12px}.chapter-terminal-head{flex:0 0 auto}.chapter-terminal-sub{margin:8px 0 0;color:var(--text-muted);font-size:14px}.chapter-terminal-wrap{flex:1;min-height:320px;border:1px solid var(--accent);background:#0d1117;padding:8px}.chapter-terminal-wrap .xterm{height:100%}.chapter-terminal-actions{flex:0 0 auto;padding-top:4px}@media(max-width:767px){.student-terminal-page{padding:12px}.student-terminal-foot{flex-direction:column}.chapter-terminal-wrap{min-height:260px}}.shell-page{display:flex;flex-direction:column;height:100%;min-height:0;padding:20px 24px 16px;gap:16px}.shell-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;flex:0 0 auto}.shell-page-title{margin:0;font-size:22px;font-weight:700;letter-spacing:-.02em}.shell-page-sub{margin:6px 0 0;font-size:14px;color:var(--text-muted);max-width:640px;line-height:1.45}.shell-page-actions{display:flex;gap:8px;flex-wrap:wrap}.shell-page-action{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;font-family:inherit}.shell-page-action:hover{background:#f5f5f5}.shell-page-action.primary{background:var(--accent);color:var(--text-inverse);border-color:var(--accent)}.shell-page-action.primary:hover{background:#333}.shell-page-body{flex:1;min-height:0;display:flex;flex-direction:column}.shell-ide-host{flex:1;min-height:0;position:relative;border:1px solid var(--accent);background:var(--bg)}.shell-ide-host .ide-root{height:100%}.info-shell-wrap{flex:1;min-height:0;overflow:auto;border:1px solid var(--accent);background:#fff;padding:28px 32px 40px}.info-shell-wrap--wide{max-width:none}.info-doc{max-width:720px}.info-doc--long{max-width:820px;padding-bottom:48px}.info-lead{font-size:15px;line-height:1.6;color:var(--text);margin:0 0 20px}.info-meta{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-muted);margin:-8px 0 20px;letter-spacing:.04em;text-transform:uppercase}.info-toc{margin:0 0 32px;padding:16px 18px;border:1px solid var(--border);background:var(--bg-inset, #fafafa)}.info-toc-title{margin:0 0 10px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.info-toc-list{margin:0;padding-left:1.25em;columns:1}@media(min-width:720px){.info-toc-list{columns:2;column-gap:28px}}.info-toc-list li{break-inside:avoid;margin:0 0 6px;font-size:13px;line-height:1.4}.info-toc-link{color:var(--accent);text-decoration:none}.info-toc-link:hover{text-decoration:underline}.info-section{margin:0 0 32px;scroll-margin-top:24px}.info-h2{font-size:16px;font-weight:800;letter-spacing:-.02em;color:var(--accent);margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border)}.info-h3{font-size:14px;font-weight:700;margin:16px 0 8px;color:var(--text)}.info-p{font-size:14px;line-height:1.65;color:var(--text-secondary);margin:0 0 12px}.info-ul,.info-ol{margin:0 0 12px;padding-left:1.25em;color:var(--text-secondary);font-size:14px;line-height:1.6}.info-ul li,.info-ol li{margin:0 0 7px}.info-note{margin:12px 0 16px;padding:12px 14px;border-left:3px solid var(--accent);background:var(--bg-inset, #f7f7f7);font-size:13px;line-height:1.55;color:var(--text-secondary)}.info-table-wrap{overflow-x:auto;margin:0 0 16px;border:1px solid var(--border)}.info-table{width:100%;border-collapse:collapse;font-size:13px;line-height:1.45}.info-table th,.info-table td{text-align:left;vertical-align:top;padding:10px 12px;border-bottom:1px solid var(--border)}.info-table th{width:34%;font-weight:700;color:var(--text);background:var(--bg-inset, #fafafa)}.info-table--grid thead th{width:auto;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.info-table--grid td{color:var(--text-secondary)}.info-table tr:last-child th,.info-table tr:last-child td{border-bottom:0}.info-foot{margin:28px 0 0;font-size:12px;color:var(--text-muted)}.info-public{position:relative;min-height:100%;display:flex;align-items:flex-start;justify-content:center;padding:24px 16px 48px;background:var(--pe-bg, #f4f4f4)}.info-public-card--wide{width:min(920px,100%);max-width:920px}.info-public-card{position:relative;z-index:1;width:min(760px,100%);background:#fff;border:1px solid var(--accent);box-shadow:4px 4px 0 0 var(--accent);padding:28px 28px 36px}.info-public-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(0,0,0,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.04) 1px,transparent 1px);background-size:24px 24px;pointer-events:none;opacity:.7}.info-public-head{display:flex;flex-direction:column;gap:16px;margin-bottom:24px}.info-back{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--accent);background:#fff;color:var(--accent);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:8px 12px;cursor:pointer}.info-back:hover{background:#f5f5f5}.info-kicker{font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin:0 0 6px}.info-public-title{margin:0;font-size:28px;font-weight:900;letter-spacing:-.03em;color:var(--accent)}.info-public-sub{margin:8px 0 0;font-size:14px;color:var(--text-secondary)}.files-page{overflow:auto}.files-page-body{margin-top:4px}.files-page-list{display:flex;flex-direction:column;gap:10px}.files-page-row{display:flex;align-items:stretch;justify-content:space-between;gap:12px;border:1px solid var(--border);background:var(--bg);padding:14px 16px}.files-page-row-main{display:flex;gap:12px;flex:1;min-width:0;cursor:pointer;text-align:left;background:none;border:none;padding:0;font:inherit;color:inherit}.files-page-icon{flex:0 0 40px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#f3f3f6;border:1px solid var(--border);color:var(--accent, #111)}.files-page-icon .material-symbols-outlined{font-size:22px}.files-page-meta{min-width:0;flex:1}.files-page-name{font-size:15px;font-weight:600;margin-bottom:2px;word-break:break-word}.files-page-sub{font-size:12px;color:var(--text-muted);margin-bottom:6px}.files-page-preview{font-family:JetBrains Mono,Consolas,monospace;font-size:11px;color:var(--text-faint, #888);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.files-page-actions{display:flex;flex-direction:column;gap:6px;flex-shrink:0}.files-page-btn{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 10px;border:1px solid var(--border);background:#fff;cursor:pointer;font-size:12px;font-family:inherit;white-space:nowrap}.files-page-btn:hover{background:#f5f5f5}.files-page-btn.danger{color:#b71c1c}.files-page-btn .material-symbols-outlined{font-size:16px}.files-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:280px;border:1px dashed var(--border);background:#fafafa;color:var(--text-muted);text-align:center;padding:24px}.files-empty .material-symbols-outlined{font-size:40px;opacity:.5}.files-empty-title{margin:0;font-size:16px;font-weight:600;color:var(--text)}.files-empty-sub{margin:0 0 8px;font-size:13px;max-width:360px;line-height:1.45}.files-storage{margin:0 24px 16px;padding:14px 16px;border:1px solid var(--border);background:var(--bg-inset, #fafafa)}.files-storage-top{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:8px}.files-storage-title{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.files-storage-label{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-secondary)}.files-storage-track{height:8px;background:#e8e8e8;border:1px solid var(--border);overflow:hidden}.files-storage-fill{height:100%;width:0%;background:var(--accent);transition:width .35s ease,background .2s ease}.files-storage-fill.warn{background:#c47b16}.files-storage-fill.full{background:#c0392b}.files-storage-hint{margin:8px 0 0;font-size:12px;line-height:1.45;color:var(--text-muted)}@media(max-width:720px){.files-page-row{flex-direction:column}.files-page-actions{flex-direction:row;flex-wrap:wrap}}.library-page{overflow:auto}.library-upload-card,.library-list-section{border:1px solid var(--border);background:var(--bg);padding:16px 18px}.library-upload-card h2,.library-list-section h2{margin:0 0 8px;font-size:15px}.library-upload-hint{margin:0 0 12px;font-size:13px;color:var(--text-muted);line-height:1.45}.library-upload-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.library-file-input{font-size:13px;max-width:100%}.library-list-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.library-refresh-btn{display:inline-flex;align-items:center;gap:4px;border:none;background:none;color:var(--text-muted);cursor:pointer;font-size:12px;font-family:inherit}.library-page-list{display:flex;flex-direction:column;gap:10px}.library-page-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--border)}.library-page-row-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.library-page-desc{margin:0 0 8px;font-size:13px;color:var(--text-muted)}.library-badge{font-size:9px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border:1px solid var(--border)}.library-badge.shared{background:#eef6ff}.library-badge.local{background:#fff8e6}.library-page-remove{border:none;background:none;color:#c0392b;cursor:pointer;font-size:12px;white-space:nowrap}.library-empty{text-align:center;padding:32px 16px;color:var(--text-muted)}.library-empty .material-symbols-outlined{font-size:40px;opacity:.4}.library-empty-sub{font-size:13px;margin-top:4px}.library-loading{color:var(--text-muted);font-size:13px}.logs-page{overflow:hidden}.logs-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:0 0 auto}.logs-filter-select{padding:6px 10px;border:1px solid var(--border);background:var(--bg);font-size:12px;font-family:inherit}.logs-count{margin-left:auto;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-muted)}.logs-feed{flex:1;min-height:0;overflow:auto;border:1px solid var(--accent);background:#0d1117;padding:8px}.logs-row{padding:8px 10px;border-bottom:1px solid rgba(255,255,255,.06);font-family:JetBrains Mono,monospace;font-size:12px}.logs-row-meta{display:flex;gap:10px;margin-bottom:4px;font-size:10px;opacity:.7}.logs-row-text{margin:0;white-space:pre-wrap;word-break:break-word;color:#e6edf3}.logs-row--error .logs-row-text{color:#ff7b72}.logs-row--system .logs-row-text{color:#8b949e}.logs-type-error{color:#ff7b72}.logs-empty{text-align:center;padding:48px 16px;color:#8b949e}.logs-empty .material-symbols-outlined{font-size:40px;opacity:.35;display:block;margin-bottom:8px}.logs-empty-sub{font-size:12px;margin-top:6px}.community-page{overflow:auto}.community-layout{display:grid;grid-template-columns:1fr 340px;gap:20px;align-items:start}.community-section h2{margin:0 0 12px;font-size:15px}.community-compose{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.community-post-input{width:100%;padding:10px 12px;border:1px solid var(--border);font-family:inherit;font-size:14px;resize:vertical;min-height:72px}.community-posts{display:flex;flex-direction:column;gap:10px}.community-post{border:1px solid var(--border);padding:12px 14px;background:var(--bg)}.community-post-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:6px;font-size:12px}.community-post-author{font-weight:700}.community-post-time{color:var(--text-muted)}.community-post-body{margin:0;font-size:14px;line-height:1.45}.community-empty{color:var(--text-muted);font-size:13px}.community-projects-grid{display:flex;flex-direction:column;gap:8px}.community-project-card{border:1px solid var(--border);padding:12px;background:var(--bg)}.community-project-icon .material-symbols-outlined{font-size:22px;opacity:.5}.community-project-card h3{margin:6px 0 4px;font-size:14px}.community-project-meta{margin:0 0 8px;font-size:11px;color:var(--text-muted)}.community-project-open{border:1px solid var(--accent);background:transparent;padding:6px 10px;font-size:11px;font-weight:600;cursor:pointer;text-transform:uppercase;letter-spacing:.04em}.community-tips-grid{display:flex;flex-direction:column;gap:8px}.community-tip-card{border:1px solid var(--border);padding:12px;background:#fafafa}.community-tip-card .material-symbols-outlined{font-size:20px;opacity:.55}.community-tip-card h3{margin:6px 0 4px;font-size:13px}.community-tip-card p{margin:0;font-size:12px;color:var(--text-muted);line-height:1.4}@media(max-width:960px){.shell-page{padding:14px 12px}.community-layout{grid-template-columns:1fr}}html.mobile-lite,html.mobile-lite body{overflow:auto;height:auto;min-height:100%;background:#f4f4f6;-webkit-text-size-adjust:100%}html.mobile-lite #app{min-height:100dvh;height:auto}.m-gate{position:relative;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:28px 20px calc(28px + env(safe-area-inset-bottom));background:#0a0a0b;color:#f5f5f5;overflow:hidden}.m-gate-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:28px 28px;-webkit-mask-image:radial-gradient(ellipse at center,#000 20%,transparent 75%);mask-image:radial-gradient(ellipse at center,#000 20%,transparent 75%);pointer-events:none}.m-gate-card{position:relative;width:100%;max-width:420px;display:flex;flex-direction:column;gap:12px}.m-gate-logo{width:56px;height:56px;border-radius:12px;object-fit:cover;border:1px solid rgba(255,255,255,.15)}.m-gate-kicker{margin:8px 0 0;font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#ffffff8c}.m-gate-title{margin:0;font-size:clamp(28px,8vw,36px);line-height:1.1;letter-spacing:-.03em;color:#fff}.m-gate-copy{margin:0;font-size:15px;line-height:1.55;color:#ffffffb8}.m-gate-list{margin:4px 0;padding-left:18px;color:#ffffffc7;font-size:14px;line-height:1.6}.m-gate-note{margin:0;font-size:13px;line-height:1.5;color:#ffffff80}.m-gate-btn{-webkit-appearance:none;appearance:none;border:none;border-radius:12px;min-height:48px;padding:12px 18px;font-family:inherit;font-size:15px;font-weight:600;cursor:pointer;margin-top:8px}.m-gate-btn--primary{background:#fff;color:#111}.m-gate-btn--primary:active{transform:scale(.98)}.m-gate-meta{margin:8px 0 0;font-family:JetBrains Mono,monospace;font-size:10px;color:#ffffff59}.m-shell{display:flex;flex-direction:column;min-height:100dvh;background:#f4f4f6;color:#111}.m-shell-top{position:sticky;top:0;z-index:20;display:grid;grid-template-columns:72px 1fr 72px;align-items:center;gap:8px;min-height:52px;padding:calc(8px + env(safe-area-inset-top)) 12px 8px;background:#ffffffeb;backdrop-filter:blur(10px);border-bottom:1px solid #e4e4e8}.m-shell-brand{display:flex;align-items:center;gap:6px;font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#666}.m-shell-brand img{width:28px;height:28px;border-radius:7px;object-fit:cover}.m-shell-title{margin:0;text-align:center;font-size:15px;font-weight:650;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m-shell-back{width:40px;height:40px;border:none;border-radius:10px;background:#eeeef1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.m-shell-top-spacer{min-width:1px}.m-shell-content{flex:1;min-height:0;padding:12px 14px calc(88px + env(safe-area-inset-bottom))}.m-shell-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(4,1fr);gap:2px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:#fffffff5;border-top:1px solid #e4e4e8;backdrop-filter:blur(12px)}.m-nav-tab{-webkit-appearance:none;appearance:none;border:none;background:transparent;border-radius:12px;padding:6px 4px;display:flex;flex-direction:column;align-items:center;gap:2px;color:#777;cursor:pointer;font-family:inherit}.m-nav-tab.active{color:#111;background:#efeff2}.m-nav-tab .material-symbols-outlined{font-size:22px}.m-nav-icon--fill{font-variation-settings:"FILL" 1,"wght" 500,"GRAD" 0,"opsz" 24}.m-nav-label{font-size:10px;font-weight:600;letter-spacing:.02em}.m-page{display:flex;flex-direction:column;gap:14px}.m-hero{background:#111;color:#fff;border-radius:18px;padding:18px 16px}.m-hero-kicker{margin:0 0 6px;font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.14em;color:#ffffff80}.m-hero-title{margin:0;font-size:26px;letter-spacing:-.03em}.m-hero-sub{margin:6px 0 14px;font-size:13px;line-height:1.45;color:#ffffffa6}.m-hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.m-stat{background:#ffffff14;border-radius:12px;padding:10px 8px;text-align:center;display:flex;flex-direction:column;gap:2px}.m-stat strong{font-size:18px}.m-stat span{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#ffffff8c}.m-resume{-webkit-appearance:none;appearance:none;border:1px solid #e0e0e5;background:#fff;border-radius:14px;padding:14px;display:flex;align-items:center;gap:10px;text-align:left;cursor:pointer;font-family:inherit;color:inherit}.m-resume-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.m-resume-kicker{font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.1em;color:#888}.m-resume strong{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m-section-title{margin:4px 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:#777}.m-chapter-row{width:100%;-webkit-appearance:none;appearance:none;border:1px solid #e0e0e5;background:#fff;border-radius:14px;padding:12px;display:grid;grid-template-columns:42px 1fr 24px;gap:10px;align-items:center;text-align:left;margin-bottom:8px;cursor:pointer;font-family:inherit;color:inherit}.m-chapter-row.locked{opacity:.55;cursor:default}.m-chapter-idx{width:42px;height:42px;border-radius:12px;background:#111;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:600}.m-chapter-meta{display:flex;flex-direction:column;gap:2px;min-width:0}.m-chapter-meta strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m-chapter-meta span{font-size:12px;color:#777}.m-empty{padding:28px 12px;text-align:center;color:#777;font-size:14px}.m-desk-hint{margin:8px 0 0;font-size:12px;line-height:1.45;color:#888}.m-chapter{display:flex;flex-direction:column;gap:10px}.m-chapter-heading{margin:0;font-size:18px;font-weight:650;letter-spacing:-.02em}.m-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;position:sticky;top:52px;z-index:10;background:#f4f4f6;padding:4px 0 8px}.m-tab{-webkit-appearance:none;appearance:none;border:1px solid #e0e0e5;background:#fff;border-radius:12px;min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:4px;font-family:inherit;font-size:12px;font-weight:600;color:#555;cursor:pointer}.m-tab.active{background:#111;border-color:#111;color:#fff}.m-tab .material-symbols-outlined{font-size:18px}.m-chapter-panel{min-height:40vh}.m-theory{background:#fff;border:1px solid #e0e0e5;border-radius:14px;padding:16px;font-size:15px;line-height:1.6;overflow-x:auto}.m-theory img{max-width:100%;height:auto;border-radius:8px}.m-theory h1,.m-theory h2,.m-theory h3{line-height:1.25}.m-code-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:12px;color:#666}.m-btn-sm{-webkit-appearance:none;appearance:none;border:1px solid #111;background:#111;color:#fff;border-radius:8px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}.m-code{width:100%;min-height:42vh;border:1px solid #d8d8de;border-radius:14px;padding:12px;background:#0f1115;color:#e8e8ea;font-family:JetBrains Mono,Fira Code,monospace;font-size:13px;line-height:1.5;resize:vertical;tab-size:2}.m-code--page{min-height:calc(100dvh - 220px)}.m-lab-card{background:#fff;border:1px solid #e0e0e5;border-radius:16px;padding:24px 18px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}.m-lab-icon{font-size:40px;opacity:.7}.m-lab-card h3{margin:0;font-size:18px}.m-lab-card p{margin:0;font-size:14px;line-height:1.5;color:#555;max-width:32ch}.m-profile{background:#fff;border:1px solid #e0e0e5;border-radius:16px;padding:20px 16px;text-align:center}.m-profile-logo{width:56px;height:56px;border-radius:14px;object-fit:cover;margin-bottom:8px}.m-profile h2{margin:0 0 4px;font-size:20px}.m-profile p{margin:0;color:#666;font-size:13px}.m-profile-id{margin-top:6px!important;font-family:JetBrains Mono,monospace;font-size:11px!important}.m-card{background:#fff;border:1px solid #e0e0e5;border-radius:14px;padding:14px}.m-card h3{margin:0 0 6px;font-size:14px}.m-card p{margin:0 0 8px;font-size:13px;color:#555;line-height:1.45}.m-link-btn{display:block;width:100%;-webkit-appearance:none;appearance:none;border:none;background:#f3f3f6;border-radius:10px;padding:12px;margin-top:6px;text-align:left;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer}html.mobile-lite .auth-page{min-height:100dvh;overflow:auto}html.mobile-lite .auth-main--login,html.mobile-lite .auth-main--register{padding:16px 14px 40px}html.mobile-lite .m-theory-host{background:#fff;border:1px solid #e0e0e5;border-radius:14px;overflow:hidden;min-height:55vh}html.mobile-lite .m-theory-host .theory-reader--stitch{min-height:55vh;display:flex;flex-direction:column}html.mobile-lite .m-theory-host .theory-reader-scroll{max-height:none;overflow:visible;flex:1}html.mobile-lite .m-theory-host .theory-reader-page{padding:16px 14px 28px;max-width:100%}html.mobile-lite .m-theory-host .theory-reader-content img,html.mobile-lite .m-theory-host .theory-float-figure img{max-width:100%!important;height:auto!important;float:none!important;display:block;margin:12px auto}html.mobile-lite .m-theory-host .theory-toolbar,html.mobile-lite .m-theory-host .theory-reading-bar{flex-wrap:wrap;gap:6px;padding:8px 10px}html.mobile-lite .m-theory-host .theory-reading-select{max-width:42vw;font-size:11px}.brand-logo{display:inline-block;flex-shrink:0;background-color:currentColor;color:#111;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.brand-logo--mark{width:32px;height:32px}.brand-logo--wordmark{width:120px;height:120px}.brand-logo--on-light{color:#111!important}.brand-logo--on-dark{color:#fff!important}.auth-nav-logo,.topbar-logo,.th-brand-logo,.m-shell-logo,.m-gate-logo,.m-profile-logo,.auth-logo-img{display:inline-block}.polaris-boot-logo{width:72px;height:72px;margin-bottom:8px;color:#111;-webkit-mask-image:url(/logo_without_name.svg);mask-image:url(/logo_without_name.svg)}.polaris-loader-lottie-wrap{flex-direction:column}@media(prefers-color-scheme:dark){.brand-logo:not(.brand-logo--on-light):not(.brand-logo--on-dark){color:#fff}.polaris-boot-logo{color:#fff}}.st .st-nav-links,.st .st-desktop-nav{display:none;align-items:center;justify-content:center;flex:1 1 auto;flex-wrap:wrap;gap:8px 18px;min-width:0}@media(min-width:980px){.st .st-nav-links,.st .st-desktop-nav{display:flex!important}}.st .st-nav-links a,.st .st-desktop-nav a,.st .st-mobile-panel a{font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#5d5f5f;text-decoration:none;background:none;border:0;border-bottom:2px solid transparent;padding:4px 0 2px;cursor:pointer;white-space:nowrap}.st .st-mobile-panel a{display:block;white-space:normal;padding:12px 0;border-bottom:1px solid #e2e2e5}.st .st-nav-links a:hover,.st .st-desktop-nav a:hover,.st .st-mobile-panel a:hover{color:#000;text-decoration:underline;text-underline-offset:4px}.st .st-nav-links a.is-active,.st .st-desktop-nav a.is-active,.st .st-mobile-panel a.is-active{color:#000;border-bottom-color:#000;text-decoration:none}.st .st-topbar-inner{display:flex;align-items:center;gap:12px;width:100%;max-width:1440px;margin:0 auto;padding:10px clamp(12px,2.5vw,24px);min-width:0}.st .st-topbar-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:auto}.st .st-brand{min-width:0;flex-shrink:1}.st .st-brand-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:min(42vw,220px)}@media(min-width:980px){.st .st-brand-name{max-width:none}}.st{--st-background:#f9f9fc;--st-primary:#000;--st-on-primary:#fff;color-scheme:light;flex:1;min-width:0;min-height:0;height:100%;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;background:#f9f9fc;color:#1a1c1e;font-family:Geist,system-ui,sans-serif;font-size:14px;line-height:1.5}.st.min-h-screen{min-height:0}.st>nav,.st>section,.st>main,.st>footer{flex-shrink:0}.st *,.st *:before,.st *:after{box-sizing:border-box;border-color:currentColor}.st [style*=background-image]{background-size:cover;background-position:center;background-repeat:no-repeat}.st button{font:inherit;color:inherit;cursor:pointer;border-radius:0}.st a{color:inherit;text-decoration:none;cursor:pointer;border-radius:0}.st input,.st select,.st textarea{font:inherit;color:inherit;border-radius:0}.st .st-mobile-panel a{padding:10px 0}.st img{max-width:100%;display:block}.st .hide-scroll::-webkit-scrollbar{display:none}.st .space-y-4>:not([hidden])~:not([hidden]){margin-top:1rem}.st .space-y-8>:not([hidden])~:not([hidden]){margin-top:2rem}.st .placeholder-outline-variant::placeholder{color:#cfc4c5}.st .reveal-on-scroll.is-visible{opacity:1;transform:translateY(0)}@keyframes st-float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes st-pulse-fast{0%,to{opacity:1}50%{opacity:.3}}@keyframes st-ping{75%,to{transform:scale(2);opacity:0}}.st .st-brand{background:none;border:0;padding:0;display:flex;align-items:center;gap:14px;cursor:pointer}.st .st-brand-mark{width:48px;height:48px;display:inline-block;background:currentColor;color:#000;-webkit-mask:url(/logo_without_name.svg) center / contain no-repeat;mask:url(/logo_without_name.svg) center / contain no-repeat;flex-shrink:0}.st .st-brand-name{font-size:22px;line-height:1}.st footer .st-brand-mark{width:36px;height:36px;color:#fff}.st footer .text-on-primary-fixed-variant{color:#c6c6c6}.st .st-mobile-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid #000;background:#fff;flex-shrink:0}.st .st-mobile-panel{display:none;flex-direction:column;gap:0;padding:4px clamp(12px,2.5vw,24px) 12px;border-bottom:1px solid #000;background:#f9f9fc}.st .st-mobile-panel.is-open{display:flex}.st .st-desktop-nav,.st .st-nav-links{display:none;align-items:center;justify-content:center;flex:1 1 auto;flex-wrap:wrap;gap:8px 18px}@media(min-width:980px){.st .st-desktop-nav,.st .st-nav-links{display:flex!important}.st .st-mobile-toggle,.st .st-mobile-panel,.st .st-mobile-panel.is-open{display:none!important}}.st .st-hide-compact{display:none!important}@media(min-width:980px){.st .st-hide-compact{display:inline-block!important}}.st .-top-\[6px\]{top:-6px}.st .-translate-x-1\/2{--st-tx:-50%;transform:translate(-50%) translateY(var(--st-ty,0))}.st .-translate-y-1\/2{--st-ty:-50%;transform:translate(var(--st-tx,0)) translateY(-50%)}.st .absolute{position:absolute}.st .animate-ping{animation:st-ping 1s cubic-bezier(0,0,.2,1) infinite}.st .animate-pulse-fast{animation:st-pulse-fast 1.5s cubic-bezier(.4,0,.6,1) infinite}.st .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.st .appearance-none{-webkit-appearance:none;appearance:none}.st .auto-rows-fr{grid-auto-rows:minmax(0,1fr)}.st .bg-background{background-color:#f9f9fc}.st .bg-background\/90{background-color:#f9f9fce6}.st .bg-center{background-position:center}.st .bg-cover{background-size:cover}.st .bg-gradient-to-t{background-image:linear-gradient(to top,var(--st-gradient-stops))}.st .bg-on-primary{background-color:#fff}.st .bg-primary{background-color:#000}.st .bg-primary\/20{background-color:#0003}.st .bg-surface{background-color:#f9f9fc}.st .bg-surface-container-highest{background-color:#e2e2e5}.st .bg-surface-container-low{background-color:#f3f3f6}.st .bg-surface-container-lowest,.st .bg-surface-lowest{background-color:#fff}.st .bg-surface-variant{background-color:#e2e2e5}.st .bg-transparent{background-color:transparent}.st .block{display:block}.st .break-all{word-break:break-all;overflow-wrap:anywhere}.st .border{border-width:1px;border-style:solid}.st .border-2{border-width:2px;border-style:solid}.st .border-b{border-bottom-width:1px;border-bottom-style:solid}.st .border-b-2{border-bottom-width:2px;border-bottom-style:solid}.st .border-dashed{border-style:dashed}.st .border-inverse-primary{border-color:#c6c6c6}.st .border-l{border-left-width:1px;border-left-style:solid}.st .border-l-4{border-left-width:4px;border-left-style:solid}.st .border-none{border-style:none;border-width:0}.st .border-on-primary{border-color:#fff}.st .border-outline{border-color:#7e7576}.st .border-outline-variant{border-color:#cfc4c5}.st .border-primary{border-color:#000}.st .border-r{border-right-width:1px;border-right-style:solid}.st .border-surface-variant{border-color:#e2e2e5}.st .border-t{border-top-width:1px;border-top-style:solid}.st .border-t-2{border-top-width:2px;border-top-style:solid}.st .border-transparent{border-color:transparent}.st .border-x{border-left-width:1px;border-right-width:1px;border-left-style:solid;border-right-style:solid}.st .bottom-0{bottom:0}.st .cursor-crosshair{cursor:crosshair}.st .cursor-grab{cursor:grab}.st .cursor-pointer{cursor:pointer}.st .decoration-2{text-decoration-thickness:2px}.st .duration-150{transition-duration:.15s}.st .duration-300{transition-duration:.3s}.st .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.st .fixed{position:fixed}.st .flex{display:flex}.st .flex-col{flex-direction:column}.st .flex-grow{flex-grow:1}.st .flex-wrap{flex-wrap:wrap}.st .float-animation{animation:st-float 6s ease-in-out infinite}.st .font-body-lg,.st .font-body-md{font-family:Geist,system-ui,sans-serif}.st .font-bold{font-weight:700}.st .font-code-md{font-family:JetBrains Mono,ui-monospace,monospace}.st .font-headline-lg,.st .font-headline-md,.st .font-headline-sm{font-family:Geist,system-ui,sans-serif}.st .font-label-caps{font-family:JetBrains Mono,ui-monospace,monospace}.st .from-background{--st-gradient-from:#f9f9fc;--st-gradient-to:transparent;--st-gradient-stops:var(--st-gradient-from),var(--st-gradient-to)}.st .gap-4{gap:1rem}.st .gap-8{gap:2rem}.st .gap-base{gap:4px}.st .gap-lg{gap:24px}.st .gap-md{gap:16px}.st .gap-sm{gap:8px}.st .gap-xl{gap:32px}.st .gap-xs{gap:4px}.st .grid{display:grid}.st .grid-bg{background-image:linear-gradient(to right,#e2e2e5 1px,transparent 1px),linear-gradient(to bottom,#e2e2e5 1px,transparent 1px);background-size:32px 32px}.st .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.st .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.st .h-1{height:.25rem}.st .h-2{height:.5rem}.st .h-3{height:.75rem}.st .h-4{height:1rem}.st .h-48{height:12rem}.st .h-64{height:16rem}.st .h-\[120px\]{height:120px}.st .h-\[1px\]{height:1px}.st .h-\[240px\]{height:240px}.st .h-\[42px\]{height:42px}.st .h-\[80\%\]{height:80%}.st .h-\[80px\]{height:80px}.st .h-\[90vh\]{height:90vh}.st .h-full{height:100%}.st .hidden{display:none}.st .inline-block{display:inline-block}.st .inline-flex{display:inline-flex}.st .inset-0{top:0;right:0;bottom:0;left:0}.st .inset-y-0{top:0;bottom:0}.st .items-center{align-items:center}.st .items-end{align-items:flex-end}.st .items-start{align-items:flex-start}.st .justify-between{justify-content:space-between}.st .justify-center{justify-content:center}.st .justify-end{justify-content:flex-end}.st .justify-start{justify-content:flex-start}.st .leading-relaxed{line-height:1.625}.st .leading-tight{line-height:1.25}.st .left-0{left:0}.st .left-1\/2{left:50%}.st .left-2{left:.5rem}.st .left-\[10\%\]{left:10%}.st .left-\[33\%\]{left:33%}.st .left-\[66\%\]{left:66%}.st .left-\[90\%\]{left:90%}.st .line-clamp-2{-webkit-line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.st .line-clamp-3{-webkit-line-clamp:3;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.st .material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}.st .max-w-2xl{max-width:42rem}.st .max-w-3xl{max-width:48rem}.st .max-w-4xl{max-width:56rem}.st .max-w-6xl{max-width:72rem}.st .max-w-7xl{max-width:80rem}.st .max-w-\[1440px\]{max-width:1440px}.st .max-w-full{max-width:100%}.st .max-w-md{max-width:28rem}.st .max-w-xl{max-width:36rem}.st .mb-1{margin-bottom:.25rem}.st .mb-16{margin-bottom:4rem}.st .mb-2{margin-bottom:.5rem}.st .mb-3{margin-bottom:.75rem}.st .mb-4{margin-bottom:1rem}.st .mb-6{margin-bottom:1.5rem}.st .mb-8{margin-bottom:2rem}.st .mb-lg{margin-bottom:24px}.st .mb-md{margin-bottom:16px}.st .mb-sm{margin-bottom:8px}.st .mb-xl{margin-bottom:32px}.st .mb-xs{margin-bottom:4px}.st .min-h-\[300px\]{min-height:300px}.st .min-h-\[56vh\]{min-height:56vh}.st .min-h-\[70vh\]{min-height:70vh}.st .min-h-\[78vh\]{min-height:78vh}.st .min-h-screen{min-height:100vh}.st .min-w-\[280px\]{min-width:280px}.st .min-w-\[320px\]{min-width:320px}.st .mix-blend-multiply{mix-blend-mode:multiply}.st .mt-8{margin-top:2rem}.st .mt-auto{margin-top:auto}.st .mt-lg{margin-top:24px}.st .mt-md{margin-top:16px}.st .mt-sm{margin-top:8px}.st .mt-xl{margin-top:32px}.st .mt-xs{margin-top:4px}.st .mx-auto{margin-left:auto;margin-right:auto}.st .opacity-0{opacity:0}.st .opacity-10{opacity:.1}.st .opacity-20{opacity:.2}.st .opacity-50{opacity:.5}.st .opacity-70{opacity:.7}.st .opacity-80{opacity:.8}.st .outline-none{outline:2px solid transparent;outline-offset:2px}.st .overflow-hidden{overflow:hidden}.st .overflow-x-auto{overflow-x:auto}.st .overflow-x-hidden{overflow-x:hidden}.st .p-2{padding:.5rem}.st .p-4{padding:1rem}.st .p-6{padding:1.5rem}.st .p-lg{padding:24px}.st .p-md{padding:16px}.st .p-sm{padding:8px}.st .p-xl{padding:32px}.st .pb-1{padding-bottom:.25rem}.st .pb-2{padding-bottom:.5rem}.st .pb-4{padding-bottom:1rem}.st .pb-sm{padding-bottom:8px}.st .pb-xs{padding-bottom:4px}.st .pl-8{padding-left:2rem}.st .pointer-events-none{pointer-events:none}.st .pt-lg{padding-top:24px}.st .pt-md{padding-top:16px}.st .pt-sm{padding-top:8px}.st .px-1{padding-left:.25rem;padding-right:.25rem}.st .px-2{padding-left:.5rem;padding-right:.5rem}.st .px-3{padding-left:.75rem;padding-right:.75rem}.st .px-4{padding-left:1rem;padding-right:1rem}.st .px-6{padding-left:1.5rem;padding-right:1.5rem}.st .px-lg{padding-left:24px;padding-right:24px}.st .px-md{padding-left:16px;padding-right:16px}.st .px-sm{padding-left:8px;padding-right:8px}.st .px-xl{padding-left:32px;padding-right:32px}.st .px-xs{padding-left:4px;padding-right:4px}.st .py-1{padding-top:.25rem;padding-bottom:.25rem}.st .py-2{padding-top:.5rem;padding-bottom:.5rem}.st .py-24{padding-top:6rem;padding-bottom:6rem}.st .py-3{padding-top:.75rem;padding-bottom:.75rem}.st .py-32{padding-top:8rem;padding-bottom:8rem}.st .py-\[2px\]{padding-top:2px;padding-bottom:2px}.st .py-md{padding-top:16px;padding-bottom:16px}.st .py-sm{padding-top:8px;padding-bottom:8px}.st .py-xl{padding-top:32px;padding-bottom:32px}.st .py-xs{padding-top:4px;padding-bottom:4px}.st .relative{position:relative}.st .resize-none{resize:none}.st .reveal-on-scroll{opacity:0;transform:translateY(20px);transition:opacity .8s ease-out,transform .8s ease-out}.st .right-0{right:0}.st .right-2{right:.5rem}.st .rounded-none{border-radius:0}.st .self-start{align-self:flex-start}.st .shrink-0{flex-shrink:0}.st .sticky{position:sticky}.st .text-4xl{font-size:2.25rem;line-height:2.5rem}.st .text-\[10px\]{font-size:10px}.st .text-\[11px\]{font-size:11px}.st .text-\[12px\]{font-size:12px}.st .text-\[16px\]{font-size:16px}.st .text-\[18px\]{font-size:18px}.st .text-\[24px\]{font-size:24px}.st .text-\[32px\]{font-size:32px}.st .text-body-lg{font-size:clamp(.9375rem,.85rem + .4vw,1.125rem);line-height:1.6;letter-spacing:0em;font-weight:400}.st .text-body-md{font-size:clamp(.8125rem,.78rem + .2vw,.9375rem);line-height:1.5;letter-spacing:0em;font-weight:400}.st .text-center{text-align:center}.st .text-code-md{font-size:13px;line-height:1.6;letter-spacing:0em;font-weight:450}.st .text-headline-lg{font-size:clamp(1.5rem,1.05rem + 2vw,2.75rem);line-height:1.15;letter-spacing:-.02em;font-weight:700}.st .text-headline-md{font-size:clamp(1.25rem,1.05rem + 1vw,1.75rem);line-height:1.2;letter-spacing:-.01em;font-weight:600}.st .text-headline-sm{font-size:clamp(1rem,.92rem + .4vw,1.125rem);line-height:1.35;letter-spacing:0em;font-weight:600}.st .text-inverse-primary{color:#c6c6c6}.st .text-label-caps{font-size:11px;line-height:1.2;letter-spacing:.05em;font-weight:700}.st .text-on-background{color:#1a1c1e}.st .text-on-primary{color:#fff}.st .text-on-primary-fixed-variant{color:#474747}.st .text-on-surface-variant{color:#4c4546}.st .text-outline{color:#7e7576}.st .text-primary{color:#000}.st .text-right{text-align:right}.st .text-secondary{color:#5d5f5f}.st .text-sm{font-size:.875rem;line-height:1.25rem}.st .text-surface-container-high{color:#e8e8eb}.st .text-xs{font-size:.75rem;line-height:1rem}.st .to-transparent{--st-gradient-to:transparent}.st .top-0{top:0}.st .top-1\/2{top:50%}.st .top-\[10px\]{top:10px}.st .top-\[65px\]{top:65px}.st .tracking-tight{letter-spacing:-.025em}.st .tracking-tighter{letter-spacing:-.05em}.st .tracking-wider{letter-spacing:.05em}.st .tracking-widest{letter-spacing:.1em}.st .transform{transform:translate(var(--st-tx,0)) translateY(var(--st-ty,0))}.st .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.st .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.st .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.st .transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.st .underline-offset-4{text-underline-offset:4px}.st .uppercase{text-transform:uppercase}.st .via-background\/50{--st-gradient-stops:var(--st-gradient-from),rgba(249,249,252,.5),var(--st-gradient-to)}.st .w-1{width:.25rem}.st .w-2{width:.5rem}.st .w-24{width:6rem}.st .w-3{width:.75rem}.st .w-4{width:1rem}.st .w-\[1px\]{width:1px}.st .w-\[40\%\]{width:40%}.st .w-fit{width:fit-content}.st .w-full{width:100%}.st .z-10{z-index:10}.st .z-40{z-index:40}.st .z-50{z-index:50}.st .z-\[-1\]{z-index:-1}.st .hover\:-translate-y-2:hover{transform:translateY(-.5rem)}.st .hover\:bg-background:hover{background-color:#f9f9fc}.st .hover\:bg-surface-container:hover{background-color:#eeedf0}.st .hover\:bg-surface-container-high:hover{background-color:#e8e8eb}.st .hover\:bg-surface-container-low:hover{background-color:#f3f3f6}.st .hover\:bg-surface-tint:hover{background-color:#5e5e5e}.st .hover\:bg-surface-variant:hover{background-color:#e2e2e5}.st .hover\:border-on-primary:hover{border-color:#fff}.st .hover\:border-primary:hover{border-color:#000}.st .hover\:opacity-100:hover{opacity:1}.st .hover\:opacity-80:hover{opacity:.8}.st .hover\:shadow-\[4px_4px_0px_0px_rgba\(0\,0\,0\,1\)\]:hover{box-shadow:4px 4px #000}.st .hover\:text-on-primary:hover{color:#fff}.st .hover\:text-primary:hover{color:#000}.st .hover\:underline:hover{text-decoration-line:underline}.st .focus\:border-2:focus{border-width:2px;border-style:solid}.st .focus\:outline-none:focus{outline:none}.st .focus\:ring-0:focus{box-shadow:none}.st .active\:cursor-grabbing:active{cursor:grabbing}.st .group:hover .group-hover\:opacity-100{opacity:1}.st .group:hover .group-hover\:text-primary{color:#000}.st .group:hover .group-hover\:translate-x-1{transform:translate(.25rem)}.st .group:hover .group-hover\:underline{text-decoration-line:underline}.st .group:focus-within .group-focus-within\:text-primary{color:#000}.st .selection\:bg-primary::selection,.st .selection\:bg-primary *::selection{background-color:#000}.st .selection\:text-on-primary::selection,.st .selection\:text-on-primary *::selection{color:#fff}@media(min-width:640px){.st .sm\:block{display:block!important}.st .sm\:flex{display:flex!important}.st .sm\:flex-row{flex-direction:row}.st .sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.st .sm\:items-center{align-items:center}.st .sm\:justify-between{justify-content:space-between}.st .sm\:w-auto{width:auto}}@media(min-width:768px){.st .md\:block{display:block!important}.st .md\:col-span-2{grid-column:span 2 / span 2}.st .md\:flex{display:flex!important}.st .md\:flex-row{flex-direction:row}.st .md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.st .md\:h-auto{height:auto}.st .md\:inline-block{display:inline-block!important}.st .md\:items-end{align-items:flex-end}.st .md\:justify-end{justify-content:flex-end}.st .md\:mt-0{margin-top:0}.st .md\:p-xl{padding:32px}.st .md\:row-span-2{grid-row:span 2 / span 2}.st .md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.st .md\:grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.st .md\:w-auto{width:auto}.st .md\:hidden{display:none!important}}@media(min-width:1024px){.st .lg\:block{display:block!important}.st .lg\:border-r{border-right-width:1px;border-right-style:solid}.st .lg\:border-b-0{border-bottom-width:0}.st .lg\:col-span-5{grid-column:span 5 / span 5}.st .lg\:col-span-7{grid-column:span 7 / span 7}.st .lg\:flex-row{flex-direction:row}.st .lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.st .lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.st .lg\:w-1\/2{width:50%}}.st .focus\:border-primary:focus{border-color:#000}.st .focus\:border-2:focus{border-width:2px}.st .focus\:border-\[2px\]:focus{border-width:2px}.st .site-carousel{background:#f3f3f6}.st .site-carousel[hidden]{display:none!important}.st .site-carousel-frame{position:relative;max-width:1440px;margin:0 auto;min-height:280px;height:min(52vh,560px);overflow:hidden;background:#111}.st .site-carousel-track{position:absolute;top:0;right:0;bottom:0;left:0}.st .site-carousel-slide{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;opacity:0;transition:opacity .45s ease;pointer-events:none}.st .site-carousel-slide.is-active{opacity:1;pointer-events:auto}.st .site-carousel-slide img{width:100%;height:100%;object-fit:cover;display:block}.st .site-carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:18px 64px 28px;background:linear-gradient(to top,rgba(0,0,0,.72),transparent);color:#fff;display:flex;flex-direction:column;gap:4px}.st .site-carousel-caption strong{font-size:18px}.st .site-carousel-caption span{font-size:13px;opacity:.9}.st .site-carousel-nav{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border:1px solid #fff;background:#00000073;color:#fff;font-size:28px;line-height:1;z-index:2}.st .site-carousel-nav--prev{left:16px}.st .site-carousel-nav--next{right:16px}.st .site-carousel-dots{position:absolute;bottom:10px;left:0;right:0;display:flex;justify-content:center;gap:8px;z-index:2}.st .site-carousel-dot{width:8px;height:8px;padding:0;border:1px solid #fff;border-radius:50%;background:transparent}.st .site-carousel-dot.is-active{background:#fff}.st .team-photo-wrap{height:12rem;overflow:hidden}.st .team-photo{width:100%;height:100%;object-fit:cover;object-position:center 20%;display:block}.st .disabled\:opacity-50:disabled{opacity:.5}.st .st-cta-row{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.st .st-cta-row>*{flex:0 1 auto;min-width:min(100%,148px);text-align:center;justify-content:center}@media(max-width:480px){.st .st-cta-row>*{flex:1 1 100%;width:100%}}@media(max-width:979px){.st .st-brand-mark{width:40px;height:40px}.st .st-brand-name{font-size:clamp(15px,4vw,18px)}.st .st-brand{gap:10px}.st .st-topbar-actions button:not(.st-mobile-toggle){padding:6px 10px;font-size:10px}.st .px-lg{padding-left:16px;padding-right:16px}.st .p-xl{padding:20px}.st .py-xl{padding-top:24px;padding-bottom:24px}.st .py-32{padding-top:3rem;padding-bottom:3rem}.st .py-24{padding-top:2.5rem;padding-bottom:2.5rem}.st .mb-16{margin-bottom:2rem}.st .min-h-\[70vh\],.st .min-h-\[78vh\],.st .min-h-\[56vh\]{min-height:0}.st .pl-8{padding-left:1rem}.st [class*="left-[10%]"],.st [class*="left-[90%]"]{display:none}.st main.border-x,.st main.border-l,.st main.border-r{border-left-width:0;border-right-width:0}.st .site-carousel-frame{min-height:180px;height:min(42vh,360px)}.st .site-carousel-caption{padding:14px 16px 36px}.st .site-carousel-caption strong{font-size:15px}.st .site-carousel-nav{width:34px;height:34px;font-size:22px}.st .site-carousel-nav--prev{left:8px}.st .site-carousel-nav--next{right:8px}.st footer .flex.flex-wrap{flex-direction:column;align-items:flex-start;gap:10px}.st footer .gap-lg{flex-wrap:wrap;gap:12px}.st .lg\:col-span-7,.st .lg\:col-span-5{border-right-width:0!important}.st .flex.justify-between.items-start{flex-wrap:wrap;gap:8px}}@media(max-width:640px){.st .st-brand-mark{width:34px;height:34px}.st .st-topbar-inner{padding:8px 12px;gap:8px}.st form .grid.grid-cols-2{grid-template-columns:1fr}.st .min-w-\[280px\],.st .min-w-\[320px\]{min-width:min(100%,280px)}.st #news-scroll{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.st .justify-between.items-end{flex-direction:column;align-items:flex-start;gap:8px}.st .gap-8{gap:1rem}.st section .flex.gap-4{flex-wrap:wrap}.st .p-md{padding:14px}.st .mb-xl{margin-bottom:20px}}@media(max-height:760px){.st .min-h-\[70vh\],.st .min-h-\[78vh\],.st .min-h-\[56vh\]{min-height:0}.st .py-32{padding-top:2.5rem;padding-bottom:2.5rem}.st .site-carousel-frame{min-height:160px;height:min(34vh,280px)}}@media(min-width:1440px){.st .text-headline-lg{font-size:2.75rem}}.st{--st-ink: #0a0a0b;--st-paper: #f4f2ec;--st-mist: #e8e6df;--st-line: rgba(10, 10, 11, .14);--st-ease: cubic-bezier(.22, 1, .36, 1)}.st .st-enter{opacity:0;transform:translateY(12px);transition:opacity .38s var(--st-ease),transform .38s var(--st-ease);transition-delay:var(--st-d, 0ms)}.st .st-enter.is-in{opacity:1;transform:translateY(0)}.st .reveal-on-scroll{opacity:1;transform:none}.st .reveal-child{opacity:0;transform:translateY(14px);transition:opacity .32s var(--st-ease),transform .32s var(--st-ease);transition-delay:var(--st-d, 0ms)}.st .reveal-on-scroll.is-visible .reveal-child,.st .reveal-child.is-visible{opacity:1;transform:translateY(0)}.st .st-hero{position:relative;isolation:isolate;min-height:min(92vh,920px);display:flex;align-items:flex-end;overflow:hidden;background:var(--st-ink);color:#fff;border-bottom:1px solid #000;contain:layout paint style}.st .st-hero--compact{min-height:min(62vh,640px)}.st .st-hero--about{min-height:min(78vh,820px)}.st .st-hero-media{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;background-color:#0a0a0b;z-index:0;transform:translateZ(0);overflow:hidden;pointer-events:none}.st .st-hero-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;border:0;display:block;pointer-events:none}.st .st-hero-video::-webkit-media-controls{display:none!important}.st .st-hero-loader{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;align-items:center;justify-content:center;background:#0a0a0bb8;transition:opacity .5s ease;pointer-events:none}.st .st-hero-loader--done{opacity:0}.st .st-hero-spinner{width:36px;height:36px;border:3px solid rgba(255,255,255,.18);border-top-color:#ffffffd9;border-radius:50%;animation:st-spin .75s linear infinite}@keyframes st-spin{to{transform:rotate(360deg)}}.st .st-hero-veil{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:linear-gradient(180deg,#0a0a0b73,#0a0a0b9e 42%,#0a0a0bf0),linear-gradient(90deg,rgba(10,10,11,.6) 0%,transparent 55%);pointer-events:none}.st .st-hero-veil--video{background:linear-gradient(180deg,#0a0a0b8c,#0a0a0bad 40%,#0a0a0beb),linear-gradient(90deg,rgba(10,10,11,.55) 0%,transparent 60%)}.st .st-hero-veil--soft{background:linear-gradient(180deg,#0a0a0b59,#0a0a0bc7),linear-gradient(105deg,rgba(10,10,11,.72) 0%,transparent 50%)}.st .st-hero-grid{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;opacity:.18;background-image:linear-gradient(to right,rgba(255,255,255,.35) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.35) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:linear-gradient(180deg,#000 0%,transparent 85%);mask-image:linear-gradient(180deg,#000 0%,transparent 85%)}.st .st-hero-copy{position:relative;z-index:3;width:min(920px,100%);padding:clamp(28px,6vw,72px) clamp(16px,4vw,48px) clamp(40px,7vw,72px)}.st .st-hero-copy--left{margin-right:auto}.st .st-hero-brand{font-family:Space Grotesk,Geist,system-ui,sans-serif;font-size:clamp(2.4rem,7vw,5.5rem);font-weight:700;letter-spacing:-.055em;line-height:.92;margin:0 0 .35em;text-transform:uppercase}.st .st-hero-title{font-family:Space Grotesk,Geist,system-ui,sans-serif;font-size:clamp(1.35rem,2.8vw,2.15rem);font-weight:600;letter-spacing:-.03em;line-height:1.15;margin:0 0 .75em;max-width:18ch;text-transform:none}.st .st-hero-lede{font-size:clamp(.95rem,1.4vw,1.125rem);line-height:1.55;max-width:36rem;margin:0 0 1.5rem;color:#ffffffd1}.st .st-hero-scroll{position:absolute;right:clamp(16px,4vw,40px);bottom:28px;z-index:3;width:18px;height:28px;border:1px solid rgba(255,255,255,.55);opacity:.7}.st .st-hero-scroll span{display:block;width:2px;height:8px;margin:6px auto 0;background:#fff;animation:st-scroll-pip 1.6s var(--st-ease) infinite}@keyframes st-scroll-pip{0%{opacity:0;transform:translateY(0)}40%{opacity:1}to{opacity:0;transform:translateY(10px)}}.st .st-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:14px 22px;border:1px solid #fff;transition:background .25s ease,color .25s ease,border-color .25s ease,transform .25s var(--st-ease)}.st .st-btn--solid{background:#fff;color:#000;border-color:#fff}.st .st-btn--solid:hover,.st .st-btn--ghost{background:transparent;color:#fff}.st .st-btn--ghost:hover{background:#fff;color:#000}.st .st-btn--on-ink{background:#fff;color:#000;border-color:#fff}.st .st-btn--on-ink:hover{background:transparent;color:#fff}.st .st-section .st-btn--solid,.st .st-contact .st-btn--solid,.st .st-careers .st-btn--solid{background:#000;color:#fff;border-color:#000}.st .st-section .st-btn--solid:hover,.st .st-contact .st-btn--solid:hover,.st .st-careers .st-btn--solid:hover{background:#fff;color:#000}.st .st-section .st-btn--ghost,.st .st-contact .st-btn--ghost,.st .st-careers .st-btn--ghost{color:#000;border-color:#000}.st .st-section .st-btn--ghost:hover,.st .st-contact .st-btn--ghost:hover{background:#000;color:#fff}.st .st-btn:active{transform:translateY(1px)}.st .st-cta-row{display:flex;flex-wrap:wrap;gap:12px}.st .st-link-arrow{align-self:flex-start;margin-top:auto;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border:0;border-bottom:1px solid currentColor;background:none;padding:0 0 2px;color:inherit;transition:letter-spacing .25s var(--st-ease)}.st .st-link-arrow:hover{letter-spacing:.14em}.st .st-section{padding:clamp(48px,8vw,96px) clamp(16px,4vw,48px);background:var(--st-paper);border-bottom:1px solid #000;position:relative}.st .st-section--flow{background:#fff}.st .st-section--ink{background:var(--st-ink);color:#fff}.st .st-section--adopt{background:radial-gradient(1200px 500px at 10% -10%,rgba(0,0,0,.06),transparent 60%),var(--st-paper)}.st .st-section-inner{width:min(1440px,100%);margin:0 auto}.st .st-section-head{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap;margin-bottom:clamp(24px,4vw,40px);padding-bottom:14px;border-bottom:1px solid #000;position:relative}.st .st-section--ink .st-section-head{border-bottom-color:#ffffff47}.st .st-section-title{font-family:Space Grotesk,Geist,system-ui,sans-serif;font-size:clamp(1.4rem,2.6vw,2rem);font-weight:700;letter-spacing:-.03em;margin:0;text-transform:none}.st .st-section-title--on-ink{color:#fff}.st .st-section-meta{font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;letter-spacing:.1em;color:#5d5f5f}.st .st-section-meta--on-ink{color:#ffffff8c}.st .st-section-head:after{content:"";position:absolute;left:0;bottom:-1px;height:2px;width:0;background:currentColor;transition:width .4s var(--st-ease)}.st .reveal-on-scroll.is-visible .st-section-head:after{width:min(120px,30%);transition-duration:.4s}.st .st-flow{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(240px,1fr);gap:14px;overflow-x:auto;padding-bottom:8px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.st .st-flow-step{scroll-snap-align:start;min-height:220px;padding:22px 20px;border:1px solid #000;background:var(--st-paper);display:flex;flex-direction:column;gap:10px;transition:background .15s ease}.st .st-flow-step:hover{background:#fff}.st .st-flow-num{font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;font-weight:700;letter-spacing:.08em;width:fit-content;border:1px solid #000;padding:2px 6px}.st .st-flow-step h3{font-family:Space Grotesk,Geist,system-ui,sans-serif;font-size:1.25rem;font-weight:700;letter-spacing:-.02em;margin:0}.st .st-flow-step p{margin:0;color:#4c4546;font-size:.92rem;line-height:1.5}.st .st-adopt{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.st .st-adopt--2{grid-template-columns:repeat(2,minmax(0,1fr))}.st .st-adopt-item{border:1px solid #000;padding:24px 22px;min-height:220px;display:flex;flex-direction:column;gap:10px;background:#fff}.st .st-adopt-item--accent{background:#000;color:#fff}.st .st-adopt-kicker{font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;opacity:.7}.st .st-adopt-item h3{font-family:Space Grotesk,Geist,system-ui,sans-serif;font-size:1.35rem;margin:0;letter-spacing:-.02em}.st .st-adopt-item p{margin:0;line-height:1.5;color:inherit;opacity:.85}.st .st-eyebrow{font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;margin:0 0 12px}.st .st-display{font-family:Space Grotesk,Geist,system-ui,sans-serif;font-size:clamp(1.6rem,3.4vw,2.8rem);font-weight:700;letter-spacing:-.035em;line-height:1.08;margin:0 0 18px;max-width:18ch}.st .st-body-wide{font-size:clamp(1rem,1.4vw,1.15rem);line-height:1.6;max-width:40rem;margin:0;color:#4c4546}.st .st-body-muted{color:#5d5f5f;margin:8px 0 0;line-height:1.5}.st .st-about-vision{max-width:920px}.st .st-cta-band{max-width:820px}.st .st-directives{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.st .st-directive{border:1px solid rgba(255,255,255,.28);padding:28px 22px;min-height:260px;position:relative;background:#ffffff08;transition:background .15s ease,color .15s ease,border-color .15s ease}.st .st-directive:hover{background:#fff;color:#000;border-color:#fff}.st .st-directive-num{position:absolute;top:14px;right:14px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;opacity:.55}.st .st-directive-icon{font-size:36px;margin-bottom:18px;display:block}.st .st-directive h3{font-family:Space Grotesk,Geist,system-ui,sans-serif;font-size:1.25rem;margin:0 0 10px;letter-spacing:-.02em}.st .st-directive p{margin:0;line-height:1.55;opacity:.85}.st .st-footer{background:#000;color:#fff;border-top:2px solid #000;margin-top:auto}.st .st-footer-inner{width:min(1440px,100%);margin:0 auto;padding:clamp(28px,5vw,48px) clamp(16px,4vw,48px);display:grid;grid-template-columns:1.2fr 1fr;gap:24px}.st .st-footer-nav{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.st .st-footer .st-brand-mark{color:#fff}.st .st-careers{background:var(--st-paper)}.st .st-careers-grid{width:min(1440px,100%);margin:0 auto;display:grid;grid-template-columns:1.15fr .85fr;gap:0;border-left:1px solid #000;border-right:1px solid #000}.st .st-careers-roles,.st .st-careers-form-wrap{padding:clamp(24px,4vw,40px)}.st .st-careers-roles{border-right:1px solid #000}.st .st-careers-head{margin-bottom:22px}.st .st-job-list{display:flex;flex-direction:column;gap:0}.st .st-job{text-align:left;width:100%;padding:22px 18px;border:0;border-bottom:1px solid var(--st-line);background:transparent;cursor:pointer;transition:background .12s ease}.st .st-job:hover,.st .st-job.is-selected{background:#fff}.st .st-job.is-selected{box-shadow:inset 3px 0 #000}.st .st-job-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:8px}.st .st-job-title{font-family:Space Grotesk,Geist,system-ui,sans-serif;font-size:1.1rem;font-weight:700;margin:0;letter-spacing:-.02em}.st .st-job-tag{font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid #000;padding:3px 7px;flex-shrink:0;background:#fff}.st .st-job-blurb{margin:0 0 10px;color:#4c4546;font-size:.92rem;line-height:1.45}.st .st-job-chips{display:flex;flex-wrap:wrap;gap:6px}.st .st-job-chips span{font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;border:1px solid var(--st-line);padding:2px 6px;color:#5d5f5f}.st .st-form{display:flex;flex-direction:column;gap:16px}.st .st-field{display:flex;flex-direction:column;gap:6px}.st .st-field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.st .st-label{font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#5d5f5f}.st .st-input{width:100%;border:1px solid #7e7576;background:#fff;padding:11px 12px;transition:border-color .2s ease,box-shadow .2s ease}.st .st-input:focus{outline:none;border-color:#000;border-width:2px;padding:10px 11px}.st .st-textarea{min-height:160px;resize:vertical}.st .st-drop{border:2px dashed #7e7576;min-height:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fff;position:relative;transition:border-color .25s ease,background .25s ease}.st .st-drop:hover{border-color:#000;background:var(--st-mist)}.st .st-drop-input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;z-index:2}.st .st-drop-icon{font-size:32px;color:#7e7576;margin-bottom:4px}.st .st-drop-title{font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase}.st .st-contact{background:linear-gradient(180deg,var(--st-mist),var(--st-paper));padding:clamp(28px,5vw,56px) clamp(16px,4vw,48px) clamp(48px,7vw,80px)}.st .st-contact-panel{width:min(980px,100%);margin:0 auto;display:grid;grid-template-columns:.9fr 1.1fr;gap:0;border:1px solid #000;background:#fff;overflow:hidden}.st .st-contact-aside{padding:clamp(24px,4vw,40px);background:#000;color:#fff}.st .st-contact-email{font-family:Space Grotesk,Geist,system-ui,sans-serif;font-size:clamp(1.2rem,2.2vw,1.6rem);font-weight:700;letter-spacing:-.02em;display:inline-block;border-bottom:1px solid rgba(255,255,255,.35);transition:border-color .2s ease}.st .st-contact-email:hover{border-bottom-color:#fff}.st .st-contact-aside .st-body-muted{color:#ffffffb3}.st .st-contact-form{padding:clamp(24px,4vw,40px)}.st .st-form-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;padding-top:8px;border-top:1px solid var(--st-line)}@media(max-width:979px){.st .st-adopt,.st .st-adopt--2,.st .st-directives,.st .st-careers-grid,.st .st-contact-panel,.st .st-footer-inner{grid-template-columns:1fr}.st .st-careers-roles{border-right:0;border-bottom:1px solid #000}.st .st-careers-grid{border-left:0;border-right:0}.st .st-footer-nav{align-items:flex-start}.st .st-hero{min-height:min(72vh,640px);align-items:flex-end}.st .st-hero--compact,.st .st-hero--about{min-height:min(58vh,520px)}.st .st-hero-brand{font-size:clamp(1.85rem,10vw,2.75rem);max-width:100%;word-break:break-word}.st .st-hero-title{font-size:clamp(1.15rem,4.5vw,1.55rem);max-width:100%}.st .st-hero-lede{font-size:.95rem;max-width:100%}.st .st-hero-copy{width:100%;padding:28px 16px 36px}.st .st-hero-scroll{display:none}.st .st-hero-veil,.st .st-hero-veil--video,.st .st-hero-veil--soft{background:linear-gradient(180deg,#0a0a0b59,#0a0a0b8c 35%,#0a0a0bf0)}.st .st-hero--about .st-hero-media{background-position:center 25%}.st .st-cta-row{width:100%;flex-direction:column;align-items:stretch}.st .st-cta-row .st-btn{width:100%;min-height:48px;padding:14px 18px}.st .st-field-row{grid-template-columns:1fr}.st .st-section{padding:40px 16px}.st .st-section-head{flex-direction:column;align-items:flex-start;gap:8px}.st .st-display{max-width:100%;font-size:clamp(1.45rem,6.5vw,2rem)}.st .st-body-wide{max-width:100%}.st .st-flow{grid-auto-columns:minmax(78vw,280px);gap:12px;margin:0 -16px;padding:0 16px 12px}.st .st-flow-step{min-height:200px}.st .st-directive{min-height:0;padding:22px 18px}.st .st-adopt-item{min-height:0}.st .st-contact{padding:20px 12px 40px}.st .st-contact-panel{border-left:0;border-right:0;width:100%}.st .st-contact-aside,.st .st-contact-form{padding:20px 16px}.st .st-form-footer{flex-direction:column;align-items:stretch}.st .st-form-footer .st-btn{width:100%;min-height:48px}.st .st-careers-roles,.st .st-careers-form-wrap{padding:20px 16px}.st .st-job{padding:18px 12px}.st .st-job-top{flex-direction:column;align-items:flex-start;gap:8px}.st .st-footer-inner{padding:28px 16px}.st .st-btn{-webkit-tap-highlight-color:transparent}}@media(max-width:640px){.st .st-topbar-inner{padding:8px 12px;gap:8px}.st .st-brand-mark{width:32px;height:32px}.st .st-brand-name{font-size:14px;max-width:min(38vw,140px)}.st .st-topbar-actions button:not(.st-mobile-toggle){padding:8px 10px;font-size:10px;min-height:36px}.st .st-mobile-toggle{width:40px;height:40px}.st .st-mobile-panel{padding:8px 12px 14px}.st .st-mobile-panel a{padding:14px 0;font-size:12px}.st .st-hero{min-height:min(88dvh,620px);min-height:min(88vh,620px)}.st .st-hero--compact,.st .st-hero--about{min-height:min(70dvh,480px);min-height:min(70vh,480px)}.st .st-hero-copy{padding:24px 14px calc(28px + env(safe-area-inset-bottom,0px))}.st .st-hero-brand{font-size:clamp(1.7rem,11vw,2.35rem);margin-bottom:.4em}.st .st-hero-title{font-size:1.15rem;line-height:1.25;margin-bottom:.65em}.st .st-hero-lede{font-size:.9rem;line-height:1.5;margin-bottom:1.25rem}.st .st-section{padding:32px 14px}.st .st-section-title{font-size:1.35rem}.st .st-flow{grid-auto-columns:minmax(82vw,300px);margin:0 -14px;padding:0 14px 10px}.st .st-input,.st .st-textarea,.st select.st-input{font-size:16px;min-height:46px}.st .st-textarea{min-height:140px}.st .st-drop{min-height:110px}.st .site-carousel-frame{min-height:160px;height:min(38vh,280px)}.st .site-carousel-caption{padding:12px 12px 32px}.st .site-carousel-nav{display:none}}@media(max-width:380px){.st .st-hero-brand{font-size:1.55rem}.st .st-brand-name{max-width:28vw}}@media(prefers-reduced-motion:reduce){.st .st-enter,.st .reveal-child,.st .st-hero-grid,.st .st-hero-scroll span{animation:none!important;transition:none!important;opacity:1!important;transform:none!important}}
