@import url(https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Inter:wght@300;400;500&display=swap);:root,[data-theme=dark]{--vsc-bg:#1e1e1e;--vsc-sidebar:#252526;--vsc-sidebar-hover:#2a2d2e;--vsc-sidebar-active:#37373d;--vsc-activity:#333;--vsc-titlebar:#3c3c3c;--vsc-tab-bg:#2d2d2d;--vsc-tab-active:#1e1e1e;--vsc-tab-border:#252526;--vsc-statusbar:#007acc;--vsc-statusbar-text:#fff;--vsc-terminal-bg:#1e1e1e;--vsc-terminal-border:#3c3c3c;--vsc-panel:#1e1e1e;--vsc-panel-header:#252526;--vsc-border:#3c3c3c;--vsc-border-light:#474747;--vsc-text:#d4d4d4;--vsc-text-dim:#858585;--vsc-text-muted:#6a6a6a;--vsc-text-bright:#fff;--syn-blue:#569cd6;--syn-const:#4fc1ff;--syn-lightblue:#9cdcfe;--syn-green:#4ec9b0;--syn-yellow:#dcdcaa;--syn-orange:#ce9178;--syn-comment:#6a9955;--syn-number:#b5cea8;--syn-pink:#c586c0;--syn-white:#d4d4d4;--vsc-accent:#007acc;--vsc-accent-hover:#1a8fdd;--vsc-selection:#264f7899;--vsc-highlight:#ffffff0a;--vsc-scroll-thumb:#79797966}[data-theme=light]{--vsc-bg:#fff;--vsc-sidebar:#f3f3f3;--vsc-sidebar-hover:#e8e8e8;--vsc-sidebar-active:#e4e6f1;--vsc-activity:#ddd;--vsc-titlebar:#ddd;--vsc-tab-bg:#ececec;--vsc-tab-active:#fff;--vsc-tab-border:#f3f3f3;--vsc-statusbar:#007acc;--vsc-statusbar-text:#fff;--vsc-terminal-bg:#fff;--vsc-terminal-border:#e0e0e0;--vsc-panel:#fff;--vsc-panel-header:#f3f3f3;--vsc-border:#e0e0e0;--vsc-border-light:#d0d0d0;--vsc-text:#1f1f1f;--vsc-text-dim:#717171;--vsc-text-muted:#9e9e9e;--vsc-text-bright:#000;--syn-blue:#00f;--syn-const:#001080;--syn-lightblue:#001080;--syn-green:#267f99;--syn-yellow:#795e26;--syn-orange:#a31515;--syn-comment:green;--syn-number:#098658;--syn-pink:#af00db;--syn-white:#1f1f1f;--vsc-accent:#007acc;--vsc-accent-hover:#005a9e;--vsc-selection:#add6ff80;--vsc-highlight:#00000008;--vsc-scroll-thumb:#6464644d}*,:after,:before{box-sizing:border-box;margin:0;padding:0}#root,body,html{height:100vh;overflow:hidden}body{-webkit-font-smoothing:antialiased;background:#1e1e1e;background:var(--vsc-bg);color:#d4d4d4;color:var(--vsc-text);font-family:Consolas,Courier New,monospace;font-size:13px;line-height:1.5;transition:background .2s,color .2s}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}button{cursor:pointer;font-family:inherit}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#79797966;background:var(--vsc-scroll-thumb);border-radius:0}::-webkit-scrollbar-thumb:hover{background:#79797999}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.page-enter{animation:fadeIn .2s ease both}.syn-blue{color:#569cd6;color:var(--syn-blue)}.syn-const{color:#4fc1ff;color:var(--syn-const)}.syn-lblue{color:#9cdcfe}.syn-green{color:#4ec9b0;color:var(--syn-green)}.syn-yellow{color:#dcdcaa;color:var(--syn-yellow)}.syn-orange{color:#ce9178;color:var(--syn-orange)}.syn-comment{color:#6a9955;color:var(--syn-comment);font-style:italic}.syn-number{color:#b5cea8;color:var(--syn-number)}.syn-pink{color:#c586c0;color:var(--syn-pink)}.syn-dim{color:#858585;color:var(--vsc-text-dim)}.syn-white{color:#d4d4d4;color:var(--syn-white)}.activity-bar{align-items:center;background:var(--vsc-activity);border-right:1px solid var(--vsc-border);display:flex;flex-direction:column;flex-shrink:0;justify-content:space-between;padding:4px 0;width:48px}.activity-bar__bottom,.activity-bar__top{align-items:center;display:flex;flex-direction:column;gap:2px}.activity-btn{align-items:center;background:none;border:none;color:var(--vsc-text-dim);cursor:pointer;display:flex;height:48px;justify-content:center;position:relative;transition:color .15s;width:48px}.activity-btn--active,.activity-btn:hover{color:var(--vsc-text)}.activity-btn--active:before{background:var(--vsc-text);border-radius:0 1px 1px 0;bottom:8px;content:"";left:0;position:absolute;top:8px;width:2px}.activity-btn--lang{font-size:10px;font-weight:600;letter-spacing:.03em}.activity-lang-label{color:inherit;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700}.activity-btn:hover:after{background:var(--vsc-activity);border:1px solid var(--vsc-border);border-radius:2px;box-shadow:0 2px 8px #0006;color:var(--vsc-text);content:attr(title);font-size:11px;left:calc(100% + 10px);padding:3px 8px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);white-space:nowrap;z-index:999}@media (max-width:768px){.activity-bar{display:none}}.sidebar{background:var(--vsc-sidebar);border-right:1px solid var(--vsc-border);display:flex;flex-direction:column;flex-shrink:0;font-size:12px;min-width:180px;overflow:hidden;-webkit-user-select:none;user-select:none}.sidebar__header{height:35px;padding:0 12px}.sidebar__header,.sidebar__section-header{align-items:center;color:var(--vsc-text-dim);display:flex;flex-shrink:0;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.sidebar__section-header{border-top:1px solid var(--vsc-border);gap:4px;margin-top:8px;padding:6px 8px 4px}.sidebar__tree{flex:1 1;overflow-x:hidden;overflow-y:auto}.tree-row{align-items:center;background:none;border:none;color:var(--vsc-text);cursor:pointer;display:flex;font-family:inherit;font-size:13px;gap:4px;height:22px;overflow:hidden;padding-right:8px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:100%}.tree-row:hover{background:var(--vsc-sidebar-hover)}.tree-row--active{background:var(--vsc-sidebar-active)!important;color:var(--vsc-text-bright)}.tree-row--folder{color:var(--vsc-text);font-weight:400}.tree-name{overflow:hidden;text-overflow:ellipsis}.chevron{color:var(--vsc-text-muted);flex-shrink:0;transition:transform .15s ease}.chevron--open{transform:rotate(90deg)}.file-icon{flex-shrink:0}.file-icon-badge{align-items:center;display:inline-flex;flex-shrink:0;font-family:JetBrains Mono,monospace;font-size:9px;font-weight:700;justify-content:center;letter-spacing:-.05em;width:16px}.sidebar__outline{padding:4px 0 8px}.outline-item{align-items:center;color:var(--vsc-text-dim);cursor:default;display:flex;font-size:12px;gap:6px;padding:2px 16px}.outline-item:hover{background:var(--vsc-sidebar-hover)}.outline-icon{border-radius:50%;flex-shrink:0;height:10px;width:10px}.outline-icon--fn{background:#dcdcaa}.outline-icon--const{background:#569cd6}@media (max-width:900px){.sidebar{display:none}}.tab-bar{background:var(--vsc-tab-bg);border-bottom:1px solid var(--vsc-border);display:flex;flex-direction:column;flex-shrink:0}.tab-bar__tabs{align-items:stretch;display:flex;height:35px;overflow-x:auto;overflow-y:hidden}.tab-bar__tabs::-webkit-scrollbar{height:0}.tab{align-items:center;background:var(--vsc-tab-bg);border-right:1px solid var(--vsc-tab-border);color:var(--vsc-text-dim);cursor:pointer;display:inline-flex;flex-shrink:0;font-size:13px;gap:6px;height:35px;max-width:200px;min-width:120px;overflow:hidden;padding:0 14px;position:relative;text-decoration:none;transition:color .15s,background .15s;white-space:nowrap}.tab:hover{background:var(--vsc-sidebar-hover);color:var(--vsc-text)}.tab--active{background:var(--vsc-tab-active)!important;border-bottom:none;color:var(--vsc-text-bright)!important}.tab--active:before{background:var(--vsc-accent);content:"";height:1px;left:0;position:absolute;right:0;top:0}.tab__dot{flex-shrink:0;font-size:10px}.tab__label{flex:1 1;font-size:13px;overflow:hidden;text-overflow:ellipsis}.tab__close{align-items:center;background:none;border:none;border-radius:3px;color:var(--vsc-text-muted);cursor:pointer;display:flex;flex-shrink:0;font-size:16px;height:18px;justify-content:center;line-height:1;opacity:0;transition:opacity .15s,background .15s;width:18px}.tab--active .tab__close,.tab:hover .tab__close{opacity:1}.tab__close:hover{background:#ffffff1a;color:var(--vsc-text)}.breadcrumb{align-items:center;background:var(--vsc-bg);border-bottom:1px solid var(--vsc-border);display:flex;font-size:12px;gap:4px;height:22px;overflow:hidden;padding:0 12px}.breadcrumb__item{color:var(--vsc-text-dim);cursor:default;font-size:12px}.breadcrumb__sep{color:var(--vsc-text-muted);font-size:11px}.status-bar{align-items:center;background:var(--vsc-statusbar);display:flex;flex-shrink:0;height:22px;justify-content:space-between;overflow:hidden;padding:0 6px}.status-bar__left,.status-bar__right{align-items:center;display:flex;gap:0}.status-item{align-items:center;color:var(--vsc-statusbar-text);cursor:default;display:inline-flex;font-family:JetBrains Mono,monospace;font-size:12px;gap:4px;height:22px;padding:0 8px;white-space:nowrap}.status-item:hover{background:#ffffff1f}.status-item--btn{background:none;border:none;color:var(--vsc-statusbar-text);cursor:pointer;font-family:inherit}.status-item__icon{font-size:11px}@media (max-width:499px){.status-text{display:none}}.terminal-panel{background:var(--vsc-terminal-bg);border-top:1px solid var(--vsc-terminal-border);display:flex;flex-direction:column;flex-shrink:0;height:200px}.terminal-panel__header{align-items:center;background:var(--vsc-panel-header);border-bottom:1px solid var(--vsc-border);display:flex;flex-shrink:0;height:35px;justify-content:space-between;padding:0 8px 0 0}.terminal-panel__tabs{display:flex;height:100%}.terminal-tab{background:none;border:none;border-right:1px solid var(--vsc-border);color:var(--vsc-text-dim);cursor:pointer;font-family:inherit;font-size:11px;font-weight:400;height:100%;letter-spacing:.04em;padding:0 14px;transition:color .15s,background .15s}.terminal-tab:hover{background:var(--vsc-sidebar-hover);color:var(--vsc-text)}.terminal-tab--active{background:var(--vsc-panel);border-top:1px solid var(--vsc-accent);color:var(--vsc-text)}.terminal-panel__actions{align-items:center;display:flex;gap:2px}.terminal-action{align-items:center;background:none;border:none;border-radius:3px;color:var(--vsc-text-dim);cursor:pointer;display:flex;font-size:14px;height:28px;justify-content:center;transition:color .15s,background .15s;width:28px}.terminal-action:hover{background:var(--vsc-sidebar-hover);color:var(--vsc-text)}.terminal-body{cursor:text;flex:1 1;font-family:JetBrains Mono,Consolas,monospace;font-size:13px;line-height:1.45;overflow-y:auto;padding:6px 12px 8px}.t-line{min-height:19px;white-space:pre}.t-cmd{color:var(--vsc-text)}.t-dim{color:var(--vsc-text-dim)}.t-info{color:var(--syn-blue)}.t-success{color:var(--syn-comment)}.t-url{color:var(--syn-lightblue);text-decoration:underline}.t-output{color:var(--vsc-text-dim)}.t-error{color:#f44747}.t-input-row{align-items:center;display:flex;flex-wrap:nowrap}.t-prompt{color:var(--syn-green);flex-shrink:0;white-space:nowrap}.t-input{background:none;border:none;caret-color:var(--vsc-text);color:var(--vsc-text);flex:1 1;font-family:inherit;font-size:13px;line-height:1.45;min-width:0;outline:none}.t-cursor{animation:blink-cursor 1s step-end infinite;background:var(--vsc-text);display:inline-block;height:14px;margin-left:1px;vertical-align:middle;width:2px}@keyframes blink-cursor{0%,to{opacity:1}50%{opacity:0}}.t-spinner{animation:spin .5s linear infinite;display:inline-block}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.project-card{background:var(--vsc-sidebar);border:1px solid var(--vsc-border);border-radius:4px;cursor:pointer;display:flex;flex-direction:column;height:300px;overflow:hidden;text-decoration:none;transition:border-color .2s,background .2s}.project-card:hover{background:var(--vsc-sidebar-hover);border-color:var(--vsc-accent)}.project-card__img-wrap{aspect-ratio:16/8;background:#2d2d2d;overflow:hidden;position:relative}.project-card__img-wrap img{filter:brightness(.85) saturate(.8);height:100%;object-fit:cover;transition:transform .3s ease,filter .3s ease;width:100%}.project-card:hover .project-card__img-wrap img{filter:brightness(.95) saturate(1);transform:scale(1.03)}.project-card__overlay{align-items:center;background:#0000;display:flex;inset:0;justify-content:center;position:absolute;transition:background .2s}.project-card:hover .project-card__overlay{background:#007acc26}.project-card__open{background:var(--vsc-accent);border-radius:2px;color:#fff;font-family:JetBrains Mono,monospace;font-size:12px;opacity:0;padding:4px 12px;transform:translateY(6px);transition:opacity .2s,transform .2s}.project-card:hover .project-card__open{opacity:1;transform:translateY(0)}.project-card__body{font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.7;padding:12px 14px}.pc-line{align-items:baseline;display:flex;flex-wrap:wrap}.pc-indent{padding-left:18px}.pc-desc{align-items:flex-start}.pc-desc-text{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;word-break:break-word}.home-page{display:flex;flex-direction:column;gap:0}.code-comment{font-size:13px;line-height:1.6;margin-bottom:20px}.code-block{font-size:13px;line-height:1.8}.code-block--spaced{margin-top:28px}.code-line{gap:0}.home-cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:4px;margin-top:16px}.vsc-btn{align-items:center;border:1px solid #0000;border-radius:4px;cursor:pointer;display:inline-flex;font-family:JetBrains Mono,monospace;font-size:13px;gap:2px;padding:6px 16px;text-decoration:none;transition:background .15s,border-color .15s}.vsc-btn--primary{background:var(--vsc-accent);border-color:var(--vsc-accent);color:#fff}.vsc-btn--primary:hover{background:var(--vsc-accent-hover);border-color:var(--vsc-accent-hover)}.vsc-btn--primary .syn-yellow{color:#fff}.vsc-btn--primary span{color:#fff!important}.vsc-btn--ghost{background:#0000;border-color:var(--vsc-border-light);color:var(--vsc-text)}.vsc-btn--ghost:hover{background:var(--vsc-highlight);border-color:var(--vsc-text-dim)}.home-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr);margin:12px 0}.home-see-all-link{cursor:pointer;display:inline-block;text-decoration:none;transition:opacity .15s}.home-see-all-link:hover{opacity:.7}.home-see-all{display:none}@media (max-width:1100px){.home-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:700px){.home-grid{grid-template-columns:1fr}.code-line--indent{padding-left:16px}}.projects-page{display:flex;flex-direction:column}.projects-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(2,1fr);margin:4px 0 4px 28px}@media (max-width:900px){.projects-grid{grid-template-columns:1fr;margin-left:0}}.detail-page{display:flex;flex-direction:column;font-family:JetBrains Mono,monospace;font-size:13px;gap:16px}.detail-back{display:inline-block;font-size:12px;margin-bottom:4px;text-decoration:none;transition:opacity .15s}.detail-back:hover{opacity:.7}.detail-import{font-size:13px;line-height:1.8;margin-bottom:4px}.detail-img-wrap{border:1px solid var(--vsc-border);border-radius:4px;margin:4px 0;overflow:hidden}.detail-img-bar{align-items:center;background:var(--vsc-panel-header);border-bottom:1px solid var(--vsc-border);display:flex;flex-wrap:wrap;font-size:12px;gap:12px;justify-content:space-between;padding:6px 12px}.detail-links{display:flex;gap:8px}.detail-link{align-items:center;border:1px solid #0000;border-radius:3px;display:inline-flex;font-family:JetBrains Mono,monospace;font-size:12px;gap:4px;padding:3px 12px;text-decoration:none;transition:background .15s}.detail-link--primary{background:var(--vsc-accent);border-color:var(--vsc-accent);color:#fff}.detail-link--primary:hover{background:var(--vsc-accent-hover)}.detail-link--ghost{background:#0000;border-color:var(--vsc-border-light);color:var(--vsc-text)}.detail-link--ghost:hover{background:var(--vsc-highlight)}.detail-img{display:block;filter:brightness(.9) saturate(.85);max-height:340px;object-fit:cover;width:100%}.detail-code{line-height:1.8}.detail-desc-block{padding-left:28px}.detail-desc-text{color:var(--syn-orange);line-height:1.7;white-space:pre-wrap;word-break:break-word}.about-page{display:flex;flex-direction:column;font-family:JetBrains Mono,monospace;font-size:13px;gap:0}.about-section{margin:4px 0}.code-line{line-height:1.8}.code-line--indent{padding-left:28px}.code-line--indent2{padding-left:56px}.code-line--indent3{padding-left:84px}.code-line--indent4{padding-left:112px}.degree-line{border-bottom:1px solid var(--vsc-border);border-radius:5px;display:flex;gap:5px;margin:10px 0;padding:6px}.exp-tabs{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0 4px 84px}.exp-tab{background:var(--vsc-tab-bg);border:1px solid var(--vsc-border);border-radius:3px;color:var(--vsc-text-dim);cursor:pointer;font-family:JetBrains Mono,monospace;font-size:12px;padding:3px 12px;transition:background .15s,border-color .15s,color .15s}.exp-tab:hover{background:var(--vsc-sidebar-hover);color:var(--vsc-text)}.exp-tab--active{background:var(--vsc-sidebar-active);border-color:var(--vsc-accent);color:var(--vsc-text)}.exp-detail{animation:fadeIn .15s ease;margin:4px 0}.about-cv-link{border-bottom:1px dashed var(--syn-comment);display:inline-flex;flex-wrap:wrap;gap:0;padding-bottom:1px;text-decoration:none;transition:border-color .15s}.about-cv-link:hover{border-color:var(--vsc-accent)}.syn-lblue,.syn-lightblue{color:var(--syn-lightblue)}@media (max-width:700px){.code-line--indent{padding-left:14px}.code-line--indent2{padding-left:28px}.code-line--indent3{padding-left:42px}.code-line--indent4{padding-left:56px}.exp-tabs{margin-left:42px}}.notfound-page{display:flex;flex-direction:column;font-family:JetBrains Mono,monospace;font-size:13px;gap:16px}.notfound-block{line-height:1.8;margin:8px 0}.notfound-link{border-bottom:1px solid var(--syn-orange);text-decoration:none;transition:opacity .15s}.notfound-link:hover{opacity:.7}.code-line{align-items:baseline;display:flex;flex-wrap:wrap}.vsc-shell{background:var(--vsc-bg);display:flex;flex-direction:column;height:100%;overflow:hidden;width:100vw}.vsc-titlebar{-webkit-app-region:drag;align-items:center;background:var(--vsc-titlebar);border-bottom:1px solid var(--vsc-border);display:flex;flex-shrink:0;gap:8px;height:30px;padding:0 12px;-webkit-user-select:none;user-select:none}.vsc-titlebar__dots{-webkit-app-region:no-drag;display:flex;gap:6px}.dot{border-radius:50%;height:12px;width:12px}.dot--red{background:#ff5f56}.dot--yellow{background:#ffbd2e}.dot--green{background:#27c93f}.vsc-titlebar__title{border:1px solid grey;border-radius:5px;color:var(--vsc-text-dim);flex:1 1;font-size:14px;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.vsc-titlebar__spacer{width:60px}.vsc-main{display:flex;flex:1 1;overflow:hidden}.vsc-editor-area{min-width:0}.vsc-editor-area,.vsc-editor-body{display:flex;flex:1 1;flex-direction:column;overflow:hidden}.vsc-editor-content{display:flex;flex:1 1;overflow:hidden}.vsc-gutter{align-items:flex-end;background:var(--vsc-bg);border-right:1px solid var(--vsc-border);display:flex;flex-direction:column;flex-shrink:0;height:1175px;min-width:44px;overflow:hidden;padding:16px 8px 16px 0;-webkit-user-select:none;user-select:none}.vsc-gutter__line{font-feature-settings:"tnum";color:var(--vsc-text-muted);font-size:12px;font-variant-numeric:tabular-nums;line-height:21px;padding-right:4px}.vsc-editor-scroll{display:flex;flex:1 1;overflow-x:hidden;overflow-y:auto}.vsc-editor-inner{min-height:100%;padding:16px 32px 40px 20px}@media (max-width:1100px){.vsc-gutter{height:1400px}}@media (max-width:768px){.vsc-gutter{display:none}.vsc-editor-inner{padding:12px 16px 40px}}
/*# sourceMappingURL=main.f11264ea.css.map*/