@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/archivo-vietnamese-wght-normal.3cbdnbmi1hpzs.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/archivo-latin-ext-wght-normal.3cxrhsknk8wrd.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/archivo-latin-wght-normal.0inx24hl2eswd.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(../media/instrument-serif-latin-ext-400-italic.20oblg8q8k24u.woff2)format("woff2"),url(../media/instrument-serif-latin-ext-400-italic.0mww3qs0cp08u.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(../media/instrument-serif-latin-400-italic.3bg-hzmj1g17f.woff2)format("woff2"),url(../media/instrument-serif-latin-400-italic.3im7aav-gdfim.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-cyrillic-ext-400-normal.3llip5gdtq6ee.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-ext-400-normal.37cpwuas_4tpy.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-cyrillic-400-normal.123gmka-u-660.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-400-normal.2qqi-jaq060ud.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-greek-400-normal.11tra_3r8gne-.woff2)format("woff2"),url(../media/jetbrains-mono-greek-400-normal.18cfsy-6ft9zs.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-vietnamese-400-normal.0l8l0wb2sbqrm.woff2)format("woff2"),url(../media/jetbrains-mono-vietnamese-400-normal.0c64nmg3blt24.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-latin-ext-400-normal.2osyrgmzpqw_0.woff2)format("woff2"),url(../media/jetbrains-mono-latin-ext-400-normal.3vtl6hswl5p-t.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-latin-400-normal.37baup9wa8gsy.woff2)format("woff2"),url(../media/jetbrains-mono-latin-400-normal.27_azdahucoj5.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-cyrillic-ext-500-normal.0o2ixt_i88f99.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-ext-500-normal.0skx51gfgqnxk.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-cyrillic-500-normal.249fhc8wr7nbt.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-500-normal.14rir2jm30fz0.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-greek-500-normal.3no6xpizs9fmj.woff2)format("woff2"),url(../media/jetbrains-mono-greek-500-normal.3kuhrkkazcg55.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-vietnamese-500-normal.1vk0uli091fzc.woff2)format("woff2"),url(../media/jetbrains-mono-vietnamese-500-normal.0w-543ihzmj4y.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-latin-ext-500-normal.3574s2_-3b86t.woff2)format("woff2"),url(../media/jetbrains-mono-latin-ext-500-normal.376ylftguvq8n.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-latin-500-normal.37tbwx4qeyuup.woff2)format("woff2"),url(../media/jetbrains-mono-latin-500-normal.0nitm9n_z3qum.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--ease-out:cubic-bezier(.22, 1, .36, 1);--header-mobile:64px;--paper:#f7f8fa;--sheet:#ffffffdb;--ink:#0e1116;--muted:#5a616b;--faint:#8a919b;--pen:#2458d6;--pen-dark:#1a44ad;--pen-rgb:36, 88, 214;--sky:#9fd6ff;--sky-soft:#e3f2ff;--accent-rgb:120, 196, 255;--line:#0e11161f;--hairline:#0e111614;--shadow-soft:0 1px 2px #0e11160a, 0 12px 32px #0e111612;--shadow-lift:0 2px 4px #0e11160d, 0 22px 44px rgba(var(--pen-rgb), .14);--radius:16px;--mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--serif:"Instrument Serif", Georgia, serif;--glass:linear-gradient(145deg, #ffffffb8, #ffffff70);--glass-flat:#ffffff94;--glass-edge:#ffffffc7;--glass-blur:blur(22px) saturate(175%);--glass-shadow:inset 0 1px 0 #fffffff2, inset 0 0 0 1px #ffffff40, 0 1px 2px #0e11160a, 0 16px 40px #213e801a;--glass-hover:linear-gradient(145deg, #ffffffd9, #ffffff94);--highlight:white;--well:#ffffffb3;--text-2:#2a2f37;--text-3:#3a4049;--tag-ink:#1d3a73;--pen-solid:#2458d6;--neutral-rgb:14, 17, 22;--polaroid:white;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{background:var(--paper);scroll-behavior:smooth;scroll-padding-top:88px}body{min-height:100vh;color:var(--ink);isolation:isolate;background:0 0;margin:0;font-family:Archivo Variable,Arial,Helvetica,sans-serif;position:relative;overflow-x:clip}body:before{z-index:-2;background:linear-gradient(90deg, transparent 47px, rgba(var(--accent-rgb), .55) 47px, rgba(var(--accent-rgb), .55) 48px, transparent 48px), linear-gradient(rgba(var(--pen-rgb), .065) 1px, transparent 1px), linear-gradient(90deg, rgba(var(--pen-rgb), .065) 1px, transparent 1px);content:"";pointer-events:none;background-size:100% 100%,28px 28px,28px 28px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(140% 100% at 50% 0,#000 55%,#00000059 100%);mask-image:radial-gradient(140% 100% at 50% 0,#000 55%,#00000059 100%)}.aurora{z-index:-3;pointer-events:none;position:fixed;inset:0;overflow:hidden}.aurora span{filter:blur(70px);opacity:.9;border-radius:50%;animation:48s ease-in-out infinite alternate aurora-drift;position:absolute}.aurora span:first-child{background:radial-gradient(closest-side,#9fd6fff2,#9fd6ff00);width:52vw;height:44vw;top:-12%;right:-8%}.aurora span:nth-child(2){background:radial-gradient(closest-side, rgba(var(--pen-rgb), .38), rgba(var(--pen-rgb), 0));width:46vw;height:40vw;animation-duration:62s;animation-delay:-20s;top:30%;left:-14%}.aurora span:nth-child(3){background:radial-gradient(closest-side,#beacff99,#beacff00);width:44vw;height:38vw;animation-duration:56s;animation-delay:-34s;bottom:-10%;right:-6%}.aurora span:nth-child(4){background:radial-gradient(closest-side,#c8ecffe6,#c8ecff00);width:30vw;height:26vw;animation-duration:70s;animation-delay:-8s;top:8%;left:30%}@keyframes aurora-drift{0%{transform:translate(0,0)scale(1)rotate(0)}to{transform:translate(5vw,4vh)scale(1.15)rotate(12deg)}}.glass,.offer-card,.project-card,.role-card,.sheet,.contact-card,.code-card,.stats,.tabs{border:1px solid var(--glass-edge);background:var(--glass);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}a{color:inherit;text-decoration:none}button{font:inherit}button,a{outline-offset:4px}:focus-visible{outline:2px solid var(--pen)}img{max-width:100%;display:block}h1,h2,h3,h4,p{overflow-wrap:break-word;margin:0}h1,h2,h3,h4{line-height:1.05}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app-shell{min-height:100vh}.container{width:min(1160px,100% - 128px);margin:0 auto}.main{padding:36px 0 96px}.main:focus{outline:none}.kicker{color:var(--muted);font-family:var(--mono);letter-spacing:.02em;align-items:center;gap:10px;margin-bottom:18px;font-size:.78rem;display:flex}.kicker span{color:var(--pen);font-weight:500}.kicker span:after{color:var(--faint);content:"/";margin-left:10px}.kicker.small{margin-bottom:12px;font-size:.72rem}.lede{max-width:620px;color:var(--text-2);margin-top:20px;font-size:1.07rem;line-height:1.62}.lede strong{color:var(--ink);font-weight:700}.section{padding-top:96px}.section-title{letter-spacing:-.02em;font-size:clamp(2.2rem,4.4vw,3.5rem);font-weight:800}.chapter{max-width:760px;margin-bottom:40px;position:relative}.chapter-split{grid-template-columns:minmax(0,1fr) 300px;align-items:end;gap:48px;margin-bottom:40px;display:grid}.chapter-split .chapter{margin-bottom:0}.fold-bar{border:1px solid var(--glass-edge);background:var(--glass);width:100%;box-shadow:var(--glass-shadow);color:var(--ink);cursor:pointer;font:inherit;text-align:left;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);transition:box-shadow .3s var(--ease-out), transform .3s var(--ease-out), background .25s ease;border-radius:16px;justify-content:space-between;align-items:center;gap:16px;padding:16px 22px;display:flex}.fold-bar:hover{box-shadow:inset 0 1px 0 var(--highlight), 0 0 0 1px rgba(var(--pen-rgb), .3), 0 16px 34px #213e801f;transform:translateY(-2px)}.fold-summary{color:var(--muted);font-family:var(--mono);font-size:.8rem}.fold-action{background:var(--pen-solid);box-shadow:inset 0 1px 0 #ffffff4d, 0 6px 16px rgba(var(--pen-rgb), .28);color:#fff;border-radius:999px;flex:none;align-items:center;gap:8px;padding:8px 14px 8px 16px;font-size:.88rem;font-weight:700;display:inline-flex}.fold-caret{transition:transform .45s var(--ease-out)}.fold-bar[aria-expanded=true] .fold-action{box-shadow:inset 0 0 0 1px rgba(var(--pen-rgb), .35);color:var(--pen);background:#fffc}.fold-bar[aria-expanded=true] .fold-caret{transform:rotate(180deg)}.fold{opacity:0;transition:grid-template-rows .65s var(--ease-out), opacity .45s ease;grid-template-rows:0fr;grid-template-columns:minmax(0,1fr);display:grid}.fold[data-open=true]{opacity:1;grid-template-rows:1fr}.fold-inner{min-height:0;margin:0 -24px;padding:28px 24px 8px;overflow:hidden}.fold[data-open=false] .fold-inner{padding-top:0;padding-bottom:0}.fold[data-settled=true] .fold-inner{overflow:visible}.chapter,.chapter-split{margin-bottom:26px}.scribble{font-family:var(--serif);letter-spacing:0;white-space:nowrap;font-size:1.1em;font-style:italic;font-weight:400;display:inline-block;position:relative}.scribble svg{width:106%;height:.34em;position:absolute;bottom:-.1em;left:-3%;overflow:visible}.scribble path{fill:none;stroke:var(--pen);stroke-dasharray:1;stroke-dashoffset:1px;stroke-linecap:round;stroke-width:3.2px;vector-effect:non-scaling-stroke;animation:draw .9s var(--ease-out) .3s forwards}.scribble.on-load path{animation-delay:.9s}@keyframes draw{to{stroke-dashoffset:0}}@supports (animation-timeline:view()){.scribble:not(.on-load) path{animation:linear both draw;animation-timeline:view();animation-range:entry 40% cover 45%}}.margin-note{color:var(--pen);font-family:var(--serif);align-items:flex-end;gap:4px;margin-top:18px;margin-left:38%;font-size:1.3rem;font-style:italic;display:inline-flex;transform:rotate(-4deg)}.margin-note svg{fill:none;width:34px;height:34px;stroke:var(--pen);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;flex:none}.actions{flex-wrap:wrap;gap:10px;margin-top:32px;display:flex}.btn{min-height:46px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--ink);transition:border-color .2s ease, box-shadow .25s var(--ease-out), transform .25s var(--ease-out), background-color .2s ease;background:#ffffff8c;border:1px solid #ffffffd9;border-radius:999px;justify-content:center;align-items:center;gap:9px;padding:11px 20px;font-weight:650;display:inline-flex;box-shadow:inset 0 1px #ffffffe6,0 1px 2px #0e11160f,0 0 0 1px #0e11160f}.btn:hover{box-shadow:inset 0 1px 0 var(--highlight), 0 0 0 1px rgba(var(--pen-rgb), .45), 0 12px 28px #213e8024;background:#fffc;transform:translateY(-2px)}.btn:active{transition-duration:80ms;transform:translateY(0)}.btn-ink{box-shadow:inset 0 1px 0 #ffffff59, 0 8px 22px rgba(var(--pen-rgb), .32);color:#fff;background:linear-gradient(160deg,#3a6ef0,#2458d6 55%,#1a44ad);border-color:#ffffff59}.btn-ink:hover{box-shadow:inset 0 1px 0 #ffffff59, 0 14px 30px rgba(var(--pen-rgb), .38);background:linear-gradient(160deg,#3366e6,#1a44ad)}.btn-arrow{transition:transform .25s var(--ease-out)}.btn:hover .btn-arrow{transform:translate(3px)}.btn[href=\#puestos]:hover .btn-arrow{transform:translateY(3px)}.text-link{color:var(--pen);text-underline-offset:4px;align-items:center;gap:6px;font-weight:700;text-decoration:underline;text-decoration-thickness:1px;transition:color .16s,text-underline-offset .2s;display:inline-flex}.text-link:hover{color:var(--pen-dark);text-underline-offset:6px}.row-arrow{color:var(--faint);transition:transform .22s var(--ease-out), color .18s ease;flex:none;margin-left:auto}.tag-row{flex-wrap:wrap;gap:6px;display:flex}.tag{background:rgba(var(--accent-rgb), .22);color:var(--tag-ink);font-family:var(--mono);border-radius:6px;padding:4px 8px;font-size:.7rem}.topbar{z-index:20;-webkit-backdrop-filter:blur(28px)saturate(190%)brightness(1.04);backdrop-filter:blur(28px)saturate(190%)brightness(1.04);background:linear-gradient(#ffffff75,#ffffff3d);border-bottom:1px solid #ffffff8c;transition:box-shadow .2s,background .3s;position:sticky;top:0;box-shadow:inset 0 1px #ffffffb3,0 1px #0e11160a}.topbar[data-scrolled=true]{background:linear-gradient(#ffffff8c,#ffffff52);box-shadow:inset 0 1px #ffffffb3,0 10px 30px #213e8014}.topbar-inner{min-height:76px;transition:min-height .22s var(--ease-out);justify-content:space-between;align-items:center;gap:28px;display:flex}.topbar[data-scrolled=true] .topbar-inner{min-height:62px}.brand{align-items:center;gap:12px;min-width:0;display:flex}.brand-mark{border:1px solid var(--ink);width:40px;height:40px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);font-family:var(--mono);transition:transform .26s var(--ease-out), border-color .2s ease;background:#fff9;border-radius:10px;flex:none;justify-content:center;align-items:center;font-size:.9rem;font-weight:500;display:inline-flex}.brand-mark i{color:var(--pen);font-style:normal;animation:1.1s step-end infinite caret-blink}.brand:hover .brand-mark{border-color:var(--pen);transform:rotate(-6deg)}.brand-copy{gap:2px;display:grid}.brand-copy strong{font-size:.95rem;line-height:1.1}.brand-copy span{color:var(--muted);font-family:var(--mono);font-size:.68rem}.skip-link{z-index:50;background:var(--pen-solid);color:#fff;transition:transform .16s var(--ease-out);border-radius:999px;padding:10px 16px;font-weight:700;position:fixed;top:10px;left:10px;transform:translateY(-160%)}.skip-link:focus{transform:none}.site-nav{align-items:center;display:flex}.nav-track{position:relative}.site-nav ul{margin:0;padding:0;list-style:none;display:flex;position:relative}.site-nav a{z-index:1;min-height:40px;color:var(--text-2);white-space:nowrap;align-items:center;padding:9px 13px;font-size:.93rem;font-weight:550;transition:color .16s;display:inline-flex;position:relative}.site-nav a:hover,.site-nav a[aria-current=location]{color:var(--pen)}.nav-label{display:inline-block}.nav-indicator{width:calc(var(--w,0px) - 26px);background:var(--pen);pointer-events:none;height:2px;transform:translateX(var(--x,0));transition:transform .3s var(--ease-out), width .3s var(--ease-out), opacity .16s ease;border-radius:2px;position:absolute;bottom:3px;left:13px}.menu-toggle{border:1px solid var(--glass-edge);background:var(--glass-flat);min-height:42px;box-shadow:var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--ink);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:8px 16px;font-weight:650;display:none}.menu-toggle[aria-expanded=true]{border-color:var(--pen);color:var(--pen)}.topbar-tools{flex:none;align-items:center;gap:10px;display:flex}.lang{position:relative}.lang-toggle{border:1px solid var(--glass-edge);background:var(--glass-flat);min-height:42px;box-shadow:var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--ink);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:8px 13px;transition:border-color .16s,color .16s;display:inline-flex}.lang-toggle:hover,.lang-toggle[aria-expanded=true]{border-color:var(--pen);color:var(--pen)}.lang-code{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;font-size:.78rem;font-weight:500}.lang-caret{transition:transform .22s var(--ease-out)}.lang-toggle[aria-expanded=true] .lang-caret{transform:rotate(180deg)}.lang-menu{z-index:30;border:1px solid var(--glass-edge);min-width:184px;box-shadow:var(--glass-shadow), 0 18px 40px #213e8024;opacity:0;pointer-events:none;transform-origin:100% 0;transition:opacity .16s ease, transform .22s var(--ease-out);background:linear-gradient(145deg,#fffffffa,#fafbfdf2);border-radius:16px;gap:2px;margin:0;padding:6px;list-style:none;display:grid;position:absolute;top:calc(100% + 8px);right:0;transform:translateY(-6px)scale(.98)}.lang-menu[data-open=true]{opacity:1;pointer-events:auto;transform:none}.lang-menu a{min-height:42px;color:var(--ink);border-radius:11px;align-items:center;gap:12px;padding:8px 12px;font-weight:550;transition:background-color .14s,color .14s;display:flex}.lang-menu a:hover,.lang-menu a:focus-visible{background:rgba(var(--pen-rgb), .08);color:var(--pen)}.lang-menu .lang-code{width:22px;color:var(--faint)}.lang-menu a[aria-current=true],.lang-menu a[aria-current=true] .lang-code{color:var(--pen)}.lang-check{margin-left:auto}.mobile-menu{z-index:19;-webkit-backdrop-filter:blur(28px)saturate(180%);backdrop-filter:blur(28px)saturate(180%);padding:calc(var(--header-mobile) + 20px) 20px 28px;background:#f7f8fab8;flex-direction:column;gap:28px;display:flex;position:fixed;inset:0;overflow-y:auto}.mobile-menu ul{counter-reset:menu;margin:0;padding:0;list-style:none;display:grid}.mobile-menu li{border-bottom:1px dashed var(--line);counter-increment:menu;animation:rise .38s var(--ease-out) both;animation-delay:calc(var(--i) * 40ms)}.mobile-menu a:not(.btn){align-items:baseline;gap:14px;padding:16px 2px;font-size:1.7rem;font-weight:750;display:flex}.mobile-menu a:not(.btn):before{color:var(--faint);content:"0" counter(menu);font-family:var(--mono);font-size:.75rem;font-weight:400}.mobile-menu a[aria-current=location]{color:var(--pen)}.mobile-cta{align-self:flex-start}body.menu-open{overflow:hidden}.hero{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);align-items:center;gap:64px;padding:40px 0 72px;display:grid}.hero-title{letter-spacing:-.03em;max-width:12.5em;font-size:clamp(2.6rem,5vw,4.3rem);font-weight:800;line-height:1.02}.rise{animation:rise .7s var(--ease-out) both;display:inline-block}@keyframes rise{0%{opacity:0;transform:translateY(.35em)}}.hero-meta{border-top:1px dashed var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px 32px;margin-top:32px;padding-top:20px;display:flex}.school-row{flex-wrap:wrap;align-items:center;gap:12px 22px;display:flex}.school-row span{color:var(--faint);font-family:var(--mono);font-size:.72rem}.school-row img{filter:grayscale();opacity:.6;width:auto;height:21px;transition:filter .4s ease, opacity .4s ease, transform .3s var(--ease-out)}.school-row a:hover img{filter:none;opacity:1;transform:translateY(-1px)}.social-row{flex-wrap:wrap;gap:18px;display:flex}.social-link{color:var(--text-2);transition:color .18s ease, transform .2s var(--ease-out);align-items:center;gap:7px;font-size:.92rem;font-weight:650;display:inline-flex}.social-link:hover{color:var(--pen);transform:translateY(-2px)}.hero-visual{justify-self:end;width:min(100%,410px);padding-bottom:70px;position:relative}.hero-photo{animation:settle .9s var(--ease-out) .15s both;margin:0;position:relative}.hero-photo img{aspect-ratio:4/5;object-fit:cover;object-position:50% 12%;width:100%;height:auto;box-shadow:var(--shadow-soft);border-radius:22px}.hero-photo:before{z-index:1;background:rgba(var(--accent-rgb), .55);content:"";-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);width:104px;height:28px;position:absolute;top:-14px;right:22%;transform:rotate(4deg)}@keyframes settle{0%{opacity:0;transform:translateY(16px)rotate(-2deg)}}.code-card{width:min(360px,92%);animation:rise .7s var(--ease-out) .35s both;box-shadow:var(--glass-shadow), 0 30px 60px #213e802e;background:linear-gradient(145deg,#fffc,#ffffff8c);border-radius:16px;margin:0;position:absolute;bottom:0;left:-74px;overflow:hidden}.code-bar,.term-bar{border-bottom:1px solid var(--hairline);font-family:var(--mono);align-items:center;gap:12px;padding:9px 12px;font-size:.7rem;display:flex}.code-dots{gap:5px;display:inline-flex}.code-dots i{background:rgba(var(--neutral-rgb), .14);border-radius:50%;width:9px;height:9px}.code-dots i:first-child{background:var(--sky)}.code-tab{background:var(--sky-soft);color:var(--tag-ink);border-radius:6px;padding:3px 8px}.code-body{font-family:var(--mono);margin:0;padding:12px 16px 14px 10px;font-size:.74rem;line-height:1.75;overflow-x:auto}.code-body code{grid-template-columns:auto minmax(0,1fr);column-gap:14px;display:grid}.code-ln{color:#b3b9c2;text-align:right;-webkit-user-select:none;user-select:none}.code-line{white-space:pre;clip-path:inset(0 100% 0 0);animation:type-line var(--dur) steps(var(--chars)) var(--delay) forwards}@keyframes type-line{to{clip-path:inset(0)}}.tok-key{color:var(--pen)}.tok-str{color:#1f7a6d}.tok-bool{color:#b45309}.tok-punc{color:#6b7280}.code-caret{background:var(--pen);vertical-align:-.18em;width:.55em;height:1.05em;margin-left:2px;animation:1s step-end infinite caret-blink;display:inline-block}@keyframes caret-blink{50%{opacity:0}}.stats{border-radius:22px;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0 28px;display:grid}.stat{padding:26px 28px 28px 0}.stat+.stat{border-left:1px dashed var(--line);padding-left:28px}.stat dt{color:var(--faint);font-family:var(--mono);font-size:.72rem}.stat dd{gap:8px;margin:6px 0 0;display:grid}.stat-value{color:var(--pen);font-family:var(--serif);font-size:4.2rem;font-style:italic;line-height:.95}.stat-label{color:var(--text-2);font-size:.95rem;line-height:1.5}.terminal{color:#d9e4f5;-webkit-backdrop-filter:blur(24px)saturate(160%);backdrop-filter:blur(24px)saturate(160%);background:linear-gradient(150deg,#142444db,#0c162ccc);border:1px solid #ffffff24;border-radius:18px;margin-top:40px;overflow:hidden;box-shadow:inset 0 1px #ffffff1f,0 30px 60px #0f1b3340}.term-bar{color:#8ea3c7;border-bottom-color:#ffffff14}.term-bar .code-dots i{background:#ffffff2e}.term-bar .code-dots i:first-child{background:var(--sky)}.term-body{font-family:var(--mono);gap:14px;padding:22px 26px;display:grid}.term-comment{color:#6f86ad;font-size:.85rem}.term-line{align-items:flex-start;gap:14px;min-height:2.6em;font-size:clamp(1.1rem,2.3vw,1.65rem);line-height:1.3;display:flex}.term-prompt{color:var(--sky)}.term-text{white-space:pre-wrap}.term-text .is-key{color:var(--sky)}.term-caret{background:var(--sky);vertical-align:-.15em;width:.55em;height:1.05em;margin-left:2px;display:inline-block}.term-caret.is-blinking{animation:1s step-end infinite caret-blink}.term-tabs{flex-wrap:wrap;gap:4px;display:flex}.term-tabs button{color:#6f86ad;cursor:pointer;font-family:var(--mono);background:0 0;border:0;border-radius:6px;padding:4px 8px;font-size:.74rem;transition:background-color .16s,color .16s}.term-tabs button:hover{color:#d9e4f5}.term-tabs button[aria-current=true]{background:rgba(var(--accent-rgb), .18);color:var(--sky)}.term-list{gap:8px;margin:0;padding:0 0 0 1.4em;font-size:.95rem;list-style:"❯  ";display:grid}.term-list li::marker{color:var(--sky)}.offer-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.offer-card,.project-card,.role-card,.sheet{border-radius:var(--radius)}.offer-card{transition:border-color .22s ease, box-shadow .3s var(--ease-out), transform .3s var(--ease-out);align-content:start;gap:14px;padding:24px;display:grid}.offer-card:hover,.project-card:hover,.role-card:hover{background:var(--glass-hover);box-shadow:inset 0 1px 0 var(--highlight), 0 0 0 1px rgba(var(--pen-rgb), .28), 0 26px 50px #213e8029;border-color:#fffffff2;transform:translateY(-4px)}.offer-top{justify-content:space-between;align-items:center;display:flex}.offer-icon{border:1px solid var(--glass-edge);background:var(--well);width:44px;height:44px;box-shadow:inset 0 1px 0 var(--highlight), 0 4px 12px #213e8014;color:var(--pen);transition:background-color .25s ease, color .25s ease, transform .3s var(--ease-out);border-radius:12px;justify-content:center;align-items:center;display:inline-flex}.offer-card:hover .offer-icon{background:var(--pen-solid);color:#fff;transform:rotate(-6deg)}.offer-num{color:var(--faint);font-family:var(--mono);font-size:.75rem}.offer-card h3,.project-card h3{background:linear-gradient(var(--pen), var(--pen)) no-repeat 0 100% / 0 2px;width:fit-content;transition:background-size .4s var(--ease-out);padding-bottom:3px}.offer-card h3{font-size:1.18rem;font-weight:780}.offer-card:hover h3,.project-card:hover h3{background-size:100% 2px}.offer-card p{color:var(--text-3);font-size:.95rem;line-height:1.58}.polaroid{background:var(--polaroid);transform:rotate(var(--r,0deg));transition:transform .5s var(--ease-out), box-shadow .4s ease;margin:0;padding:12px 12px 0;position:relative;box-shadow:0 2px 4px #0e11160d,0 16px 36px #0e11161f}.polaroid:before{z-index:1;background:rgba(var(--accent-rgb), .55);content:"";width:92px;height:26px;position:absolute;top:-13px;left:50%;transform:translate(-50%)rotate(-3deg)}.polaroid-img{aspect-ratio:4/5;background:var(--sky-soft);position:relative;overflow:hidden}.polaroid-img img{object-fit:cover;transition:transform .8s var(--ease-out)}.polaroid figcaption{color:var(--ink);font-family:var(--serif);text-align:center;padding:10px 4px 14px;font-size:1.45rem;font-style:italic}.polaroid:hover{transform:rotate(0)translateY(-4px);box-shadow:0 4px 8px #0e11160f,0 26px 50px #0e111629}.polaroid:hover .polaroid-img img{transform:scale(1.04)}.side-polaroid{--r:2.5deg}.side-polaroid .polaroid-img{aspect-ratio:5/4}.photo-band{grid-template-columns:repeat(3,minmax(0,1fr));gap:44px;margin-top:88px;padding:0 12px;display:grid}.photo-band .polaroid:first-child{--r:-2.5deg}.photo-band .polaroid:nth-child(2){--r:1.8deg;margin-top:34px}.photo-band .polaroid:nth-child(3){--r:-1.2deg}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.project-card{transition:border-color .22s ease, box-shadow .3s var(--ease-out), transform .3s var(--ease-out);align-content:start;gap:14px;padding:26px 26px 24px;display:grid}.project-card:first-child{grid-column:1/-1}.project-kind{color:var(--muted);font-family:var(--mono);font-size:.74rem}.project-kind span{color:var(--pen);margin-right:6px}.project-card h3{letter-spacing:-.01em;font-size:1.65rem;font-weight:800}.project-text{color:var(--text-3);line-height:1.6}.project-links{flex-wrap:wrap;align-items:center;gap:18px;margin-top:2px;display:flex}.project-note{color:var(--faint);font-family:var(--mono);font-size:.74rem}.more-projects{margin-top:36px}.more-projects ul{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));column-gap:28px;margin:0;padding:0;list-style:none;display:grid}.more-projects li{border-bottom:1px dashed var(--line)}.more-projects a{transition:color .18s ease, padding .25s var(--ease-out);flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:14px 2px;display:flex}.more-projects a span{color:var(--muted);font-size:.88rem}.more-projects a:hover{color:var(--pen);padding-left:8px}.more-projects a:hover .row-arrow,.contact-list a:hover .row-arrow{color:var(--pen);transform:translate(3px,-1px)}.tabs{border-radius:14px;flex-wrap:wrap;gap:4px 22px;margin-bottom:32px;padding:0 18px;display:flex}.tabs button{color:var(--muted);cursor:pointer;font-family:var(--mono);background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:8px;margin-bottom:-1px;padding:10px 2px 12px;font-size:.84rem;transition:color .16s,border-color .2s;display:inline-flex}.tabs button:hover{color:var(--ink)}.tabs button[aria-selected=true]{border-color:var(--pen);color:var(--pen)}.tab-count{background:rgba(var(--neutral-rgb), .06);border-radius:999px;padding:1px 7px;font-size:.68rem}.tabs button[aria-selected=true] .tab-count{background:rgba(var(--pen-rgb), .12)}.role-groups{gap:48px;display:grid}.role-group-head{align-items:flex-start;gap:14px;margin-bottom:18px;display:flex}.role-group-head .step-mark{border:1px solid var(--glass-edge);background:var(--well);width:38px;height:38px;box-shadow:inset 0 1px 0 var(--highlight);color:var(--pen);border-radius:10px;flex:none;justify-content:center;align-items:center;display:inline-flex}.role-group-head h3{font-size:1.45rem;font-weight:800}.role-group-head p{max-width:70ch;color:var(--muted);margin-top:6px;line-height:1.5}.role-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.role-card{animation:rise .42s var(--ease-out) both;transition:border-color .22s ease, box-shadow .3s var(--ease-out), transform .3s var(--ease-out);align-content:start;gap:10px;padding:18px 20px 20px;display:grid}.role-card-top{justify-content:space-between;align-items:center;display:flex}.role-arrow{color:var(--faint);transition:transform .25s var(--ease-out), color .18s ease}.role-card:hover .role-arrow{color:var(--pen);transform:translate(2px,-2px)}.role-card h4{font-size:1.08rem;font-weight:780;line-height:1.2}.role-card p{color:var(--text-3);font-size:.93rem;line-height:1.5}.role-note{color:var(--muted)!important;font-size:.83rem!important}.fit{font-family:var(--mono);border-radius:999px;padding:3px 9px;font-size:.68rem}.fit-alta{background:rgba(var(--pen-rgb), .1);color:var(--pen)}.fit-media{background:rgba(var(--neutral-rgb), .05);color:var(--muted)}.timeline{margin:0;padding:0;list-style:none;display:grid}.timeline li{grid-template-columns:170px minmax(0,1fr);gap:28px;display:grid}.tl-date{color:var(--muted);font-family:var(--mono);text-align:right;padding-top:3px;font-size:.76rem;line-height:1.5}.tl-body{border-left:1px dashed rgba(var(--pen-rgb), .35);gap:6px;padding:0 0 30px 30px;display:grid;position:relative}.timeline li:last-child .tl-body{border-left-color:#0000;padding-bottom:0}.tl-body:before{border:2px solid var(--pen);content:"";width:13px;height:13px;transition:background-color .2s ease, transform .25s var(--ease-out);background:#ffffffe6;border-radius:50%;position:absolute;top:5px;left:-7px}.tl-body h3{font-size:1.16rem;font-weight:760;line-height:1.28;transition:color .18s}.tl-body p{color:var(--muted);line-height:1.45}.tl-area{font-family:var(--mono);font-size:.72rem;color:var(--pen)!important}.timeline li:hover .tl-body:before{background:var(--pen);transform:scale(1.15)}.timeline li:hover .tl-body h3{color:var(--pen)}.timeline li.is-current .tl-date{color:var(--pen);font-weight:500}.timeline li.is-current .tl-body:before{background:var(--sky);animation:1.8s ease-out infinite pulse-ring}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 rgba(var(--pen-rgb), .45)}to{box-shadow:0 0 0 10px rgba(var(--pen-rgb), 0)}}.timeline.jobs li{isolation:isolate;position:relative}.timeline.jobs .tl-date,.timeline.jobs .tl-body{z-index:1;position:relative}.job-mark{z-index:0;color:var(--pen);opacity:0;filter:blur(14px);pointer-events:none;transition:opacity .65s var(--ease-out), transform .75s var(--ease-out), filter .65s var(--ease-out);align-items:center;gap:32px;display:none;position:absolute;top:50%;right:0;transform:translate(90px,-58%)scale(.92);-webkit-mask-image:linear-gradient(90deg,#0000 0%,#000 45%);mask-image:linear-gradient(90deg,#0000 0%,#000 45%)}.job-mark img{object-fit:contain;width:auto;max-width:380px;height:130px}.job-mark img[src*=gencat]{height:96px}.job-mark img[src*=ambici]{height:70px}.job-mark img[src*=securitas]{height:108px}@media (hover:hover) and (min-width:961px){.job-mark{display:flex}.timeline.jobs .job-logos{display:none}.timeline.jobs li:hover .job-mark{opacity:.42;filter:blur(1.2px);transform:translateY(-58%)scale(1)}}.job-logos{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.job-logos img{object-fit:contain;object-position:left;filter:grayscale(.15);width:auto;max-width:140px;height:24px;transition:transform .25s var(--ease-out)}.job-logos img[src*=nfp],.job-logos img[src*=polo]{height:42px}.job-logos img[src*=securitas],.job-logos img[src*=corte]{height:38px}.job-logos img[src*=gencat]{height:30px}.timeline li:hover .job-logos img{transform:translateY(-1px)scale(1.04)}.job-icon{border:1px solid var(--glass-edge);background:var(--well);width:32px;height:32px;box-shadow:inset 0 1px 0 var(--highlight);color:var(--pen);border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.edu-logo{object-fit:contain;object-position:left;width:auto;max-width:150px;height:20px;margin-bottom:4px}.edu-logo[src*=thecorner]{height:40px}.edu-logo[src*=viu]{max-width:210px;height:28px}.edu-logo[src*=ub\.png]{max-width:170px;height:34px}.edu-toggle{width:calc(100% + 16px);color:inherit;cursor:pointer;text-align:left;transition:background-color .25s ease, border-color .25s ease, box-shadow .3s var(--ease-out);background:0 0;border:1px solid #0000;border-radius:14px;gap:6px;margin:-10px 0 0 -16px;padding:10px 16px 12px;display:grid}.edu-toggle:hover{background:#ffffff73}.timeline li.is-open .edu-toggle{border-color:var(--glass-edge);background:var(--glass);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.edu-title{font-size:1.16rem;font-weight:760;line-height:1.28;transition:color .18s}.edu-area{color:var(--muted);line-height:1.45}.edu-more{color:var(--pen);font-family:var(--mono);align-items:center;gap:5px;font-size:.72rem;display:inline-flex}.edu-more svg{transition:transform .25s var(--ease-out)}.edu-toggle:hover .edu-more svg{transform:translate(3px)}.timeline li.is-open .edu-title{color:var(--pen)}.timeline li.is-open .tl-body:before{background:var(--pen)}.edu-panel{min-height:280px;position:sticky;top:96px}.edu-detail{animation:detail-in .45s var(--ease-out) both}@keyframes detail-in{0%{opacity:0;filter:blur(4px);transform:translate(14px)}}.edu-group+.edu-group{margin-top:18px}.edu-group-title{color:var(--pen);font-family:var(--mono);margin-bottom:8px;font-size:.72rem}.edu-note{border-top:1px dashed var(--line);color:var(--pen);font-family:var(--serif);margin-top:20px;padding-top:14px;font-size:1.15rem;font-style:italic;line-height:1.35}.edu-inline{margin-top:12px;display:none}@media (max-width:960px){.edu-inline{display:block}.edu-panel{display:none}.edu-more svg{transform:rotate(90deg)}}.edu-layout{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start;gap:40px;display:grid}.edu-layout .timeline li{grid-template-columns:130px minmax(0,1fr)}.edu-side{gap:18px;display:grid}.sheet{padding:22px 24px}.sheet h3{color:var(--muted);font-family:var(--mono);align-items:center;gap:8px;margin-bottom:16px;font-size:.76rem;font-weight:500;display:flex}.sheet h3 svg{color:var(--pen)}.sheet-sub{margin-top:28px}.check-list{gap:9px;margin:0;padding:0;list-style:none;display:grid}.check-list li{color:var(--text-2);padding-left:22px;font-size:.95rem;line-height:1.42;position:relative}.check-list li:before{color:var(--pen);content:"—";font-family:var(--mono);position:absolute;left:0}.diploma-summary{color:var(--muted);flex-wrap:wrap;gap:10px 40px;margin-bottom:26px;font-size:.95rem;display:flex}.diploma-summary strong{color:var(--pen);font-family:var(--serif);font-size:2.1rem;font-style:italic;font-weight:400;line-height:1}.diploma-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.diploma{border:1px solid var(--glass-edge);border-radius:var(--radius);background:var(--glass);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);animation:rise .42s var(--ease-out) both;transition:box-shadow .3s var(--ease-out), transform .3s var(--ease-out);align-content:start;gap:8px;padding:18px 20px 20px;display:grid;position:relative;overflow:hidden}.diploma:before{background:linear-gradient(90deg, rgba(var(--pen-rgb), .5), rgba(var(--accent-rgb), .4), transparent);content:"";height:3px;position:absolute;top:0;left:0;right:0}.diploma:hover{box-shadow:inset 0 1px 0 var(--highlight), 0 0 0 1px rgba(var(--pen-rgb), .28), 0 24px 46px #213e8026;transform:translateY(-4px)}.diploma.is-featured{background:linear-gradient(145deg, #ffffffd1, rgba(var(--accent-rgb), .16));grid-column:span 2}.diploma.is-featured h3{font-size:1.28rem}.diploma-top{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.diploma-seal{border:1.5px solid rgba(var(--pen-rgb), .7);width:54px;height:54px;box-shadow:inset 0 0 0 3px #fff9, inset 0 0 0 4px rgba(var(--pen-rgb), .35);color:var(--pen);font-family:var(--mono);letter-spacing:.04em;transition:transform .4s var(--ease-out), background-color .3s ease;border-radius:50%;justify-content:center;align-items:center;font-size:.68rem;font-weight:500;display:inline-flex;transform:rotate(-9deg)}.diploma:hover .diploma-seal{background:rgba(var(--pen-rgb), .08);transform:rotate(0)scale(1.06)}.diploma-badge{object-fit:contain;width:56px;height:56px;transition:transform .4s var(--ease-out)}.diploma:hover .diploma-badge{transform:rotate(-6deg)scale(1.06)}.diploma-year{color:var(--faint);font-family:var(--mono);font-size:.74rem}.diploma h3{font-size:1.04rem;font-weight:760;line-height:1.25}.diploma-issuer{color:var(--muted);font-size:.9rem}.diploma-meta{background:rgba(var(--accent-rgb), .22);width:fit-content;color:var(--tag-ink);font-family:var(--mono);border-radius:6px;padding:3px 8px;font-size:.7rem}.diploma-verify{margin-top:4px;font-size:.86rem}@media (max-width:620px){.diploma.is-featured{grid-column:auto}.tabs{scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto}.tabs button{flex:none}}.skills-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:16px;display:grid}.lang-list,.soft-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.lang-list li,.soft-list li{justify-content:space-between;align-items:center;gap:12px;display:flex}.lang-list em{color:var(--muted);font-family:var(--mono);font-size:.76rem;font-style:normal}.dots{gap:4px;display:inline-flex}.dots i{border:1px solid rgba(var(--pen-rgb), .45);border-radius:3px;width:10px;height:10px}.dots i.on{border-color:var(--pen);background:var(--pen)}.skill{gap:7px;margin-top:14px;font-size:.95rem;font-weight:600;display:grid}.meter{background:rgba(var(--neutral-rgb), .07);border-radius:999px;height:5px;overflow:hidden}.meter span{border-radius:inherit;background:linear-gradient(90deg, var(--pen), #5b8cf0);transform-origin:0;height:100%;animation:meter-fill 1.2s var(--ease-out) .2s both;display:block}@keyframes meter-fill{0%{transform:scaleX(0)}}.soft-list li>span:first-child{font-size:.94rem}.level{font-family:var(--mono);font-size:.72rem}.level-experto{color:var(--pen);font-weight:500}.level-alto{color:#3f6fa8}.level-medio{color:var(--faint)}.contact-card{border-radius:28px;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:center;gap:56px;padding:clamp(28px,5vw,56px);display:grid}.contact-list{border-top:1px solid var(--line);margin:30px 0 0;padding:0;list-style:none;display:grid}.contact-list li{border-bottom:1px dashed var(--line)}.contact-list a{overflow-wrap:anywhere;transition:color .18s ease, padding .25s var(--ease-out);align-items:center;gap:14px;padding:15px 2px;font-size:clamp(.98rem,1.8vw,1.12rem);font-weight:650;display:flex}.contact-list a svg:first-child{color:var(--pen);flex:none}.contact-list a:hover{color:var(--pen);padding-left:8px}.contact-polaroid{--r:-2deg;justify-self:center;width:min(100%,340px)}.site-footer{border-top:1px solid var(--hairline)}.site-footer .container{color:var(--muted);font-family:var(--mono);flex-wrap:wrap;justify-content:space-between;gap:12px;padding:26px 0;font-size:.74rem;display:flex}.footer-links{flex-wrap:wrap;gap:18px;display:flex}.footer-links a{transition:color .16s}.footer-links a:hover{color:var(--pen)}.marquee{margin-top:96px}.marquee-label{color:var(--faint);font-family:var(--mono);text-align:center;margin:0 0 14px;font-size:.72rem}.marquee-viewport{border-top:1px dashed var(--line);border-bottom:1px dashed var(--line);display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 14% 86%,#0000);mask-image:linear-gradient(90deg,#0000,#000 14% 86%,#0000)}.marquee-track{flex:none;margin:0;padding:0;list-style:none;animation:90s linear infinite marquee-slide;display:flex}.marquee-viewport:hover .marquee-track{animation-play-state:paused}@keyframes marquee-slide{to{transform:translate(-100%)}}.tool{color:var(--muted);opacity:.55;flex:none;align-items:center;gap:10px;padding:18px 26px;font-size:.86rem;font-weight:650;transition:opacity .4s,color .4s;display:flex}.tool-logo{fill:currentColor;width:22px;height:22px;transition:fill .4s ease, transform .4s var(--ease-out);flex:none}.tool:hover{color:var(--ink);opacity:1}.tool:hover .tool-logo{fill:var(--brand);transform:scale(1.15)}.reading-progress{display:none}@supports (animation-timeline:scroll()){.reading-progress{z-index:30;background:linear-gradient(90deg, var(--pen), var(--sky));transform-origin:0;width:100%;height:2px;animation:linear both read-progress;animation-timeline:scroll(root);display:block;position:fixed;top:0;left:0}@keyframes read-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}}body:after{z-index:40;content:"";mix-blend-mode:multiply;opacity:.04;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}@supports (animation-timeline:view()){.offer-card,.project-card,.timeline li,.sheet,.stat,.contact-card{animation:linear both reveal;animation-timeline:view();animation-range:entry entry 35%}@keyframes reveal{0%{opacity:0;transform:translateY(22px)}}}@media (max-width:1180px){.container{width:calc(100% - 112px)}.site-nav a{padding:9px;font-size:.88rem}.nav-indicator{width:calc(var(--w,0px) - 18px);left:9px}.brand-copy span{display:none}}@media (max-width:960px){body:before{background-size:100% 100%,24px 24px,24px 24px;background-image:none, linear-gradient(rgba(var(--pen-rgb), .065) 1px, transparent 1px), linear-gradient(90deg, rgba(var(--pen-rgb), .065) 1px, transparent 1px)}.container{width:calc(100% - 64px)}.site-nav{display:none}.menu-toggle{display:inline-flex}.topbar-inner,.topbar[data-scrolled=true] .topbar-inner{min-height:var(--header-mobile)}.hero{grid-template-columns:minmax(0,1fr);gap:48px;padding-top:24px}.hero-visual{justify-self:center;width:min(100%,400px);padding-bottom:0}.code-card{width:100%;margin:-56px 0 0 -14px;position:relative;bottom:auto;left:auto}.stats{grid-template-columns:minmax(0,1fr);padding:0 22px}.stat,.stat+.stat{border-left:0;padding:22px 0}.stat+.stat{border-top:1px dashed var(--line)}.offer-grid,.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-grid,.chapter-split,.edu-layout,.contact-card{grid-template-columns:minmax(0,1fr)}.side-polaroid{width:min(100%,320px)}.timeline li,.edu-layout .timeline li{grid-template-columns:minmax(0,1fr);gap:0}.tl-date{border-left:1px dashed rgba(var(--pen-rgb), .35);text-align:left;padding:0 0 6px 30px}.margin-note{margin-left:18%}}@media (max-width:620px){.container{width:calc(100% - 32px)}.main{padding-top:16px}.section{padding-top:88px}.actions .btn{flex:100%}.hero-meta{flex-direction:column;align-items:flex-start}.offer-grid,.skills-grid{grid-template-columns:minmax(0,1fr)}.stat-value{font-size:3.6rem}.terminal{margin-top:40px}.term-body{padding:18px}.photo-band{scroll-snap-type:x mandatory;gap:22px;margin-right:-16px;padding:18px 16px 18px 6px;display:flex;overflow-x:auto}.photo-band .polaroid{scroll-snap-align:center;flex:0 0 72%}.photo-band .polaroid:nth-child(2){margin-top:0}.code-card{margin-left:-6px}.code-body{font-size:.68rem}.fold-bar{flex-direction:column;align-items:flex-start;padding:14px 16px}.fold-action{justify-content:center;align-self:stretch}.contact-list a{gap:12px;font-size:.9rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.aurora span{animation:none!important}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.scribble path{stroke-dashoffset:0}.code-line{clip-path:none}.marquee-viewport{flex-wrap:wrap;justify-content:center;-webkit-mask-image:none;mask-image:none}.marquee-track{flex-wrap:wrap;justify-content:center}.marquee-track[aria-hidden],.reading-progress{display:none}}:root[data-theme=dark]{--paper:#0b0f17;--sheet:#141a26db;--ink:#e7ebf2;--muted:#9aa3b1;--faint:#6c7584;--pen:#7ea6ff;--pen-dark:#a9c3ff;--pen-rgb:126, 166, 255;--sky:#7cc4ff;--sky-soft:#16263d;--accent-rgb:90, 170, 255;--line:#e7ebf21f;--hairline:#e7ebf212;--shadow-soft:0 1px 2px #0000004d, 0 12px 32px #00000059;--shadow-lift:0 2px 4px #0000004d, 0 22px 44px #00000073;--glass:linear-gradient(145deg, #1e26389e, #1218266b);--glass-flat:#181f2e99;--glass-edge:#ffffff17;--glass-shadow:inset 0 1px 0 #ffffff12, 0 1px 2px #0000004d, 0 16px 40px #00000059;--glass-hover:linear-gradient(145deg, #263046bd, #181f308a);--highlight:#ffffff14;--well:#ffffff0d;--text-2:#cfd6e1;--text-3:#b3bcc9;--tag-ink:#bcd2ff;--pen-solid:#3566e3;--neutral-rgb:231, 235, 242;--polaroid:#1b2130;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=dark] .aurora span{opacity:.32}:root[data-theme=dark] body:after{mix-blend-mode:soft-light;opacity:.08}:root[data-theme=dark] body:before{opacity:.7}:root[data-theme=dark] .topbar{background:linear-gradient(#0b0f179e,#0b0f1761);border-bottom-color:#ffffff0f;box-shadow:inset 0 1px #ffffff0a}:root[data-theme=dark] .topbar[data-scrolled=true]{background:linear-gradient(#0b0f17cc,#0b0f1799);box-shadow:0 10px 30px #00000059}:root[data-theme=dark] .brand-mark{background:#ffffff0a}:root[data-theme=dark] .btn{background:#ffffff0d;border-color:#ffffff1a;box-shadow:inset 0 1px #ffffff0f,0 1px 2px #0000004d}:root[data-theme=dark] .btn:hover{box-shadow:inset 0 1px 0 #ffffff14, 0 0 0 1px rgba(var(--pen-rgb), .45), 0 12px 28px #0006;background:#ffffff17}:root[data-theme=dark] .btn-ink{background:linear-gradient(160deg,#3a6ef0,#2458d6 55%,#1a44ad);border-color:#ffffff29;box-shadow:inset 0 1px #ffffff40,0 8px 22px #2458d659}:root[data-theme=dark] .lang-menu{background:linear-gradient(145deg,#182032,#121827);box-shadow:inset 0 1px #ffffff0f,0 18px 40px #00000080}:root[data-theme=dark] .mobile-menu{background:#0b0f17d6}:root[data-theme=dark] .code-card{box-shadow:var(--glass-shadow), 0 30px 60px #00000073;background:linear-gradient(145deg,#181f2ee6,#101521d1)}:root[data-theme=dark] .code-ln{color:#4b5566}:root[data-theme=dark] .tok-str{color:#5fd0bb}:root[data-theme=dark] .tok-bool{color:#f4a261}:root[data-theme=dark] .tok-punc{color:#8a93a3}:root[data-theme=dark] .terminal{border-color:#ffffff14}:root[data-theme=dark] .fold-bar[aria-expanded=true] .fold-action{background:#ffffff0f}:root[data-theme=dark] .tl-body:before{background:var(--paper)}:root[data-theme=dark] .edu-toggle:hover{background:#ffffff0a}:root[data-theme=dark] .diploma.is-featured{background:linear-gradient(145deg, #1e2638b3, rgba(var(--accent-rgb), .1))}:root[data-theme=dark] .diploma-seal{box-shadow:inset 0 0 0 3px #0b0f1799, inset 0 0 0 4px rgba(var(--pen-rgb), .35)}:root[data-theme=dark] .level-alto{color:#8fb0e0}:root[data-theme=dark] .job-logos img,:root[data-theme=dark] .edu-logo{box-sizing:content-box;background:#ffffffeb;border-radius:7px;padding:4px 8px}:root[data-theme=dark] .school-row img,:root[data-theme=dark] .school-row a:hover img,:root[data-theme=dark] .job-mark img{filter:grayscale()invert()}.theme-toggle{border:1px solid var(--glass-edge);background:var(--glass-flat);width:42px;height:42px;box-shadow:var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--ink);cursor:pointer;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;transition:border-color .16s,color .16s;display:inline-flex}.theme-toggle:hover{border-color:var(--pen);color:var(--pen)}.theme-toggle svg{transition:transform .5s var(--ease-out)}.theme-toggle:hover svg{transform:rotate(-20deg)}.theme-sun{display:none}:root[data-theme=dark] .theme-sun{display:block}:root[data-theme=dark] .theme-moon{display:none}::view-transition-old(root){animation-duration:.32s}::view-transition-new(root){animation-duration:.32s}@media (max-width:620px){.topbar-tools{gap:6px}.lang-caret{display:none}}
