@charset "UTF-8";@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;450;500;600&display=swap";html:not([data-mode=simple]) body{cursor:none}html:not([data-mode=simple]) body *{cursor:none}@media (max-width: 738px){html:not([data-mode=simple]) body{cursor:auto}html:not([data-mode=simple]) body *{cursor:auto}}.custom-cursor,.cursor-trail{position:fixed;pointer-events:none;z-index:9999;transform:translate(-50%,-50%)}@media (max-width: 738px){.custom-cursor,.cursor-trail{display:none}}.custom-cursor{width:26px;height:26px;border:1.5px solid var(--accent);border-radius:50%;box-shadow:var(--glow);transition:width .16s ease,height .16s ease,border-color .16s ease,transform .08s ease,background .16s ease}.custom-cursor:after{content:"";position:absolute;left:50%;top:50%;width:4px;height:4px;border-radius:50%;background:var(--accent);transform:translate(-50%,-50%)}.custom-cursor.hovering{width:44px;height:44px;border-color:var(--prompt-path);background:var(--accent-soft)}.custom-cursor.hovering:after{background:var(--prompt-path)}.custom-cursor.active{transform:translate(-50%,-50%) scale(.8)}.cursor-trail{width:5px;height:5px;border-radius:50%;background:var(--accent)}.term-nav{position:sticky;top:0;z-index:900;height:var(--nav-h);display:flex;align-items:center;gap:16px;padding:0 18px;background:color-mix(in srgb,var(--surface) 86%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.term-nav .nav-brand{display:flex;align-items:center;gap:8px;flex:none}.term-nav .nav-brand .dots{display:flex;gap:6px}@media (max-width: 738px){.term-nav .nav-brand .dots{display:none}}.term-nav .nav-brand .dots span{width:10px;height:10px;border-radius:50%}.term-nav .nav-brand .dots span.red{background:#ff5f57}.term-nav .nav-brand .dots span.yellow{background:#febc2e}.term-nav .nav-brand .dots span.green{background:#28c840}.term-nav .nav-brand .brand-text{font-family:var(--font-mono);font-size:13px;color:var(--text-secondary)}.term-nav .nav-brand .brand-text .accent{color:var(--accent)}@media (max-width: 738px){.term-nav .nav-brand .brand-text{font-size:12px}}.term-nav .nav-links{display:flex;align-items:center;gap:4px;margin-left:auto}@media (max-width: 1024px){.term-nav .nav-links{display:none}}.term-nav .nav-links a{padding:7px 11px;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:13px;color:var(--text-secondary);transition:color .16s ease,background .16s ease}.term-nav .nav-links a:before{content:"./";color:var(--text-muted)}.term-nav .nav-links a:hover{color:var(--text-primary);background:var(--surface-soft)}.term-nav .nav-links a.cta{color:var(--accent)}.term-nav .nav-links a.cta:before{color:var(--accent)}.term-nav .theme-switch{display:flex;align-items:center;gap:2px;margin-left:8px;padding:3px;border:1px solid var(--border);border-radius:999px;background:var(--bg-deep)}@media (max-width: 1024px){.term-nav .theme-switch{margin-left:auto}}.term-nav .theme-switch button{width:26px;height:22px;border:none;border-radius:999px;background:transparent;cursor:pointer;display:grid;place-items:center;transition:background .16s ease,transform .16s ease}.term-nav .theme-switch button .swatch{width:11px;height:11px;border-radius:50%;border:1px solid rgba(255,255,255,.25)}.term-nav .theme-switch button:hover{transform:scale(1.12)}.term-nav .theme-switch button[aria-pressed=true]{background:var(--surface-elevated)}.nav-chips{position:sticky;top:var(--nav-h);z-index:880;display:none;gap:8px;padding:10px 14px;overflow-x:auto;scrollbar-width:none;background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.nav-chips::-webkit-scrollbar{display:none}@media (max-width: 1024px){.nav-chips{display:flex}}.nav-chips .command-chip{flex:none}.sr-only-heading{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.terminal-window{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.terminal-window .terminal-titlebar{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--surface-elevated);border-bottom:1px solid var(--border)}.terminal-window .terminal-titlebar .dot{width:11px;height:11px;border-radius:50%;flex:none}.terminal-window .terminal-titlebar .dot.red{background:#ff5f57}.terminal-window .terminal-titlebar .dot.yellow{background:#febc2e}.terminal-window .terminal-titlebar .dot.green{background:#28c840}.terminal-window .terminal-titlebar .terminal-title{margin-left:8px;font-family:var(--font-mono);font-size:12.5px;color:var(--text-muted);letter-spacing:.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.terminal-window .terminal-body{padding:26px 28px 30px}@media (max-width: 738px){.terminal-window .terminal-body{padding:20px 16px 24px}}.terminal-prompt{font-family:var(--font-mono);font-size:13.5px;line-height:1.6;word-break:break-word}.terminal-prompt .user{color:var(--prompt-user)}.terminal-prompt .path{color:var(--prompt-path)}.terminal-prompt .sym{color:var(--text-muted);margin-right:8px}.terminal-prompt .command{color:var(--text-primary)}.terminal-prompt .cursor{display:inline-block;width:8px;height:1.05em;margin-left:4px;vertical-align:text-bottom;background:var(--accent);animation:term-blink 1.1s steps(1) infinite}@keyframes term-blink{0%,49%{opacity:1}50%,to{opacity:0}}.terminal-section{scroll-margin-top:calc(var(--nav-h) + 16px);width:min(var(--maxw),100% - 40px);margin:0 auto;padding:56px 0 8px}@media (max-width: 738px){.terminal-section{width:calc(100% - 28px);padding:40px 0 4px}}.terminal-section .terminal-output{margin-top:18px}.command-chip{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface-soft);color:var(--text-secondary);font-family:var(--font-mono);font-size:12.5px;cursor:pointer;transition:color .18s ease,border-color .18s ease,background .18s ease,transform .18s ease,box-shadow .18s ease}.command-chip:before{content:"$";color:var(--accent);font-weight:600}.command-chip:hover{color:var(--text-primary);border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px);box-shadow:var(--glow)}.terminal-input{margin-top:18px}.terminal-input .ti-history{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;font-family:var(--font-mono);font-size:13px;line-height:1.6}.terminal-input .ti-history .ti-echo{color:var(--text-primary)}.terminal-input .ti-history .ti-echo .user{color:var(--prompt-user)}.terminal-input .ti-history .ti-echo .path{color:var(--prompt-path)}.terminal-input .ti-history .ti-echo .sym{color:var(--text-muted);margin-right:6px}.terminal-input .ti-history .ti-out{white-space:pre-wrap;color:var(--text-secondary)}.terminal-input .ti-history .ti-out.ok{color:var(--accent)}.terminal-input .ti-history .ti-out.error{color:var(--term-red)}.terminal-input .ti-history .ti-out.muted{color:var(--text-muted)}.terminal-input .ti-line{display:flex;align-items:center;gap:8px;padding:11px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-deep);transition:border-color .18s ease,box-shadow .18s ease}.terminal-input .ti-line:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.terminal-input .ti-line .ti-prompt{flex:none;font-family:var(--font-mono);font-size:13.5px;color:var(--prompt-user)}.terminal-input .ti-line input{flex:1;min-width:0;border:none;outline:none;background:transparent;color:var(--text-primary);font-family:var(--font-mono);font-size:13.5px;caret-color:var(--accent)}.terminal-input .ti-line input::placeholder{color:var(--text-muted)}.terminal-input .ti-hint{margin-top:8px;font-family:var(--font-mono);font-size:11.5px;color:var(--text-muted)}.hero{width:min(var(--maxw),100% - 40px);margin:0 auto;padding:40px 0 8px;scroll-margin-top:var(--nav-h)}@media (max-width: 738px){.hero{width:calc(100% - 28px);padding:24px 0 4px}}.hero .boot{font-family:var(--font-mono);font-size:13.5px;line-height:1.85;color:var(--text-secondary);min-height:132px}@media (max-width: 738px){.hero .boot{min-height:150px}}.hero .boot .boot-line{display:block}.hero .boot .boot-line .muted{color:var(--text-muted)}.hero .boot .boot-line .ok{color:var(--accent)}.hero .boot .boot-line .user{color:var(--prompt-user)}.hero .boot .boot-line .path{color:var(--prompt-path)}.hero .boot .boot-line .sym{color:var(--text-muted);margin-right:8px}.hero .whoami{margin-top:22px;padding-top:22px;border-top:1px dashed var(--border)}.hero .whoami .who-prompt{margin-bottom:18px}.hero .whoami .name{font-family:var(--font-mono);font-weight:700;font-size:clamp(40px,8vw,80px);line-height:.98;letter-spacing:-.02em;color:var(--text-primary);background:linear-gradient(100deg,var(--text-primary) 30%,var(--accent) 120%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.hero .whoami .role{margin-top:14px;font-family:var(--font-mono);font-size:clamp(16px,3vw,24px);color:var(--prompt-path)}.hero .whoami .role:before{content:"> ";color:var(--accent)}.hero .whoami .blurb{max-width:60ch;margin-top:16px;font-size:16px;line-height:1.7;color:var(--text-secondary)}.hero .whoami .stack{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.hero .whoami .stack span{padding:5px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-soft);font-family:var(--font-mono);font-size:12px;color:var(--text-secondary)}.hero .commands-block{margin-top:26px}.hero .commands-block .commands-label{font-family:var(--font-mono);font-size:12.5px;color:var(--text-muted);margin-bottom:12px}.hero .commands-block .commands-label:before{content:"# ";color:var(--accent)}.hero .commands-block .commands-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}.hero .commands-block .commands-grid button{display:flex;align-items:baseline;gap:10px;text-align:left;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-deep);cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease}.hero .commands-block .commands-grid button .cmd{font-family:var(--font-mono);font-size:13px;color:var(--accent);flex:none}.hero .commands-block .commands-grid button .desc{font-size:12.5px;color:var(--text-secondary)}.hero .commands-block .commands-grid button:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}.hero .cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}.hero .cta-row a{display:inline-flex;align-items:center;gap:8px;padding:12px 18px;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:13.5px;border:1px solid var(--border-strong);color:var(--text-primary);background:var(--surface-soft);transition:transform .16s ease,border-color .16s ease,background .16s ease,box-shadow .16s ease}.hero .cta-row a.primary{border-color:var(--accent);color:var(--bg-deep);background:var(--accent);font-weight:600}.hero .cta-row a:hover{transform:translateY(-2px);box-shadow:var(--glow)}.hero .cta-row a:not(.primary):hover{border-color:var(--accent)}.about-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:24px;align-items:start}@media (max-width: 1024px){.about-grid{grid-template-columns:1fr}}.about-grid .about-prose p{font-size:15.5px;line-height:1.7;color:var(--text-secondary)}.about-grid .about-prose p+p{margin-top:14px}.about-grid .about-prose .about-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.about-grid .about-prose .about-actions a{padding:10px 16px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:13px;color:var(--text-primary);background:var(--surface-soft);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.about-grid .about-prose .about-actions a.primary{border-color:var(--accent);color:var(--accent)}.about-grid .about-prose .about-actions a:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:var(--glow)}.about-grid .profile-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-deep);overflow:hidden}.about-grid .profile-card .avatar{height:clamp(150px,18vw,188px);overflow:hidden;background:linear-gradient(var(--border) 1px,transparent 1px) 0 0/26px 26px,linear-gradient(90deg,var(--border) 1px,transparent 1px) 0 0/26px 26px,var(--surface)}.about-grid .profile-card .avatar img{display:block;width:100%;height:100%;object-fit:contain;padding:14px;filter:drop-shadow(0 14px 30px rgba(0,0,0,.5))}.about-grid .profile-card .facts{padding:13px 16px;border-top:1px solid var(--border);font-family:var(--font-mono);font-size:12.5px}.about-grid .profile-card .facts .row{display:flex;gap:8px;padding:3.5px 0}.about-grid .profile-card .facts .row .key{color:var(--text-muted);min-width:78px}.about-grid .profile-card .facts .row .val{color:var(--text-secondary)}.about-grid .profile-card .facts .socials{display:flex;gap:10px;margin-top:10px}.about-grid .profile-card .facts .socials a{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);transition:transform .16s ease,border-color .16s ease}.about-grid .profile-card .facts .socials a:hover{transform:translateY(-2px);border-color:var(--accent)}.about-grid .profile-card .facts .socials a img{width:17px;height:17px;object-fit:contain}.exp-list{display:flex;flex-direction:column;gap:18px}.exp-list .exp-item{padding-left:18px;border-left:2px solid var(--border);position:relative}.exp-list .exp-item:before{content:"";position:absolute;left:-7px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--bg)}.exp-list .exp-item .exp-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px}.exp-list .exp-item .exp-head .period{font-family:var(--font-mono);font-size:12px;color:var(--accent)}.exp-list .exp-item .exp-head .title{font-family:var(--font-mono);font-size:16px;font-weight:600;color:var(--text-primary)}.exp-list .exp-item .exp-head .focus{font-family:var(--font-mono);font-size:11.5px;color:var(--text-muted)}.exp-list .exp-item .exp-head .focus:before{content:"// "}.exp-list .exp-item ul{margin-top:10px;list-style:none;display:grid;gap:7px}.exp-list .exp-item ul li{font-size:14.5px;line-height:1.6;color:var(--text-secondary);padding-left:18px;position:relative}.exp-list .exp-item ul li:before{content:"→";position:absolute;left:0;color:var(--accent);font-family:var(--font-mono)}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}.skills-grid .skill-group{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-deep);padding:16px 18px}.skills-grid .skill-group .group-name{font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--prompt-path);margin-bottom:10px}.skills-grid .skill-group ul{list-style:none;font-family:var(--font-mono);font-size:13px}.skills-grid .skill-group ul li{color:var(--text-secondary);line-height:1.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.skills-grid .skill-group ul li .tree{color:var(--text-muted);margin-right:8px}.resume-block .found{font-family:var(--font-mono);font-size:14px;color:var(--text-secondary)}.resume-block .found .file{color:var(--accent)}.resume-block .meta{margin-top:8px;font-family:var(--font-mono);font-size:12.5px;color:var(--text-muted)}.resume-block .resume-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}.resume-block .resume-actions a{display:inline-flex;align-items:center;gap:8px;padding:12px 18px;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:13.5px;border:1px solid var(--border-strong);color:var(--text-primary);background:var(--surface-soft);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.resume-block .resume-actions a.primary{border-color:var(--accent);color:var(--bg-deep);background:var(--accent);font-weight:600}.resume-block .resume-actions a:hover{transform:translateY(-2px);box-shadow:var(--glow)}.resume-block .resume-actions a:not(.primary):hover{border-color:var(--accent)}.projects .ls-listing{font-family:var(--font-mono);font-size:12.5px;line-height:1.9;color:var(--text-muted);padding:14px 16px;margin-bottom:22px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-deep);overflow-x:auto}.projects .ls-listing .ls-row{white-space:nowrap}.projects .ls-listing .ls-row .perm{color:var(--text-muted)}.projects .ls-listing .ls-row .size{color:var(--prompt-path)}.projects .ls-listing .ls-row .name{color:var(--accent);margin-left:6px}.projects .project-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:18px}@media (max-width: 738px){.projects .project-grid{grid-template-columns:1fr}}.projects .projects-more{margin-top:24px}.projects .projects-more .show-more{width:100%;display:flex;align-items:center;justify-content:center;gap:12px;padding:16px 22px;border:1.5px solid var(--accent);border-radius:var(--radius);background:var(--accent-soft);color:var(--accent);font-family:var(--font-mono);font-size:14.5px;font-weight:600;cursor:pointer;box-shadow:var(--glow);animation:more-pulse 2.4s ease-in-out infinite;transition:transform .16s ease,background .16s ease,box-shadow .16s ease}.projects .projects-more .show-more .label{display:inline-flex;align-items:baseline;gap:10px}.projects .projects-more .show-more .hint{color:var(--text-secondary);font-weight:400;font-size:12.5px}.projects .projects-more .show-more .hint:before{content:"· ";color:var(--text-muted)}.projects .projects-more .show-more .chev{display:inline-block;font-size:16px;line-height:1;animation:chev-bounce 1.4s ease-in-out infinite}.projects .projects-more .show-more:hover{transform:translateY(-2px);background:color-mix(in srgb,var(--accent) 22%,transparent);animation-play-state:paused}.projects .projects-more .show-more.is-open{animation:none;border-style:dashed;background:var(--bg-deep);box-shadow:none}.projects .projects-more .show-more.is-open .chev{transform:rotate(180deg);animation:none}@keyframes chev-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}@keyframes more-pulse{0%,to{box-shadow:0 0 0 0 var(--accent-soft)}50%{box-shadow:0 0 0 6px transparent,var(--glow)}}.projects .project-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-deep);overflow:hidden;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.projects .project-card:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:var(--shadow),var(--glow)}.projects .project-card:hover .thumb img{transform:scale(1.04)}.projects .project-card .card-bar{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--border);background:var(--surface-elevated);font-family:var(--font-mono);font-size:12px;color:var(--text-muted)}.projects .project-card .card-bar .open{color:var(--accent)}.projects .project-card .card-bar .slug{color:var(--text-secondary)}.projects .project-card .thumb{position:relative;flex:0 0 auto;aspect-ratio:16/10;overflow:visible;background:var(--surface);border-bottom:1px solid var(--border)}.projects .project-card .thumb .thumb-inner{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.projects .project-card .thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease}.projects .project-card .thumb .architecture-thumb{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;background:radial-gradient(circle at 50% 0%,var(--accent-soft),transparent 58%),linear-gradient(145deg,var(--surface-elevated),var(--bg-deep));font-family:var(--font-mono);font-size:12px;color:var(--text-secondary)}.projects .project-card .thumb .architecture-thumb>span,.projects .project-card .thumb .architecture-thumb div span{padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.projects .project-card .thumb .architecture-thumb>span:first-child{border-color:var(--accent);color:var(--accent);box-shadow:var(--glow)}.projects .project-card .thumb .architecture-thumb>i{color:var(--prompt-path);font-style:normal;line-height:1}.projects .project-card .thumb .architecture-thumb div{display:flex;gap:8px}.projects .project-card .card-body{display:flex;flex-direction:column;gap:12px;padding:18px;flex:1}.projects .project-card .card-body h3{font-family:var(--font-mono);font-size:18px;line-height:1.25;min-height:2.5em;color:var(--text-primary)}.projects .project-card .card-body p{font-size:14px;line-height:1.65;color:var(--text-secondary)}.projects .project-card .card-body .tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.projects .project-card .card-body .tags span{padding:3px 8px;border:1px solid var(--border);border-radius:999px;background:var(--surface-soft);font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}.projects .project-card .card-body .links{display:flex;flex-wrap:wrap;gap:10px;padding-top:4px}.projects .project-card .card-body .links a,.projects .project-card .card-body .links button{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:12.5px;cursor:pointer;border:1px solid var(--border-strong);background:var(--surface-soft);color:var(--text-primary);transition:transform .16s ease,border-color .16s ease,background .16s ease}.projects .project-card .card-body .links a img,.projects .project-card .card-body .links button img{width:15px;height:15px;object-fit:contain}.projects .project-card .card-body .links a.primary,.projects .project-card .card-body .links button.primary{border-color:var(--accent);color:var(--accent)}.projects .project-card .card-body .links a:hover,.projects .project-card .card-body .links button:hover{transform:translateY(-2px);border-color:var(--accent)}.projects .project-card .card-body .links .disabled{color:var(--text-muted);cursor:not-allowed}.projects .project-card .card-body .links .disabled:hover{transform:none;border-color:var(--border-strong)}.contact-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:28px}@media (max-width: 1024px){.contact-grid{grid-template-columns:1fr}}.contact-grid .contact-info{display:flex;flex-direction:column;gap:18px}.contact-grid .contact-info .info-item .label{font-family:var(--font-mono);font-size:12px;color:var(--prompt-path)}.contact-grid .contact-info .info-item .label:before{content:"› ";color:var(--accent)}.contact-grid .contact-info .info-item .value{margin-top:4px;font-size:15px;color:var(--text-secondary);word-break:break-word}.contact-grid .contact-info .info-item .value a:hover{color:var(--accent)}.contact-grid .contact-info .socials{display:flex;gap:10px;margin-top:4px}.contact-grid .contact-info .socials a{width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-deep);transition:transform .16s ease,border-color .16s ease}.contact-grid .contact-info .socials a:hover{transform:translateY(-2px);border-color:var(--accent)}.contact-grid .contact-info .socials a img{width:20px;height:20px;object-fit:contain}.contact-grid .contact-form{display:flex;flex-direction:column;gap:14px}.contact-grid .contact-form .field-label{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);margin-bottom:6px;display:block}.contact-grid .contact-form .field-label .star{color:var(--accent)}.contact-grid .contact-form input,.contact-grid .contact-form textarea{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-deep);color:var(--text-primary);font-family:var(--font-mono);font-size:13.5px;resize:vertical;transition:border-color .16s ease,box-shadow .16s ease}.contact-grid .contact-form input::placeholder,.contact-grid .contact-form textarea::placeholder{color:var(--text-muted)}.contact-grid .contact-form input:focus,.contact-grid .contact-form textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.contact-grid .contact-form textarea{min-height:150px}.contact-grid .contact-form button[type=submit]{align-self:flex-start;padding:12px 22px;border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--accent);color:var(--bg-deep);font-family:var(--font-mono);font-size:13.5px;font-weight:600;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,opacity .16s ease}.contact-grid .contact-form button[type=submit]:hover{transform:translateY(-2px);box-shadow:var(--glow)}.contact-grid .contact-form .form-status{font-family:var(--font-mono);font-size:13px;padding:10px 12px;border-radius:var(--radius-sm)}.contact-grid .contact-form .form-status.error{color:var(--term-red);border:1px solid var(--term-red);background:rgba(248,113,113,.1)}.contact-grid .contact-form .form-status.success{color:var(--accent);border:1px solid var(--accent);background:var(--accent-soft)}.recruiter-banner{position:relative;width:100%;display:flex;align-items:center;gap:14px;padding:11px clamp(16px,5vw,40px);border:none;border-bottom:1px solid var(--accent-line);background:linear-gradient(90deg,var(--accent-soft),transparent 60%),var(--surface);color:var(--text-primary);font-family:var(--font-mono);text-align:left;cursor:pointer;overflow:hidden;transition:background .25s ease}.recruiter-banner:hover{background:linear-gradient(90deg,var(--accent-soft),transparent 70%),var(--surface-elevated)}.recruiter-banner__glow{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(100deg,transparent 20%,var(--accent-soft) 50%,transparent 80%);transform:translate(-120%);opacity:0;transition:opacity .2s ease}.recruiter-banner:hover .recruiter-banner__glow{opacity:1;animation:banner-sweep 1.1s ease forwards}.recruiter-banner__emoji{font-size:18px;line-height:1;flex-shrink:0;filter:saturate(1.1)}.recruiter-banner__text{font-size:13px;line-height:1.4;color:var(--text-secondary);min-width:0}.recruiter-banner__text strong{color:var(--accent);font-weight:600}.recruiter-banner__text .sep:before{content:"·";margin:0 6px;color:var(--text-muted)}.recruiter-banner__cta{margin-left:auto;flex-shrink:0;display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--bg-deep);background:var(--accent);padding:7px 14px;border-radius:999px;box-shadow:var(--glow);white-space:nowrap}.recruiter-banner__cta .arrow{transition:transform .2s ease}.recruiter-banner:hover .recruiter-banner__cta .arrow{transform:translate(4px)}@keyframes banner-sweep{0%{transform:translate(-120%)}to{transform:translate(120%)}}@media (max-width: 720px){.recruiter-banner{flex-wrap:wrap;gap:10px 12px}.recruiter-banner__text{flex:1 1 100%;order:2}.recruiter-banner__text .sep:before{content:"";margin:0}.recruiter-banner__text .sep{display:block;height:0}.recruiter-banner__cta{order:3;margin-left:0}}@media (prefers-reduced-motion: reduce){.recruiter-banner__glow{display:none}}.scrolltop{position:fixed;right:clamp(16px,4vw,28px);bottom:clamp(16px,4vw,28px);z-index:950;display:inline-flex;align-items:center;gap:6px;padding:9px 13px;border-radius:999px;cursor:pointer;white-space:nowrap;font-weight:600;opacity:0;transform:translateY(14px) scale(.94);pointer-events:none;transition:opacity .25s ease,transform .25s cubic-bezier(.22,1,.36,1),border-color .2s ease,color .2s ease,box-shadow .2s ease,background .2s ease}.scrolltop.is-visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.scrolltop .caret{line-height:1;transition:transform .2s ease}.scrolltop:hover .caret{transform:translateY(-2px)}.scrolltop--terminal{font-family:var(--font-mono);font-size:12.5px;color:var(--accent);background:var(--surface-elevated);border:1px solid var(--accent-line);box-shadow:0 6px 20px #00000073}.scrolltop--terminal .caret{color:var(--accent);font-weight:700}.scrolltop--terminal:hover{border-color:var(--accent);box-shadow:var(--glow),0 6px 20px #00000073;background:var(--surface)}.scrolltop--simple{font-family:var(--font-body);font-size:13px;color:#1c1b18;background:#fff;border:1px solid #e0ddd3;box-shadow:0 8px 22px #1c1b181a}.scrolltop--simple .caret{color:#1f6f54;font-weight:700}.scrolltop--simple:hover{color:#1f6f54;border-color:#1f6f54;box-shadow:0 10px 26px #1f6f542e}@media (prefers-reduced-motion: reduce){.scrolltop{transition:opacity .15s ease;transform:none}.scrolltop.is-visible{transform:none}}html[data-mode=simple]{color-scheme:dark;scroll-padding-top:48px;--bg: #101010;--bg-deep: #101010;--surface: #181818;--border: #2b2b2b;--border-strong: #414141;--text-primary: #e0e0e0;--text-secondary: #b5b5b5;--text-muted: #9d9d9d;--accent: #4daafc;--accent-soft: #4daafc12;--selection-bg: #264f78}html[data-mode=simple] body{background:var(--bg)}html[data-mode=simple] body:before{display:none}.simple{--p-bg: #101010;--p-panel: #181818;--p-line: #2b2b2b;--p-text: #e0e0e0;--p-muted: #9d9d9d;--p-link: #4daafc;min-height:100vh;background:var(--p-bg);color:var(--p-text);font-family:IBM Plex Sans,Helvetica Neue,sans-serif;font-size:15px;line-height:1.7;cursor:auto}.simple a,.simple button,.simple summary{-webkit-tap-highlight-color:transparent}.simple button,.simple input,.simple textarea{font-family:inherit}.simple a:focus-visible,.simple button:focus-visible,.simple summary:focus-visible,.simple input:focus-visible,.simple textarea:focus-visible{outline:2px solid var(--p-link);outline-offset:5px;border-radius:3px}.simple a{text-underline-offset:5px;text-decoration-thickness:1px}.simple-skip{position:fixed;z-index:100;top:12px;left:16px;padding:10px 16px;background:var(--p-panel);color:var(--p-text);transform:translateY(-180%)}.simple-skip:focus{transform:translateY(0)}.simple-layout{display:grid;grid-template-columns:220px minmax(0,680px);gap:100px;width:min(1000px,100% - 96px);margin:0 auto;padding:100px 0 48px}.simple-sidebar{position:sticky;top:80px;align-self:start}.simple-name{display:inline-block}.simple-name h1{font-size:36px;line-height:1.2;font-weight:500;letter-spacing:-.035em}.simple-role{font-size:16px;line-height:1.6;margin-top:16px;max-width:200px}.simple-location{color:var(--p-muted);font-size:13px;margin-top:16px}.simple-status{color:var(--p-muted);font-size:12px;margin-top:4px}.simple-nav{display:flex;flex-direction:column;align-items:stretch;gap:6px;margin-top:30px}.simple-nav a{display:inline-flex;align-items:center;min-height:40px;padding:7px 12px;border:1px solid #333;border-radius:4px;background:#181818;font-size:13px;color:#ccc}.simple-nav a:hover{background:#252525;border-color:#666;color:#fff}.simple-sidebar-links{margin-top:24px}.simple-resume{display:inline-flex;align-items:center;justify-content:center;gap:12px;width:100%;min-height:44px;padding:8px 14px;border:1px solid #1688df;border-radius:4px;background:#0078d4;color:#fff;font-size:13px}.simple-resume span{color:#fff;font-size:10px;border:1px solid rgba(255,255,255,.3333333333);border-radius:3px;padding:0 5px;line-height:18px}.simple-resume:hover{background:#026ec1}.simple-socials{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:10px}.simple-socials a{display:inline-flex;justify-content:center;align-items:center;min-height:40px;padding:6px;border:1px solid #414141;border-radius:4px;background:#181818;font-size:11px;color:#ccc}.simple-socials a:hover{background:#252525;border-color:#666;color:#fff}.simple-content{min-width:0}.simple-intro{padding-bottom:48px}.simple-lead{font-size:28px;line-height:1.5;letter-spacing:-.025em;font-weight:400;text-wrap:pretty}.simple-focus{margin-top:24px;font-size:13px;color:var(--p-muted);line-height:1.8}.simple-section{scroll-margin-top:16px;border:1px solid #333;border-radius:8px;background:#131313}.simple-section+.simple-section{margin-top:32px}.simple-section-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px 24px;margin-bottom:0;padding:16px 24px;border-bottom:1px solid #333;border-radius:7px 7px 0 0;background:#1c1c1c}.simple-section-head h2{font-size:16px;font-weight:500;color:#eee}.simple-section-head>p{color:var(--p-muted);font-size:12px}.work-index{padding:0 24px}.work-entry{border-bottom:1px solid var(--p-line)}.work-entry:last-child{border-bottom:none}.work-entry>summary{display:flex;align-items:center;gap:20px;list-style:none;padding:18px 0;cursor:pointer}.work-entry>summary::-webkit-details-marker{display:none}.work-entry>summary:hover h3{color:#fff}.work-entry>summary:hover .work-toggle{background:#2b2b2b;border-color:#777}.work-entry h3{flex:1;min-width:0;font-size:16px;font-weight:400;line-height:1.5}.work-thumbnail{display:grid;place-items:center;flex:0 0 56px;width:56px;height:42px;overflow:hidden;border:1px solid var(--p-line);border-radius:4px;background:var(--p-panel);color:var(--p-muted)}.work-thumbnail img{display:block;width:100%;height:100%;object-fit:cover}.work-toggle{display:grid;place-items:center;width:28px;height:28px;flex-shrink:0;border:1px solid #4a4a4a;border-radius:4px;background:#1f1f1f;color:#ccc}.work-toggle>span{grid-area:1/1;width:10px;height:1px;background:currentColor}.work-toggle>span:last-child{transform:rotate(90deg);transition:transform .16s ease}.work-entry[open]>summary h3{color:#fff}.work-entry[open] .work-toggle{border-color:var(--p-link);color:var(--p-link)}.work-entry[open] .work-toggle>span:last-child{transform:rotate(0)}.work-detail{padding:0 0 32px 76px}.work-preview{position:relative;aspect-ratio:1.7;overflow:hidden;border:1px solid var(--p-line);background:var(--p-panel);border-radius:5px}.work-preview>img,.work-preview>.work-architecture{position:absolute;top:16px;right:16px;bottom:16px;left:16px;width:calc(100% - 32px);height:calc(100% - 32px)}.work-preview>img{display:block;object-fit:contain}.work-architecture{display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px;line-height:1.5;color:var(--p-text)}.work-architecture span{padding:6px 16px;border:1px solid #414141;border-radius:3px;background:#1f1f1f}.work-architecture i{font-style:normal;line-height:1;padding:3px;color:var(--p-muted)}.work-architecture>div{display:flex;justify-content:center;gap:10px}.work-description{margin-top:22px;font-size:15px;line-height:1.85;color:#b5b5b5}.work-technologies{display:flex;flex-wrap:wrap;gap:2px 7px;list-style:none;font-size:12px;color:var(--p-muted);margin-top:16px}.work-technologies li:not(:last-child):after{content:","}.work-links{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;margin-top:14px;font-size:13px}.work-links a{display:inline-flex;align-items:center;min-height:44px;padding:8px 14px;border:1px solid #414141;border-radius:4px;background:#1f1f1f;color:var(--p-text)}.work-links a:hover{border-color:var(--p-link);background:#242424}.work-links>span{color:var(--p-muted)}.simple-prose{color:#b5b5b5;font-size:16px;line-height:1.9;display:flow-root;padding:24px}.simple-prose p+p{margin-top:20px}.simple-portrait{float:right;width:84px;height:84px;object-fit:cover;border-radius:8px;margin:6px 0 20px 28px;background:var(--p-panel)}.simple-skills{padding:24px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px 36px}.skill-block h3{font-size:14px;font-weight:500;margin-bottom:10px}.skill-block ul{list-style:none;color:var(--p-muted);font-size:13px;line-height:2}.simple-contact-note{color:#b5b5b5;font-size:15px;line-height:1.8;margin-bottom:0;padding:24px 24px 0}.simple .contact-grid{padding:24px;grid-template-columns:1fr;gap:36px}.simple .contact-grid .contact-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 32px}.simple .contact-grid .contact-info .info-item:first-child{grid-column:1/-1}.simple .contact-grid .contact-info .info-item .label{font-family:inherit;font-size:12px;color:var(--p-muted);text-transform:capitalize}.simple .contact-grid .contact-info .info-item .label:before{content:none}.simple .contact-grid .contact-info .info-item .value{font-size:14px;color:var(--p-text);margin-top:3px}.simple .contact-grid .contact-info .socials a{background:var(--p-panel);border-color:var(--p-line);width:44px;height:44px;border-radius:4px}.simple .contact-grid .contact-info .socials a:hover{transform:none}.simple .contact-grid .contact-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.simple .contact-grid .contact-form>div:nth-child(3),.simple .contact-grid .contact-form>button,.simple .contact-grid .contact-form>.form-status{grid-column:1/-1}.simple .contact-grid .contact-form .field-label{font-family:inherit;font-size:12px;color:var(--p-muted);text-transform:capitalize}.simple .contact-grid .contact-form .field-label .star{color:var(--p-muted)}.simple .contact-grid .contact-form input,.simple .contact-grid .contact-form textarea{background:var(--p-panel);border-color:var(--p-line);border-radius:4px;font-family:inherit;font-size:14px;line-height:1.7;color:var(--p-text);padding:10px 12px}.simple .contact-grid .contact-form input::placeholder,.simple .contact-grid .contact-form textarea::placeholder{color:var(--p-muted);opacity:1}.simple .contact-grid .contact-form input:focus,.simple .contact-grid .contact-form textarea:focus{border-color:var(--p-link);box-shadow:none}.simple .contact-grid .contact-form textarea{min-height:140px}.simple .contact-grid .contact-form button[type=submit]{justify-self:start;min-height:44px;padding:10px 18px;background:#0078d4;border:1px solid #1688df;border-radius:4px;color:#fff;font-family:inherit;font-size:13px;font-weight:400}.simple .contact-grid .contact-form button[type=submit]:hover{background:#026ec1;transform:none;box-shadow:none}.simple-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:72px;padding:24px 0;border-top:1px solid var(--p-line);font-size:11px;color:var(--p-muted)}.simple-foot button{min-height:44px;background:transparent;border:none;padding:0;color:inherit;font-size:11px;cursor:pointer}.simple-foot button:hover{color:var(--p-text);text-decoration:underline;text-underline-offset:5px}.simple .scrolltop--simple{min-height:44px;background:var(--p-panel);border-color:var(--p-line);color:var(--p-text);font-family:inherit;font-weight:400;box-shadow:none}.simple .scrolltop--simple .caret{color:var(--p-muted)}.simple .scrolltop--simple:hover{border-color:#414141;box-shadow:none}@media (max-width: 1100px){.simple-layout{grid-template-columns:190px minmax(0,1fr);gap:64px;width:calc(100% - 80px);padding-top:72px}.simple-sidebar{top:64px}.simple-name h1{font-size:32px}.simple-lead{font-size:25px}.simple-skills{column-gap:24px}}@media (max-width: 760px){html[data-mode=simple]{scroll-padding-top:24px}.simple-layout{display:block;width:min(560px,100% - 48px);padding-top:44px}.simple-sidebar{position:static}.simple-name h1{font-size:32px}.simple-role{max-width:none;margin-top:10px;font-size:15px}.simple-location{margin-top:12px}.simple-status{margin-top:0}.simple-sidebar-links{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px;margin-top:18px}.simple-resume{width:auto;gap:8px;padding-inline:12px}.simple-socials{flex:1;min-width:180px;gap:6px;margin-top:0}.simple-socials a{min-height:44px}.simple-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:20px}.simple-nav a{justify-content:center;min-height:44px;padding:6px;font-size:12px}.simple-content{margin-top:44px}.simple-intro{padding-bottom:44px}.simple-lead{font-size:24px;line-height:1.5}.simple-focus{margin-top:20px;font-size:12px}.simple-section+.simple-section{margin-top:28px}.simple-section-head{display:block;margin-bottom:0;padding:16px 18px}.simple-section-head>p{margin-top:4px}.work-index{padding:0 18px}.simple-prose,.simple-skills,.simple .contact-grid{padding:18px}.simple-contact-note{padding:18px 18px 0}.work-entry>summary{gap:14px;padding:17px 0}.work-entry h3{font-size:15px}.work-thumbnail{width:44px;height:34px;flex-basis:44px}.work-toggle{width:24px}.work-detail{padding-left:0}.work-description{font-size:14px}.simple-prose{font-size:15px}.simple-portrait{width:64px;height:64px;margin-left:18px}.simple-skills{grid-template-columns:1fr;gap:28px}.skill-block ul{font-size:14px;line-height:1.9}.simple .contact-grid .contact-form{grid-template-columns:1fr}.simple-foot{margin-top:56px;padding-bottom:70px}}@media (max-width: 380px){.simple-layout{width:calc(100% - 36px)}.simple-nav{gap:6px}.simple-sidebar-links{gap:0 20px}.simple-socials{gap:6px}.simple-lead{font-size:22px}.work-architecture{font-size:10px}.work-architecture span{padding:5px 10px}}@media (max-height: 650px) and (min-width: 761px){.simple-sidebar{position:static}}
