:root{--bg: #f5f5f7;--surface: #ffffff;--ink: #1a1a2e;--indigo: #2d2b55;--coral: #ff6b6b;--muted: #666666;--line: rgba(26, 26, 46, .12);--maxw: 1440px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}a{color:inherit}.skip-link{position:absolute;left:1rem;top:-100px;z-index:100;padding:.75rem 1.25rem;background:var(--indigo);color:#fff;font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.8rem;text-decoration:none;border-radius:4px;transition:top .2s ease}.skip-link:focus{top:1rem;outline:2px solid var(--coral);outline-offset:2px}nav{position:fixed;top:0;left:0;width:100%;display:flex;justify-content:space-between;align-items:center;padding:1.5rem 2rem;z-index:50;border-bottom:1px solid transparent;transition:background .35s ease,border-color .35s ease,padding .35s ease}nav.scrolled{background:#f5f5f7d9;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom-color:var(--line);padding:1rem 2rem}.site-name a{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-weight:500;font-size:1rem;letter-spacing:-.01em;text-decoration:none;color:var(--ink);transition:color .35s ease}.menu{display:flex;gap:1.75rem}.nav-toggle{display:none;background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--ink);z-index:60;padding:.25rem;line-height:1}nav.scrolled .nav-toggle{color:var(--ink)}.menu a{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.78rem;text-transform:uppercase;letter-spacing:.09em;text-decoration:none;color:var(--ink);position:relative;padding-bottom:3px;transition:color .35s ease}.menu a:after{content:"";position:absolute;left:0;bottom:0;width:0;height:1.5px;background:var(--coral);transition:width .3s ease}.menu a:hover:after{width:100%}nav.scrolled .site-name a,nav.scrolled .menu a{color:var(--ink)}.hero{position:relative;width:100%;height:100svh;min-height:460px;overflow:hidden;background:var(--bg)}.hero-portrait{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 28%;display:block}.section{padding:112px 32px;scroll-margin-top:80px}.section-figure{margin:0 0 2.6rem}.section-figure[hidden]{display:none}.section-figure img{display:block;width:100%;height:auto;aspect-ratio:21 / 9;object-fit:cover;border-radius:4px;background:var(--line)}.section-figure figcaption{margin-top:.7rem;font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.container{max-width:var(--maxw);margin:0 auto}.section-label{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.78rem;text-transform:uppercase;letter-spacing:.16em;color:var(--coral);margin-bottom:1.6rem}.section-title{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-weight:500;font-size:clamp(1.7rem,4vw,2.9rem);line-height:1.08;letter-spacing:-.02em;color:var(--indigo);margin-bottom:2rem}.about-editorial{max-width:900px}.about-editorial .about-greeting{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:24px;font-weight:500;color:var(--coral);letter-spacing:.02em;margin-bottom:16px}.about-editorial .section-label{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:18px;font-weight:500;color:var(--coral);letter-spacing:.02em;margin-bottom:16px}.about-editorial .accent{color:var(--coral)}.about-editorial .section-title{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:72px;font-weight:700;line-height:1.05;letter-spacing:-.04em;color:var(--ink);margin-bottom:24px}.divider{display:flex;align-items:center;gap:8px;margin:24px 0 28px}.divider-line{width:64px;height:5px;background:var(--coral);border-radius:3px}.divider-dot{width:6px;height:6px;border-radius:50%;background:var(--coral)}.about-bio{margin-bottom:2rem}.about-bio p{color:var(--muted);font-size:18px;font-weight:400;line-height:1.8;margin-bottom:22px;max-width:850px}.about-bio p:last-child{margin-bottom:0}.about-editorial .about-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;border-top:1px solid var(--indigo)}.about-intro{margin-bottom:4rem}.about-head{display:flex;align-items:center;justify-content:space-between;gap:clamp(1.5rem,4vw,3rem)}.about-head-text{min-width:0}.about-name{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-weight:500;font-size:clamp(1.4rem,3.2vw,2rem);line-height:1.2;letter-spacing:-.02em;color:var(--ink);margin:0 0 .4rem}.about-role{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.78rem;text-transform:uppercase;letter-spacing:.16em;color:var(--coral);margin-bottom:2.4rem}.avatar-3d{position:relative;flex:0 0 auto;width:200px;height:200px;margin:0;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none}.avatar-3d[hidden]{display:none}.avatar-3d.is-dragging{cursor:grabbing}.avatar-3d__frame{display:block;width:100%;height:100%;background-image:var(--avatar-sheet, none);background-repeat:no-repeat;background-size:600% 600%;background-position:0% 0%;filter:drop-shadow(0 18px 34px rgba(26,26,46,.18))}.avatar-3d.is-still .avatar-3d__frame{background-image:var(--avatar-still, none);background-size:contain;background-position:center}.avatar-3d__hint{position:absolute;left:50%;bottom:-.2rem;transform:translate(-50%);font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);opacity:0;transition:opacity .3s ease;pointer-events:none;white-space:nowrap}.avatar-3d:hover .avatar-3d__hint,.avatar-3d:focus-visible .avatar-3d__hint{opacity:1}.meta-label{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:14px;font-weight:400;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:6px}.meta-value{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:16px;font-weight:500;line-height:1.5;color:var(--ink)}.meta-item:nth-child(odd){border-right:1px solid var(--indigo)}.meta-item:nth-child(2n){padding-left:32px}.meta-item{padding:18px 14px;border-bottom:1px solid var(--indigo)}.work-list{display:flex;flex-direction:column;gap:2.75rem;max-width:60rem}.work-item{border-top:1px solid var(--line);padding-top:1.75rem}.work-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1.25rem;margin-bottom:.9rem}.work-title{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-weight:500;font-size:1.15rem;letter-spacing:-.01em;color:var(--indigo)}.work-stack{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;color:var(--muted)}.work-desc,.work-note{color:var(--muted);font-size:.98rem;line-height:1.7;max-width:52rem}.work-note{margin-top:1rem;font-size:.88rem;color:#7c7c88}.work-results{list-style:none;margin:1.1rem 0 0;padding:0;display:flex;flex-direction:column;gap:.6rem;max-width:52rem}.work-results li{position:relative;padding-left:1.15rem;font-size:.95rem;line-height:1.65;color:var(--ink)}.work-results li:before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;border-radius:50%;background:var(--coral)}.work-results em{font-style:italic;font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.92em}.work-links{display:flex;flex-wrap:wrap;gap:1.4rem;margin-top:1.15rem}.work-links a{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.7rem;text-transform:uppercase;letter-spacing:.09em;text-decoration:none;color:var(--indigo);border-bottom:1px solid var(--line);padding-bottom:3px;transition:color .3s ease,border-color .3s ease}.work-links a:hover{color:var(--coral);border-color:var(--coral)}.work-item--lead .work-title{font-size:1.4rem}.work-item--small .work-desc{font-size:.92rem}.skills-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2.5rem;max-width:62rem}.skill-group-title{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--coral);margin-bottom:1rem;padding-bottom:.65rem;border-bottom:1px solid var(--line)}.skill-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.skill-list li{font-size:.95rem;line-height:1.5;color:var(--ink)}.skill-learning{color:var(--muted);font-style:italic}.contact-card{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:2rem;background:var(--indigo);border-radius:18px;padding:3.5rem}.contact-title{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-weight:500;font-size:clamp(1.6rem,3.6vw,2.6rem);line-height:1.1;letter-spacing:-.02em;color:#fff;max-width:32rem}.contact-sub{margin-top:1rem;color:#ffffff9e;font-size:.95rem;line-height:1.6}.contact-details{display:flex;flex-direction:column;gap:.55rem;margin-top:1.6rem}.contact-details p{display:flex;flex-wrap:wrap;align-items:baseline;gap:.75rem;font-size:.95rem}.contact-details a{color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.28);padding-bottom:2px;transition:color .3s ease,border-color .3s ease;word-break:break-word}.contact-details a:hover{color:var(--coral);border-color:var(--coral)}.contact-label{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.66rem;text-transform:uppercase;letter-spacing:.12em;color:#ffffff73;min-width:3.5rem}.contact-socials{display:flex;gap:1.3rem;flex-wrap:wrap;margin-top:1.6rem}.contact-socials a{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;text-decoration:none;color:#ffffffb8;transition:color .3s ease}.contact-socials a:hover{color:var(--coral)}.btn{display:inline-flex;align-items:center;gap:.6rem;background:var(--coral);color:var(--ink);font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.82rem;text-transform:uppercase;letter-spacing:.09em;padding:1rem 1.7rem;border-radius:9px;text-decoration:none;white-space:nowrap;transition:transform .3s ease,background .3s ease}.btn:hover{transform:translateY(-3px);background:#ff8585}.btn-outline{display:inline-flex;align-items:center;gap:.6rem;background:transparent;color:var(--ink);font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.82rem;text-transform:uppercase;letter-spacing:.09em;padding:1rem 1.7rem;border-radius:9px;text-decoration:none;white-space:nowrap;border:1px solid var(--line);transition:transform .3s ease,border-color .3s ease,background .3s ease}.btn-outline:hover{transform:translateY(-3px);border-color:var(--coral);background:#ff6b6b1a}footer{border-top:1px solid var(--line);padding:2rem}.footer-inner{max-width:var(--maxw);margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}footer p{font-family:DM Mono,ui-monospace,Cascadia Mono,Segoe UI Mono,Consolas,monospace;font-size:.7rem;text-transform:uppercase;letter-spacing:.09em;color:var(--muted)}footer a{text-decoration:none;color:var(--indigo);transition:color .3s ease}footer a:hover{color:var(--coral)}html[data-js=on] .reveal{opacity:0;transform:translateY(28px);transition:opacity .8s ease,transform .8s ease}html[data-js=on] .reveal.visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}html[data-js=on] .reveal{opacity:1;transform:none;transition:none}}@media(max-width:1024px){.about-editorial .section-title{font-size:56px}.skills-groups{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem}}@media(max-width:768px){nav{padding:1rem 1.25rem;align-items:center}.nav-toggle{display:block}.menu{display:none;position:absolute;top:100%;left:0;width:100%;flex-direction:column;padding:1.5rem;gap:1rem;background:#f5f5f7f2;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);box-shadow:0 4px 16px #1a1a2e14;z-index:55}nav.scrolled .menu{background:#f5f5f7fa}.menu.is-open{display:flex}.menu a{font-size:1rem;color:var(--ink);padding:.75rem 0;width:100%;text-align:center;border-bottom:2px solid transparent}.menu a:hover{color:var(--coral);border-bottom-color:var(--coral)}nav.scrolled .menu a{color:var(--ink)}.hero{height:100svh;min-height:420px}.section{padding:4.5rem 1.5rem}.section-label{font-size:.72rem;margin-bottom:1.4rem}.section-title{font-size:clamp(1.5rem,5vw,2.5rem);margin-bottom:1.8rem}.about-editorial .section-title{font-size:clamp(1.6rem,8.2vw,44px);overflow-wrap:break-word}.avatar-3d{width:132px;height:132px}.avatar-3d__hint{display:none}.about-editorial .about-greeting{font-size:20px}.about-editorial .section-label{font-size:16px}.about-bio p{font-size:16px;line-height:1.8}.about-editorial .about-meta{grid-template-columns:1fr}.meta-item:nth-child(odd){border-right:none}.meta-item:nth-child(2n){padding-left:14px}.work-list{gap:2rem}.work-desc,.work-note,.work-results{max-width:none}.work-item--lead .work-title{font-size:1.2rem}.skills-groups{grid-template-columns:1fr;gap:2rem}.contact-card{padding:2.5rem;flex-direction:column;align-items:flex-start;gap:2rem}.contact-title{font-size:clamp(1.4rem,4vw,2.2rem);max-width:none}.contact-socials{gap:1.2rem;margin-top:1.2rem}.contact-socials a{font-size:.7rem}.contact-details p{flex-direction:column;align-items:flex-start;gap:.2rem;font-size:.9rem}.contact-label{min-width:0}.btn{font-size:.78rem;padding:.9rem 1.5rem;align-self:flex-start;white-space:nowrap}footer{padding:1.5rem}.footer-inner{flex-direction:column;gap:1rem;text-align:center;align-items:center}}@media(max-width:480px){nav{padding:1rem}.site-name a{font-size:.8rem}.section{padding:3.5rem 1rem}.contact-card{padding:2rem}.work-item--lead .work-title{font-size:1.1rem}.about-head{align-items:flex-start}.avatar-3d{width:104px;height:104px}.footer-inner{gap:.75rem}}
