:root{--bg-app:#1e1e1e;--bg-surface:#252526;--bg-2:#2d2d2d;--bg-3:#212122;--bg-inset:#1a1a1a;--bg-hover:#2a2d2e;--bg-active:#37373d;--border:#3c3c3c;--titlebar-bg:#3c3c3c;--activitybar-bg:#333;--activitybar-fg:#fff;--activitybar-fg-muted:#858585;--sidebar-bg:var(--bg-surface);--sidebar-fg:#ccc;--sidebar-fg-muted:#9d9d9d;--sidebar-hover:var(--bg-hover);--sidebar-active:var(--bg-active);--tabsbar-bg:var(--bg-surface);--tab-inactive-bg:var(--bg-2);--tab-inactive-fg:#969696;--editor-bg:var(--bg-app);--editor-fg:#d4d4d4;--editor-border:var(--bg-app);--gutter-fg:#6a6a6a;--statusbar-bg:#007acc;--statusbar-fg:#fff;--panel-border:var(--border);--fg-strong:#fff;--fg-faint:#6b6b6b;--accent:#4fc1ff;--accent-strong:#007acc;--accent-hover:#0086e6;--tok-comment:#6a9955;--tok-string:#ce9178;--tok-keyword:#569cd6;--tok-prop:#9cdcfe;--tok-func:#dcdcaa;--tok-number:#b5cea8;--tok-type:#4ec9b0;--tok-punct:#d4d4d4;--tok-tag:grey;--diff-add:#4ec9b0;--diff-add-bg:#4ec9b01f;--hash-color:#e6a85c;--icon-md-fg:#4fc1ff;--icon-md-bg:#4fc1ff2e;--icon-js-fg:#dcdc8c;--icon-js-bg:#dcdc9a33;--icon-log-fg:#b0b0b0;--icon-log-bg:#9e9e9e33;--icon-json-fg:#e6a85c;--icon-json-bg:#e6a85c33;--icon-sh-fg:#4ec9b0;--icon-sh-bg:#4ec9b033;--icon-default-fg:#ccc;--icon-default-bg:#3c3c3c;--shadow-color:#00000059;--scrollbar-thumb:#4b4b4b;--scrollbar-thumb-hover:#5f5f5f;--font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,"Courier New",monospace;color-scheme:dark}:root[data-theme=light]{--bg-app:#fff;--bg-surface:#f3f3f3;--bg-2:#ececec;--bg-3:#f6f6f6;--bg-inset:#e2e2e2;--bg-hover:#e8e8e8;--bg-active:#e0e5f0;--border:#d9d9d9;--titlebar-bg:#ddd;--activitybar-bg:#f3f3f3;--activitybar-fg:#1e1e1e;--activitybar-fg-muted:#6e6e6e;--sidebar-fg:#3b3b3b;--sidebar-fg-muted:#6e6e6e;--tab-inactive-fg:#6e6e6e;--editor-fg:#1e1e1e;--gutter-fg:#919191;--fg-strong:#000;--fg-faint:#8a8a8a;--accent:#005fb8;--accent-strong:#005a9e;--accent-hover:#004c87;--tok-comment:green;--tok-string:#a31515;--tok-keyword:#00f;--tok-prop:#001080;--tok-func:#795e26;--tok-number:#098658;--tok-type:#267f99;--tok-punct:#1e1e1e;--tok-tag:maroon;--diff-add:#0a7d5e;--diff-add-bg:#0a7d5e1a;--hash-color:#b35900;--icon-md-fg:#005fb8;--icon-md-bg:#005fb81f;--icon-js-fg:#8a6d00;--icon-js-bg:#8a6d001f;--icon-log-fg:#6e6e6e;--icon-log-bg:#6e6e6e26;--icon-json-fg:#b35900;--icon-json-bg:#b359001f;--icon-sh-fg:#0a7d5e;--icon-sh-bg:#0a7d5e1f;--icon-default-fg:#444;--icon-default-bg:#e6e6e6;--shadow-color:#0000001f;--scrollbar-thumb:#c1c1c1;--scrollbar-thumb-hover:#a6a6a6;color-scheme:light}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:#1e1e1e;background:var(--bg-app);color:#d4d4d4;color:var(--editor-fg);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,Courier New,monospace;font-family:var(--font-mono);overflow-x:hidden;transition:background .2s ease,color .2s ease}a{-webkit-tap-highlight-color:rgba(0,0,0,0);color:inherit;text-decoration:none}button{font-family:inherit}img{display:block;max-width:100%}::selection{background:#4fc1ff4d}::-webkit-scrollbar{height:12px;width:12px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background-color:#4b4b4b;background-color:var(--scrollbar-thumb);border:3px solid #1e1e1e;border:3px solid var(--bg-app);border-radius:20px}::-webkit-scrollbar-thumb:hover{background-color:#5f5f5f;background-color:var(--scrollbar-thumb-hover)}code{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,Courier New,monospace;font-family:var(--font-mono)}.Toastify__toast{background:#252526!important;background:var(--bg-surface)!important;border:1px solid #3c3c3c!important;border:1px solid var(--border)!important;border-radius:4px!important;color:#d4d4d4!important;color:var(--editor-fg)!important;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,Courier New,monospace!important;font-family:var(--font-mono)!important}.app-shell{background:var(--editor-bg);display:flex;flex-direction:column;min-height:100vh}.app-body{align-items:flex-start;display:flex;flex:1 1}.editor-area{display:flex;flex:1 1;flex-direction:column;min-width:0}.sidebar-scrim{border:none;cursor:pointer;display:none;padding:0}@media (max-width:900px){.sidebar-scrim{background:#00000073;display:block;inset:2.25rem 0 1.6rem 0;position:fixed;z-index:30}}.title-bar{align-items:center;background:var(--titlebar-bg);border-bottom:1px solid var(--bg-inset);display:flex;gap:.75rem;height:2.25rem;min-height:2.25rem;padding:0 .75rem;position:sticky;top:0;z-index:100}.title-bar-traffic{display:flex;gap:6px}.tl-dot{border-radius:50%;height:12px;width:12px}.tl-red{background:#ff5f56}.tl-yellow{background:#ffbd2e}.tl-green{background:#27c93f}.title-bar-menu-btn{background:none;border:none;color:var(--sidebar-fg);cursor:pointer;display:none;font-size:1rem;padding:.25rem}.title-bar-text{color:var(--sidebar-fg-muted);font-size:.78rem;left:50%;max-width:70vw;overflow:hidden;position:absolute;text-overflow:ellipsis;transform:translateX(-50%);white-space:nowrap}@media (max-width:900px){.title-bar-menu-btn{display:inline-flex}.title-bar-text{font-size:.72rem;margin-left:auto;position:static;transform:none}}.activity-bar{align-self:flex-start;background:var(--activitybar-bg);flex-direction:column;gap:.25rem;height:calc(100vh - 3.85rem);min-width:3rem;padding-top:.5rem;position:sticky;top:2.25rem}.activity-bar,.activity-icon{align-items:center;display:flex;width:3rem}.activity-icon{background:none;border:none;border-left:2px solid #0000;color:var(--activitybar-fg-muted);cursor:pointer;font-size:1.2rem;height:3rem;justify-content:center}.activity-icon:hover{color:var(--activitybar-fg)}.activity-icon:disabled{cursor:default;opacity:.5}.activity-icon:disabled:hover{color:var(--activitybar-fg-muted)}.activity-icon.is-active{border-left-color:var(--accent);color:var(--activitybar-fg)}.activity-spacer{flex:1 1}@media (max-width:900px){.activity-bar{display:none}}.file-icon{align-items:center;border-radius:3px;display:inline-flex;flex-shrink:0;font-family:var(--font-mono);font-size:.55rem;font-weight:700;height:1.15rem;justify-content:center;width:1.15rem}.icon-md{background:var(--icon-md-bg);color:var(--icon-md-fg)}.icon-js{background:var(--icon-js-bg);color:var(--icon-js-fg)}.icon-log{background:var(--icon-log-bg);color:var(--icon-log-fg)}.icon-json{background:var(--icon-json-bg);color:var(--icon-json-fg)}.icon-sh{background:var(--icon-sh-bg);color:var(--icon-sh-fg)}.icon-default{background:var(--icon-default-bg);color:var(--icon-default-fg)}.sidebar{align-self:flex-start;background:var(--sidebar-bg);color:var(--sidebar-fg);height:calc(100vh - 3.85rem);min-width:15.5rem;overflow-y:auto;padding:.75rem 0;position:sticky;top:2.25rem;width:15.5rem}.sidebar-heading{color:var(--sidebar-fg-muted);font-size:.7rem;letter-spacing:.08em;padding:.25rem 1rem .6rem;text-transform:uppercase}.tree-row{align-items:center;background:none;border:none;color:var(--sidebar-fg);cursor:pointer;display:flex;font-family:var(--font-mono);font-size:.85rem;gap:.45rem;padding:.3rem 1rem;text-align:left;width:100%}.tree-folder{font-weight:600;letter-spacing:.02em}.tree-folder-static{cursor:default}.tree-chevron{color:var(--sidebar-fg-muted);font-size:.6rem;width:.8rem}.tree-row:hover{background:var(--sidebar-hover)}.tree-children .tree-children{padding-left:.9rem}.tree-file.is-active{background:var(--sidebar-active);border-left:2px solid var(--accent);color:var(--fg-strong);padding-left:calc(1rem - 2px)}@media (max-width:900px){.sidebar{bottom:1.6rem;box-shadow:4px 0 16px #0006;left:0;position:fixed;top:2.25rem;transform:translateX(-100%);transition:transform .2s ease;z-index:40}.sidebar.is-open{transform:translateX(0)}}.tabs-bar{background:var(--tabsbar-bg);border-bottom:1px solid var(--bg-inset);display:flex;overflow-x:auto;position:sticky;top:2.25rem;z-index:90}.tab{align-items:center;background:var(--tab-inactive-bg);border:none;border-right:1px solid var(--bg-inset);color:var(--tab-inactive-fg);cursor:pointer;display:flex;flex-shrink:0;font-family:var(--font-mono);font-size:.8rem;gap:.5rem;padding:.55rem .9rem;white-space:nowrap}.tab.is-active{background:var(--bg-app);box-shadow:inset 0 -2px 0 var(--accent-strong);color:var(--fg-strong)}.tab-close{color:var(--fg-faint);font-size:.9rem;line-height:1;margin-left:.15rem}.status-bar{align-items:center;background:var(--statusbar-bg);bottom:0;color:var(--statusbar-fg);display:flex;font-size:.72rem;height:1.6rem;justify-content:space-between;min-height:1.6rem;padding:0 .75rem;position:sticky;z-index:100}.status-left,.status-right{align-items:center;display:flex;gap:.9rem}.status-item{align-items:center;display:flex;gap:.35rem;white-space:nowrap}.status-item-sync i{font-size:.68rem}.status-terminal-toggle,.status-theme-toggle{background:none;border:none;border-radius:3px;color:inherit;cursor:pointer;font-family:inherit;font-size:inherit;padding:0 .4rem}.status-terminal-toggle:hover,.status-theme-toggle:hover{background:#ffffff26}.status-terminal-toggle.is-active{background:#ffffff38}@media (max-width:640px){.status-item-hide-sm{display:none}}.terminal-panel{background:#1a1a1a;border-top:1px solid #3c3c3c;bottom:1.6rem;box-shadow:0 -12px 32px #00000073;display:flex;flex-direction:column;font-family:var(--font-mono);height:min(45vh,360px);left:0;position:fixed;right:0;transform:translateY(100%);transition:transform .22s ease;z-index:96}.terminal-panel.is-open{transform:translateY(0)}.terminal-panel-header{align-items:center;background:#2d2d2d;border-bottom:1px solid #3c3c3c;display:flex;flex-shrink:0;justify-content:space-between;padding:.5rem .9rem}.terminal-panel-tab{align-items:center;color:#ccc;display:flex;font-size:.72rem;gap:.5rem;letter-spacing:.06em;text-transform:uppercase}.terminal-panel-close{background:none;border:none;color:#9d9d9d;cursor:pointer;font-size:.9rem;padding:.2rem}.terminal-panel-close:hover{color:#fff}.terminal-panel-body{cursor:text;flex:1 1;font-size:.82rem;line-height:1.65;overflow-y:auto;padding:.75rem 1rem 1rem}.terminal-panel-line{color:#d4d4d4;white-space:pre-wrap;word-break:break-word}.terminal-panel-line-echo{color:#9d9d9d}.terminal-panel-line-error{color:#f14c4c}.terminal-panel-inputline{align-items:center;display:flex;gap:.5rem}.terminal-panel-prompt{color:#4ec9b0;flex-shrink:0}.terminal-panel-inputline input{background:#0000;border:none;caret-color:#4ec9b0;color:#d4d4d4;flex:1 1;font-family:var(--font-mono);font-size:.82rem;min-width:0;outline:none}@media (max-width:640px){.terminal-panel{height:min(60vh,420px)}}.social-links{display:flex;gap:.6rem;list-style:none}.social-links a{align-items:center;border:1px solid var(--border);border-radius:6px;color:var(--sidebar-fg);display:flex;font-size:1rem;height:2.25rem;justify-content:center;transition:border-color .15s ease,color .15s ease,transform .15s ease;width:2.25rem}.social-links a:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.breadcrumb{color:var(--sidebar-fg-muted);flex-wrap:wrap;font-size:.75rem;margin-bottom:1rem}.breadcrumb,.breadcrumb-part{align-items:center;display:flex;gap:.4rem}.breadcrumb-sep{color:var(--fg-faint);font-size:.55rem}.hero{display:flex;flex-direction:column;justify-content:center;min-height:calc(100vh - 6.2rem);padding:3rem clamp(1.25rem,5vw,4rem);position:relative}.hero-card{max-width:46rem}.hero-eyebrow{color:var(--tok-comment);font-size:.95rem;font-style:italic;margin-bottom:.75rem}.hero-name{color:var(--fg-strong);font-size:clamp(2.2rem,6vw,3.4rem);font-weight:700;line-height:1.15;margin-bottom:1rem}.hero-wave{animation:wave 2.2s ease-in-out infinite;display:inline-block;transform-origin:70% 70%}@keyframes wave{0%,60%,to{transform:rotate(0deg)}10%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}30%{transform:rotate(14deg)}40%{transform:rotate(-4deg)}}.hero-typed{color:var(--tok-string);font-size:clamp(1rem,2.4vw,1.25rem);margin-bottom:1.5rem;min-height:1.6em}.hero-prompt{color:var(--accent);margin-right:.4rem}.hero-typed-word{color:var(--tok-prop);font-weight:600}.hero-summary{color:var(--editor-fg);font-size:1rem;line-height:1.75;margin-bottom:1.5rem;max-width:38rem}.hero-summary strong{color:var(--fg-strong)}.hero-badges{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2rem}.hero-badge{background:var(--bg-surface);border:1px solid var(--border);border-radius:999px;color:var(--tok-prop);font-size:.78rem;padding:.3rem .85rem}.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1.75rem}.hero-btn{align-items:center;background:var(--bg-surface);border:1px solid var(--border);border-radius:6px;color:var(--editor-fg);cursor:pointer;display:inline-flex;font-family:var(--font-mono);font-size:.88rem;gap:.5rem;padding:.6rem 1.1rem;transition:border-color .15s ease,transform .15s ease,background .15s ease}.hero-btn:hover{border-color:var(--accent);transform:translateY(-2px)}.hero-btn-primary{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.hero-btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.hero-terminal-hint{color:var(--sidebar-fg-muted);font-size:.78rem;margin-bottom:1.5rem}.hero-terminal-hint kbd{background:var(--bg-surface);border:solid var(--border);border-radius:4px;border-width:1px 1px 2px;color:var(--editor-fg);font-family:var(--font-mono);font-size:.75rem;padding:.05rem .4rem}.hero-socials{margin-bottom:2.5rem}.hero-stats{border-top:1px dashed var(--border);display:flex;flex-wrap:wrap;gap:1.75rem 2.5rem;padding-top:1.5rem}.hero-stat dt{color:var(--tok-number);font-size:1.4rem;font-weight:700}.hero-stat dd{color:var(--sidebar-fg-muted);font-size:.78rem;margin-top:.15rem}.hero-scroll-cue{align-items:center;background:none;border:none;bottom:1.5rem;color:var(--sidebar-fg-muted);cursor:pointer;display:flex;font-family:var(--font-mono);font-size:.75rem;gap:.5rem;left:clamp(1.25rem,5vw,4rem);letter-spacing:.05em;position:absolute;text-transform:uppercase}.hero-scroll-cue i{animation:bounce 1.6s ease-in-out infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(5px)}}@media (max-width:640px){.hero-scroll-cue{display:none}}.code-frame{background:var(--bg-app);border:1px solid var(--panel-border);border-radius:6px;box-shadow:0 8px 24px var(--shadow-color);overflow:hidden}.code-frame-header{align-items:center;background:var(--bg-2);border-bottom:1px solid var(--panel-border);display:flex;gap:.75rem;padding:.6rem 1rem}.code-frame-dots{display:flex;gap:6px}.dot{border-radius:50%;display:inline-block;height:11px;width:11px}.dot-red{background:#ff5f56}.dot-yellow{background:#ffbd2e}.dot-green{background:#27c93f}.code-frame-filename{color:var(--sidebar-fg);font-size:.85rem;font-weight:500}.code-frame-lang{border:1px solid var(--border);border-radius:3px;color:var(--tok-comment);font-size:.72rem;letter-spacing:.06em;margin-left:auto;padding:.1rem .4rem;text-transform:uppercase}.code-frame-body{overflow-x:auto;padding:1.1rem 0}.code-lines{counter-reset:line}.code-line{color:var(--editor-fg);counter-increment:line;display:flex;font-size:.88rem;line-height:1.65;padding:.15rem 1.25rem .15rem 3.75rem;position:relative;white-space:pre-wrap}.code-line:before{color:var(--gutter-fg);content:counter(line);font-size:.8rem;left:0;padding-right:.85rem;position:absolute;text-align:right;top:.15rem;-webkit-user-select:none;user-select:none;width:2.5rem}.code-line-content{padding-left:0;padding-left:calc(var(--indent, 0)*1.4em)}.code-line-blank{height:1.2rem}.tok-comment{color:var(--tok-comment);font-style:italic}.tok-string{color:var(--tok-string)}.tok-keyword{color:var(--tok-keyword)}.tok-prop{color:var(--tok-prop)}.tok-func{color:var(--tok-func)}.tok-number{color:var(--tok-number)}.tok-type{color:var(--tok-type)}.tok-punct{color:var(--tok-punct)}.tok-plain{color:var(--editor-fg)}.about{margin:0 auto;max-width:68rem;padding:5rem clamp(1.25rem,5vw,4rem)}.about-grid{grid-gap:2rem;align-items:start;display:grid;gap:2rem;grid-template-columns:minmax(0,1fr) 17rem;opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}.about-grid.is-visible{opacity:1;transform:translateY(0)}.about-preview{background:var(--bg-surface);border:1px solid var(--panel-border);border-radius:6px;padding:1.5rem;position:relative;text-align:center}.about-preview-tag{background:var(--accent-strong);border-radius:3px;color:#fff;font-size:.65rem;left:1rem;letter-spacing:.06em;padding:.15rem .5rem;position:absolute;text-transform:uppercase;top:-.65rem}.about-avatar{border:2px solid var(--accent);border-radius:50%;height:6.5rem;margin:.5rem auto 1rem;overflow:hidden;width:6.5rem}.about-avatar img{height:100%;object-fit:cover;width:100%}.about-preview h3{color:var(--fg-strong);font-size:1.05rem;margin-bottom:.3rem}.about-preview-role{color:var(--sidebar-fg-muted);font-size:.8rem;margin-bottom:.4rem}.about-preview-location{align-items:center;color:var(--tok-prop);display:flex;font-size:.75rem;gap:.35rem;justify-content:center;margin-bottom:1.25rem}.about-linkedin-link{align-items:center;border:1px solid var(--accent);border-radius:6px;color:var(--accent);display:inline-flex;font-size:.8rem;gap:.4rem;padding:.45rem .8rem;transition:background .15s ease}.about-linkedin-link:hover{background:color-mix(in srgb,var(--accent) 12%,#0000)}@media (max-width:860px){.about-grid{grid-template-columns:1fr}.about-preview{order:-1}}.progress-track{background:var(--border);border-radius:3px;display:inline-block;height:.5rem;max-width:40vw;overflow:hidden;position:relative;vertical-align:middle;width:9rem}.progress-fill{background:linear-gradient(90deg,var(--accent-strong),var(--accent));border-radius:3px;display:block;height:100%;transition:width .8s ease}.badge{align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:4px;color:var(--tok-prop);display:inline-flex;font-family:var(--font-mono);font-size:.75rem;line-height:1.4;padding:.18rem .55rem}.badge-diff{background:color-mix(in srgb,var(--diff-add) 12%,#0000);border-color:color-mix(in srgb,var(--diff-add) 35%,#0000);color:var(--diff-add)}.badge-string{background:color-mix(in srgb,var(--tok-string) 10%,#0000);border-color:color-mix(in srgb,var(--tok-string) 30%,#0000);color:var(--tok-string)}.badge-accent{background:color-mix(in srgb,var(--accent) 10%,#0000);border-color:color-mix(in srgb,var(--accent) 30%,#0000);color:var(--accent)}.background{margin:0 auto;max-width:68rem;padding:5rem clamp(1.25rem,5vw,4rem)}.skill-line{flex-wrap:wrap;gap:1rem;justify-content:space-between;width:100%}.skill-line,.skill-line-bar{align-items:center;display:flex}.skill-line-bar{gap:.6rem}.skill-line-percent{color:var(--tok-number);font-size:.78rem;min-width:2.4rem;text-align:right}.also-using{gap:.4rem;padding:.3rem 0 .5rem}.also-using,.edu-line{display:flex;flex-wrap:wrap}.edu-line{align-items:center;gap:.65rem}.edu-logo{background:#fff;border-radius:3px;flex-shrink:0;height:1.35rem;object-fit:contain;padding:1px;width:1.35rem}.edu-school{color:var(--tok-prop)}.edu-period{color:var(--sidebar-fg-muted);font-size:.85em}@media (max-width:640px){.skill-line{align-items:flex-start;flex-direction:column;gap:.4rem}}.experience{margin:0 auto;max-width:58rem;padding:5rem clamp(1.25rem,5vw,4rem)}.log-header{color:var(--sidebar-fg-muted);font-size:.9rem;margin-bottom:2rem}.log-prompt{color:var(--diff-add);margin-right:.5rem}.commit-list{--rail:1.5rem;--dot-size:0.7rem;list-style:none;padding-left:var(--rail);position:relative}.commit-list:before{background:var(--border);bottom:0;content:"";left:calc(var(--rail)/2 - 1px);position:absolute;top:0;width:2px}.commit{opacity:0;padding-bottom:2.5rem;position:relative;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}.commit.is-visible{opacity:1;transform:translateY(0)}.commit:last-child{padding-bottom:0}.commit-node{background:var(--accent);border-radius:50%;box-shadow:0 0 0 4px var(--editor-bg);height:var(--dot-size);left:calc((var(--rail)/2)*-1 - var(--dot-size)/2);position:absolute;top:.4rem;width:var(--dot-size)}.commit-body{background:var(--bg-3);border:1px solid var(--panel-border);border-radius:6px;padding:1.25rem 1.5rem}.commit-hash-line{font-size:.85rem;margin-bottom:.3rem}.commit-hash,.commit-hash-line{color:var(--hash-color)}.commit-head{color:var(--diff-add)}.commit-meta{color:var(--sidebar-fg-muted);font-size:.8rem;line-height:1.5}.commit-title{color:var(--fg-strong);font-size:1.05rem;font-weight:600;line-height:1.4;margin:.9rem 0 .6rem}.commit-local{color:var(--accent)}a.commit-local:hover{text-decoration:underline}.commit-text{color:var(--editor-fg);font-size:.9rem;line-height:1.75;margin-bottom:1rem}.commit-diff{border-top:1px dashed var(--border);padding-top:.85rem}.commit-diff-count{color:var(--sidebar-fg-muted);display:block;font-size:.78rem;margin-bottom:.5rem}.commit-diff-tags{display:flex;flex-wrap:wrap;gap:.4rem}.commit-diff-tag{background:var(--diff-add-bg);border:1px solid color-mix(in srgb,var(--diff-add) 30%,#0000);border-radius:4px;color:var(--diff-add);font-size:.78rem;padding:.15rem .5rem}.project-card{background:var(--bg-3);border:1px solid var(--panel-border);border-radius:6px;display:flex;flex-direction:column;overflow:hidden;transition:border-color .15s ease,transform .15s ease}.project-card:hover{border-color:var(--accent);transform:translateY(-3px)}.project-card-image{aspect-ratio:16/10;background:var(--bg-inset);border-bottom:1px solid var(--panel-border);overflow:hidden}.project-card-image img{height:100%;object-fit:cover;width:100%}.project-card-body{display:flex;flex:1 1;flex-direction:column;padding:1.1rem 1.25rem 1.35rem}.project-card-key{font-size:.75rem;margin-bottom:.2rem}.project-card-name{color:var(--fg-strong);font-size:1rem;font-weight:600;line-height:1.4;margin-bottom:.6rem}.project-card-description{color:var(--sidebar-fg-muted);flex:1 1;font-size:.85rem;line-height:1.65;margin-bottom:1rem}.project-card-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}.project-card-links{border-top:1px dashed var(--border);display:flex;gap:1rem;padding-top:.85rem}.project-link{align-items:center;color:var(--accent);display:inline-flex;font-size:.8rem;gap:.4rem}.project-link:hover{text-decoration:underline}.projects{margin:0 auto;max-width:76rem;padding:5rem clamp(1.25rem,5vw,4rem)}.projects-intro,.projects-outro{font-size:.9rem;margin-bottom:1.25rem}.projects-outro{margin-bottom:0;margin-top:1.5rem}.projects-intro-comment{color:var(--tok-comment);font-style:italic;margin-left:.5rem}.projects-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(17.5rem,1fr))}:root{--toastify-color-light:#fff;--toastify-color-dark:#121212;--toastify-color-info:#3498db;--toastify-color-success:#07bc0c;--toastify-color-warning:#f1c40f;--toastify-color-error:#e74c3c;--toastify-color-transparent:#ffffffb3;--toastify-icon-color-info:var(--toastify-color-info);--toastify-icon-color-success:var(--toastify-color-success);--toastify-icon-color-warning:var(--toastify-color-warning);--toastify-icon-color-error:var(--toastify-color-error);--toastify-toast-width:320px;--toastify-toast-offset:16px;--toastify-toast-top:max(var(--toastify-toast-offset),env(safe-area-inset-top));--toastify-toast-right:max(var(--toastify-toast-offset),env(safe-area-inset-right));--toastify-toast-left:max(var(--toastify-toast-offset),env(safe-area-inset-left));--toastify-toast-bottom:max(var(--toastify-toast-offset),env(safe-area-inset-bottom));--toastify-toast-background:#fff;--toastify-toast-min-height:64px;--toastify-toast-max-height:800px;--toastify-toast-bd-radius:6px;--toastify-font-family:sans-serif;--toastify-z-index:9999;--toastify-text-color-light:#757575;--toastify-text-color-dark:#fff;--toastify-text-color-info:#fff;--toastify-text-color-success:#fff;--toastify-text-color-warning:#fff;--toastify-text-color-error:#fff;--toastify-spinner-color:#616161;--toastify-spinner-color-empty-area:#e0e0e0;--toastify-color-progress-light:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);--toastify-color-progress-dark:#bb86fc;--toastify-color-progress-info:var(--toastify-color-info);--toastify-color-progress-success:var(--toastify-color-success);--toastify-color-progress-warning:var(--toastify-color-warning);--toastify-color-progress-error:var(--toastify-color-error);--toastify-color-progress-bgo:0.2}.Toastify__toast-container{box-sizing:border-box;color:#fff;padding:4px;position:fixed;-webkit-transform:translateZ(9999);-webkit-transform:translateZ(var(--toastify-z-index));width:320px;width:var(--toastify-toast-width);z-index:9999;z-index:var(--toastify-z-index)}.Toastify__toast-container--top-left{left:max(16px,env(safe-area-inset-left));left:var(--toastify-toast-left);top:max(16px,env(safe-area-inset-top));top:var(--toastify-toast-top)}.Toastify__toast-container--top-center{left:50%;top:max(16px,env(safe-area-inset-top));top:var(--toastify-toast-top);transform:translateX(-50%)}.Toastify__toast-container--top-right{right:max(16px,env(safe-area-inset-right));right:var(--toastify-toast-right);top:max(16px,env(safe-area-inset-top));top:var(--toastify-toast-top)}.Toastify__toast-container--bottom-left{bottom:max(16px,env(safe-area-inset-bottom));bottom:var(--toastify-toast-bottom);left:max(16px,env(safe-area-inset-left));left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:max(16px,env(safe-area-inset-bottom));bottom:var(--toastify-toast-bottom);left:50%;transform:translateX(-50%)}.Toastify__toast-container--bottom-right{bottom:max(16px,env(safe-area-inset-bottom));bottom:var(--toastify-toast-bottom);right:max(16px,env(safe-area-inset-right));right:var(--toastify-toast-right)}@media only screen and (max-width:480px){.Toastify__toast-container{left:env(safe-area-inset-left);margin:0;padding:0;width:100vw}.Toastify__toast-container--top-center,.Toastify__toast-container--top-left,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translateX(0)}.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translateX(0)}.Toastify__toast-container--rtl{left:auto;right:env(safe-area-inset-right)}}.Toastify__toast{--y:0;border-radius:6px;border-radius:var(--toastify-toast-bd-radius);box-shadow:0 4px 12px #0000001a;box-sizing:border-box;cursor:default;direction:ltr;display:flex;font-family:sans-serif;font-family:var(--toastify-font-family);justify-content:space-between;margin-bottom:1rem;max-height:800px;max-height:var(--toastify-toast-max-height);min-height:64px;min-height:var(--toastify-toast-min-height);overflow:hidden;padding:8px;position:relative;touch-action:none;z-index:0}.Toastify__toast--stacked{position:absolute;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s;width:100%}.Toastify__toast--stacked[data-collapsed] .Toastify__close-button,.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{bottom:100%;content:"";height:calc(var(--g)*1px);left:0;position:absolute;right:0}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{bottom:0;content:"";height:100%;left:0;position:absolute;right:0;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-body{align-items:center;display:flex;flex:1 1 auto;margin:auto 0;padding:6px}.Toastify__toast-body>div:last-child{flex:1 1;word-break:break-word}.Toastify__toast-icon{display:flex;flex-shrink:0;margin-inline-end:10px;width:20px}.Toastify--animate{animation-duration:.5s;animation-fill-mode:both}.Toastify--animate-icon{animation-duration:.3s;animation-fill-mode:both}@media only screen and (max-width:480px){.Toastify__toast{border-radius:0;margin-bottom:0}}.Toastify__toast-theme--dark{background:#121212;background:var(--toastify-color-dark);color:#fff;color:var(--toastify-text-color-dark)}.Toastify__toast-theme--colored.Toastify__toast--default,.Toastify__toast-theme--light{background:#fff;background:var(--toastify-color-light);color:#757575;color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{background:#3498db;background:var(--toastify-color-info);color:#fff;color:var(--toastify-text-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{background:#07bc0c;background:var(--toastify-color-success);color:#fff;color:var(--toastify-text-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{background:#f1c40f;background:var(--toastify-color-warning);color:#fff;color:var(--toastify-text-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{background:#e74c3c;background:var(--toastify-color-error);color:#fff;color:var(--toastify-text-color-error)}.Toastify__progress-bar-theme--light{background:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:#bb86fc;background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:#3498db;background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:#07bc0c;background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:#f1c40f;background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:#e74c3c;background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning{background:#ffffffb3;background:var(--toastify-color-transparent)}.Toastify__close-button{align-self:flex-start;background:#0000;border:none;color:#fff;cursor:pointer;opacity:.7;outline:none;padding:0;transition:.3s ease;z-index:1}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:focus,.Toastify__close-button:hover{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{border-bottom-left-radius:6px;border-bottom-left-radius:var(--toastify-toast-bd-radius);bottom:0;height:100%;left:0;opacity:.7;position:absolute;transform-origin:left;width:100%;z-index:9999;z-index:var(--toastify-z-index)}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{border-bottom-left-radius:0;border-bottom-right-radius:6px;border-bottom-right-radius:var(--toastify-toast-bd-radius);left:auto;right:0;transform-origin:right}.Toastify__progress-bar--wrp{border-bottom-left-radius:6px;border-bottom-left-radius:var(--toastify-toast-bd-radius);bottom:0;height:5px;left:0;position:absolute;width:100%}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{height:100%;opacity:.2;opacity:var(--toastify-color-progress-bgo);width:100%}.Toastify__spinner{animation:Toastify__spin .65s linear infinite;border:2px solid #e0e0e0;border-color:var(--toastify-spinner-color-empty-area);border-radius:100%;border-right-color:#616161;border-right-color:var(--toastify-spinner-color);box-sizing:border-box;height:20px;width:20px}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--bottom-left,.Toastify__bounce-enter--top-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--bottom-right,.Toastify__bounce-enter--top-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--bottom-left,.Toastify__bounce-exit--top-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--bottom-right,.Toastify__bounce-exit--top-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{animation-timing-function:ease-in;opacity:0;transform:perspective(400px) rotateX(90deg)}40%{animation-timing-function:ease-in;transform:perspective(400px) rotateX(-20deg)}60%{opacity:1;transform:perspective(400px) rotateX(10deg)}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{opacity:1;transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg)}to{opacity:0;transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg)}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(110%,var(--y),0);visibility:hidden}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(-110%,var(--y),0);visibility:hidden}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(0,500px,0);visibility:hidden}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(0,-500px,0);visibility:hidden}}.Toastify__slide-enter--bottom-left,.Toastify__slide-enter--top-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--bottom-right,.Toastify__slide-enter--top-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--bottom-left,.Toastify__slide-exit--top-left{animation-duration:.3s;animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in}.Toastify__slide-exit--bottom-right,.Toastify__slide-exit--top-right{animation-duration:.3s;animation-name:Toastify__slideOutRight;animation-timing-function:ease-in}.Toastify__slide-exit--top-center{animation-duration:.3s;animation-name:Toastify__slideOutUp;animation-timing-function:ease-in}.Toastify__slide-exit--bottom-center{animation-duration:.3s;animation-name:Toastify__slideOutDown;animation-timing-function:ease-in}@keyframes Toastify__spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.contacts{margin:0 auto;max-width:58rem;padding:5rem clamp(1.25rem,5vw,4rem) 6rem}.terminal-window{background:#1a1a1a;border:1px solid #3c3c3c;border-radius:8px;box-shadow:0 12px 32px #00000073;overflow:hidden}.terminal-titlebar{align-items:center;background:#2d2d2d;border-bottom:1px solid #3c3c3c;display:flex;gap:6px;padding:.65rem 1rem}.terminal-dot{border-radius:50%;height:11px;width:11px}.terminal-dot-red{background:#ff5f56}.terminal-dot-yellow{background:#ffbd2e}.terminal-dot-green{background:#27c93f}.terminal-titlebar-text{color:#b3b3b3;font-size:.78rem;margin-left:.75rem}.terminal-body{padding:1.5rem clamp(1rem,3vw,2rem) 2rem}.terminal-line{color:#d4d4d4;display:block;font-size:.88rem;line-height:1.8}.terminal-line-spaced{margin-top:1.5rem}.terminal-prompt{color:#4ec9b0;margin-right:.5rem}.terminal-file{color:#9d9d9d;padding-left:1.5rem}.terminal-file-name{color:#4fc1ff}.terminal-file:hover .terminal-file-name{text-decoration:underline}.terminal-file-hint{color:#6a9955;font-style:italic}.terminal-form{display:flex;flex-direction:column;gap:1rem;margin-top:1.25rem}.terminal-field-row{display:flex;flex-wrap:wrap;gap:1.5rem}.terminal-field{display:flex;flex:1 1;flex-direction:column;gap:.35rem;min-width:12rem}.terminal-field-full{min-width:100%}.terminal-field-label{color:#9cdcfe;font-size:.8rem}.required{color:#f14c4c;margin-left:.15rem}.terminal-field input,.terminal-field textarea{background:#0000;border:none;border-bottom:1px solid #3c3c3c;color:#d4d4d4;font-family:var(--font-mono);font-size:.9rem;padding:.4rem .1rem;resize:vertical}.terminal-field input:focus,.terminal-field textarea:focus{border-bottom-color:#4fc1ff;outline:none}.terminal-submit{align-self:flex-start;background:#252526;border:1px solid #3c3c3c;border-radius:6px;color:#d4d4d4;cursor:pointer;font-family:var(--font-mono);font-size:.88rem;margin-top:.5rem;padding:.6rem 1.2rem;transition:border-color .15s ease,transform .15s ease}.terminal-submit:hover{border-color:#4ec9b0;transform:translateY(-2px)}.terminal-cursor-line{margin-top:1.5rem}.terminal-cursor{animation:blink 1s step-end infinite;background:#d4d4d4;display:inline-block;height:1rem;vertical-align:text-bottom;width:.55rem}@keyframes blink{50%{opacity:0}}.site-footer{align-items:center;border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:1.25rem;margin:0 auto;max-width:68rem;padding:2.5rem clamp(1.25rem,5vw,4rem) 3rem;text-align:center}.site-footer-line{color:var(--sidebar-fg-muted);font-size:.85rem}.site-footer-prompt{color:var(--diff-add)}.site-footer-sep{color:var(--fg-faint)}.site-footer-path{color:var(--accent)}.site-footer-copy{color:var(--fg-faint);font-size:.75rem}
/*# sourceMappingURL=main.90cf2063.css.map*/