.localnav{z-index:30;-webkit-backdrop-filter:blur(24px)saturate(160%);opacity:0;visibility:hidden;width:min(838px,100vw - 16px);height:48px;transition:opacity .32s var(--ease-apple), transform .32s var(--ease-apple), visibility .32s;background:#181317c7;border:1px solid #f5f2f414;border-radius:980px;justify-content:space-between;align-items:center;gap:16px;padding:0 8px 0 18px;display:none;position:fixed;top:8px;left:50%;transform:translate(-50%,-12px)}[data-js] .localnav{display:flex}.localnav.is-on{opacity:1;visibility:visible;transform:translate(-50%)}.localnav__brand{letter-spacing:-.01em;white-space:nowrap;font-size:.9375rem;font-weight:600}.localnav__links{color:var(--color-gris);white-space:nowrap;align-items:center;gap:clamp(12px,2vw,22px);font-size:.8125rem;display:flex}.localnav__links a{transition:color .32s var(--ease-apple)}.localnav__links a:hover{color:var(--color-text)}.localnav .localnav__cta{background:var(--color-odoo);color:var(--color-text);border-radius:980px;padding:7px 14px;font-weight:500}@media (width<=559px){.localnav__links a:not(.localnav__cta){display:none}}.bento{grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin-top:clamp(32px,5vw,64px);list-style:none;display:grid}.bento__tile{border-radius:var(--radius-tile);background:var(--color-surface);flex-direction:column;gap:12px;min-height:clamp(240px,26vw,340px);padding:clamp(24px,3vw,36px);display:flex;position:relative;overflow:hidden}.bento__tile--odoo{background:var(--color-odoo);grid-column:span 7}.bento__tile--ai{background:radial-gradient(120% 90% at 100% 0%, #714b67d9, transparent 62%), var(--color-surface);grid-column:span 5}.bento__tile--web,.bento__tile--infra,.bento__tile--lead{grid-column:span 4}.bento__title{letter-spacing:-.015em;font-size:clamp(1.75rem,3vw,2.5rem);font-weight:600;line-height:1.07}.bento__tile--odoo .bento__title{letter-spacing:-.03em;font-size:clamp(3rem,7vw,6rem);font-weight:700}.bento__text{color:#f5f2f4b8;max-width:36ch;line-height:1.38}.bento__tile--odoo .bento__text{color:var(--color-text);font-size:clamp(1.0625rem,1.5vw,1.3125rem)}@media (width<=767px){.bento__tile{grid-column:1/-1;min-height:0}}.contact{text-align:center;padding-bottom:96px;overflow:clip}.contact__glow{pointer-events:none;background:radial-gradient(50% 50% at 50% 42%,#714b6773,#0000);height:90%;position:absolute;inset:0 0 auto}.contact__inner{flex-direction:column;align-items:center;display:flex;position:relative}.contact__title{letter-spacing:-.035em;font-variation-settings:"opsz" 32;font-size:clamp(4rem,13vw,12rem);font-weight:700;line-height:1;position:relative}.contact__link{transition:transform .32s var(--ease-apple), filter .32s var(--ease-apple);border-radius:12px;display:block}@media (hover:hover){.contact__link:hover{filter:brightness(1.2);transform:scale(1.012)}}.contact__link:active{transform:scale(.985)}@media (prefers-reduced-motion:reduce){.contact__link,.contact__link:hover,.contact__link:active{transition:none;transform:none}}.contact__lit{color:var(--color-odoo);-webkit-text-stroke:.028em var(--color-text);paint-order:stroke fill;position:relative}.contact__halo{color:var(--color-odoo);-webkit-text-stroke:.14em var(--color-odoo);filter:blur(.2em);position:absolute;inset:0}.contact__halo--near{-webkit-text-stroke:.07em var(--color-odoo);filter:blur(.05em)}.contact__text{margin-top:clamp(20px,3vw,32px)}.contact__cta{justify-content:center}.contact__links{color:var(--color-gris);flex-wrap:wrap;justify-content:center;gap:8px 24px;margin-top:32px;font-size:.9375rem;list-style:none;display:flex}.contact__links a{transition:color .32s var(--ease-apple)}.contact__links a:hover{color:var(--color-text)}.contact__foot{color:var(--color-gris);flex-wrap:wrap;justify-content:center;gap:4px 24px;margin-top:clamp(64px,9vw,120px);font-size:.75rem;display:flex;position:relative}.experience__layout{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;gap:clamp(32px,5vw,80px);display:grid}.experience__head{position:sticky;top:clamp(72px,12svh,120px)}.git{list-style:none}.git__row{view-timeline:--git-row block;grid-template-columns:76px minmax(0,1fr);gap:clamp(12px,2vw,24px);display:grid;position:relative}.git__graph{align-self:stretch;position:relative}.git__lines{flex-direction:column;height:100%;display:flex}.git__top{flex:none;overflow:visible}.git__rest{flex:1;width:76px;min-height:0;display:block}.git__path{fill:none;stroke:#8f8f8f8c;stroke-width:1.5px}.git__path.is-live{stroke:var(--color-text);filter:drop-shadow(0 0 3px var(--color-odoo)) drop-shadow(0 0 8px var(--color-odoo))}.git__dot{border:2px solid var(--color-bg);background:var(--color-gris);border-radius:50%;width:11px;height:11px;position:absolute;transform:translate(-50%,-50%)}.git__dot.is-live{background:var(--color-text);box-shadow:0 0 6px var(--color-odoo), 0 0 16px var(--color-odoo)}.git__body{padding-block:24px clamp(28px,4vw,44px)}.git__when{color:var(--color-gris)}.git__title{letter-spacing:-.01em;margin-top:6px;font-size:clamp(1.1875rem,1.9vw,1.5rem);font-weight:600;line-height:1.16}.git__org{color:var(--color-gris);margin-top:2px;font-size:1.0625rem}.git__text{max-width:52ch;color:var(--color-gris);margin-top:10px;line-height:1.42}.git__now{letter-spacing:-.015em;font-size:clamp(2.25rem,5vw,3.5rem);font-weight:600;line-height:1.07}@media (width<=899px){.experience__layout{grid-template-columns:minmax(0,1fr)}.experience__head{position:static}}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.git__lines{animation:linear both git-draw view();animation-range:entry 30vh entry calc(100% + 30vh)}.git__dot{animation:linear both git-dot --git-row;animation-range:entry calc(30vh + 24px) entry calc(30vh + 60px)}@keyframes git-draw{0%{clip-path:inset(-4px -24px 100%)}to{clip-path:inset(-4px -24px)}}@keyframes git-dot{0%{opacity:0;scale:.4}to{opacity:1;scale:1}}}}.topbar{z-index:30;justify-content:space-between;align-items:center;max-width:1260px;height:64px;margin-inline:auto;padding-inline:clamp(16px,3vw,24px);display:flex;position:absolute;inset:0 0 auto}.topbar__brand{letter-spacing:-.01em;font-size:.9375rem;font-weight:600}.topbar__nav{color:var(--color-gris);align-items:center;gap:clamp(14px,2.4vw,28px);font-size:.8125rem;display:flex}.topbar__nav a{transition:color .32s var(--ease-apple)}.topbar__nav a:hover{color:var(--color-text)}.topbar .topbar__cta{background:var(--color-odoo);color:var(--color-text);border-radius:980px;padding:7px 14px;font-weight:500}@media (width<=559px){.topbar__nav a:not(.topbar__cta,[hreflang]){display:none}}.hero{isolation:isolate;align-items:center;min-height:100dvh;padding:80px clamp(16px,3vw,24px) 88px;display:flex;position:relative;overflow:clip}.hero__ambient{z-index:-1;aspect-ratio:1;pointer-events:none;background:radial-gradient(closest-side,#714b676b,#714b671f 55%,#0000);width:min(1100px,110vw);position:absolute;inset:-10% -10% auto auto}.hero__grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:clamp(24px,4vw,56px);width:100%;max-width:1260px;margin-inline:auto;display:grid}.name{--name-size:clamp(4rem, min(13.2vw, 25svh), 14rem);font-size:var(--name-size);letter-spacing:-.035em;font-variation-settings:"opsz" 32;font-weight:700;line-height:.92;position:relative}.name__word{width:max-content;display:block;position:relative}.name__word>*{display:block}.name__lit{color:var(--color-odoo);-webkit-text-stroke:.028em var(--color-text);paint-order:stroke fill;position:relative}.name__off{color:var(--color-surface);-webkit-text-stroke:.014em var(--color-gris);paint-order:stroke fill;opacity:0;position:absolute;inset:0}.name__halo{color:var(--color-odoo);-webkit-text-stroke:.14em var(--color-odoo);filter:blur(.2em);position:absolute;inset:0}.name__halo--near{-webkit-text-stroke:.07em var(--color-odoo);filter:blur(.05em)}.name__trace{width:100%;height:100%;display:none;position:absolute;inset:0;overflow:visible}.name__stroke{fill:none;stroke:var(--color-text);stroke-width:50px;stroke-linejoin:round;stroke-dasharray:1 1;stroke-dashoffset:1px}.name__cover{fill:var(--color-surface)}.lede{letter-spacing:-.012em;max-width:30ch;margin-top:clamp(28px,5svh,48px);font-size:clamp(1.3125rem,2vw,1.75rem);font-weight:500;line-height:1.2}.lede__soft{color:var(--color-gris)}.portrait{border-radius:var(--radius-tile);background:var(--color-surface);aspect-ratio:1024/1240;justify-self:end;width:100%;max-width:min(460px,100%);max-height:calc(100dvh - 176px);position:relative;overflow:hidden}.portrait__fill{background:var(--color-odoo);transform-origin:bottom;position:absolute;inset:0}.portrait img{object-fit:cover;object-position:50% 0;width:100%;height:100%;display:block;position:relative}@media (width<=767px){.hero{align-items:flex-start;padding-top:84px}.hero__grid{grid-template-columns:minmax(0,1fr)}.name{--name-size:min(27vw, 17svh)}.portrait{justify-self:stretch;max-width:none;max-height:60svh}}:is([data-build=pending],[data-build=running]) .hero:not([data-built]) .name__off{opacity:1}:is([data-build=pending],[data-build=running]) .hero:not([data-built]) :is(.name__lit,.name__halo){opacity:.001;will-change:opacity}:is([data-build=pending],[data-build=running]) .hero:not([data-built]) .hero__ambient{opacity:0;will-change:opacity}[data-build=running] .hero:not([data-built]) .name__trace{display:block}[data-build=pending] [data-b=nav],[data-build=pending] [data-b=lede],[data-build=pending] [data-b=cta]{opacity:0}[data-build=pending] .portrait img{opacity:.14}[data-build=pending] .portrait__fill{transform:scaleY(0)}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.hero__copy{animation:linear both hero-copy-out view();animation-range:exit exit 90%}.portrait{animation:linear both hero-portrait-out view();animation-range:exit -20% exit 70%}.hero__ambient{animation:linear both hero-ambient-out view();animation-range:exit exit 80%}@keyframes hero-copy-out{to{opacity:.2;transform:translateY(-6%)}}@keyframes hero-portrait-out{to{transform:translateY(-4%)scale(.96)}}@keyframes hero-ambient-out{to{transform:translateY(12%)}}}}.how__layout{grid-template-columns:minmax(0,6fr) minmax(0,5fr);align-items:start;gap:clamp(32px,5vw,80px);display:grid}.how__text{margin-top:20px}.how__cta{cursor:pointer;margin-top:28px}html:not([data-js]) [data-js-only]{display:none}@media (prefers-reduced-motion:reduce){[data-autopilot]{display:none}}.how__stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.how__stat{border-radius:var(--radius-tile);background:var(--color-surface);flex-direction:column-reverse;justify-content:flex-end;gap:6px;padding:clamp(18px,2.2vw,28px);display:flex}.how__stat[hidden]{display:none}.how__value{letter-spacing:-.015em;font-variant-numeric:tabular-nums;font-size:clamp(1.75rem,3.4vw,2.75rem);font-weight:600;line-height:1.05}.how__label{color:var(--color-gris);font-size:.9375rem;line-height:1.28}@media (width<=899px){.how__layout{grid-template-columns:minmax(0,1fr)}}.manifesto{padding-inline:clamp(16px,3vw,24px)}.manifesto__pin{align-items:center;min-height:100svh;padding-block:96px;display:flex}.manifesto__text{letter-spacing:-.02em;max-width:19ch;font-size:clamp(2.5rem,6.4vw,5.5rem);font-weight:600;line-height:1.05}.manifesto__detail{margin-top:clamp(28px,4vw,48px)}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){html:not([data-build]) .manifesto{view-timeline:--manifesto block;height:240svh}html:not([data-build]) .manifesto__pin{position:sticky;top:0}html:not([data-build]) .manifesto__word{animation:linear both word-on --manifesto;animation-range:contain calc(var(--i) / var(--n) * 70%) contain calc((var(--i) + 1.6) / var(--n) * 70%)}@keyframes word-on{0%{opacity:.16}to{opacity:1}}}}.device{grid-template-columns:minmax(0,6fr) minmax(0,5fr);align-items:center;gap:clamp(16px,4vw,64px);margin-top:clamp(16px,3vw,40px);padding-inline:clamp(16px,3vw,24px);display:grid}.device__stage{width:min(100%,86svh);margin-inline:auto;-webkit-mask-image:radial-gradient(closest-side,#000 76%,#0000);mask-image:radial-gradient(closest-side,#000 76%,#0000)}.device__stage video{aspect-ratio:1;width:100%;height:auto;display:block}.device__name{color:var(--color-gris);font-size:clamp(1.0625rem,1.5vw,1.3125rem);font-weight:500}.device__title{letter-spacing:-.015em;margin-top:8px;font-size:clamp(2rem,4vw,3.25rem);font-weight:600;line-height:1.07}.device__text{margin-block:18px 24px}@media (width<=767px){.device{grid-template-columns:minmax(0,1fr)}}.projects{padding-inline:0;overflow-x:clip}.projects>[data-section]>.wrap{padding-inline:clamp(16px,3vw,24px)}.gallery{margin-top:clamp(32px,5vw,64px)}.gallery__track{--tile-w:min(1260px, calc(100vw - 2 * clamp(16px, 3vw, 24px)), calc(74svh * 16 / 9));padding-inline:calc((100vw - var(--tile-w)) / 2);scroll-snap-type:x mandatory;scroll-padding-inline:calc((100vw - var(--tile-w)) / 2);scrollbar-width:none;gap:16px;list-style:none;display:flex;overflow-x:auto}.gallery__track::-webkit-scrollbar{display:none}.gallery__track:focus-visible{outline-offset:-4px}.tile{width:var(--tile-w);aspect-ratio:16/9;border-radius:var(--radius-tile);background:var(--color-surface);scroll-snap-align:center;scroll-snap-stop:always;flex:none;position:relative;overflow:hidden}.tile__video{object-fit:cover;object-position:top;width:100%;height:100%;display:block}.tile__shade{pointer-events:none;background:linear-gradient(#0000 34%,#0b070a66 52%,#0b070ae6 70%,#0b070afa);position:absolute;inset:0}.tile__copy{flex-direction:column;align-items:flex-start;gap:6px;padding:clamp(18px,3.4vw,44px);display:flex;position:absolute;inset:auto 0 0}.tile__name{letter-spacing:-.015em;font-size:clamp(1.625rem,3.6vw,2.75rem);font-weight:600;line-height:1.07}.tile__line{max-width:44ch;font-size:clamp(.9375rem,1.5vw,1.3125rem);line-height:1.25}.tile__cta{margin-top:10px}.gallery__controls{justify-content:center;align-items:center;gap:10px;margin-top:24px;display:flex}.gallery__dots{background:var(--color-surface);border-radius:980px;align-items:center;gap:2px;height:44px;padding-inline:12px;display:flex}.gallery__dot{cursor:pointer;place-items:center;min-width:24px;height:44px;padding-inline:8px;display:grid}.gallery__dot span{width:8px;height:8px;transition:width .32s var(--ease-apple);background:#f5f2f457;border-radius:980px;display:block;position:relative;overflow:hidden}.gallery__dot.is-active span{width:40px}.gallery__dot.is-active span:after{content:"";background:var(--color-text);transform:scaleX(var(--p,0));transform-origin:0;position:absolute;inset:0}.gallery__toggle{background:var(--color-surface)}@media (width<=767px){.tile{aspect-ratio:4/5}.tile__shade{background:linear-gradient(#0000 20%,#0b070a66 34%,#0b070af0 48%,#0b070afc)}.tile__video{object-position:left top}}@media (prefers-reduced-motion:reduce){.gallery__toggle{display:none}}.system__intro{padding-bottom:clamp(32px,5vw,64px)}.system__lead{margin-top:20px}.system__scene{padding-inline:clamp(16px,3vw,24px);padding-bottom:clamp(48px,6vw,96px);overflow-x:clip}.system__pin{align-items:center;min-height:100svh;display:flex}.system__layout{grid-template-columns:minmax(0,7fr) minmax(0,4fr);align-items:center;gap:clamp(24px,4vw,64px);display:grid}.system__stage{aspect-ratio:1;width:min(100%,76svh);margin-inline:auto;position:relative}.system__wires{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.wire{stroke:var(--color-odoo);stroke-width:.45px;stroke-dasharray:1}.wire--link{stroke:var(--color-gris);stroke-width:.18px;opacity:.6}.system__core{aspect-ratio:1;border:2px solid var(--color-text);background:var(--color-odoo);letter-spacing:-.02em;border-radius:50%;place-items:center;width:26%;font-size:clamp(1.25rem,3.4vw,2.5rem);font-weight:700;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.system__glow{aspect-ratio:1;width:26%;box-shadow:0 0 24px var(--color-odoo), 0 0 72px var(--color-odoo), 0 0 160px #714b67b3;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.system__node,.system__link{white-space:nowrap;position:absolute;transform:translate(-50%,-50%)}.system__node{background:var(--color-surface);border:1px solid #f5f2f424;border-radius:980px;padding:.5em .95em;font-size:clamp(.75rem,1.15vw,.9375rem);font-weight:500}.system__link{text-align:center;white-space:normal;max-width:7.5em;color:var(--color-gris);font-family:var(--font-mono);background:var(--color-bg);padding:.2em .5em;font-size:clamp(.625rem,.85vw,.75rem)}.system__stats{gap:clamp(20px,3.4vh,36px);display:grid}.system__stat{flex-direction:column-reverse;justify-content:flex-end;display:flex}.system__value{letter-spacing:-.015em;font-size:clamp(2.25rem,4.4vw,3.5rem);font-weight:600;line-height:1.05}.system__label{max-width:26ch;color:var(--color-gris);margin-top:4px;font-size:1.0625rem;line-height:1.3}@media (width<=767px){.system__layout{grid-template-columns:minmax(0,1fr);gap:20px}.system__stage{width:min(100%,52svh)}.system__stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.system__value{font-size:clamp(1.125rem,5.4vw,1.5rem)}.system__label{font-size:.75rem}}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.system__scene{view-timeline:--system block;height:210svh}html:not([data-build]) .system__scene{height:340svh}.system__pin{height:100svh;position:sticky;top:0}html:not([data-build]) :is(.wire,.system__node,.system__link,.system__stat,.system__core),.system__stage{animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--system}html:not([data-build]) .wire{animation-name:wire-draw;animation-range:contain calc(var(--s) * 1%) contain calc((var(--s) + 7) * 1%)}html:not([data-build]) :is(.system__node,.system__link){animation-name:node-in;animation-range:contain calc(var(--s) * 1%) contain calc((var(--s) + 7) * 1%)}html:not([data-build]) .system__stat{animation-name:stat-in;animation-range:contain calc(var(--s) * 1%) contain calc((var(--s) + 7) * 1%)}.system__stage{animation-name:stage-out;animation-range:contain contain 88%}html:not([data-build]) .system__core{animation-name:core-in;animation-range:contain contain 10%}@keyframes wire-draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes node-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.86)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes stat-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}@keyframes stage-out{0%,62%{transform:scale(1.14)}to{transform:scale(.94)}}@keyframes core-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.7)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}}}:is([data-build=pending],[data-build=running]) [data-section=escena]:not([data-built]) :is(.system__node,.system__link,.system__stat,.system__core,.system__glow,.system__core-label){opacity:0}:is([data-build=pending],[data-build=running]) [data-section=escena]:not([data-built]) .wire{stroke-dashoffset:1px}
