:root{--bg: #ffffff;--fg: #17161d;--muted: #5f5c6b;--card: #ffffff;--border: #e5e3ea;--accent: #7c3aed;--accent-soft: rgba(109, 40, 217, .08);--header-bg: rgba(255, 255, 255, .82);--shadow: 0 1px 2px rgba(23, 22, 29, .06);--radius: 2px;--wrap: 940px}:root[data-theme=dark]{--bg: #0e0d14;--fg: #e9e7f0;--muted: #9b97ab;--card: #15131e;--border: #28243a;--accent: #a88bfa;--accent-soft: rgba(167, 139, 250, .12);--header-bg: rgba(14, 13, 20, .82);--shadow: none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--fg);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration-color:var(--muted);text-underline-offset:3px}a:hover{color:var(--accent)}h1,h2,h3{line-height:1.2;letter-spacing:-.01em;margin:0 0 .5rem}p{margin:0 0 1rem}img{max-width:100%;display:block}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 20px}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:12px;top:12px;background:var(--bg);padding:8px 12px;border-radius:var(--radius);z-index:100}.header{position:sticky;top:0;z-index:20;backdrop-filter:blur(10px);background:var(--header-bg);border-bottom:1px solid var(--border)}.header-inner{display:flex;align-items:center;gap:16px;min-height:56px}.header .brand{font-weight:650;text-decoration:none;white-space:nowrap}.header nav{display:flex;gap:14px;margin-left:auto;overflow-x:auto;scrollbar-width:none;font-size:.92rem}.header nav::-webkit-scrollbar{display:none}.header nav a{text-decoration:none;color:var(--muted);white-space:nowrap;padding:4px 0}.header nav a[aria-current=page],.header nav a:hover{color:var(--fg)}.header .tools{display:flex;gap:6px;align-items:center}.icon-btn{border:1px solid var(--border);background:transparent;color:var(--fg);border-radius:2px;font:inherit;font-size:.85rem;padding:3px 10px;cursor:pointer;text-decoration:none;line-height:1.5}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}.header.on-dark{background:#0a0e148c;border-bottom-color:#ffffff14;color:#f2f4f7}.header.on-dark nav a{color:#f2f4f7b8}.header.on-dark nav a:hover,.header.on-dark nav a[aria-current=page]{color:#fff}.header.on-dark .icon-btn{border-color:#ffffff38;color:#f2f4f7}#globe{position:fixed;top:0;right:0;bottom:0;left:32vw;z-index:0}#globe-bg{position:fixed;inset:0;z-index:0;background:radial-gradient(circle at 62% 42%,#191a3d,#07070f 68%)}@media(max-width:720px){#globe{left:0}}#globe canvas{display:block}.stage{position:relative;z-index:1}.stage .wrap,.stage .hero,.stage .chapters{pointer-events:none}.globe-tip{position:fixed;z-index:30;max-width:260px;padding:10px 12px;border-radius:var(--radius);background:#0c1017eb;border:1px solid rgba(255,255,255,.14);color:#f2f4f7;font-size:.85rem;line-height:1.45;pointer-events:none;opacity:0;transform:translate(-50%,calc(-100% - 12px));transition:opacity .12s ease}.globe-tip.visible{opacity:1}.globe-tip strong{display:block}.globe-tip .tip-meta{color:#f2f4f7a6}.globe-tip .tip-hint{display:block;margin-top:4px;font-size:.78rem;color:#a88bfad9}.globe-tip .tip-line{display:block;color:#f2f4f7b8}.globe-tip a{color:#a78bfa}.hero{position:relative;z-index:1;min-height:calc(100svh - 56px);display:flex;align-items:center;color:#f2f4f7}.hero:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,#07070ff7,#07070fe0 32%,#07070f00 60%)}.hero-inner{pointer-events:none;max-width:440px;padding:48px 0 96px}.hero-inner>*{pointer-events:auto}.hero .eyebrow{font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:#f2f4f799;margin-bottom:10px}.hero .portrait{width:190px;height:auto;border:0;margin-bottom:14px;filter:drop-shadow(0 14px 34px rgba(5,5,12,.55));-webkit-mask-image:linear-gradient(to bottom,#000 74%,transparent 99%);mask-image:linear-gradient(to bottom,#000 74%,transparent 99%)}.cv-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:40px}.cv-grid h2{font-size:1.15rem;margin-top:30px}.cv-grid h2:first-child{margin-top:0}.cv-skill{margin-bottom:14px;font-size:.95rem}.cv-skill .title{font-weight:550}@media(max-width:720px){.cv-grid{grid-template-columns:1fr;gap:8px}}.hero h1{font-size:clamp(2rem,5vw,3.1rem);margin-bottom:8px;text-wrap:balance}.hero .line{font-size:clamp(1.05rem,2.4vw,1.35rem);color:#fff;margin-bottom:6px}.hero .sub{color:#f2f4f7c7;font-size:.95rem;max-width:430px}.hero .actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}.hero .actions a{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;text-decoration:none;border:1px solid rgba(255,255,255,.24);border-radius:4px;color:#f2f4f7;transition:transform .1s ease-out,border-color .16s ease,color .16s ease,background-color .16s ease}.hero .actions a svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.hero .actions a:hover{border-color:#a88bfa;color:#a88bfa;background:#a88bfa14}.chapters{position:relative;z-index:1;padding-bottom:40px}.chapter{min-height:78vh;display:flex;align-items:center}.chapter-card{pointer-events:auto;max-width:430px;background:#0c1017d1;border:1px solid rgba(255,255,255,.12);border-radius:4px;padding:22px 22px 18px;color:#eef1f5;backdrop-filter:blur(6px);box-shadow:0 10px 40px #07070f59}.chapter-card .num{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:#eef1f58c}.chapter-card h2{font-size:1.5rem;margin:2px 0 8px}.chapter-card p{color:#eef1f5d1;font-size:.96rem;margin-bottom:12px}.chapter-card ul{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px}.chapter-card li a{display:inline-block;font-size:.82rem;text-decoration:none;border:1px solid rgba(255,255,255,.18);border-radius:2px;padding:3px 10px;color:#eef1f5}.chapter-card li a:hover{border-color:#a78bfa;color:#a78bfa}.solid{position:relative;z-index:2;background:var(--bg);border-top:1px solid var(--border)}.section{padding:56px 0}.section+.section{border-top:1px solid var(--border)}.section h2{font-size:1.45rem}.section .intro{color:var(--muted);max-width:560px;margin-bottom:24px}.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}.card .body{padding:16px 16px 14px;display:flex;flex-direction:column;gap:8px;flex:1}.card .thumb{display:block;width:100%;height:168px;object-fit:cover;border-bottom:1px solid var(--border)}.card .thumb.placeholder{display:flex;align-items:center;justify-content:center;color:var(--accent);background-image:radial-gradient(var(--accent-soft) 1.5px,transparent 1.5px);background-size:16px 16px}.card h3{font-size:1.05rem;margin:0}.card .year{color:var(--muted);font-weight:400}.card p{margin:0;font-size:.93rem;color:var(--muted)}.card .meta{display:flex;flex-wrap:wrap;gap:6px;font-size:.78rem}.chip{border:1px solid var(--border);border-radius:2px;padding:2px 9px;color:var(--muted)}.chip.accent{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.card .links{display:flex;flex-wrap:wrap;gap:10px;font-size:.85rem;margin-top:auto;padding-top:6px}.card .links a{color:var(--accent);text-decoration:none}.card .links a:hover{text-decoration:underline}.list{list-style:none;margin:0;padding:0}.list li{padding:14px 0;border-bottom:1px solid var(--border)}.list li:last-child{border-bottom:0}.list .title{font-weight:550}.list .meta{color:var(--muted);font-size:.9rem}.list .links{font-size:.88rem;margin-top:2px}.list .links a{color:var(--accent);text-decoration:none;margin-right:10px}.list .links a:hover{text-decoration:underline}.footer{position:relative;z-index:2;background:var(--bg);border-top:1px solid var(--border);padding:32px 0 48px;color:var(--muted);font-size:.9rem}.footer .row{display:flex;flex-wrap:wrap;gap:14px;align-items:center}.footer a{text-decoration:none}.footer a:hover{color:var(--accent)}.btn{display:inline-block;text-decoration:none;border:1px solid var(--border);border-radius:2px;padding:7px 14px;font-size:.9rem}.btn:hover{border-color:var(--accent);color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.stage-icon{display:inline-block;width:1em;height:1em;line-height:0}.stage-icon svg{width:100%;height:100%}.stage-icon .flow{stroke-dasharray:5 4;animation:flow 1.8s linear infinite}.stage-icon .wipe{stroke-dasharray:12 14;animation:wipe 2.8s ease-in-out infinite}.stage-icon .ring{transform-box:fill-box;transform-origin:center;animation:ring-pulse 2.4s ease-out infinite}@keyframes flow{to{stroke-dashoffset:-18}}@keyframes wipe{0%{stroke-dashoffset:26;opacity:0}25%{opacity:1}75%{opacity:1}to{stroke-dashoffset:-26;opacity:0}}@keyframes ring-pulse{0%{transform:scale(.55);opacity:.9}to{transform:scale(1.35);opacity:0}}@media(prefers-reduced-motion:reduce){.stage-icon .flow,.stage-icon .wipe,.stage-icon .ring{animation:none}}@media(max-width:720px){.header nav{font-size:.85rem;gap:10px}.chapter-card{max-width:none;background:#0c1017e6}.hero-inner{padding-bottom:64px}}@media(max-width:720px){.hero:before{background:linear-gradient(180deg,#07070fe0,#07070f9e 45%,#07070f66)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}:root{--ease-out: cubic-bezier(.22, 1, .36, 1)}html,body{transition:background-color .22s ease,color .22s ease}.hero h1{letter-spacing:-.025em;font-optical-sizing:auto}.section h2,.chapter-card h2,.card h3{letter-spacing:-.015em}.btn,.icon-btn,.hero .actions a,.header nav a,.footer a{transition:color .16s ease,border-color .16s ease,transform .1s ease-out}.btn:active,.icon-btn:active,.hero .actions a:active{transform:scale(.96)}.card{transition:transform .24s var(--ease-out),box-shadow .24s var(--ease-out),border-color .24s var(--ease-out)}@media(hover:hover){.card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--accent) 35%,var(--border))}}.header{backdrop-filter:blur(20px) saturate(180%)}@media(prefers-reduced-transparency:reduce){.header{background:var(--bg);backdrop-filter:none}.chapter-card,.globe-tip{backdrop-filter:none;background:#0d0b1a}}@media(prefers-contrast:more){.card,.btn,.chip,.icon-btn{border-color:var(--fg)}}@media(prefers-reduced-motion:reduce){.card:hover,.btn:active,.icon-btn:active,.hero .actions a:active{transform:none}}.cv-sheet{display:grid;grid-template-columns:1.55fr 1fr;background:var(--card);border:1px solid var(--border);border-radius:4px;overflow:hidden;box-shadow:var(--shadow)}.cv-main{padding:42px 46px}.cv-aside{padding:38px 32px;border-left:1px solid var(--border);background:color-mix(in srgb,var(--accent) 5%,var(--bg))}.cv-name{font-size:clamp(1.7rem,3.4vw,2.5rem);line-height:1.08;letter-spacing:-.03em;text-transform:uppercase;font-weight:800;margin-bottom:30px}.cv-name span{display:block}.cv-name span:first-child{color:var(--muted)}.cv-name span:last-child{color:var(--accent)}.cv-section{margin-bottom:30px}.cv-section h2{font-size:.92rem;text-transform:uppercase;letter-spacing:.16em;padding-bottom:7px;margin-bottom:14px;border-bottom:1px solid var(--border);position:relative}.cv-section h2:after{content:"";position:absolute;left:0;bottom:-1px;width:42px;height:2px;background:var(--accent)}.cv-profile{font-size:.95rem;color:var(--muted)}.cv-item{margin-bottom:18px}.cv-item:last-child{margin-bottom:0}.cv-item .org{display:flex;justify-content:space-between;gap:12px}.cv-item .role{font-weight:650;font-size:.92rem;text-transform:uppercase;letter-spacing:.05em}.cv-item .place,.cv-item .dates{color:var(--muted);font-size:.88rem}.cv-item .dates{white-space:nowrap}.cv-detail{font-size:.9rem;color:var(--muted);margin:4px 0 0}.cv-photo{width:152px;height:152px;border-radius:50%;object-fit:cover;display:block;margin:0 auto 24px;border:4px solid var(--card);box-shadow:0 4px 14px #00000024}.cv-contact{list-style:none;margin:0 0 28px;padding:0;font-size:.88rem}.cv-contact li{display:flex;align-items:center;gap:10px;padding:4px 0;color:var(--muted)}.cv-contact svg{width:16px;height:16px;flex:none;fill:none;stroke:var(--accent);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.cv-contact a{text-decoration:none}.cv-contact a:hover{color:var(--accent)}.cv-skill{margin-bottom:14px;font-size:.9rem}.cv-skill:last-child{margin-bottom:0}.cv-skill .family{font-weight:600}.cv-skill a{text-decoration:none}@media(max-width:820px){.cv-sheet{grid-template-columns:1fr}.cv-aside{border-left:0;border-top:1px solid var(--border)}.cv-main{padding:30px 22px}}@media print{.header,.footer{display:none}.cv-sheet{border:0;box-shadow:none}}.header nav a{display:inline-block;position:relative;padding:4px 1px}.header nav a:after{content:"";position:absolute;left:1px;right:1px;bottom:0;height:1.5px;background:currentColor;transform:scaleX(0);transform-origin:left center;transition:transform .24s var(--ease-out)}.header nav a:hover:after,.header nav a[aria-current=page]:after{transform:scaleX(1)}.header nav a:active{transform:scale(.94)}.header{transition:background-color .24s ease,box-shadow .24s ease,border-color .24s ease}.header.scrolled{box-shadow:0 8px 24px #07070f14}.header.on-dark.scrolled{box-shadow:none}.section h2,.card h3,.chapter-card h2{text-wrap:balance}p,li{text-wrap:pretty}.card{animation:card-rise .48s var(--ease-out) both}.card:nth-child(2){animation-delay:40ms}.card:nth-child(3){animation-delay:80ms}.card:nth-child(4){animation-delay:.12s}.card:nth-child(5){animation-delay:.16s}.card:nth-child(6){animation-delay:.2s}@keyframes card-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(hover:hover){.hero .actions a:hover,.btn:hover,.icon-btn:hover{transform:translateY(-1px)}}@media(prefers-reduced-motion:reduce){.card{animation:none}.header nav a:after{transition:none}}.header.on-dark .icon-btn:hover,.hero .actions a:hover{color:#a88bfa;border-color:#a88bfa}.hero:before{background:linear-gradient(90deg,#07070ff7,#07070fe6 38%,#07070f73 58%,#07070f00 74%)}.card:nth-child(7){animation-delay:.24s}.card:nth-child(8){animation-delay:.28s}.card:nth-child(9){animation-delay:.32s}@media(max-width:720px){.header nav{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 26px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 26px),transparent)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.stage:after{content:"";position:absolute;left:0;right:0;bottom:0;height:48vh;z-index:0;pointer-events:none;background:linear-gradient(180deg,rgba(7,7,15,0) 0%,var(--bg) 96%)}
