*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f9f9f9;--fg: #111111;--fg-muted: #777777;--fg-subtle: #aaaaaa;--line: #e2e2e2;--accent: #0055ff;--accent-dim: rgba(0, 85, 255, .08);--white: #ffffff;--font: "Inter", system-ui, sans-serif;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--sp-8: 64px;--sp-9: 96px;--sp-10: 128px;--max-w: 1100px;--gutter: 48px}html.dark{--bg: #0c0c0c;--fg: #eeeeee;--fg-muted: #b0b0b0;--fg-subtle: #858585;--line: #222222;--accent: #4488ff;--accent-dim: rgba(68, 136, 255, .15);--white: #141414}html{scroll-behavior:smooth;font-size:16px}body{background:var(--bg);color:var(--fg);font-family:var(--font);font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden;transition:background-color .3s ease,color .3s ease}*{cursor:none!important}#cursor{position:fixed;width:10px;height:10px;background:var(--accent);border-radius:50%;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);transition:transform .1s,width .25s,height .25s,background .25s;mix-blend-mode:normal}#cursor.hover{width:40px;height:40px;background:var(--accent-dim);border:1px solid var(--accent)}.container{max-width:var(--max-w);margin:0 auto;padding:0 var(--gutter)}.theme-toggle{position:absolute;top:40px;right:var(--gutter);z-index:1000;background:var(--bg);border:none;width:44px;height:44px;border-radius:50%;color:var(--fg);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1)}.theme-toggle:hover{transform:scale(1.05);color:var(--accent)}.theme-toggle svg{width:18px;height:18px}.sun-icon{display:block}.moon-icon,html.dark .sun-icon{display:none}html.dark .moon-icon{display:block}.hero{padding-top:var(--sp-10);padding-bottom:var(--sp-10);border-bottom:1px solid var(--line)}.hero-inner{max-width:var(--max-w);margin:0 auto;padding:0 var(--gutter);display:grid;grid-template-columns:1fr 340px;gap:var(--sp-8);align-items:end}.hero-kicker{font-size:.6875rem;font-weight:400;letter-spacing:.16em;text-transform:uppercase;margin-bottom:var(--sp-5)}.hero-name{font-size:clamp(48px,7vw,96px);font-weight:500;letter-spacing:-.04em;line-height:1.1;color:var(--fg);margin-bottom:var(--sp-6);white-space:nowrap}.hero-tagline{font-size:1rem;font-weight:400;color:var(--fg-muted);max-width:420px;line-height:1.75;margin-bottom:var(--sp-7)}.hero-cta-row{display:flex;align-items:center;gap:var(--sp-5)}.btn-primary{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:var(--white);background:var(--fg);padding:11px 22px;text-decoration:none;border:1px solid var(--fg);transition:background .2s,color .2s}.btn-primary:hover{background:var(--accent);border-color:var(--accent)}.btn-ghost{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:var(--fg-muted);text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:1px;transition:color .18s,border-color .18s}.btn-ghost:hover{color:var(--fg);border-color:var(--fg)}.hero-sidebar{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-5);border:1px solid var(--line);background:var(--white);align-self:end}.sidebar-row{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--sp-3) 0;border-bottom:1px solid var(--line);font-size:.8125rem}.sidebar-row:last-child{border-bottom:none;padding-bottom:0}.sidebar-label{font-size:.6875rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-subtle)}.sidebar-val{font-size:.8125rem;color:var(--fg);text-align:right}.sidebar-val a{color:var(--accent);text-decoration:none}.sidebar-val a:hover{text-decoration:underline}section{border-bottom:1px solid var(--line)}.sec-pad{padding:var(--sp-9) var(--gutter)}.sec-header{display:flex;align-items:baseline;gap:var(--sp-4);margin-bottom:var(--sp-7)}.sec-num{font-size:.6875rem;font-weight:500;letter-spacing:.1em;color:var(--fg-subtle);font-variant-numeric:tabular-nums}.sec-title{font-size:.6875rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted)}.sec-rule{flex:1;height:1px;background:var(--line)}.sec-headline{font-size:clamp(28px,3.5vw,44px);font-weight:300;letter-spacing:-.03em;line-height:1.1;color:var(--fg);margin-bottom:var(--sp-7)}.sec-headline strong{font-weight:600}.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.skill-group{background:var(--white);padding:var(--sp-6) var(--sp-6)}.skill-group-label{font-size:.6875rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-subtle);margin-bottom:var(--sp-5);padding-bottom:var(--sp-3);border-bottom:1px solid var(--line)}.skill-list{list-style:none;display:flex;flex-direction:column;gap:0}.skill-item{font-size:.9375rem;font-weight:400;color:var(--fg);padding:var(--sp-3) 0;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;transition:color .18s,padding-left .18s}.skill-item:last-child{border-bottom:none}.skill-item:after{content:"";display:block;width:4px;height:4px;border-radius:50%;background:var(--line);flex-shrink:0;transition:background .18s}.skill-item:hover{color:var(--accent)}.skill-item:hover:after{background:var(--accent)}.exp-list{display:flex;flex-direction:column;gap:0}.exp-item{display:grid;grid-template-columns:200px 1fr;gap:var(--sp-7);padding:var(--sp-7) 0;border-bottom:1px solid var(--line);position:relative}.exp-item:last-child{border-bottom:none}.exp-meta{padding-top:2px}.exp-period{font-size:.6875rem;font-weight:500;letter-spacing:.06em;color:var(--fg-subtle);margin-bottom:var(--sp-2);text-transform:uppercase}.exp-type-badge{display:inline-block;font-size:.625rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);background:var(--accent-dim);padding:2px 8px}.exp-company{font-size:1.25rem;font-weight:600;letter-spacing:-.02em;color:var(--fg);margin-bottom:var(--sp-1)}.exp-role{font-size:.875rem;font-weight:400;color:var(--fg-muted);margin-bottom:var(--sp-5)}.exp-bullets{list-style:none;display:flex;flex-direction:column;gap:var(--sp-3);margin-bottom:var(--sp-5)}.exp-bullets li{font-size:.875rem;line-height:1.7;color:var(--fg-muted);padding-left:var(--sp-4);position:relative}.exp-bullets li:before{content:"";position:absolute;left:0;top:10px;width:5px;height:1px;background:var(--fg-subtle)}.exp-tags{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.exp-tag{font-size:.6875rem;font-weight:500;letter-spacing:.04em;color:var(--fg-muted);background:var(--bg);border:1px solid var(--line);padding:4px 10px}.projects-list{display:flex;flex-direction:column;gap:0}.project-item{display:grid;grid-template-columns:1fr 220px;align-items:center;gap:var(--sp-6);padding:var(--sp-6) 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--fg);transition:background .2s;position:relative}.project-item:before{content:"";position:absolute;left:calc(-1 * var(--gutter));right:calc(-1 * var(--gutter));top:0;bottom:0;background:var(--accent-dim);opacity:0;transition:opacity .2s;pointer-events:none}.project-item:hover:before{opacity:1}.project-item:last-child{border-bottom:none}.project-idx{font-size:.6875rem;font-weight:500;letter-spacing:.06em;color:var(--fg-subtle);font-variant-numeric:tabular-nums}.project-title{font-size:1.0625rem;font-weight:500;letter-spacing:-.01em;color:var(--fg);margin-bottom:var(--sp-1);transition:color .18s}.project-item:hover .project-title{color:var(--accent)}.project-desc{font-size:.8125rem;color:var(--fg-muted);line-height:1.6}.project-link-label{font-size:.75rem;font-weight:500;letter-spacing:.06em;color:var(--fg-subtle);text-align:right;display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);transition:color .18s}.project-item:hover .project-link-label{color:var(--accent)}.arrow-icon{display:inline-block;transition:transform .18s}.project-item:hover .arrow-icon{transform:translate(3px,-3px)}.cta-section{padding:var(--sp-10) 0;border-bottom:none}.cta-inner{max-width:var(--max-w);margin:0 auto;padding:0 var(--gutter);display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-8);align-items:center}.cta-headline{font-size:clamp(36px,4.5vw,60px);font-weight:300;letter-spacing:-.04em;line-height:1.05;color:var(--fg)}.cta-headline strong{font-weight:600}.cta-headline em{font-style:normal;color:var(--accent)}.cta-copy{font-size:.9375rem;color:var(--fg-muted);line-height:1.75;margin-bottom:var(--sp-6)}.cta-links{display:flex;flex-direction:column;gap:0;border-top:1px solid var(--line)}.cta-link{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-4) 0;border-bottom:1px solid var(--line);font-size:.8125rem;font-weight:500;color:var(--fg);text-decoration:none;transition:color .18s,padding-left .18s}.cta-link:hover{color:var(--accent);padding-left:var(--sp-2)}footer{padding:var(--sp-5) 0;border-top:1px solid var(--line)}.footer-inner{max-width:var(--max-w);margin:0 auto;padding:0 var(--gutter);display:flex;justify-content:space-between;align-items:center}.footer-copy{font-size:.6875rem;color:var(--fg-subtle);letter-spacing:.04em}.footer-copy span{color:var(--accent)}.footer-right{font-size:.6875rem;color:var(--fg-subtle);letter-spacing:.04em}.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.22,1,.36,1)}.reveal.visible{opacity:1;transform:none}@media (max-width: 860px){:root{--gutter: 24px;--sp-10: 80px;--sp-9: 64px}.hero{padding-top:var(--sp-10)}.hero-inner{grid-template-columns:1fr;text-align:left;gap:var(--sp-7)}.hero-name{font-size:clamp(40px,12vw,64px)}.avatar{max-width:280px;margin:0 auto}aside{order:-1;display:flex;justify-content:flex-start}.hero-sidebar{display:none}.skills-grid{grid-template-columns:1fr}.exp-item{grid-template-columns:1fr;gap:var(--sp-3)}.project-item{grid-template-columns:1fr;gap:var(--sp-2);padding:var(--sp-5) 0}.project-info{padding-right:0}.project-link-label{display:none}.cta-inner{grid-template-columns:1fr;gap:var(--sp-7)}.cta-headline{font-size:32px}.sec-headline{margin-bottom:var(--sp-5)}.theme-toggle{top:24px;right:var(--gutter);width:40px;height:40px}#cursor{display:none!important}*{cursor:auto!important}}@media (max-width: 480px){.theme-toggle{top:16px;right:16px;width:40px;height:40px}}.avatar{max-width:100%;height:auto;border-radius:50%;filter:grayscale(10%) contrast(105%)}
