:root{--black:#202020;--white:#f7f7f5;--muted:#a6a6a3;--sans:Arial,Helvetica,sans-serif;--mono:'Courier New',monospace}*{box-sizing:border-box}html,body{width:100%;min-height:100%;margin:0}body{background:var(--black);color:var(--white);font-family:var(--sans);cursor:none}.portfolio{position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100svh;min-height:500px;overflow:hidden;padding:clamp(34px,5.1vh,68px) clamp(30px,5.1vw,100px) clamp(38px,5.2vh,70px);background:#202020}.identity{position:relative;z-index:2}.identity h1{font-size:clamp(22px,2.45vw,45px);line-height:1.08;letter-spacing:-.025em;font-weight:700;margin:0 0 12px}.identity p{font-size:clamp(14px,1.55vw,27px);letter-spacing:.005em;margin:0;font-weight:400}.location{position:absolute;right:0;top:38%;font-size:clamp(14px,1.45vw,25px);font-weight:400}.language-switch{position:absolute;z-index:2;left:50%;top:60%;transform:translate(-50%,-50%);display:flex;gap:7px;align-items:center;font-size:clamp(16px,1.45vw,25px);font-weight:700}.language-switch button,.action-bar button{padding:0;border:0;color:inherit;background:none;font:inherit;cursor:none}.language-switch button{opacity:.72}.language-switch button:hover,.language-switch button.active{opacity:1}.portrait-wash{position:absolute;z-index:-1;inset:0;width:100%;height:100%;left:0;top:0;transform:none;border-radius:0;background-image:url('assets/hero.jpg');background-size:cover;background-position:center 42%;opacity:1;filter:none;mask-image:none;-webkit-mask-image:none;pointer-events:none}.action-bar{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center}.action-bar>button{justify-self:start;text-align:left;text-decoration:underline;text-underline-offset:4px;font-size:clamp(14px,1.35vw,24px);font-weight:400}.action-bar>button:last-child{justify-self:end}.socials{justify-self:center;display:flex;align-items:center;gap:clamp(20px,2vw,38px)}.socials a{color:var(--white);text-decoration:none;font-size:clamp(15px,1.4vw,25px);font-weight:700;transition:opacity .2s,transform .2s}.socials a:hover{opacity:.65;transform:translateY(-3px)}.cv-dialog{width:min(500px,calc(100% - 30px));padding:36px;border:1px solid rgba(255,255,255,.24);border-radius:3px;background:rgba(32,32,32,.94);color:var(--white);box-shadow:0 20px 100px #0008;backdrop-filter:blur(24px)}.cv-dialog::backdrop{background:#0009;backdrop-filter:blur(4px)}.dialog-close{position:absolute;right:17px;top:12px;border:0;background:none;color:var(--white);font-size:28px;cursor:pointer}.cv-dialog h2{margin:8px 0;font-size:28px}.dialog-intro{color:var(--muted);font-size:13px}.cv-options{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-top:25px}.cv-option{padding:16px;border:1px solid #ffffff30}.language-tag{display:block;padding-bottom:13px;border-bottom:1px solid #ffffff30;font-weight:bold}.language-tag span{display:block;margin-top:5px;color:var(--muted);font:10px var(--mono)}.cv-link{display:flex;justify-content:space-between;margin-top:14px;color:var(--white);text-decoration:none;font-size:12px}.cv-link:hover{opacity:.65}.cv-link span{color:#c6c6c0}.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;z-index:2147483647;pointer-events:none;border-radius:50%;opacity:0;transform:translate(-50%,-50%)}.cursor-dot{width:5px;height:5px;background:#fff}.cursor-ring{width:30px;height:30px;border:1px solid #ffffff80;transition:width .18s,height .18s,background .18s}.cursor-ring.hover{width:46px;height:46px;background:#ffffff12}body.cursor-ready .cursor-dot,body.cursor-ready .cursor-ring{opacity:1}body.cursor-ready,body.cursor-ready a,body.cursor-ready button{cursor:none}@media(max-width:700px){body{cursor:auto}.portfolio{min-height:460px;padding:30px 24px 36px}.identity h1{max-width:none;white-space:nowrap;font-size:clamp(12px,3.65vw,20px);line-height:1.2;letter-spacing:-.035em;margin-bottom:8px}.identity p{max-width:none;white-space:nowrap;font-size:clamp(8px,2.45vw,14px);line-height:1.5;letter-spacing:-.025em}.location{position:static;display:block;margin-top:5px;font-size:10px;letter-spacing:.04em}.language-switch{top:53%;font-size:19px}.portrait-wash{inset:0;width:100%;height:100%;opacity:1;background-size:115% auto;background-position:center 42%}.action-bar{grid-template-columns:1fr auto;row-gap:24px}.action-bar>button{font-size:12px}.socials{grid-column:1/-1;grid-row:1;gap:25px}.socials a{font-size:17px}.action-bar>button:last-child{justify-self:end}.action-bar>button:first-child{justify-self:start}.cv-dialog{padding:30px 20px}.cv-dialog h2{font-size:25px}.cv-option{padding:12px}.cursor-dot,.cursor-ring{display:none}}@media(max-height:560px) and (min-width:701px){.portfolio{min-height:0;padding-top:24px;padding-bottom:25px}.identity h1{font-size:clamp(21px,2.3vw,35px)}.language-switch{top:57%}.portrait-wash{width:100%;height:100%;background-size:auto 112%;background-position:center 42%}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important}}
/* Liquid glass interactions */
.language-switch{padding:11px 18px;border:1px solid rgba(255,255,255,.15);border-radius:999px;background:rgba(255,255,255,.035);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:inset 0 1px rgba(255,255,255,.12),0 8px 35px #0002;transition:background .45s,border-color .45s,box-shadow .45s,transform .45s cubic-bezier(.2,.8,.2,1)}.language-switch::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;background:linear-gradient(110deg,transparent 15%,rgba(255,255,255,.18) 45%,rgba(198,223,255,.14) 55%,transparent 82%);background-size:220% 100%;transition:opacity .3s}.language-switch.switching::before{opacity:1;animation:liquid-sheen .75s ease both}.language-switch.switching{transform:translate(-50%,-50%) scale(1.045);border-color:#ffffff55;background:rgba(255,255,255,.13);box-shadow:inset 0 1px 1px #ffffff55,0 0 35px #d8e6ff19,0 12px 48px #0005}.language-switch button{position:relative;z-index:1;transition:opacity .25s,transform .35s cubic-bezier(.2,.8,.2,1),text-shadow .3s}.language-switch button.active{transform:scale(1.08);text-shadow:0 0 16px #fff8}.language-switch span{position:relative;z-index:1;color:#ffffff80}.action-bar>button{position:relative;isolation:isolate;padding:11px 15px;border:1px solid transparent;border-radius:5px;text-decoration:none;transition:color .25s,background .3s,border-color .3s,box-shadow .3s,transform .3s cubic-bezier(.2,.8,.2,1)}.action-bar>button:hover{transform:translateY(-3px);border-color:#ffffff38;background:rgba(255,255,255,.09);box-shadow:inset 0 1px #ffffff25,0 9px 28px #0004;backdrop-filter:blur(14px)}.action-bar>button:active{transform:translateY(-1px) scale(.98)}.socials a{display:grid;place-items:center;width:44px;height:44px;border:1px solid transparent;border-radius:50%;transition:background .28s,border-color .28s,box-shadow .28s,transform .28s cubic-bezier(.2,.8,.2,1),color .28s}.socials a svg{width:20px;height:20px;fill:currentColor}.socials a:hover{opacity:1;transform:translateY(-4px) scale(1.07);border-color:#ffffff35;background:rgba(255,255,255,.11);box-shadow:inset 0 1px #ffffff30,0 7px 24px #0005;backdrop-filter:blur(10px)}.cv-dialog{overflow:visible;border:1px solid rgba(255,255,255,.34);border-radius:13px;background:linear-gradient(135deg,rgba(255,255,255,.17),rgba(255,255,255,.065) 42%,rgba(255,255,255,.105));box-shadow:inset 0 1px rgba(255,255,255,.38),inset 0 -1px rgba(255,255,255,.08),0 30px 100px #0009,0 0 0 1px #ffffff0a;backdrop-filter:blur(32px) saturate(155%);-webkit-backdrop-filter:blur(32px) saturate(155%);animation:glass-in .42s cubic-bezier(.16,1,.3,1) both}.cv-dialog::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:radial-gradient(ellipse at 12% 0%,#ffffff20,transparent 44%),linear-gradient(120deg,#ffffff09,transparent 48%,#dceaff08)}.cv-dialog::backdrop{background:rgba(6,7,9,.55);backdrop-filter:blur(12px) saturate(80%);-webkit-backdrop-filter:blur(12px) saturate(80%)}.dialog-close{display:grid;place-items:center;width:38px;height:38px;right:12px;top:12px;border:1px solid transparent;border-radius:50%;transition:background .25s,border-color .25s,transform .25s}.dialog-close:hover{background:#ffffff18;border-color:#ffffff30;transform:rotate(90deg)}.cv-option{border-color:#ffffff35;border-radius:7px;background:linear-gradient(145deg,#ffffff0d,#ffffff04);box-shadow:inset 0 1px #ffffff10;transition:transform .28s,border-color .28s,background .28s,box-shadow .28s}.cv-option:hover{transform:translateY(-3px);border-color:#ffffff70;background:linear-gradient(145deg,#ffffff19,#ffffff08);box-shadow:inset 0 1px #ffffff25,0 12px 28px #0003}.cv-link{transition:opacity .2s,transform .2s}.cv-link:hover{opacity:1;transform:translateX(3px)}@keyframes liquid-sheen{0%{background-position:100% 0;transform:scaleX(.75)}50%{transform:scaleX(1.04)}100%{background-position:0 0;transform:scaleX(1)}}@keyframes glass-in{from{opacity:0;transform:translateY(12px) scale(.97);filter:blur(8px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@media(max-width:700px){.language-switch{padding:10px 16px}.action-bar>button{padding:9px 10px}.socials a{width:40px;height:40px}.socials a svg{width:19px;height:19px}.cv-dialog{border-radius:12px}}@media(prefers-reduced-motion:reduce){.language-switch,.language-switch button,.action-bar>button,.socials a,.cv-option,.dialog-close{transition:none;animation:none}.cv-dialog{animation:none}}
/* Keep the custom pointer in the modal's top layer while the CV dialog is open. */
.cv-dialog .cursor-dot,.cv-dialog .cursor-ring{position:fixed;z-index:2147483647;pointer-events:none;opacity:1}
.cv-dialog{cursor:none}.cv-dialog a,.cv-dialog button{cursor:none}
@media(max-width:700px){.cv-dialog{cursor:auto}.cv-dialog a,.cv-dialog button{cursor:pointer}}
/* Use the real system pointer inside the CV modal so PDF actions stay reliable. */
.cv-dialog.native-cursor,.cv-dialog.native-cursor a,.cv-dialog.native-cursor button{cursor:auto!important}
.cv-dialog.native-cursor a,.cv-dialog.native-cursor button{cursor:pointer!important}
.cv-dialog.native-cursor .cursor-dot,.cv-dialog.native-cursor .cursor-ring{display:none!important}
/* Softer Apple-like corner radii for the CV sheet and its controls. */
.cv-dialog{border-radius:24px}
.cv-option{border-radius:16px}
.cv-link{min-height:38px;margin-top:8px;padding:9px 10px;border-radius:11px;align-items:center}
.cv-link:hover{background:rgba(255,255,255,.12)}
.action-bar>button{border-radius:999px}
.language-switch{border-radius:999px}
.dialog-close{border-radius:50%}
@media(max-width:700px){.cv-dialog{border-radius:22px}.cv-option{border-radius:15px}}
