:root{--bg: #fcfbf8;--surface: #ffffff;--surface-2: #f5f4ef;--ink: #16161a;--muted: #6a6a72;--faint: #9b9ba2;--line: #e7e5dd;--line-strong: #d8d6cd;--accent: #1f43e0;--accent-soft: #eaeefe;--sans: "Inter", system-ui, -apple-system, sans-serif;--display: "Space Grotesk", "Inter", sans-serif;--mono: "Space Mono", "SFMono-Regular", monospace;--maxw: 1080px;--gutter: clamp(1.25rem, 5vw, 5rem);--radius: 12px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-weight:400;line-height:1.6;font-feature-settings:"cv11","ss01";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter)}.section{padding-top:clamp(4.5rem,11vw,9rem);padding-bottom:clamp(4.5rem,11vw,9rem)}.rule{height:1px;background:var(--line);border:0}.eyebrow{display:flex;align-items:center;gap:.7rem;font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:1.4rem}.eyebrow .idx{color:var(--faint)}.eyebrow .bar{flex:0 0 auto;width:26px;height:1px;background:var(--line-strong)}.section-title{font-family:var(--display);font-weight:600;font-size:clamp(1.9rem,4vw,2.9rem);line-height:1.08;letter-spacing:-.025em;color:var(--ink)}.lede{color:var(--muted);font-size:clamp(1rem,1.4vw,1.12rem);line-height:1.75}.nav{position:fixed;inset:0 0 auto 0;z-index:100;transition:background .3s ease,border-color .3s ease,backdrop-filter .3s;border-bottom:1px solid transparent}.nav.scrolled{background:#fcfbf8c7;-webkit-backdrop-filter:saturate(180%) blur(16px);backdrop-filter:saturate(180%) blur(16px);border-bottom-color:var(--line)}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:68px}.nav-logo{font-family:var(--display);font-weight:700;font-size:1.05rem;letter-spacing:-.02em}.nav-logo .dot{color:var(--accent)}.nav-right{display:flex;align-items:center;gap:1.8rem}.nav-links{display:flex;gap:2rem;list-style:none}.lang-switch{display:inline-flex;align-items:center}.lang-opt{font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;color:var(--faint);background:none;border:0;padding:0 .35rem;cursor:pointer;transition:color .2s}.lang-opt:hover{color:var(--muted)}.lang-opt.active{color:var(--ink);font-weight:700}.lang-sep{color:var(--line-strong);font-family:var(--mono);font-size:.74rem}.nav-links a{font-family:var(--mono);font-size:.76rem;letter-spacing:.04em;color:var(--muted);transition:color .2s;position:relative}.nav-links a:after{content:"";position:absolute;left:0;bottom:-5px;width:0;height:1px;background:var(--ink);transition:width .25s ease}.nav-links a:hover{color:var(--ink)}.nav-links a:hover:after{width:100%}.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding-top:8rem;padding-bottom:4rem;position:relative}.hero-badge{display:inline-flex;align-items:center;gap:.6rem;width:fit-content;background:var(--surface);border:1px solid var(--line);border-radius:100px;padding:.4rem .95rem;font-family:var(--mono);font-size:.72rem;letter-spacing:.03em;color:var(--muted);margin-bottom:2.2rem}.hero-badge .ping{width:7px;height:7px;border-radius:50%;background:#16a34a;box-shadow:0 0 #16a34a80;animation:ping 2.4s cubic-bezier(0,0,.2,1) infinite}@keyframes ping{0%{box-shadow:0 0 #16a34a73}70%,to{box-shadow:0 0 0 7px #16a34a00}}.hero-name{font-family:var(--display);font-weight:700;font-size:clamp(3.2rem,12vw,8.5rem);line-height:.94;letter-spacing:-.045em;color:var(--ink)}.hero-name .outline{color:transparent;-webkit-text-stroke:1.4px var(--line-strong)}.hero-roles{display:flex;align-items:center;gap:1rem;margin-top:1.8rem;font-family:var(--mono);font-size:clamp(.8rem,1.4vw,.95rem);color:var(--muted);letter-spacing:.02em}.hero-roles .tick{width:34px;height:1px;background:var(--line-strong)}.hero-roles .role{color:var(--accent);position:relative}.hero-roles .caret{display:inline-block;width:1px;height:1.05em;margin-left:2px;background:var(--accent);vertical-align:text-bottom;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.hero-ctas{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:2.6rem}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.8rem 1.5rem;font-family:var(--sans);font-weight:500;font-size:.92rem;border-radius:8px;border:1px solid transparent;transition:transform .2s ease,background .2s,border-color .2s,color .2s;will-change:transform}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--ink);color:var(--bg)}.btn-primary:hover{background:#000}.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-strong)}.btn-ghost:hover{border-color:var(--ink)}.btn .arrow{transition:transform .2s}.btn:hover .arrow{transform:translate(2px,-2px)}.hero-scroll{position:absolute;left:var(--gutter);bottom:2rem;display:flex;align-items:center;gap:.7rem;font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}.hero-scroll .track{width:44px;height:1px;background:var(--line-strong);position:relative;overflow:hidden}.hero-scroll .track:after{content:"";position:absolute;top:0;right:100%;bottom:0;left:0;background:var(--accent);animation:scan 2.2s ease-in-out infinite}@keyframes scan{0%{top:0;right:100%;bottom:0;left:0}50%{top:0;right:0;bottom:0;left:0}to{top:0;right:0;bottom:0;left:100%}}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:start}.about-photo{position:relative;aspect-ratio:4 / 3;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);background:linear-gradient(150deg,var(--surface-2),#ece9e0)}.about-photo img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;transform:scaleX(-1)}.about-photo .placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;color:var(--faint);font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;text-align:center;padding:1.5rem}.about-photo .placeholder .glyph{font-family:var(--display);font-weight:700;font-size:2.6rem;color:var(--line-strong)}.about-photo .tag{position:absolute;left:14px;bottom:14px;background:var(--ink);color:var(--bg);font-family:var(--mono);font-size:.64rem;letter-spacing:.08em;padding:.35rem .7rem;border-radius:6px}.about-body .section-title{margin-bottom:1.5rem}.about-body p{color:var(--muted);line-height:1.8;margin-bottom:1.1rem}.about-body strong{color:var(--ink);font-weight:600}.about-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;margin-top:2.2rem;padding-top:1.8rem;border-top:1px solid var(--line)}.stat-num{font-family:var(--display);font-weight:700;font-size:2rem;letter-spacing:-.03em}.stat-label{font-family:var(--mono);font-size:.64rem;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin-top:.35rem}.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.1rem;margin-top:3rem}.skills-grid>.skill-card:last-child:nth-child(odd){grid-column:1 / -1}.skill-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.6rem;transition:border-color .25s,transform .25s,box-shadow .25s}.skill-card:hover{border-color:var(--line-strong);transform:translateY(-3px);box-shadow:0 14px 40px -24px #14141a40}.skill-cat{display:flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);margin-bottom:1.1rem}.skill-cat:before{content:"";width:6px;height:6px;border-radius:2px;background:var(--accent)}.tags{display:flex;flex-wrap:wrap;gap:.45rem}.tag{font-family:var(--mono);font-size:.72rem;color:var(--muted);background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:.28rem .6rem;transition:color .2s,border-color .2s,background .2s}.skill-card:hover .tag{color:var(--ink)}.timeline{margin-top:3rem}.tl-item{display:grid;grid-template-columns:150px 1fr;gap:2rem;padding:1.8rem 0;border-top:1px solid var(--line);transition:padding-left .25s ease}.tl-item:last-child{border-bottom:1px solid var(--line)}.tl-item:hover{padding-left:.6rem}.tl-date{font-family:var(--mono);font-size:.74rem;color:var(--faint);letter-spacing:.03em;padding-top:.2rem}.tl-date .now{display:inline-flex;align-items:center;gap:.4rem;color:var(--accent)}.tl-date .now:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}.tl-company{font-family:var(--display);font-weight:600;font-size:1.15rem;letter-spacing:-.015em}.tl-role{font-family:var(--mono);font-size:.74rem;color:var(--accent);letter-spacing:.03em;margin-top:.3rem}.tl-desc{color:var(--muted);font-size:.94rem;line-height:1.75;margin-top:.9rem;max-width:600px}.projects-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.1rem;margin-top:3rem}.project-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.7rem;transition:border-color .25s,transform .25s,box-shadow .25s}.project-card:hover{border-color:var(--line-strong);transform:translateY(-3px);box-shadow:0 16px 44px -26px #14141a4d}.project-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.3rem}.project-no{font-family:var(--mono);font-size:.72rem;color:var(--faint);letter-spacing:.06em}.project-arrow{color:var(--faint);transition:transform .25s,color .25s}.project-card:hover .project-arrow{transform:translate(3px,-3px);color:var(--accent)}.project-name{font-family:var(--display);font-weight:600;font-size:1.15rem;letter-spacing:-.015em;margin-bottom:.6rem}.project-desc{color:var(--muted);font-size:.9rem;line-height:1.7;margin-bottom:1.3rem}.project-stack{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:auto}.lang-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1.1rem;margin-top:3rem}.lang-card{display:flex;align-items:center;gap:1.1rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.4rem 1.5rem;transition:border-color .25s,transform .25s}.lang-card:hover{border-color:var(--line-strong);transform:translateY(-3px)}.lang-flag{font-size:2rem;line-height:1}.lang-info{flex:1}.lang-name{font-family:var(--display);font-weight:600;font-size:1rem}.lang-level{font-family:var(--mono);font-size:.66rem;letter-spacing:.04em;color:var(--muted);margin-top:.15rem}.lang-bar{height:3px;width:100%;background:var(--line);border-radius:3px;margin-top:.7rem;overflow:hidden}.lang-bar span{display:block;height:100%;width:0;background:var(--accent);border-radius:3px;transition:width 1.1s cubic-bezier(.4,0,.2,1)}.contact .section-title{font-size:clamp(2.4rem,6vw,4.2rem);max-width:12ch;margin-bottom:1.4rem}.contact .lede{max-width:46ch}.contact-cta{margin-top:2.2rem}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1.5rem;margin-top:3rem;padding-top:2rem;border-top:1px solid var(--line)}.contact-item .label{font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);display:block;margin-bottom:.4rem}.contact-item a,.contact-item span.val{font-size:.98rem;color:var(--ink);transition:color .2s}.contact-item a:hover{color:var(--accent)}.footer{border-top:1px solid var(--line)}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:2rem 0;font-family:var(--mono);font-size:.68rem;letter-spacing:.04em;color:var(--faint)}.footer-inner a{transition:color .2s}.footer-inner a:hover{color:var(--ink)}.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s cubic-bezier(.16,1,.3,1)}.reveal.in{opacity:1;transform:none}@media(max-width:860px){.about-grid{grid-template-columns:1fr}.about-photo{max-width:480px}.skills-grid,.projects-grid{grid-template-columns:1fr}.tl-item{grid-template-columns:1fr;gap:.6rem}.contact-grid{grid-template-columns:1fr;gap:1.2rem}}@media(max-width:560px){.nav-links{display:none}.about-stats{gap:1rem}.footer-inner{flex-direction:column;align-items:flex-start;gap:.5rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}
