*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,Helvetica,Arial,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.static{position:static}.absolute{position:absolute}.relative{position:relative}.block{display:block}.grid{display:grid}.hidden{display:none}.grow{flex-grow:1}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{--white:#fff;--gray-bg:#f5f5f7;--gray-2:#fbfbfd;--black:#000;--ink:#1d1d1f;--ink-2:#6e6e73;--ink-3:#86868b;--blue:#0071e3;--blue-d:#06c;--link:#06c;--link-dark:#2997ff;--violet:#9f6bff;--line:#d2d2d7;--line-2:#e8e8ed;--maxw:1024px;--maxw-wide:1240px;--gutter:22px;--radius-tile:28px;--radius-img:18px;--radius-card:18px;--pill:980px;--nav-radius:20px;--nav-h:56px;--nav-gap:16px;--nav-maxw:1080px;--ease:cubic-bezier(.28,.11,.32,1);--ease-out:cubic-bezier(.16,1,.3,1);--sh-nav:0 8px 30px rgba(0,0,0,.08);--sh-media:0 30px 80px rgba(0,0,0,.18);--sh-feature:0 20px 60px rgba(0,113,227,.14);--sh-card:0 4px 24px rgba(0,0,0,.05)}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + var(--nav-gap) + 18px)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--white);line-height:1.47;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em}img{display:block;max-width:100%}a{text-decoration:none}a,button{color:inherit}button{font:inherit;cursor:pointer;border:none;background:none}::-moz-selection{background:rgba(0,113,227,.18)}::selection{background:rgba(0,113,227,.18)}.t-hero{font-size:clamp(2.8rem,7vw,5.5rem);line-height:1.04;font-weight:700;letter-spacing:-.025em}.t-display{font-size:clamp(2.4rem,5vw,4rem);line-height:1.06;font-weight:700;letter-spacing:-.022em}.t-title{font-size:clamp(2rem,3.6vw,3rem);line-height:1.08;font-weight:700;letter-spacing:-.02em}.t-sub{font-size:clamp(1.4rem,2.4vw,2rem);line-height:1.14;font-weight:600;letter-spacing:-.018em}.t-intro{font-size:clamp(1.25rem,2vw,1.7rem);line-height:1.36;font-weight:500;letter-spacing:-.014em}.t-eyebrow{font-size:.92rem;font-weight:600;letter-spacing:.01em;text-transform:none}.t-body{font-size:clamp(1.05rem,1.3vw,1.2rem);line-height:1.55;font-weight:400}.muted{color:var(--ink-2)}.balance{text-wrap:balance}.pretty{text-wrap:pretty}.grad-text{background:linear-gradient(115deg,#0071e3,#42a1ec 48%,#9f6bff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--blue);color:#fff;font-size:1.02rem;font-weight:500;letter-spacing:-.01em;padding:12px 22px;border-radius:var(--pill);transition:background .25s var(--ease),transform .25s var(--ease);white-space:nowrap}.btn:hover{background:#0077ed;transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-lg{font-size:1.12rem;padding:15px 30px}.btn-ghost{background:rgba(0,0,0,.04);color:var(--ink)}.btn-ghost:hover{background:rgba(0,0,0,.07)}.btn-white{background:#fff;color:var(--ink)}.btn-white:hover{background:#f2f2f2}.btn-outline-w{background:transparent;color:#fff;box-shadow:inset 0 0 0 1.5px hsla(0,0%,100%,.6)}.btn-outline-w:hover{background:hsla(0,0%,100%,.1)}.clink{display:inline-flex;align-items:center;gap:2px;color:var(--link);font-size:1.02rem;font-weight:400;letter-spacing:-.01em}.clink-lg{font-size:1.16rem}.clink .chev{width:1em;height:1em;transition:transform .25s var(--ease)}.clink:hover{text-decoration:underline}.clink:hover .chev{transform:translateX(3px)}.kick{margin-bottom:0}.center{text-align:center}.wrap{width:100%;max-width:var(--maxw-wide);margin-inline:auto;padding-inline:var(--gutter)}.wrap-narrow{max-width:var(--maxw)}.page-loader{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:var(--white);transition:opacity .6s var(--ease),visibility .6s var(--ease)}.page-loader.done{opacity:0;visibility:hidden}.pl-inner{display:grid;justify-items:center;gap:22px}.pl-word{font-size:1.5rem;font-weight:600;letter-spacing:-.02em;background:linear-gradient(115deg,#0071e3,#42a1ec 48%,#9f6bff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:plpulse 1.6s var(--ease) infinite}@keyframes plpulse{0%,to{opacity:.55;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.pl-bar{width:120px;height:3px;border-radius:3px;background:var(--line-2);overflow:hidden;position:relative}.pl-bar:after{content:"";position:absolute;inset:0;width:40%;background:linear-gradient(90deg,#0071e3,#9f6bff);border-radius:3px;animation:plbar 1.1s var(--ease) infinite}@keyframes plbar{0%{transform:translateX(-120%)}to{transform:translateX(320%)}}@media (prefers-reduced-motion:reduce){.pl-bar:after{animation:none}}.nav{position:fixed;z-index:100;top:var(--nav-gap);left:50%;transform:translateX(-50%);width:calc(100% - (var(--nav-gap) * 2));max-width:var(--nav-maxw);height:var(--nav-h);display:flex;align-items:center;border-radius:var(--nav-radius);background:hsla(0,0%,100%,.72);backdrop-filter:saturate(180%) blur(20px);box-shadow:var(--sh-nav);transition:background .3s var(--ease),box-shadow .3s var(--ease)}.nav.scrolled{background:hsla(0,0%,100%,.9);box-shadow:0 10px 34px rgba(0,0,0,.1)}.nav-inner{width:100%;max-width:var(--maxw-wide);margin-inline:auto;padding-inline:20px;display:flex;align-items:center;justify-content:space-between;gap:18px}.nav-brand{display:inline-flex;align-items:center;font-size:1.08rem;font-weight:600;letter-spacing:-.02em;white-space:nowrap}.nav-links{display:flex;align-items:center;gap:4px}.nav-links a{padding:7px 13px;border-radius:10px;font-size:1rem;font-weight:400;color:var(--ink);transition:background .2s var(--ease),color .2s var(--ease)}.nav-links a:hover{background:rgba(0,0,0,.05)}.nav-links a.on{color:var(--blue);font-weight:500}.nav-burger{display:none;width:38px;height:38px;border-radius:10px;align-items:center;justify-content:center}.nav-burger:hover{background:rgba(0,0,0,.05)}.nav-burger svg{width:22px;height:22px}.sheet{position:fixed;inset:0;z-index:99;background:hsla(0,0%,100%,.97);backdrop-filter:blur(24px);padding:calc(var(--nav-h) + var(--nav-gap) + 30px) var(--gutter) 40px;display:flex;flex-direction:column;gap:2px;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .3s var(--ease),transform .35s var(--ease),visibility .3s var(--ease)}.sheet.open{opacity:1;visibility:visible;transform:translateY(0)}.sheet a{display:flex;align-items:center;justify-content:space-between;font-size:1.7rem;font-weight:600;letter-spacing:-.02em;padding:18px 4px;border-bottom:1px solid var(--line-2)}.sheet .arr{width:22px;height:22px;color:var(--ink-3)}.sheet-foot{margin-top:auto;padding-top:24px;color:var(--ink-2);font-size:1rem}.panel{padding:clamp(72px,9vw,128px) 0;position:relative}.panel.gray{background:var(--gray-bg)}.panel.dark{background:var(--black);color:#fff}.panel.dark .muted{color:#a1a1a6}.panel.tight{padding-top:0}.panel-head{display:grid;gap:20px;justify-items:start}.panel-head.center{justify-items:center;text-align:center;margin-inline:auto}.panel-head .t-body{max-width:42ch}.section-lead{max-width:60ch}.t-eyebrow.kick{color:var(--blue)}.panel.dark .t-eyebrow.kick{color:var(--link-dark)}.hero{min-height:100svh;display:grid;align-content:center;justify-items:center;text-align:center;padding:calc(var(--nav-h) + 80px) var(--gutter) 80px;position:relative;overflow:hidden}.hero-glow{position:absolute;z-index:0;width:min(900px,120vw);aspect-ratio:1;border-radius:50%;top:-22%;left:50%;translate:-50% 0;background:radial-gradient(circle at 50% 50%,rgba(66,161,236,.2),rgba(159,107,255,.12) 42%,transparent 66%);filter:blur(8px);pointer-events:none}.hero>:not(.hero-glow){position:relative;z-index:1}.hero .t-hero{max-width:16ch}.hero .t-intro{max-width:34ch;margin-top:24px}.hero-cta{gap:14px;justify-content:center;margin-top:38px}.hero-cta,.stat-row{display:flex;flex-wrap:wrap}.stat-row{gap:clamp(28px,5vw,72px)}.stat-i{display:grid;gap:4px}.stat-i b{font-size:clamp(2.4rem,4vw,3.4rem);letter-spacing:-.02em;line-height:1}.stat-i b,.stat-i b .grad-text{font-weight:700}.stat-i span{color:var(--ink-2);font-size:1.02rem}.panel.dark .stat-i span{color:#a1a1a6}.spec-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:22px}.spec{background:var(--white);border:1px solid var(--line-2);border-radius:var(--radius-tile);padding:34px 30px;display:grid;gap:14px;align-content:start;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}.panel.gray .spec{background:#fff}.spec:hover{transform:translateY(-4px);box-shadow:var(--sh-card)}.s-ic{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,rgba(0,113,227,.12),rgba(159,107,255,.12));color:var(--blue)}.s-ic svg{width:26px;height:26px}.spec h4{font-size:1.32rem;font-weight:600;letter-spacing:-.015em}.spec p{color:var(--ink-2);font-size:1.02rem;line-height:1.5}.g-blue{background:linear-gradient(135deg,#0a84ff,#0071e3 55%,#005bb5)}.g-violet{background:linear-gradient(135deg,#9f6bff,#7a4fe0 60%,#5e3bc0)}.g-teal{background:linear-gradient(135deg,#2bd4c0,#13a89b 60%,#0b7a72)}.g-indigo{background:linear-gradient(135deg,#5e6dff,#3b46d6 60%,#2a2fa8)}.g-sky{background:linear-gradient(135deg,#5ac8fa,#34aadc 60%,#1f86c4)}.g-graphite{background:linear-gradient(135deg,#5b5b62,#3a3a40 60%,#222226)}.g-rose{background:linear-gradient(135deg,#ff7a9c,#ec4d7a 60%,#c4385f)}.g-amber{background:linear-gradient(135deg,#ffb340,#ff9500 60%,#e07b00)}.media-shot{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:top center;object-position:top center;opacity:0;transition:opacity .45s var(--ease);z-index:0}.media-shot.loaded{opacity:1}.fp-media .fp-cat,.pc-media .pc-cat,.wc-media .wc-tag{z-index:2}.fp-media:after,.pc-media:after,.wc-media:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.16),transparent 30%)}.work-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:22px}.work-card{display:block;border-radius:var(--radius-tile);overflow:hidden;background:#fff;border:1px solid var(--line-2);transition:transform .35s var(--ease),box-shadow .35s var(--ease)}.work-card:hover{transform:translateY(-5px);box-shadow:var(--sh-media)}.work-card .wc-media{aspect-ratio:16/10;position:relative}.work-card .wc-tag{position:absolute;top:14px;left:14px;font-size:.82rem;font-weight:600;letter-spacing:.02em;background:hsla(0,0%,100%,.92);color:var(--ink);padding:6px 12px;border-radius:var(--pill)}.wc-body{padding:24px 26px 28px;display:grid;gap:8px}.wc-body h3{font-size:1.34rem;font-weight:600;letter-spacing:-.015em}.wc-body p{color:var(--ink-2);font-size:1rem;line-height:1.5}.wc-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.wc-meta span{font-size:.82rem;color:var(--ink-3);background:var(--gray-bg);padding:5px 11px;border-radius:var(--pill)}.filter-row{display:flex;flex-wrap:wrap;gap:9px;margin-top:8px}.chip{padding:9px 18px;border-radius:var(--pill);font-size:.98rem;font-weight:500;color:var(--ink);background:var(--gray-bg);transition:background .2s var(--ease),color .2s var(--ease)}.chip:hover{background:#ececf0}.chip.on{background:var(--ink)}.chip.on,a.chip.on{color:#fff}.timeline{display:grid;gap:0;position:relative;margin-top:8px}.tl-item{display:grid;grid-template-columns:200px 1fr;gap:36px;padding:34px 0;border-top:1px solid var(--line-2);align-items:start}.tl-item:first-child{border-top:none}.tl-when{display:grid;gap:6px}.tl-when .tl-date{font-size:.96rem;color:var(--ink-3);font-weight:500}.tl-when .tl-co{font-size:1.06rem;font-weight:600;color:var(--ink)}.tl-role h4{font-size:1.32rem;font-weight:600;letter-spacing:-.015em;margin-bottom:8px}.tl-role p{color:var(--ink-2);font-size:1.04rem;line-height:1.55;max-width:60ch}.edu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:22px}.edu-card{border:1px solid var(--line-2);border-radius:var(--radius-tile);padding:32px;display:grid;gap:10px;align-content:start}.edu-card,.panel.gray .edu-card{background:#fff}.edu-card .edu-when{font-size:.96rem;color:var(--ink-3);font-weight:500}.edu-card h4{font-size:1.34rem;font-weight:600;letter-spacing:-.015em}.edu-card p{color:var(--ink-2);font-size:1.04rem;line-height:1.5}.skill-tags{display:flex;flex-wrap:wrap;gap:11px}.skill-tags .tag{font-size:1.02rem;font-weight:500;color:var(--ink);background:#fff;border:1px solid var(--line);padding:11px 19px;border-radius:var(--pill);transition:border-color .2s var(--ease),transform .2s var(--ease)}.panel.gray .skill-tags .tag{background:#fff}.skill-tags .tag:hover{border-color:var(--blue);transform:translateY(-2px)}.skill-cols{display:grid;grid-template-columns:1.2fr 2fr;gap:clamp(40px,6vw,90px);align-items:start}.skill-cats{display:grid;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));gap:38px 32px}.skill-cat{display:grid;gap:15px;align-content:start}.skill-cat .sc-label{display:inline-flex;align-items:center;gap:9px;font-size:.94rem;font-weight:600;letter-spacing:.005em;color:var(--ink-2)}.skill-cat .sc-label:before{content:"";width:7px;height:7px;border-radius:50%;background:linear-gradient(135deg,#0071e3,#9f6bff)}.client-row{display:flex;flex-wrap:wrap;gap:22px;align-items:center}.client-logo{height:84px;min-width:180px;padding:0 34px;display:grid;place-items:center;border:1px solid var(--line-2);border-radius:var(--radius-card);font-size:1.2rem;font-weight:600;letter-spacing:-.01em;color:var(--ink)}.client-logo,.panel.gray .client-logo{background:#fff}.client-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:22px}.client-card{display:block;border-radius:var(--radius-tile);overflow:hidden;background:#fff;border:1px solid var(--line-2);transition:transform .35s var(--ease),box-shadow .35s var(--ease)}.client-card:hover{transform:translateY(-5px);box-shadow:var(--sh-media)}.cc-media{aspect-ratio:16/10;position:relative}.cc-name{padding:18px 22px;font-size:1.18rem;font-weight:600;letter-spacing:-.015em;color:var(--ink)}.cform{max-width:560px}.cform,.cform-row{display:grid;gap:18px}.cform-row{grid-template-columns:1fr 1fr}.cfield{display:grid;gap:8px;margin:0}.cfield label{font-size:.96rem;font-weight:500;color:var(--ink)}.cfield label b{color:var(--blue)}.cfield input,.cfield textarea{width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}.cfield textarea{min-height:140px;resize:vertical;line-height:1.5}.cfield input:focus,.cfield textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px rgba(0,113,227,.12)}.cfield input::-moz-placeholder,.cfield textarea::-moz-placeholder{color:var(--ink-3)}.cfield input::placeholder,.cfield textarea::placeholder{color:var(--ink-3)}.form-note{font-size:.92rem;color:var(--ink-2);margin-top:2px}.form-success{display:none;align-items:center;gap:10px;background:rgba(40,180,99,.1);color:#1c7a45;padding:14px 18px;border-radius:14px;font-weight:500}.form-success.show{display:flex}.contact-info{display:grid;gap:26px}.ci-item{display:grid;gap:4px}.ci-item .ci-k{font-size:.92rem;font-weight:600;color:var(--blue);letter-spacing:.01em}.ci-item .ci-v{font-size:1.22rem;font-weight:500;color:var(--ink)}.ci-item a.ci-v:hover{color:var(--blue)}.social-row{display:flex;gap:12px}.social-row a{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:rgba(0,0,0,.05);color:var(--ink);transition:background .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}.social-row a:hover{background:var(--blue);color:#fff;transform:translateY(-2px)}.social-row a svg{width:21px;height:21px}.social-mono{font-size:.98rem;font-weight:700;letter-spacing:-.02em;line-height:1}.cta-band{text-align:center;display:grid;gap:24px;justify-items:center}.cta-band .t-display{max-width:18ch}.about-body{display:grid;gap:16px;max-width:64ch;margin-top:6px}.about-body strong{color:var(--ink);font-weight:600}.flow{position:relative;width:min(560px,92vw);aspect-ratio:1;margin:52px auto 0}.flow-track{border-radius:50%;border:2px dashed var(--line)}.flow-comet,.flow-track{position:absolute;inset:11%}.flow-comet{animation:flowspin 9s linear infinite}.flow-comet:before{content:"";position:absolute;top:-8px;left:50%;width:15px;height:15px;border-radius:50%;transform:translateX(-50%);background:linear-gradient(135deg,#0071e3,#9f6bff);box-shadow:0 0 18px 3px rgba(0,113,227,.5)}@keyframes flowspin{to{transform:rotate(1turn)}}.flow-core{position:absolute;inset:33.5%;border-radius:50%;background:#fff;display:grid;place-content:center;justify-items:center;text-align:center;box-shadow:0 8px 30px rgba(0,0,0,.09)}.flow-core:before{content:"";position:absolute;inset:-3px;border-radius:50%;z-index:-1;background:conic-gradient(from 0deg,#0071e3,#42a1ec,#9f6bff,#0071e3);animation:flowspin 6s linear infinite}.flow-core .fc-top{font-size:clamp(1.05rem,2.6vw,1.5rem);font-weight:700;letter-spacing:-.015em;color:var(--ink);line-height:1}.flow-core .fc-bot{font-size:clamp(.72rem,1.7vw,.92rem);color:var(--ink-2);margin-top:3px}.flow-node{position:absolute;transform:translate(-50%,-50%);display:grid;justify-items:center;gap:9px;width:108px;text-align:center}.flow-node .fn-ic{width:54px;height:54px;border-radius:50%;background:#fff;border:1px solid var(--line-2);display:grid;place-items:center;color:var(--blue);box-shadow:0 4px 14px rgba(0,0,0,.07);transition:transform .3s var(--ease),box-shadow .3s var(--ease)}.flow-node .fn-ic svg{width:24px;height:24px}.flow-node:hover .fn-ic{transform:scale(1.09);box-shadow:0 8px 22px rgba(0,113,227,.18)}.flow-node .fn-lb{font-size:.97rem;font-weight:600;color:var(--ink);letter-spacing:-.01em}@media (prefers-reduced-motion:reduce){.flow-comet,.flow-core:before{animation:none}}@media (max-width:600px){.flow{width:min(380px,84vw);margin-top:40px}.flow-node{width:76px;gap:7px}.flow-node .fn-ic{width:46px;height:46px}.flow-node .fn-ic svg{width:21px;height:21px}.flow-node .fn-lb{font-size:.82rem}.flow-comet:before{width:13px;height:13px;top:-7px}}.foot{background:var(--gray-bg);color:var(--ink-2);padding:54px 0 40px;font-size:.96rem}.foot-inner{width:100%;max-width:var(--maxw-wide);margin-inline:auto;padding-inline:var(--gutter)}.foot-top{display:flex;flex-wrap:wrap;gap:30px;justify-content:space-between;align-items:flex-start;padding-bottom:30px;border-bottom:1px solid var(--line)}.foot-brand{display:inline-flex;align-items:center;gap:9px;font-size:1.1rem;font-weight:600;color:var(--ink);letter-spacing:-.02em}.foot-nav{display:flex;flex-wrap:wrap;gap:8px 26px}.foot-nav a{color:var(--ink-2)}.foot-nav a:hover{color:var(--ink)}.foot-bottom{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;padding-top:22px}.reveal{opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease-out),transform .8s var(--ease-out)}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}.blog-toolbar{display:flex;flex-wrap:wrap;gap:9px;margin-top:8px}.blog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:24px}.post-card{display:flex;flex-direction:column;border-radius:var(--radius-tile);overflow:hidden;background:#fff;border:1px solid var(--line-2);transition:transform .35s var(--ease),box-shadow .35s var(--ease)}.post-card:hover{transform:translateY(-5px);box-shadow:var(--sh-media)}.post-card .pc-media{aspect-ratio:16/9;position:relative;display:grid;place-items:end start;padding:14px}.post-card .pc-cat{font-size:.8rem;font-weight:600;letter-spacing:.02em;background:hsla(0,0%,100%,.92);color:var(--ink);padding:6px 12px;border-radius:var(--pill)}.post-card .pc-body{padding:24px 26px 26px;display:flex;flex-direction:column;gap:10px;flex:1}.post-card .pc-body h3{font-size:1.3rem;font-weight:600;letter-spacing:-.015em;line-height:1.25}.post-card .pc-body p{color:var(--ink-2);font-size:1rem;line-height:1.5;flex:1}.pc-foot{display:flex;gap:12px;align-items:center;color:var(--ink-3);font-size:.9rem;margin-top:4px}.pc-foot .dot{width:3px;height:3px;border-radius:50%;background:var(--ink-3)}.cat-pill{display:inline-flex;align-items:center;gap:8px;padding:9px 18px;border-radius:var(--pill);font-size:.98rem;font-weight:500;color:var(--ink);background:var(--gray-bg);transition:background .2s var(--ease),color .2s var(--ease)}.cat-pill:hover{background:#ececf0}.cat-pill.on{background:var(--ink);color:#fff}.feature-post{display:grid;grid-template-columns:1.1fr 1fr;gap:0;border-radius:var(--radius-tile);overflow:hidden;border:1px solid var(--line-2);background:#fff;transition:transform .35s var(--ease),box-shadow .35s var(--ease)}.feature-post:hover{transform:translateY(-4px);box-shadow:var(--sh-media)}.feature-post .fp-media{min-height:300px;position:relative;display:grid;place-items:end start;padding:18px}.feature-post .fp-cat{font-size:.82rem;font-weight:600;background:hsla(0,0%,100%,.92);color:var(--ink);padding:6px 13px;border-radius:var(--pill)}.feature-post .fp-body{padding:40px;display:flex;flex-direction:column;gap:14px;justify-content:center}.feature-post .fp-body h2{font-size:clamp(1.6rem,2.6vw,2.2rem);font-weight:700;letter-spacing:-.02em;line-height:1.12}.feature-post .fp-body p{color:var(--ink-2);font-size:1.08rem;line-height:1.5}@media (max-width:760px){.feature-post{grid-template-columns:1fr}.feature-post .fp-media{min-height:200px}.feature-post .fp-body{padding:30px}}.article-head{max-width:760px;margin-inline:auto;display:grid;gap:18px;text-align:center}.article-meta{display:flex;gap:12px;align-items:center;justify-content:center;color:var(--ink-3);font-size:.96rem;flex-wrap:wrap}.article-cover{position:relative;overflow:hidden;max-width:1000px;margin:44px auto 0;aspect-ratio:21/9;border-radius:var(--radius-tile);box-shadow:var(--sh-card)}.prose{max-width:720px;margin-inline:auto;color:var(--ink);font-size:1.14rem;line-height:1.7}.prose>*+*{margin-top:1.3em}.prose h2{font-size:1.85rem;font-weight:700;letter-spacing:-.02em;margin-top:2em;line-height:1.2}.prose h2,.prose h3{scroll-margin-top:90px}.prose h3{font-size:1.4rem;font-weight:600;letter-spacing:-.015em;margin-top:1.6em}.prose p{color:var(--ink-2)}.prose strong{color:var(--ink);font-weight:600}.prose a{color:var(--link);text-decoration:underline;text-underline-offset:2px}.prose ol,.prose ul{padding-left:1.4em;color:var(--ink-2);display:grid;gap:.5em}.prose li{line-height:1.6}.prose blockquote{border-left:3px solid var(--blue);padding-left:20px;color:var(--ink-2);font-style:italic}.prose code{font-family:SF Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;background:var(--gray-bg);padding:.18em .42em;border-radius:6px}.prose pre{background:#1d1d1f;color:#f5f5f7;padding:22px 24px;border-radius:16px;overflow:auto;font-size:.92rem;line-height:1.6}.prose pre code{background:none;padding:0;color:inherit;font-size:.92em}.prose h2 a,.prose h3 a{color:inherit;text-decoration:none}.prose img{border-radius:14px;margin-inline:auto}.prose hr{border:none;border-top:1px solid var(--line-2)}.author-card{display:flex;gap:18px;align-items:center;max-width:720px;margin:56px auto 0;padding:26px;background:var(--gray-bg);border-radius:var(--radius-tile)}.author-card .av{width:60px;height:60px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:1.3rem;flex-shrink:0}.author-card .au-name{font-weight:600;font-size:1.1rem;letter-spacing:-.01em}.author-card .au-bio{color:var(--ink-2);font-size:.98rem;margin-top:2px}.related-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px;margin-top:28px}.crumb{display:flex;gap:8px;align-items:center;font-size:.92rem;color:var(--ink-3);flex-wrap:wrap}.crumb a:hover{color:var(--blue)}.crumb .sep{color:var(--line)}@media (max-width:833px){.nav-links{display:none}.nav-burger{display:flex}.tl-item{gap:12px}.skill-cols,.tl-item{grid-template-columns:1fr}.skill-cols{gap:34px}.cform-row{grid-template-columns:1fr}}@media (max-width:600px){.panel{padding:60px 0}.spec{padding:28px 24px}}