*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg-app);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.5;transition:background-color .2s,color .2s}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}h1,h2,h3,p{margin:0}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);background-clip:content-box;border:2px solid #0000;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover);background-clip:content-box}::selection{background:var(--selection-bg)}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-app:#0b0b0d;--bg-sider:#111114;--bg-header:#0d0d10;--surface:#151518;--surface-2:#17171a;--surface-3:#1b1b20;--surface-hover:#1e1e25;--bg-header-translucent:#0b0b0dd9;--border:#26262c;--border-soft:#1e1e23;--border-strong:#3a3a44;--divider:#22222a;--code-bg:#101014;--text:#e9e9ec;--text-strong:#fff;--text-bright:#c9c9d1;--text-nav:#b9b9c2;--text-muted:#90909a;--text-dim:#6b6b74;--text-faint:#5f5f68;--accent:#4d8dfd;--accent-hover:#6ea2ff;--accent-soft:#1d2b4a;--accent-text:#cfdcff;--accent-tint:#4d8dfd1f;--accent-tint-border:#4d8dfd47;--selection-bg:#4d8dfd59;--success:#3ecf8e;--warning:#e2a03f;--scrollbar-thumb:#2a2a32;--scrollbar-thumb-hover:#3a3a44}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-app:#f4f4f6;--bg-sider:#fbfbfc;--bg-header:#fff;--surface:#fff;--surface-2:#fff;--surface-3:#fff;--surface-hover:#eef1f6;--bg-header-translucent:#ffffffd9;--border:#e2e2e7;--border-soft:#ececf0;--border-strong:#c9c9d1;--divider:#e6e6ea;--code-bg:#f2f3f5;--text:#17171a;--text-strong:#000;--text-bright:#45454f;--text-nav:#45454f;--text-muted:#5c5c66;--text-dim:#787883;--text-faint:#8a8a93;--accent:#2f6fe4;--accent-hover:#1a4fbb;--accent-soft:#e8effc;--accent-text:#1a3a6b;--accent-tint:#2f6fe41a;--accent-tint-border:#2f6fe447;--selection-bg:#2f6fe438;--success:#1f9d63;--warning:#b8791f;--scrollbar-thumb:#c9c9d1;--scrollbar-thumb-hover:#a9a9b4}.app-layout{background:var(--bg-app);min-height:100vh}.app-sider{background:var(--bg-sider);border-right:1px solid var(--border);height:100vh;top:0;overflow:hidden;position:sticky!important}.app-sider .ant-layout-sider-children{height:100%;overflow:hidden}.app-header{z-index:20;background:var(--bg-header-translucent);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:center;gap:12px;height:56px;padding:0 12px 0 8px;line-height:normal;display:flex;position:sticky;top:0}.app-header__left,.app-header__right{align-items:center;gap:4px;min-width:0;display:flex}.app-header__right{flex:none}.app-header__title{min-width:0;color:var(--text-muted);letter-spacing:.01em;white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:flex;overflow:hidden}.app-header__parent{flex:none;align-items:center;gap:6px;display:flex}.app-header__crumb{color:var(--text-dim)}.app-header__crumb:hover{color:var(--text)}.app-header__sep{color:var(--text-faint)}.app-header__current{text-overflow:ellipsis;overflow:hidden}.app-header__toggle.ant-btn{color:var(--text-nav)}.app-content{background:var(--bg-app)}.page-container{width:100%;max-width:1180px;margin:0 auto;padding:32px 40px 72px}.page-loading{min-height:40vh}.app-drawer .ant-drawer-body{background:var(--bg-sider)}.sidenav{background:var(--bg-sider);flex-direction:column;height:100%;padding-bottom:16px;display:flex;overflow-y:auto}.sidenav__brand{align-items:center;gap:10px;padding:16px 16px 4px;display:flex}.sidenav__avatar{border:1px solid var(--border-strong);background:var(--surface-2);object-fit:cover;border-radius:50%;flex:none;width:32px;height:32px;display:block}.sidenav__identity{flex-direction:column;min-width:0;line-height:1.25;display:flex}.sidenav__name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:500;overflow:hidden}.sidenav__handle{color:var(--text-faint);font-size:11.5px}.sidenav__top{padding:14px 12px 6px}.sidenav__cta.ant-btn{padding-inline:10px}.sidenav__section{color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase;padding:14px 20px 6px;font-size:11px;font-weight:500}.sidenav__menu.ant-menu{background:0 0;border-inline-end:0;font-size:13.5px}.sidenav__menu.ant-menu-inline-collapsed{width:100%}.sidenav__menu .ant-menu-item,.sidenav__menu .ant-menu-submenu-title{color:var(--text-nav)}.sidenav__menu .ant-menu-item-selected{font-weight:500}.sidenav__menu .ant-menu-title-content>a,.sidenav__menu .ant-menu-title-content>a:hover{color:inherit}.sidenav__menu .ant-menu-sub .ant-menu-item{height:auto;min-height:34px;padding-block:7px;line-height:1.35}.sidenav__menu .ant-menu-sub .ant-menu-title-content{white-space:normal;overflow:visible}.sidenav__menu .ant-menu-submenu-selected>.ant-menu-submenu-title{background:0 0;font-weight:500}.sidenav__menu .ant-menu-submenu-open:not(.ant-menu-submenu-selected)>.ant-menu-submenu-title{color:var(--text-nav)}.sidenav__menu .ant-menu-sub.ant-menu-inline{background:0 0}.sidenav__dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-inline-end:12px;display:inline-block}.sidenav__dot--success{background:var(--success)}.sidenav__dot--processing{background:var(--accent)}.sidenav__dot--warning{background:var(--warning)}.sidenav__dot--default{background:var(--text-dim)}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:20px 32px;margin-bottom:32px;display:flex}.page-header__main{flex:360px;min-width:0}.page-header__eyebrow{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px;font-size:12px;font-weight:500}.page-header__title{color:var(--text);font-size:30px;font-weight:600;line-height:1.35}.page-header__subtitle{max-width:720px;color:var(--text-muted);margin-top:10px;font-size:15px;line-height:1.5}.page-header__actions{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.section{margin-bottom:44px;scroll-margin-top:72px}.section__head{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.section__title{color:var(--text);margin-bottom:18px;font-size:19px;font-weight:600;line-height:1.4}.section__head .section__title{margin-bottom:18px}.section__link{color:var(--text-muted);font-size:13px}.section__link:hover{color:var(--accent)}.section__lead{max-width:820px;color:var(--text-muted);margin-bottom:12px;line-height:1.55}.section__paragraph{max-width:820px;color:var(--text-bright);margin-bottom:14px;line-height:1.55}.back-link{margin-bottom:18px;display:inline-block}.hero{max-width:820px;margin-bottom:56px;padding-top:8px}.hero__badge{color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;margin-bottom:18px;padding:3px 10px;font-size:11px;font-weight:500;display:inline-block}.hero__name{color:var(--text);font-size:38px;font-weight:600;line-height:1.35}.hero__role{color:var(--text-muted);margin-top:10px;font-size:14px;line-height:1.5}.role-line__part{white-space:nowrap}.hero__tagline{color:var(--text);margin-top:22px;font-size:22px;font-weight:500;line-height:1.45}.hero__intro{max-width:720px;color:var(--text-muted);margin-top:12px;line-height:1.55}.hero__actions{flex-wrap:wrap;gap:12px;margin-top:26px;display:flex}.cta{background:var(--code-bg);border:1px solid var(--divider);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;padding:24px 26px;display:flex}.cta__title{color:var(--text);font-size:17px;font-weight:500}.cta__subtitle{color:var(--text-muted);margin-top:6px;font-size:14px}.cta__actions{flex-wrap:wrap;gap:10px;display:flex}.project-card.ant-card{background:var(--surface);border:1px solid var(--divider);border-radius:12px;height:100%;transition:border-color .18s,transform .18s,background .18s}.project-card.ant-card:hover{background:var(--surface-hover);border-color:var(--border-strong);box-shadow:none;transform:translateY(-2px)}.project-card .ant-card-body{flex-direction:column;height:100%;padding:18px 20px 16px;display:flex}.project-card__top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 10px;min-height:22px;margin-bottom:12px;display:flex}.project-card__top .ant-badge{white-space:nowrap}.project-card__status{color:var(--text-muted);font-size:12.5px}.project-card__badges{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.project-card__demo{white-space:nowrap;color:var(--accent);letter-spacing:.04em;background:var(--accent-tint);border:1px solid var(--accent-tint-border);border-radius:999px;padding:1px 8px;font-size:11px}.project-card__title{margin-bottom:8px;font-size:18px;font-weight:600;line-height:1.4}.project-card__link{color:var(--text)}.project-card__link:hover{color:var(--accent)}.project-card__tagline{color:var(--text-muted);-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;margin-bottom:14px;font-size:13.5px;line-height:1.5;display:-webkit-box;overflow:hidden}.project-card__actions{flex-wrap:wrap;align-items:center;gap:8px;padding-top:16px;display:flex}.project-card .stack-tags{margin-top:auto;margin-bottom:4px}.stack-tags__tag.ant-tag{color:var(--text-nav);background:var(--surface-3);border:1px solid var(--border);border-radius:6px;margin:0;padding:0 8px;font-size:12px;line-height:20px}.stack-tags__tag--more.ant-tag{color:var(--text-dim)}.skill-group{height:100%}.skill-group__title{color:var(--text);margin-bottom:10px;font-size:14px;font-weight:500}.about-photo{width:199px;max-width:100%;margin:0}.about-photo__img{aspect-ratio:1;border:1px solid var(--border);background:var(--surface-2);object-fit:cover;border-radius:50%;width:100%;height:auto;display:block}.detail-actions{flex-wrap:wrap;align-items:flex-start;gap:10px;display:flex}.detail-summary{max-width:820px;color:var(--text-bright);margin-bottom:28px;font-size:16px;line-height:1.6}.tooltip-target{display:inline-flex}.fact{background:var(--code-bg);border:1px solid var(--border-soft);border-radius:10px;height:100%;padding:14px 16px}.fact__label{color:var(--text-dim);margin-bottom:6px;font-size:12px}.fact__value{color:var(--text);font-size:14px;line-height:1.45}.feature-list{margin:0;padding:0;list-style:none}.feature-list__item{color:var(--text-bright);margin-bottom:10px;padding-left:20px;line-height:1.55;position:relative}.feature-list__item:before{color:var(--accent);content:"▸";position:absolute;top:0;left:2px}.run-commands{max-width:820px;color:var(--text-bright);background:var(--code-bg);border:1px solid var(--divider);border-radius:10px;margin:4px 0 0;padding:16px 18px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.7;overflow-x:auto}.shot-card.ant-card{background:var(--surface);border:1px solid var(--divider);border-radius:12px;height:100%}.shot-card .ant-card-body{padding:12px}.shot-card__frame{aspect-ratio:16/10;background:var(--code-bg);border:1px solid var(--divider);border-radius:10px;overflow:hidden}.shot-card__frame .ant-image{width:100%;height:100%;display:block}.shot-card__image{object-fit:contain;width:100%;height:100%}.shot-card__caption{color:var(--text-muted);margin-top:10px;font-size:13px;line-height:1.45}.gallery-note,.gallery-empty{color:var(--text-dim);margin-top:14px;font-size:13px}.gallery-empty{color:var(--text-muted);text-align:center;background:var(--code-bg);border:1px dashed var(--border);border-radius:12px;margin-top:0;padding:28px 24px}.project-nav{background:var(--code-bg);border:1px solid var(--divider);border-radius:12px;flex-direction:column;gap:4px;height:100%;padding:16px 18px;transition:border-color .18s,transform .18s;display:flex}.project-nav:hover{border-color:var(--border-strong);transform:translateY(-2px)}.project-nav--next{text-align:right;align-items:flex-end}.project-nav__label{color:var(--text-dim);font-size:12px}.project-nav__name{color:var(--text);font-size:15px;font-weight:500}.project-nav__tagline{color:var(--text-muted);font-size:13px;line-height:1.45}.contact-card.ant-card{background:var(--surface);border:1px solid var(--divider);border-radius:12px;height:100%}.contact-card__label{color:var(--text-dim);letter-spacing:.04em;text-transform:uppercase;font-size:12px}.contact-card__value{color:var(--text);overflow-wrap:anywhere;margin-top:8px;font-size:15px}.contact-card__actions{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.empty-state{text-align:center;max-width:520px;margin:40px auto}.empty-state__code{color:var(--border);font-size:72px;font-weight:600;line-height:1}.empty-state__title{color:var(--text);margin-top:12px;font-size:24px;font-weight:600}.empty-state__text{color:var(--text-muted);margin:12px 0 24px}.ant-btn-primary{color:#fff}.ant-card-head{border-bottom-color:var(--border-soft)}.ant-badge-status-text{color:var(--text-muted)}.ant-tooltip-inner{font-size:12.5px}@media (width<=899px){.page-container{padding:20px 16px 56px}.page-header{gap:18px;margin-bottom:26px}.app-header__parent{display:none}.page-header__title{font-size:26px}.hero{margin-bottom:40px}.hero__name{font-size:30px}.hero__tagline{font-size:19px}.section{margin-bottom:34px}.cta{padding:20px 18px}.about-photo{width:112px}.fact{justify-content:space-between;align-items:baseline;gap:12px;padding:10px 14px;display:flex}.fact__label{flex:none;margin-bottom:0}.fact__value{text-align:right}}:root{transition:background-color .2s,color .2s}@media print{:root,:root[data-theme=light]{--bg-app:#fff;--bg-sider:#fff;--surface:#fff;--surface-2:#fff;--surface-3:#fff;--surface-hover:#f2f2f4;--code-bg:#f7f7f8;--border:#d8d8dd;--border-soft:#e4e4e8;--divider:#e4e4e8;--text:#000;--text-strong:#000;--text-bright:#1a1a1a;--text-nav:#1a1a1a;--text-muted:#333;--text-dim:#4a4a4a;--text-faint:#666;--accent:#1a4fbb;--accent-soft:#eef3fc;--accent-text:#10305f}.app-sider,.app-header,.no-print{display:none!important}.app-content{background:var(--bg-app)!important}.page-container{max-width:none;padding:0}}.control-btn.ant-btn{color:var(--text-dim);border-radius:8px;align-items:center;gap:4px;padding-inline:8px;display:inline-flex}.control-btn.ant-btn:hover,.control-btn.ant-btn:focus-visible,.control-btn.ant-btn:active,.control-btn--active.ant-btn{color:var(--text);background:var(--surface-hover)}.control-menu__item{flex-direction:column;line-height:1.25;display:flex}.control-menu__label{font-weight:500}.control-menu__hint{color:var(--text-dim);font-size:12px}.employers-card{height:100%;color:inherit;background:var(--surface);border:1px solid var(--divider);border-radius:12px;flex-direction:column;gap:10px;padding:22px 24px 20px;transition:border-color .18s,transform .18s,background .18s;display:flex}.employers-card:hover{color:inherit;background:var(--surface-hover);border-color:var(--border-strong);transform:translateY(-2px)}.employers-card__icon{width:38px;height:38px;color:var(--accent);background:var(--accent-tint);border:1px solid var(--accent-tint-border);border-radius:10px;place-items:center;font-size:18px;display:grid}.employers-card__title{color:var(--text);font-size:18px;font-weight:600}.employers-card:hover .employers-card__title{color:var(--accent)}.employers-card__text{color:var(--text-muted);font-size:14px;line-height:1.55}.employers-card__more{color:var(--accent);margin-top:auto;padding-top:8px;font-size:13px}.employer-highlight{background:var(--code-bg);border:1px solid var(--border-soft);border-radius:12px;height:100%;padding:18px 20px}.employer-highlight__title{color:var(--text);margin-bottom:8px;font-size:15px;font-weight:600;line-height:1.4}.employer-highlight__text{color:var(--text-muted);font-size:13.5px;line-height:1.55}.resume-head{background:var(--surface);border:1px solid var(--divider);border-radius:12px;flex-wrap:wrap;justify-content:space-between;gap:24px;margin-bottom:32px;padding:26px 28px;display:flex}.resume-head__main{flex:420px;min-width:0}.resume-head__name{color:var(--text);font-size:28px;font-weight:600;line-height:1.3}.resume-head__title{color:var(--accent);margin-top:6px;font-size:15px;font-weight:500}.resume-head__summary{max-width:640px;color:var(--text-muted);margin-top:14px;line-height:1.6}.resume-head__side{flex:0 240px;min-width:0}.resume-head__contacts-title{color:var(--text-dim);letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px;font-size:11px;font-weight:500}.resume-contacts{margin:0;padding:0;list-style:none}.resume-contact{flex-direction:column;gap:2px;margin-bottom:10px;display:flex}.resume-contact:last-child{margin-bottom:0}.resume-contact__label{color:var(--text-dim);font-size:11.5px}.resume-contact__value{color:var(--text);word-break:break-word;font-size:13.5px}a.resume-contact__value:hover{color:var(--accent)}.resume-head__actions{margin-top:16px}.resume-panel{background:var(--surface);border:1px solid var(--divider);border-radius:12px;margin-bottom:20px;padding:18px 20px}.resume-panel:last-child{margin-bottom:0}.resume-panel .section__title{margin-bottom:14px;font-size:16px}.resume-skill-group{margin-bottom:14px}.resume-skill-group:last-child{margin-bottom:0}.resume-skill-group__title{color:var(--text-bright);margin-bottom:8px;font-size:13px;font-weight:500}.resume-timeline{margin:0;padding:2px 0 2px 24px;position:relative}.resume-timeline:before{background:var(--border);content:"";width:1px;position:absolute;top:8px;bottom:8px;left:5px}.resume-timeline__item{padding-bottom:26px;position:relative}.resume-timeline__item:last-child{padding-bottom:0}.resume-timeline__item:before{background:var(--accent);width:9px;height:9px;box-shadow:0 0 0 3px var(--bg-app);content:"";border-radius:50%;position:absolute;top:6px;left:-23px}.resume-timeline__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.resume-timeline__position{color:var(--text);font-size:16px;font-weight:600;line-height:1.4}.resume-timeline__company{color:var(--text);margin-top:2px;font-size:14px}.resume-timeline__period{color:var(--text-dim);margin-top:6px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12.5px}.resume-timeline__meta{color:var(--text-dim);margin-top:2px;font-size:12.5px}.resume-timeline__description{max-width:760px;color:var(--text-bright);margin-top:10px;line-height:1.6}.resume-timeline__subtitle{color:var(--text-dim);letter-spacing:.08em;text-transform:uppercase;margin-top:12px;font-size:11px;font-weight:500}.resume-achievements{margin:8px 0 0;padding:0;list-style:none}.resume-achievements__item{color:var(--text-bright);margin-bottom:8px;padding-left:20px;font-size:14px;line-height:1.55;position:relative}.resume-achievements__item:last-child{margin-bottom:0}.resume-achievements__item:before{color:var(--accent);content:"▸";position:absolute;top:0;left:2px}.resume-projects{margin:0;padding:0;list-style:none}.resume-projects__item{margin-bottom:16px}.resume-projects__item:last-child{margin-bottom:0}.resume-projects__name{color:var(--text);font-size:15px;font-weight:600}.resume-projects__text{color:var(--text-muted);margin-top:4px;font-size:14px;line-height:1.55}.resume-edu{border-bottom:1px solid var(--border-soft);margin-bottom:16px;padding-bottom:16px}.resume-edu:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}.resume-edu__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.resume-edu__degree{color:var(--text);font-size:15px;font-weight:600}.resume-edu__period{color:var(--text-dim);font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12.5px}.resume-edu__institution{color:var(--text-bright);margin-top:4px;font-size:14px}.resume-edu__grade{color:var(--text-dim);margin-top:4px;font-size:12.5px}.resume-langs{margin:0;padding:0;list-style:none}.resume-langs__item{border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:baseline;gap:10px;padding:6px 0;display:flex}.resume-langs__item:last-child{border-bottom:0;padding-bottom:0}.resume-langs__name{color:var(--text);font-size:14px}.resume-langs__level{color:var(--text-muted);font-size:13px}.resume-prefs{margin:0;padding:0;list-style:none}.resume-prefs__item{margin-bottom:10px}.resume-prefs__item:last-child{margin-bottom:0}.resume-prefs__label{color:var(--text-dim);font-size:12px;display:block}.resume-prefs__value{color:var(--text);font-size:13.5px;line-height:1.5}@media (width<=900px){.employers-card{padding:18px 18px 16px}.resume-head{padding:20px 18px}.resume-head__name{font-size:23px}.resume-head__side{flex-basis:100%}}@media print{.resume-sheet{--border:#d9d9de;--border-soft:#e6e6ea;--divider:#d9d9de;--surface:#fff;--code-bg:#fff}.resume-head,.resume-panel,.resume-timeline__item{break-inside:avoid}.resume-head__name{font-size:24px}}
