@font-face{font-family:Syne;font-style:normal;font-display:swap;font-weight:400 800;src:url(/fonts/syne-latin-wght-normal.woff2)format("woff2-variations"),url(/fonts/syne-latin-wght-normal.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/inter-latin-wght-normal.woff2)format("woff2-variations"),url(/fonts/inter-latin-wght-normal.woff2)format("woff2")}:root{--bg:#0a0a0c;--surface:#111113;--surface-hover:#1a1a1c;--surface-hover-strong:#222226;--line:#1f1f22;--line-strong:#2a2a2d;--text:#fff;--text-2:#b5b5ba;--text-3:#8a8a8f;--text-4:#7c7c82;--text-5:#888890;--font-display:"Syne", "Unbounded", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--page-x:clamp(1.25rem, 3.5vw, 3.5rem);--gutter:clamp(5rem, 8vw, 7.5rem);--container:68.75rem;--section-top:6rem;--gap-header-body:3.5rem;--header-top:2.25rem;--bottom-pad:3.25rem;--header-h:calc(var(--header-top) + 2.4rem);--title-size:clamp(2rem, 4.5vw, 4.5rem);--title-line:1;--title-tracking:-.01em;--micro-size:.75rem;--micro-weight:500;--micro-tracking:.2em;--body-size:.95rem;--body-line:1.6;--small-size:.85rem;--small-line:1.55;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--space-32:8rem;--screen-gap:1rem;--ease:cubic-bezier(.2, .7, .2, 1);--dur:.25s;--transition-fast:.15s var(--ease);--transition-normal:.25s var(--ease);--z-fixed:100;--z-modal:200;--btn-pad-y:1rem;--btn-pad-x:3rem;--btn-font-size:var(--micro-size);--card-border:var(--line);--input-line:var(--line-strong);--chrome-white:#fff;--chrome-ice:#dbe8ff;--chrome-cyan:#9ec3ff;--chrome-lilac:#e3c9ff;--chrome-pink:#ffb8ec;--chrome-blue:#a9bcff;--chrome-aqua:#eaf1ff;--chrome-gradient:linear-gradient(110deg, var(--chrome-white) 0%, var(--chrome-ice) 10%, var(--chrome-cyan) 24%, var(--chrome-cyan) 36%, var(--chrome-white) 46%, var(--chrome-lilac) 56%, var(--chrome-pink) 68%, var(--chrome-blue) 80%, var(--chrome-aqua) 90%, var(--chrome-white) 100%);--chrome-text-bg-size:250% 100%;--chrome-text-duration:12s;--chrome-text-ease:ease-in-out;--spotlight-size:240px;--spotlight-color:#dbe8ff1a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-snap-type:y mandatory;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;color-scheme:dark;font-size:16px;overflow-x:hidden}html[data-snap=loose]{scroll-snap-type:y proximity}body{font-family:var(--font-body);font-size:var(--body-size);color:var(--text);background:var(--bg);text-rendering:geometricprecision;min-height:100svh;line-height:1.5;overflow-x:hidden}:focus-visible{outline:2px solid var(--text);outline-offset:4px}::selection{background:var(--text);color:var(--bg)}*{scrollbar-width:thin;scrollbar-color:var(--line) var(--bg)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--line);border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--text-3)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chrome-text{background:var(--chrome-gradient);background-size:var(--chrome-text-bg-size);color:#0000;-webkit-text-fill-color:transparent;animation:chrome-shift var(--chrome-text-duration) var(--chrome-text-ease) infinite alternate;will-change:background-position;-webkit-background-clip:text;background-clip:text}@supports not (background-clip:text){.chrome-text{background:0 0;-webkit-background-clip:initial;background-clip:initial;color:var(--chrome-white);-webkit-text-fill-color:initial;animation:none}}.chrome-line{background:var(--chrome-gradient);background-size:var(--chrome-text-bg-size);width:100%;height:1px;animation:chrome-shift var(--chrome-text-duration) var(--chrome-text-ease) infinite alternate;will-change:background-position}.chrome-line--v{background:var(--chrome-gradient);width:1px;height:100%;animation:chrome-shift-vertical var(--chrome-text-duration) var(--chrome-text-ease) infinite alternate;will-change:background-position;background-size:100% 250%}.chrome-border-hover{position:relative}.chrome-border-hover:before{content:"";background:var(--chrome-gradient);background-size:var(--chrome-text-bg-size);opacity:0;transition:opacity var(--transition-normal);pointer-events:none;border-radius:inherit;z-index:-1;position:absolute;inset:-1px}.chrome-border-hover:hover:before,.chrome-border-hover:focus-visible:before{opacity:1}@media (hover:none){.chrome-border-hover:hover:before{opacity:0}.chrome-border-hover:active:before,.chrome-border-hover:focus-visible:before{opacity:1}}@keyframes chrome-shift{0%{background-position:0%}to{background-position:100%}}@media (prefers-reduced-motion:reduce){.chrome-text,.chrome-line,.chrome-border-hover:before{background-position:50%;animation:none}}@media (forced-colors:active){.chrome-text{background:0 0;-webkit-background-clip:initial;background-clip:initial;color:canvastext;-webkit-text-fill-color:CanvasText;animation:none}.chrome-line{background:canvastext;animation:none}.chrome-border-hover:before{background:canvastext}}.fixed-header{padding:var(--header-top) var(--page-x) 0;z-index:var(--z-fixed);transition:background var(--transition-normal), border-color var(--transition-normal);background:0 0;justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}@media (prefers-reduced-motion:reduce){.fixed-header{transition:none}}.logo{font-family:var(--font-display);letter-spacing:-.02em;text-transform:uppercase;color:var(--text);align-items:center;min-height:44px;font-size:2.4rem;font-weight:800;line-height:1;text-decoration:none;display:inline-flex}.nav{gap:2rem;display:flex}.nav-link{font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);transition:color var(--transition-fast);align-items:center;min-height:44px;text-decoration:none;display:inline-flex;position:relative}.nav-link:after{content:"";background:var(--chrome-gradient);background-size:var(--chrome-text-bg-size);-webkit-mask-composite:exclude;width:0;height:1px;animation:chrome-shift var(--chrome-text-duration) var(--chrome-text-ease) infinite alternate;will-change:background-position;transition:width var(--transition-fast);position:absolute;bottom:-2px;left:0;-webkit-mask:linear-gradient(#fff,#fff);-webkit-mask-composite:xor;mask:linear-gradient(#fff,#fff) exclude}@media (hover:hover){.nav-link:hover,.nav-link:focus-visible{color:var(--text)}.nav-link:hover:after,.nav-link:focus-visible:after{width:100%}}.nav-link.active{color:var(--text)}.nav-link.active:after{width:100%}@media (prefers-reduced-motion:reduce){.nav-link:after{background-position:50%;animation:none}}.header-end{align-items:center;display:flex}.header-switcher{border-right:1px solid var(--line);align-items:center;margin-right:1.5rem;padding-right:1.5rem;display:flex}.language-switcher{align-items:center;gap:.9rem;display:flex}.lang-link{font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);transition:color var(--transition-fast);align-items:center;min-height:44px;text-decoration:none;display:inline-flex;position:relative}.lang-label{position:relative}.lang-link[aria-current=true]{color:var(--text)}.lang-link[aria-current=true] .lang-label:after{content:"";background:var(--chrome-gradient);background-size:var(--chrome-text-bg-size);-webkit-mask-composite:exclude;height:1px;animation:chrome-shift var(--chrome-text-duration) var(--chrome-text-ease) infinite alternate;will-change:background-position;position:absolute;bottom:-4px;left:0;right:0;-webkit-mask:linear-gradient(#fff,#fff);-webkit-mask-composite:xor;mask:linear-gradient(#fff,#fff) exclude}@media (hover:hover){.lang-link:hover,.lang-link:focus-visible{color:var(--text)}}.lang-link:focus-visible{outline:2px solid var(--text);outline-offset:4px}@media (prefers-reduced-motion:reduce){.lang-link[aria-current=true] .lang-label:after{background-position:50%;animation:none}}.lang-sep{background:var(--line-strong);width:1px;height:.75em}.page-switcher{margin-bottom:var(--space-4);justify-content:flex-end;display:flex}.article-header-top{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.blog-notice{font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);border:1px solid var(--line-strong);padding:var(--space-2) var(--space-4);margin-bottom:var(--space-6);scroll-margin-top:calc(var(--header-h) + 1rem)}.blog-notice[hidden]{display:none}@media (prefers-reduced-motion:reduce){.lang-link[aria-current=true] .lang-label:after,.nav-link:after{background-position:50%;animation:none}}.fixed-social{bottom:var(--bottom-pad);left:var(--page-x);z-index:var(--z-fixed);pointer-events:none;flex-direction:column;gap:1.5rem;display:flex;position:fixed}.fixed-social>*{pointer-events:auto}.social-link{width:18px;height:18px;color:var(--text);opacity:.9;transition:opacity var(--transition-fast), transform var(--transition-fast);justify-content:center;align-items:center;display:flex}.social-link svg{width:100%;height:100%;display:block}.social-link:hover,.social-link:focus-visible{opacity:1;transform:translateY(-2px)}.social-link:focus-visible{outline:2px solid var(--text);outline-offset:4px}.fixed-scroll{bottom:var(--bottom-pad);right:var(--page-x);z-index:var(--z-fixed);visibility:visible;flex-direction:column;align-items:center;gap:.75rem;transition:opacity .2s,visibility linear,pointer-events .2s;display:flex;position:fixed}.fixed-scroll.fade-out{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s,visibility 0s linear .2s,pointer-events .2s}.scroll-text{writing-mode:vertical-rl;text-orientation:mixed;font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:.3em;text-transform:uppercase;color:var(--text-3);font-weight:500}.scroll-line{background:var(--line-strong);flex:none;width:1px;height:40px;display:block;position:relative;overflow:hidden}.scroll-line:after{content:"";background:linear-gradient(#fff,#b9f3ff 45%,#e3c9ff 75%,#ffb8ec);animation:2.4s cubic-bezier(.5,0,.2,1) infinite scroll-line-run;position:absolute;inset:0;transform:translateY(-100%)}@keyframes scroll-line-run{0%{transform:translateY(-100%)}50%{transform:translateY(0)}to{transform:translateY(100%)}}.section{scroll-snap-align:start;scroll-snap-stop:always;width:100%;min-height:100svh;position:relative}.section-content,.portfolio-inner,.blog-content,.hiw-content,.contact-content{width:min(var(--container), 100% - 2 * var(--gutter));margin-inline:auto}.section-head,.blog-header,.hiw-header,.contact-header{border-top:1px solid var(--line);justify-content:space-between;align-items:last baseline;gap:2rem;display:flex}.section-title,.blog-title,.hiw-title,.contact-title{font-family:var(--font-display);font-weight:800;font-size:var(--title-size);line-height:var(--title-line);letter-spacing:var(--title-tracking);text-transform:uppercase;color:var(--text);margin:0}.section-subtitle,.blog-subtitle,.hiw-subtitle,.contact-subtitle{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);white-space:nowrap;margin:0;font-weight:400;line-height:1.5}@media (width<=768px){.section-head,.hiw-header,.contact-header{flex-direction:column;align-items:flex-start;gap:1rem}.section-subtitle,.hiw-subtitle,.contact-subtitle{text-align:left;max-width:none}.blog-subtitle,.section-subtitle,.hiw-subtitle,.contact-subtitle{white-space:normal}}.hero{min-height:100svh;padding:var(--header-h) var(--page-x) 0;text-align:center;grid-template-rows:1fr;place-items:center;display:grid}.hero-container{width:max-content;max-width:100%;position:relative}.hero-name{font-family:var(--font-display);letter-spacing:-.01em;text-transform:uppercase;color:var(--text);margin:0;font-size:clamp(2.5rem,7.95vw,10rem);font-weight:800;line-height:1}.hero-name-text{padding-bottom:.08em;display:block}@media (width<=1023.98px){.hero-name-text.chrome-text{content-visibility:auto;animation-duration:18s}}.hero-label{font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);white-space:nowrap;margin:0;position:absolute;bottom:calc(83.5% + .5rem);left:8%}.hero-role{font-family:var(--font-body);letter-spacing:.15em;text-transform:uppercase;color:var(--text-4);white-space:nowrap;margin:0;font-size:.75rem;font-weight:400;position:absolute;top:calc(82.5% + .75rem);right:0}.portfolio{--card-w:clamp(9.375rem, 15.5vw, 15rem);--card-w-center:calc(var(--card-w) * 1.1);--card-h-side:max(calc(var(--card-w) * 1.55), 22rem);--card-h-center:calc(var(--card-h-side) * 1.1);--card-pad:1.25rem;--card-gap:clamp(1rem, 2vw, 2rem);--title-band:calc(var(--card-h-center) * .15);min-height:100svh;padding:calc(var(--header-h) + var(--section-top)) 0 clamp(3rem, 8vh, 6rem);justify-content:center;align-items:center;display:flex}.portfolio-inner{flex-direction:column;align-items:center;display:flex}.project-row{grid-template-columns:var(--card-w) var(--card-w-center) var(--card-w);grid-template-rows:calc(var(--card-h-side) * .1) auto;justify-content:center;align-items:stretch;column-gap:var(--card-gap);row-gap:0;width:100%;display:grid}.project-card{width:var(--card-w);min-height:var(--card-h-side);padding:var(--card-pad) var(--card-pad) calc(var(--title-band) + .75rem);background:var(--surface);border:1px solid var(--line);color:inherit;transition:background-color var(--transition-normal), border-color var(--transition-normal);border-radius:0;flex-direction:column;flex-shrink:0;grid-row:2;text-decoration:none;display:flex;position:relative}.project-card-inner{min-height:0;transition:transform var(--transition-fast);flex:1;grid-template-rows:auto minmax(0,1fr) auto;row-gap:.75rem;display:grid}.project-card--featured{width:var(--card-w-center);min-height:var(--card-h-center);grid-row:1/span 2}.project-card:focus-visible{outline:2px solid var(--text);outline-offset:4px}@media (hover:hover){.project-card:hover,.project-card:focus-visible{background-color:var(--surface-hover);border-color:var(--line-strong)}.project-card:hover .project-card-arrow,.project-card:focus-visible .project-card-arrow{color:var(--text);transform:translate(3px,-3px)}}@media (prefers-reduced-motion:reduce){.project-card{transition:none}.project-card:hover .project-card-arrow,.project-card:focus-visible .project-card-arrow{transform:none}}.project-card-art{aspect-ratio:1;justify-content:center;place-self:center;align-items:center;width:min(100%,12rem);min-height:0;max-height:100%;margin-inline:auto;display:flex}.project-card-art svg{width:100%;height:100%;display:block}.project-card-art svg [opacity]{transition:opacity var(--transition-normal)}.project-card:hover .project-card-art svg,.project-card:focus-visible .project-card-art svg{stroke:var(--chrome-cyan);stroke-opacity:.3}.project-card:hover .project-card-art svg [opacity],.project-card:focus-visible .project-card-art svg [opacity]{opacity:1}@media (prefers-reduced-motion:reduce){.project-card:hover .project-card-inner,.project-card:focus-visible .project-card-inner{transition:transform var(--transition-fast);transform:translateY(-6px)}}@media (hover:none){.project-card:active .project-card-inner{transition:transform var(--transition-fast);transform:translateY(-2px)}.project-card:active:before{opacity:.6}}.project-card-meta{flex-direction:column;gap:.4rem;display:flex}.project-card-name{font-family:var(--font-display);letter-spacing:.02em;text-transform:uppercase;color:var(--text);font-size:1.2rem;font-weight:700;line-height:1}.project-card--featured .project-card-name{font-size:1.35rem}@media (width<=640px){.project-card--featured .project-card-name{font-size:1.2rem}}.project-card-label{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:.18em;text-transform:uppercase;color:var(--text-4);font-weight:500;line-height:1.4}.portfolio-caption{flex-direction:column;align-items:center;width:100%;display:flex}.portfolio-title{z-index:2;margin-top:calc(var(--title-band) * -1);font-family:var(--font-display);font-weight:800;font-size:var(--title-size);line-height:var(--title-line);letter-spacing:var(--title-tracking);text-transform:uppercase;color:var(--text);white-space:nowrap;text-align:center;pointer-events:none;position:relative}.portfolio-subtitle{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);white-space:nowrap;text-align:center;margin-top:.75rem;font-weight:400}.btn{padding:var(--btn-pad-y) var(--btn-pad-x);background:var(--surface-hover);font-family:var(--font-body);font-size:var(--btn-font-size);letter-spacing:.15em;text-transform:uppercase;color:var(--text-3);transition:background-color var(--transition-fast), color var(--transition-fast);cursor:pointer;border:none;border-radius:0;justify-content:center;align-items:center;font-weight:500;line-height:1.5;text-decoration:none;display:inline-flex}@media (hover:hover){.btn:hover,.btn:focus-visible{background-color:var(--surface-hover-strong);color:var(--text)}}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.portfolio-cta{margin-top:clamp(1.5rem,3vh,2.25rem)}.blog{min-height:100svh;padding:calc(var(--header-h) + var(--section-top) - 1rem) 0 clamp(.75rem, 2vh, 3rem);justify-content:center;align-items:center;display:flex}.blog-list{margin-top:var(--gap-header-body)}.blog-row{border-bottom:1px solid var(--line);color:inherit;margin-inline:calc(-1 * var(--space-6));padding:1.5rem 0;padding-inline:var(--space-6);transition:background-color var(--transition-normal), border-bottom-color var(--transition-normal);grid-template-columns:16rem 1fr auto;align-items:start;column-gap:1.5rem;text-decoration:none;display:grid;overflow:hidden}.blog-row:first-child{border-top:1px solid var(--line)}@media (hover:hover){.blog-row:hover,.blog-row:focus-visible{background-color:var(--surface);border-bottom-color:var(--line-strong)}.blog-row:hover .blog-row-title,.blog-row:focus-visible .blog-row-title{color:var(--text)}.blog-row:hover .blog-row-arrow,.blog-row:focus-visible .blog-row-arrow{color:var(--text);transform:translate(3px,-3px)}}@media (prefers-reduced-motion:reduce){.blog-row{transition:none}.blog-row:hover .blog-row-arrow,.blog-row:focus-visible .blog-row-arrow{transform:none}}.blog-row-meta{flex-direction:column;gap:.4rem;display:flex}.blog-row-index{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:var(--micro-tracking);color:var(--text-3);font-weight:400}.blog-row-date{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:.1em;text-transform:uppercase;color:var(--text-4);white-space:nowrap;font-weight:400}.blog-row-tag{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:.18em;text-transform:uppercase;color:var(--text-2);font-weight:500}.blog-row-lang{margin-bottom:var(--space-2);display:inline-block}[lang=es] .blog-row-body{position:relative}[lang=es] .blog-row-lang{margin:0;position:absolute;top:-1.2em;right:0}[lang=es] .blog-row-body:has(.blog-row-lang){margin-top:0;padding-top:0}.blog-row-body{min-width:0}.blog-row-title{font-family:var(--font-body);color:var(--text);-webkit-line-clamp:2;line-clamp:2;transition:color var(--transition-normal);-webkit-box-orient:vertical;margin:0;font-size:clamp(1.15rem,1.8vw,1.6rem);font-weight:600;line-height:1.2;display:-webkit-box;overflow:hidden}.blog-row-excerpt{font-family:var(--font-body);font-size:var(--body-size);color:var(--text-4);text-overflow:ellipsis;white-space:nowrap;margin:.5rem 0 0;font-weight:400;line-height:1.4;overflow:hidden}.blog-row-arrow{color:var(--text-3);transition:color var(--transition-normal), transform var(--transition-normal);place-self:start end;line-height:0;display:inline-flex}.blog-cta{margin-top:1.5rem}@media (height<=780px) and (width>=769px){:root{--section-top:3rem}.blog{padding-bottom:3rem}.blog-list,.blog-cta{margin-top:.5rem}.blog-row-meta{gap:0}.btn{padding:.65rem 2.5rem}}@media (height<=620px) and (width>=769px){:root{--section-top:2rem}}.how-i-work{min-height:100svh;padding:calc(var(--header-h) + var(--section-top)) 0 clamp(1rem, 3vh, 3rem);justify-content:center;align-items:center;display:flex}.hiw-layout{margin-top:var(--gap-header-body);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;gap:4rem;display:grid}.hiw-menu{display:block}.hiw-tab{border:0;border-bottom:1px solid var(--card-border);width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;grid-template-columns:auto minmax(0,1fr);align-items:baseline;column-gap:1.25rem;padding:1.25rem 0;display:grid}.hiw-tab-name{font-family:var(--font-display);text-transform:uppercase;color:var(--text-4);min-width:0;transition:color var(--transition-normal), transform var(--transition-normal);font-size:clamp(1rem,1.9vw,1.5rem);font-weight:800;line-height:1;overflow:hidden}.hiw-tab[aria-selected=true] .hiw-tab-name,.hiw-tab:focus-visible .hiw-tab-name{color:#0000;-webkit-text-fill-color:transparent;background:var(--chrome-gradient);background-size:var(--chrome-text-bg-size);background-position:50%;-webkit-background-clip:text;background-clip:text;transform:translate(12px)}@media (hover:hover) and (pointer:fine){.hiw-tab:hover .hiw-tab-name{color:#0000;-webkit-text-fill-color:transparent;background:var(--chrome-gradient);background-size:var(--chrome-text-bg-size);background-position:50%;-webkit-background-clip:text;background-clip:text;transform:translate(12px)}}.hiw-tab:focus-visible{outline:2px solid var(--text);outline-offset:4px}.hiw-panel{border-left:1px solid var(--card-border);height:clamp(320px,48svh,460px);padding-left:3rem}.hiw-panel[hidden]{display:none}@keyframes hiw-fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.hiw-panel:not([hidden]){animation:hiw-fade var(--transition-normal)}.hiw-panel:focus-visible{outline:2px solid var(--text);outline-offset:4px}.hiw-principles,.hiw-steps,.hiw-stack{grid-template-columns:1fr 1fr;gap:1.5rem 3rem;display:grid}.hiw-principle{flex-direction:column;gap:.35rem;display:flex}.hiw-principle-name{font-family:var(--font-body);font-weight:600;font-size:var(--body-size);color:var(--text);line-height:1.35}.hiw-principle-text{font-family:var(--font-body);font-size:var(--small-size);font-weight:400;line-height:var(--small-line);color:var(--text-2)}.hiw-step{grid-template-columns:auto 1fr;align-items:baseline;column-gap:.75rem;display:grid}.hiw-step-num{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:var(--micro-tracking);color:var(--text-3)}.hiw-step-text{font-family:var(--font-body);font-size:var(--small-size);font-weight:400;line-height:var(--small-line);color:var(--text-2)}.hiw-stack-group{flex-direction:column;gap:.35rem;display:flex}.hiw-stack-label{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);font-weight:500}.hiw-stack-items{font-family:var(--font-body);font-size:var(--small-size);font-weight:400;line-height:var(--small-line);color:var(--text-2)}.hiw-certs{flex-direction:column;display:flex}.hiw-cert{border-bottom:1px solid var(--card-border);flex-direction:column;gap:.4rem;padding:1.25rem 0;display:flex}.hiw-cert:first-child{border-top:1px solid var(--card-border)}.hiw-cert-name{font-family:var(--font-body);font-weight:600;font-size:var(--body-size);color:var(--text);line-height:1.35}.hiw-cert-issuer{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3)}@media (height<=780px) and (width>=769px){.hiw-tab{padding:.75rem 0}.hiw-principle-text,.hiw-step-text,.hiw-stack-items{font-size:.8rem}}@media (prefers-reduced-motion:reduce){.hiw-panel:not([hidden]){animation:none}.hiw-tab[aria-selected=true] .hiw-tab-name,.hiw-tab:focus-visible .hiw-tab-name{transform:none}}@media (prefers-reduced-motion:reduce) and (hover:hover) and (pointer:fine){.hiw-tab:hover .hiw-tab-name{transform:none}}@media (height<=700px){.how-i-work{padding-top:calc(var(--header-h) + 2rem);padding-bottom:1rem}.hiw-layout{gap:2rem;margin-top:1rem}.hiw-panel{padding-left:1.5rem}}.contact{min-height:100svh;padding:calc(var(--header-h) + var(--section-top)) 0 clamp(3.5rem, 10vh, 6rem);justify-content:center;align-items:center;display:flex}.contact-layout{margin-top:var(--gap-header-body);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;gap:4rem;display:grid}.contact-left{flex-direction:column;gap:2rem;display:flex}.contact-description{font-family:var(--font-body);font-size:var(--body-size);color:var(--text-2);max-width:28rem;margin:0;font-weight:400;line-height:1.6}.contact-info{border-top:1px solid var(--card-border);flex-direction:column;display:flex}.contact-info-item{border-bottom:1px solid var(--card-border);flex-direction:column;gap:.4rem;padding:1.25rem 0;display:flex}.contact-cv-row{border-bottom:1px solid var(--card-border);flex-direction:column;gap:.25rem;padding:1.25rem 0;display:flex}.contact-cv-label{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);font-weight:500}.contact-info-label{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);font-weight:500}.contact-info-value{font-family:var(--font-body);font-size:var(--body-size);color:var(--text);font-style:normal;font-weight:400;text-decoration:none}.contact-cv-value{font-family:var(--font-body);font-size:var(--micro-size);color:var(--text);text-transform:uppercase;letter-spacing:var(--micro-tracking);border-bottom:1px solid #0000;font-style:normal;font-weight:400;text-decoration:none;display:inline-block}.contact-cv-value:hover{border-bottom:1px solid var(--text)}.contact-cv-value:focus-visible{border-bottom:1px solid var(--text);outline:2px solid var(--text);outline-offset:2px}.contact-info-link:hover,.contact-info-link:focus{text-decoration:underline}.contact-right{border-left:1px solid var(--card-border);flex-direction:column;gap:1.5rem;padding-left:3rem;display:flex}.contact-form{flex-direction:column;gap:2rem;display:flex}.contact-form[hidden]{display:none}.form-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;display:grid}.form-field{flex-direction:column;gap:.5rem;display:flex}.form-label{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);font-weight:500}.form-input{border:none;border-bottom:1px solid var(--input-line);width:100%;font-family:var(--font-body);font-size:var(--body-size);color:var(--text);caret-color:var(--text);transition:border-color var(--transition-fast);background:0 0;border-radius:0;outline:none;padding:.75rem 0;line-height:1.4}.form-input::placeholder{color:var(--text-5)}.form-input:focus-visible{border-bottom:2px solid var(--text);outline-offset:4px;outline:none}.form-input:focus{border-bottom:2px solid var(--text);outline:none}.form-field:focus-within .form-label{color:var(--text)}.form-input:focus:after,.form-input:focus-visible:after{content:"";background:var(--chrome-gradient);background-size:var(--chrome-text-bg-size);width:100%;height:1px;animation:chrome-shift var(--chrome-text-duration) var(--chrome-text-ease) infinite alternate;will-change:background-position;position:absolute;bottom:0;left:0}.form-field{position:relative}@media (prefers-reduced-motion:reduce){.form-input:focus:after,.form-input:focus-visible:after{background-position:50%;animation:none}}.form-input:-webkit-autofill,.form-input:-webkit-autofill:hover,.form-input:-webkit-autofill:focus{-webkit-text-fill-color:var(--text);caret-color:var(--text);transition:background-color 9999s ease-in-out;-webkit-box-shadow:inset 0 0 0 1000px #0000;box-shadow:inset 0 0 0 1000px #0000}.form-input:disabled{opacity:.5;cursor:not-allowed}.form-textarea{resize:none;min-height:4.5rem}.form-error{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:.05em;color:var(--text-3);line-height:1.4}.form-actions{display:flex}.btn-form{align-self:flex-start}.btn-form:disabled{cursor:not-allowed;opacity:.7}.form-status{font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);margin:0;line-height:1.5}.form-status:empty{display:none}.form-status.is-success{font-family:var(--font-display);letter-spacing:.02em;color:var(--text);font-size:1.2rem;font-weight:800;line-height:1.4}.back-to-top{bottom:var(--bottom-pad);right:var(--page-x);z-index:var(--z-fixed);font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:.25em;text-transform:uppercase;color:var(--text-3);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease, visibility 0s linear .2s, pointer-events .2s ease, color var(--transition-fast);padding-left:1.5rem;font-weight:500;text-decoration:none;position:fixed}.back-to-top.is-visible{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .2s ease, visibility 0s linear 0s, pointer-events .2s ease, color var(--transition-fast)}.back-to-top-inline{display:none}@media (width<=1023.98px){.back-to-top-inline{min-height:44px;font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:.25em;text-transform:uppercase;color:var(--text-3);transition:color var(--transition-fast);align-items:center;font-weight:500;text-decoration:none;display:inline-flex}.back-to-top-inline:hover,.back-to-top-inline:focus-visible,.back-to-top-inline:active{color:var(--text)}}.back-to-top:before{content:"";background:var(--chrome-gradient);background-size:var(--chrome-text-bg-size);width:1rem;height:1px;animation:chrome-shift var(--chrome-text-duration) var(--chrome-text-ease) infinite alternate;will-change:background-position;position:absolute;top:50%;left:0;transform:translateY(-50%)}.back-to-top:hover,.back-to-top:focus{color:var(--text)}@media (prefers-reduced-motion:reduce){.back-to-top:before{background-position:50%;animation:none}}@media (height<=780px) and (width>=769px){.section-title,.blog-title,.hiw-title,.contact-title{font-size:clamp(1.8rem,4vw,4rem)}.contact-layout{margin-top:1.75rem}.contact-form{gap:1.5rem}.form-field{gap:.3rem}.form-input{padding:.45rem 0}.form-textarea{min-height:2.6rem}.contact-info-item{padding:.85rem 0}}[data-notfound-locale=es]:not(html){display:none}html[data-notfound-locale=es] [data-notfound-locale=es]{display:block}html[data-notfound-locale=es] [data-notfound-locale=en]{display:none}@media (width<=1023.98px){:root{--gutter:var(--page-x)}html{scroll-snap-type:y proximity}.section{scroll-snap-stop:normal}html.menu-open,body.menu-open{overflow:hidden}.fixed-header{padding-top:max(var(--header-top), env(safe-area-inset-top));padding-left:max(var(--page-x), env(safe-area-inset-left));padding-right:max(var(--page-x), env(safe-area-inset-right))}}.fixed-header.is-scrolled{background:color-mix(in srgb, var(--bg) 92%, transparent);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);transition:background var(--transition-normal), border-color var(--transition-normal), backdrop-filter var(--transition-normal)}@media (prefers-reduced-motion:reduce){.fixed-header.is-scrolled{transition:none}}@supports not (backdrop-filter:blur(12px)){.fixed-header.is-scrolled{background:color-mix(in srgb, var(--bg) 96%, transparent)}}@media (width<=1023.98px){.nav{display:none}.header-switcher{border-right:none;margin-right:0;padding-right:0}.header-end{gap:.75rem}.lang-link{justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:0 .25rem;display:inline-flex}.mobile-menu-switcher{align-items:center;margin-left:auto;display:flex}.fixed-social,.fixed-scroll,.back-to-top{display:none}.fixed-header .menu-toggle{min-width:44px;min-height:44px;font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);cursor:pointer;transition:color var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0 .5rem;display:inline-flex}.menu-toggle:focus-visible,.menu-toggle:active{color:var(--text)}.mobile-menu{z-index:var(--z-modal);background:var(--bg);opacity:0;transition:opacity .2s var(--ease);justify-content:center;align-items:center;position:fixed;inset:0}.mobile-menu:not([hidden]){display:flex}.mobile-menu.is-open{opacity:1}.mobile-menu-inner{width:100%;max-width:100%;height:100%;padding-top:max(var(--header-top), env(safe-area-inset-top));padding-left:max(var(--page-x), env(safe-area-inset-left));padding-right:max(var(--page-x), env(safe-area-inset-right));padding-bottom:max(var(--bottom-pad), env(safe-area-inset-bottom));flex-direction:column;justify-content:space-between;display:flex}.mobile-menu-header{justify-content:flex-end;align-items:center;display:flex}.menu-close{min-width:44px;min-height:44px;color:var(--text-3);cursor:pointer;transition:color var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;display:inline-flex}.menu-close:focus-visible,.menu-close:active{color:var(--text)}.mobile-menu-nav{flex-direction:column;align-items:stretch;width:100%;margin:auto 0;display:flex}.mobile-menu-link{width:100%;min-height:44px;font-family:var(--font-display);letter-spacing:-.01em;text-transform:uppercase;color:var(--text-3);border-bottom:1px solid var(--line);transition:color var(--transition-fast);align-items:center;padding:.6rem 0;font-size:clamp(1.6rem,8vw,2.4rem);line-height:1.1;display:flex;position:relative}.mobile-menu-link:first-child{border-top:1px solid var(--line)}.mobile-menu-link.active{color:var(--text)}.mobile-menu-link.active:after{content:"";background:var(--chrome-gradient);background-size:var(--chrome-text-bg-size);width:100%;height:1px;animation:chrome-shift var(--chrome-text-duration) var(--chrome-text-ease) infinite alternate;will-change:background-position;position:absolute;bottom:-1px;left:0}@media (hover:hover){.mobile-menu-link:hover,.mobile-menu-link:focus-visible{color:var(--text)}}@media (prefers-reduced-motion:reduce){.mobile-menu-link.active:after{background-position:50%;animation:none}}.mobile-menu-social{justify-content:flex-start;align-items:center;row-gap:var(--space-3);padding-top:var(--space-4);flex-wrap:wrap;gap:1.5rem;display:flex}#mobile-menu .mobile-menu-social .social-link{margin:0}.mobile-menu-social .social-link,.contact-footer-social .social-link{width:44px;height:44px}.mobile-menu-social .social-link svg,.contact-footer-social .social-link svg{width:18px;height:18px}#contact .contact-footer-row{justify-content:center;align-items:center;gap:var(--space-3) var(--space-4);width:100%;margin-top:var(--space-8);padding-top:var(--space-4);padding-bottom:max(var(--space-4), env(safe-area-inset-bottom));border-top:1px solid var(--line);flex-flow:wrap;display:flex}.contact-footer-social{justify-content:center;align-items:center;row-gap:var(--space-3);flex-wrap:wrap;column-gap:.25rem;width:100%;display:flex}#contact .contact-footer-social .social-link{margin:0}.contact-footer-back{min-height:44px;font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:.25em;text-transform:uppercase;color:var(--text-3);transition:color var(--transition-fast);align-items:center;font-weight:500;text-decoration:none;display:inline-flex}.contact-footer-back:hover,.contact-footer-back:focus-visible,.contact-footer-back:active{color:var(--text)}.hero{grid-template-columns:minmax(0,1fr)}.hero-name{font-size:clamp(1.8rem,10.2vw,4.5rem)}.hero-role{white-space:normal;text-align:right;max-width:100%}.hero-scroll{left:0;right:0;bottom:calc(3rem + env(safe-area-inset-bottom,0px));flex-direction:column;align-items:center;gap:.75rem;width:max-content;margin-inline:auto;display:flex;position:absolute}.portfolio{flex-direction:column}.portfolio-inner,.portfolio-caption{display:contents}.portfolio-title{z-index:auto;order:1;margin-top:0;font-size:clamp(1.3rem,6.8vw,2.6rem);position:static}.portfolio-subtitle{white-space:normal;order:2;max-width:32rem;line-height:1.6}.project-row{width:100%;padding:1.5rem var(--page-x) 0;scroll-snap-type:x mandatory;scroll-padding-inline:var(--page-x);scrollbar-width:none;-webkit-overflow-scrolling:touch;order:3;justify-content:flex-start;align-items:stretch;gap:1rem;display:flex;overflow-x:auto}.project-row::-webkit-scrollbar{display:none}.project-card,.project-card--featured{scroll-snap-align:start;width:min(78vw,340px);min-height:clamp(20rem,82vw,24rem);padding-bottom:var(--card-pad)}.portfolio .portfolio-cta{width:calc(100% - 2 * var(--page-x));order:4;max-width:none}.portfolio-dots{order:5;justify-content:center;align-items:center;gap:.25rem;margin-top:1.25rem;display:flex}.portfolio-dot{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:44px;height:44px;padding:0;display:inline-flex}.portfolio-dot:before{content:"";background:var(--line-strong);width:8px;height:8px;transition:background var(--transition-fast), transform var(--transition-fast);border-radius:50%;display:block}.portfolio-dot[aria-current=true]:before{background:var(--text);transform:scale(1.4)}.portfolio-dot:focus-visible{outline:2px solid var(--text);outline-offset:2px}.blog-header,.hiw-header,.contact-header{flex-direction:column;align-items:flex-start;gap:1rem}.blog-subtitle,.hiw-subtitle,.contact-subtitle{text-align:left;max-width:none}.blog-list{margin-top:2rem}.blog-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"meta arrow""body body";gap:0 1rem;margin-inline:0;padding:1.5rem 0}.blog-row-meta{flex-flow:wrap;grid-area:meta;align-items:center;gap:.5rem .75rem;min-width:0}.blog-row-body{grid-area:body;margin-top:.85rem}.blog-row-arrow{grid-area:arrow}.blog-row-title{-webkit-line-clamp:3;line-clamp:3}.blog-row-excerpt{white-space:normal;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box}.blog-row:hover .blog-row-title,.blog-row:focus-visible .blog-row-title{transform:none}.blog-cta{margin-top:2.5rem}.hiw-layout{grid-template-columns:minmax(0,1fr);gap:0;display:grid}.hiw-menu,.hiw-panels{display:contents}#hiw-tab-principles{order:1}#hiw-panel-principles{order:2}#hiw-tab-methodology{order:3}#hiw-panel-methodology{order:4}#hiw-tab-stack{order:5}#hiw-panel-stack{order:6}#hiw-tab-certifications{order:7}#hiw-panel-certifications{order:8}.hiw-tab{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:0 .5rem;min-height:44px}.hiw-tab-name{font-size:clamp(.95rem,4.7vw,1.6rem)}.hiw-tab:after{content:"+";font-family:var(--font-body);color:var(--text-3);transition:color var(--transition-fast);justify-self:end;padding-left:.5rem;font-size:1.25rem;font-weight:400;line-height:1}.hiw-tab[aria-selected=true]:after{content:"–";color:var(--text)}.hiw-panel{visibility:visible;height:auto;transition:grid-template-rows var(--transition-normal), padding-bottom var(--transition-normal);border-left:0;grid-template-rows:1fr;padding-bottom:1.5rem;padding-left:0;display:grid;overflow:hidden}.hiw-panel[hidden]{visibility:hidden;transition:grid-template-rows var(--transition-normal), padding-bottom var(--transition-normal), visibility 0s linear var(--transition-normal);grid-template-rows:0fr;padding-bottom:0;display:grid}.hiw-panel>*{min-height:0;overflow:hidden}.hiw-panel:not([hidden]){animation:none}.hiw-principles,.hiw-steps,.hiw-stack{grid-template-columns:1fr}.contact-layout{grid-template-columns:minmax(0,1fr);gap:2.5rem}.contact-right{border-left:0;padding-left:0}.contact-info-link{align-items:center;min-height:44px;display:inline-flex}.contact-form .form-input{min-height:44px;font-size:1rem}.contact-form .form-textarea{min-height:4.5rem}.contact-form .form-row{grid-template-columns:minmax(0,1fr)}.contact-form .btn-form{width:100%;max-width:none}}@media (width>=640px) and (width<=1023.98px){:root{--page-x:clamp(1.5rem, 3.5vw, 2.5rem)}.project-card,.project-card--featured{width:45vw}.blog-row{grid-template-columns:minmax(0,14rem) minmax(0,1fr);grid-template-areas:"meta arrow""meta body";column-gap:1.5rem}.blog-row-meta{flex-flow:column;gap:.4rem}.contact-form .form-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}@media (width<=1023.98px) and (height<=500px) and (orientation:landscape){html{scroll-snap-type:none}.hero,.portfolio,.blog,.how-i-work,.contact{min-height:100svh;padding-top:calc(var(--header-h) + 1rem);padding-bottom:calc(var(--bottom-pad) + env(safe-area-inset-bottom,0px))}.hero,.blog,.how-i-work,.contact{align-items:flex-start}.portfolio{justify-content:flex-start}.mobile-menu{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;align-items:flex-start;overflow-y:auto}.mobile-menu-inner{height:auto;min-height:100%}.btn,.logo{min-height:44px}}@media (prefers-reduced-motion:reduce) and (width<=1023.98px){.hiw-panel,.hiw-panel[hidden]{transition:none!important}}@media (width<=1023.98px) and (hover:hover) and (pointer:fine){.fixed-header .menu-toggle:hover,.menu-close:hover{color:var(--text)}}@media (width<=1024px){:root{--bottom-pad:2.5rem}}@media (width<=768px){:root{--header-top:1.75rem;--bottom-pad:2rem}.nav{gap:1.25rem}.hero-label,.hero-role{font-size:var(--micro-size)}.contact-layout{grid-template-columns:1fr;gap:2.5rem}.contact-right{border-left:0;padding-left:0}.form-row{grid-template-columns:1fr}}@media (width<=480px){.nav{display:none}.btn{width:100%;max-width:16rem}}@media print{.fixed-header,.fixed-social,.fixed-scroll,.back-to-top{display:none}.section{page-break-inside:avoid;min-height:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.project-card:hover,.project-card:focus-visible{transform:translate(3px)}.blog-row:hover .blog-row-title,.blog-row:focus-visible .blog-row-title,.blog-row:hover .blog-row-arrow,.blog-row:focus-visible .blog-row-arrow,.hiw-tab[aria-selected=true] .hiw-tab-name,.hiw-tab:focus-visible .hiw-tab-name,.hiw-panel:not([hidden]),.scroll-line:after{animation:none;transform:none}}.article-body{font-family:var(--font-body);color:var(--text-2);font-size:1.0625rem;line-height:1.7}.article-body h2,.article-body h3,.article-body h4,.article-body h5,.article-body h6{font-family:var(--font-display);color:var(--text);margin-top:var(--space-20);margin-bottom:var(--space-4);font-weight:600;line-height:1.2;position:relative}.article-body h2{margin-top:var(--space-24);padding-top:var(--space-6);margin-bottom:var(--space-4);border-top:1px solid var(--line-strong);scroll-margin-top:calc(var(--header-h) + var(--space-6));font-size:clamp(1.5rem,3vw,2.25rem)}@media (width<=1023.98px){.article-body h2{margin-top:var(--space-16);scroll-margin-top:calc(var(--header-h) + var(--space-6))}}.article-body h2 .section-number{font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);margin-bottom:var(--space-2);line-height:1;display:block}.article-body{counter-reset:section}.article-body h3{margin-top:var(--space-10);margin-bottom:var(--space-3);font-size:clamp(1.15rem,1.8vw,1.6rem);line-height:1.3}.article-body h4{margin-top:var(--space-10);margin-bottom:var(--space-3);font-size:clamp(1rem,1.5vw,1.25rem);line-height:1.3}.article-body h5,.article-body h6{font-size:var(--body-size);text-transform:uppercase;letter-spacing:.05em;margin-top:var(--space-8);margin-bottom:var(--space-3);font-weight:600}.article-body p{margin-bottom:1.25em}.article-body p>strong.callout-label{font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-2);margin-bottom:var(--space-1);display:block}.article-body p>strong.callout-label:after{content:""}.article-body a{color:var(--text-2);text-underline-offset:2px;transition:color var(--transition-fast);text-decoration:underline}.article-body a:hover{color:var(--text)}.article-body hr{border:none;border-top:1px solid var(--line-strong);margin:1.5em 0}.article-body blockquote{border-left:1px solid var(--line-strong);padding-left:var(--space-4);margin:var(--space-8) 0;color:var(--text-3);font-style:italic;line-height:1.7}.article-body blockquote p{margin-bottom:var(--space-2)}.article-body blockquote p:last-child{margin-bottom:0}.article-body blockquote cite{margin-top:var(--space-3);font-size:var(--small-size);color:var(--text-4);font-style:normal;display:block}.article-body blockquote cite:before{content:"— "}.article-body ul,.article-body ol{margin:1.5em 0 1.5em 1.5em;padding-left:0}.article-body ul{list-style:none}.article-body ul li{padding-left:var(--space-4);margin-bottom:.5em;position:relative}.article-body ul li:before{content:"";background:var(--text-4);border-radius:50%;width:4px;height:4px;position:absolute;top:.65em;left:0}.article-body ol{counter-reset:article-list;list-style:none}.article-body ol li{padding-left:var(--space-4);counter-increment:article-list;margin-bottom:.5em;position:relative}.article-body ol li:before{content:counter(article-list) ".";font-family:var(--font-body);color:var(--text-3);font-size:1.0625rem;font-weight:500;line-height:1.7;position:absolute;left:0}.article-body li>p{margin-bottom:.5em}.article-body li>p:last-child{margin-bottom:0}.article-body li>ul,.article-body li>ol{margin-top:.5em;margin-bottom:.5em}.article-body img{border:1px solid var(--line-strong);width:100%;height:auto;margin:var(--space-8) 0;border-radius:0}.article-body figure{margin:var(--space-8) 0}.article-body figure img{margin:0}.article-body figcaption{margin-top:var(--space-3);font-family:var(--font-body);font-size:var(--small-size);line-height:var(--small-line);color:var(--text-4);text-align:center}.article-body table{border-collapse:collapse;width:100%;max-width:100%;font-size:var(--small-size);margin:1.5em 0;display:block;overflow-x:auto}.article-body th,.article-body td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line);text-align:left}.article-body th{font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);background:var(--surface);font-weight:var(--micro-weight)}.article-body td{color:var(--text-2)}.article-body td:first-child{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.article-body tbody tr:last-child th,.article-body tbody tr:last-child td{border-bottom:none}.article-body code{background:var(--surface);color:var(--text);overflow-wrap:anywhere;word-break:break-word;max-width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;line-height:inherit;border:none;border-radius:0;padding:.1em .35em;display:inline-block}.article-body pre{background:var(--surface);border:1px solid var(--line);border-radius:0;max-width:100%;margin:1.5em 0;padding:1.25rem 1.5rem;overflow-x:auto}.article-body pre code{color:var(--text-2);background:0 0;border:none;padding:0;font-size:.875rem;line-height:1.6}.article-body pre:has(code:not(.hljs)){white-space:pre;word-break:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.article-body .hljs{color:var(--text-2);background:0 0}.article-body .hljs-comment{color:var(--text-4)}.article-body .hljs-keyword{color:var(--text)}.article-body .hljs-string,.article-body .hljs-number{color:var(--text-3)}.article-body .hljs-function,.article-body .hljs-title{color:var(--text)}.article-body .hljs-params{color:var(--text-2)}.article-body .hljs-built_in,.article-body .hljs-literal,.article-body .hljs-type,.article-body .hljs-class{color:var(--text)}.article-body .hljs-attribute{color:var(--text-3)}.code-block{position:relative}.code-copy-btn{top:var(--space-2);right:var(--space-2);background:var(--surface-hover);border:1px solid var(--line);opacity:0;width:28px;height:28px;transition:opacity var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast);cursor:pointer;color:var(--text-4);border-radius:0;justify-content:center;align-items:center;display:flex;position:absolute}.code-block:hover .code-copy-btn,.code-copy-btn:focus-visible{opacity:1}.code-copy-btn:hover{background:var(--surface-hover-strong);color:var(--text)}.code-copy-btn.copied{background:var(--chrome-cyan);border-color:var(--chrome-cyan);color:var(--bg)}.article-body kbd{background:var(--surface);color:var(--text);border:1px solid var(--line);white-space:nowrap;border-radius:0;padding:.15em .4em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8em}.article-body samp{color:var(--text-3);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.article-body mark{background:var(--chrome-gradient);background-size:var(--chrome-text-bg-size);color:#0000;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;padding:0 .1em}.article-body del{color:var(--text-4);text-decoration:line-through}.article-body ins{color:var(--text-3);text-decoration:underline}.article-body sub,.article-body sup{vertical-align:baseline;font-size:.75em;line-height:0;position:relative}.article-body sub{bottom:-.25em}.article-body sup{top:-.5em}.article-body var{color:var(--text-2);font-style:italic}.article-body details{margin:var(--space-4) 0;border:1px solid var(--line);background:var(--surface)}.article-body summary{padding:var(--space-3) var(--space-4);font-family:var(--font-body);color:var(--text);cursor:pointer;font-weight:500;list-style:none}.article-body summary::-webkit-details-marker{display:none}.article-body summary:after{content:"+";float:right;color:var(--text-3);transition:transform var(--transition-fast);font-size:1.2em;font-weight:600}.article-body details[open] summary:after{transform:rotate(45deg)}.article-body details>:not(summary){padding:0 var(--space-4) var(--space-4)}.article-header{margin-bottom:var(--gap-header-body)}.article-eyebrow{margin-bottom:var(--space-2);white-space:nowrap}.back-link{font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);transition:color var(--transition-fast);white-space:nowrap;align-items:center;gap:.5rem;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--text)}.back-link:focus-visible{outline:2px solid var(--text);outline-offset:4px;border-radius:2px}.article-label{font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);margin-bottom:var(--space-4);white-space:nowrap}.article-title{font-family:var(--font-display);letter-spacing:-.01em;text-transform:uppercase;color:var(--text);margin:0 0 var(--space-6);overflow-wrap:break-word;max-width:100%;font-size:clamp(1.75rem,3.5vw,2.75rem);font-weight:800;line-height:1.1}.article-meta{font-family:var(--font-body);font-size:var(--micro-size);color:var(--text-4);margin-bottom:var(--space-6);flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.article-tag{letter-spacing:.18em;text-transform:uppercase;color:var(--text-2);font-weight:500}.meta-separator{color:var(--text-4)}.article-divider{border:none;border-top:1px solid var(--line-strong);margin:0}.article-footer{margin-top:var(--space-20);padding-top:var(--space-8);border-top:1px solid var(--card-border);gap:var(--space-8);flex-direction:column;align-items:start;display:flex}.nav-label{font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-3);margin-bottom:var(--space-2);display:block}.nav-title{font-family:var(--font-display);color:var(--text);transition:color var(--transition-fast);font-size:clamp(1rem,2vw,1.375rem);font-weight:700;line-height:1.3;text-decoration:none}.nav-title:hover{color:var(--text-2)}.nav-title:focus-visible{outline:2px solid var(--text);outline-offset:4px}.article-footer .btn{margin-top:var(--space-4);align-self:center}@media (width<=1023.98px){.article-toc{border-right:none;border-bottom:1px solid var(--line);max-height:none;padding:0 0 var(--space-4);margin-bottom:var(--space-8);display:block;position:static;overflow:visible}.toc-nav{padding:0}.toc-list{gap:var(--space-1);flex-direction:column}.toc-item{border-left:none;padding:0}.toc-link{padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--line);min-height:44px;color:var(--text-3);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);border-radius:0;align-items:center;min-width:0;text-decoration:none;display:flex}.toc-link:hover,.toc-link:focus-visible{color:var(--text);background:var(--surface-hover)}.toc-link.is-active{border-color:var(--chrome-cyan);color:var(--text)}.toc-number{width:2ch;margin-right:var(--space-2);font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;color:var(--text-4);flex-shrink:0;display:inline-block}.toc-link.is-active .toc-number{color:var(--chrome-cyan)}.article-body h2:before{left:0;right:0}.article-footer{gap:var(--space-6);flex-direction:column;align-items:stretch}.article-footer .btn{justify-content:center;width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.project-card:hover,.project-card:focus-visible{transform:translate(3px)}.blog-row:hover .blog-row-title,.blog-row:focus-visible .blog-row-title,.blog-row:hover .blog-row-arrow,.blog-row:focus-visible .blog-row-arrow,.hiw-tab[aria-selected=true] .hiw-tab-name,.hiw-tab:focus-visible .hiw-tab-name,.hiw-panel:not([hidden]),.scroll-line:after{animation:none;transform:none}}.project-card-github{top:calc(var(--title-band) + .5rem);right:var(--card-pad);font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:.15em;text-transform:uppercase;color:var(--text-3);z-index:10;transition:color var(--transition-fast);align-items:center;gap:.25rem;font-weight:500;text-decoration:none;display:flex;position:absolute}.project-card-github a{color:var(--text-3);text-decoration:none}.project-card-github a:hover,.project-card-github a:focus-visible,.project-card-github a:active{color:var(--text)}@media (prefers-reduced-motion:reduce){.project-card-github a:hover,.project-card-github a:focus-visible{color:var(--text-3)}}.skip-link{top:var(--space-3);left:var(--space-3);z-index:300;transition:transform var(--transition-fast);background:var(--bg);color:var(--bg);padding:var(--space-3) var(--space-5);font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;border:0;line-height:1;text-decoration:none;position:fixed;transform:translateY(-120%)}@media (prefers-reduced-motion:reduce){.skip-link{transition:none}}.project-card-github{top:calc(var(--title-band) + .5rem);right:calc(var(--card-pad) - .25rem);font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:.15em;text-transform:uppercase;color:var(--text-3);z-index:10;transition:color var(--transition-fast);white-space:nowrap;align-items:center;gap:.25rem;font-weight:500;text-decoration:none;display:flex;position:absolute}.project-card-github a{color:var(--text-3);align-items:center;gap:.25rem;text-decoration:none;display:flex}.project-card-github a:visited{color:var(--text-3)}.project-card-github a:hover,.project-card-github a:focus-visible,.project-card-github a:active{color:var(--text)}@media (prefers-reduced-motion:reduce){.project-card-github a:hover,.project-card-github a:focus-visible{color:var(--text-3)}}.project-card:hover .project-card-github a,.project-card:focus-visible .project-card-github a{color:var(--text)}.fixed-social .social-link,.mobile-menu-social .social-link,.contact-footer-social .social-link{margin:0}.form-privacy-new{font-size:var(--micro-size);color:var(--text-3);font-family:var(--font-body);letter-spacing:.05em;max-width:30ch;margin:.5rem 0;line-height:1.5}@media (width<=359.98px){.contact-title{font-size:1.75rem}.hiw-tab-name{font-size:.875rem}}.skip-link{top:var(--space-3);left:var(--space-3);z-index:300;transform:translateY(calc(-100% - var(--space-4)));background:var(--bg);color:var(--text);border:1px solid var(--text);padding:var(--space-3) var(--space-5);font-family:var(--font-body);font-size:var(--micro-size);font-weight:var(--micro-weight);letter-spacing:var(--micro-tracking);text-transform:uppercase;transition:transform var(--transition-fast);line-height:1;text-decoration:none;position:fixed}.skip-link:focus,.skip-link:focus-visible{outline:2px solid var(--text);outline-offset:3px;transform:translateY(0)}#main:focus{outline:none}@media (prefers-reduced-motion:reduce){.skip-link{transition:none}}.saved-choice-notice{bottom:calc(1.5rem + env(safe-area-inset-bottom,0px));z-index:100;background:var(--surface-hover-strong,#1a1a1e);border:1px solid var(--line-strong,#333);color:var(--text,#fff);font-family:var(--font-body);font-size:var(--micro-size);letter-spacing:var(--micro-tracking);text-transform:uppercase;max-width:calc(100vw - 2rem);padding:.75rem 1.25rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom,0px));align-items:center;gap:1rem;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0006}.saved-choice-notice[hidden]{display:none}.saved-choice-link{color:var(--text);text-underline-offset:2px;text-decoration:underline}.saved-choice-dismiss{color:var(--text-3);cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:1.25rem;line-height:1}.saved-choice-dismiss:hover,.saved-choice-dismiss:focus-visible{color:var(--text)}
