@font-face{font-family:Ballega;src:url(/fonts/ballega.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--fg:#000;--fg-muted:#000000b8;--fg-soft:#00000080;--surface:#f5f5f7;--surface-input:#f8f8f9;--surface-input-focus:#fff;--border:#0000001f;--border-soft:#00000014;--shadow:#0000000f;--shadow-strong:#0000001f;--pill-bg:#fff;--pill-fg:#000;--invert-bg:#000;--invert-fg:#fff;--overlay:#ffffffd9;--sheet-bg:#ffffffeb;--sheet-bg-start:#fff9;--sheet-fg:#1d1d1f;--sheet-border:#0000000d;--backdrop:#00000024}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0a0b;--fg:#f5f5f7;--fg-muted:#ffffffb8;--fg-soft:#ffffff80;--surface:#1c1c1e;--surface-input:#1c1c1e;--surface-input-focus:#232326;--border:#ffffff24;--border-soft:#ffffff1a;--shadow:#00000080;--shadow-strong:#0009;--pill-bg:#1c1c1e;--pill-fg:#f5f5f7;--invert-bg:#f5f5f7;--invert-fg:#000;--overlay:#0a0a0bcc;--sheet-bg:#1c1c1eeb;--sheet-bg-start:#2c2c2e99;--sheet-fg:#f5f5f7;--sheet-border:#ffffff14;--backdrop:#00000073}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){z-index:2}*,:before,:after{box-sizing:border-box;margin:0;padding:0}@media (width>=769px){*,:before,:after,html,body,a,button,input,select,textarea,canvas,svg{cursor:none!important}}@media (width<=768px){*,:before,:after,html,body,a,button,input,select,textarea,canvas,svg{cursor:auto!important}a,button,[role=button]{cursor:pointer!important}.magnetic-cursor-container{display:none!important}}html,body{width:100%;min-height:100vh;color:var(--fg);scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#050505;margin:0;padding:0;font-family:SF Pro Display,SF Pro Text,SF Pro,-apple-system,BlinkMacSystemFont,Inter,sans-serif;overflow-x:hidden}#root{background-color:#050505;flex-direction:column;width:100%;min-height:100vh;margin:0;padding:0;display:flex}.back-pill{border:1px solid var(--border-soft);background:var(--pill-bg);height:44px;color:var(--pill-fg);box-shadow:0 4px 16px var(--shadow);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:0 20px 0 16px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Inter,sans-serif;font-size:1rem;font-weight:600;text-decoration:none;display:inline-flex}.back-pill svg{flex:0 0 16px}.bubble-menu{pointer-events:none;z-index:999;justify-content:space-between;align-items:center;gap:16px;padding:0 2em;display:flex;top:1.2em;left:0;right:0}.bubble-menu.fixed{position:fixed}.bubble-menu.absolute{position:absolute}.bubble-menu .bubble{--bubble-size:48px;width:var(--bubble-size);height:var(--bubble-size);background:var(--pill-bg);box-shadow:0 4px 16px var(--shadow-strong);pointer-events:auto;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.bubble-menu .logo-bubble,.bubble-menu .toggle-bubble{will-change:transform}.bubble-menu .logo-bubble{width:auto;min-height:var(--bubble-size);height:var(--bubble-size);border-radius:calc(var(--bubble-size) / 2);gap:8px;padding:0 16px}.bubble-menu .toggle-bubble{width:var(--bubble-size);height:var(--bubble-size);border:1px solid var(--border-soft)}.bubble-menu .bubble-logo{object-fit:contain;max-width:100%;max-height:60%;display:block}.bubble-menu .logo-content{--logo-max-height:60%;--logo-max-width:100%;justify-content:center;align-items:center;width:auto;height:100%;display:inline-flex}.bubble-menu .logo-content>.bubble-logo,.bubble-menu .logo-content>img,.bubble-menu .logo-content>svg{max-height:var(--logo-max-height);max-width:var(--logo-max-width)}.bubble-menu .menu-btn{background:var(--pill-bg);cursor:pointer;border:none;border-radius:12px;justify-content:center;align-items:center;padding:0;transition:transform .2s,background-color .2s;display:flex}.bubble-menu .dots-grid{grid-template-columns:repeat(2,6px);justify-content:center;align-items:center;gap:4px;display:grid}.bubble-menu .dot{background-color:var(--pill-fg);border-radius:1.5px;width:6px;height:6px;transition:transform .3s,background-color .3s}.bubble-menu .menu-btn.open .dot{background-color:var(--pill-fg);transform:scale(1.15)}@media (width>=768px){.bubble-menu .bubble{--bubble-size:52px}.bubble-menu .logo-bubble{padding:0 16px}}.bubble-menu-items{pointer-events:none;z-index:998;background:var(--overlay);-webkit-backdrop-filter:blur(16px);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.bubble-menu-items.fixed{position:fixed}.bubble-menu-items.absolute{position:absolute}.bubble-menu-items .pill-list{pointer-events:auto;flex-wrap:wrap;justify-content:center;gap:20px 0;width:100%;max-width:1200px;margin:0 auto;padding:0 24px;list-style:none;display:flex}.bubble-menu-items .pill-list .pill-col{box-sizing:border-box;flex:0 0 33.3333%;justify-content:center;align-items:stretch;padding:0 12px;display:flex}.bubble-menu-items .pill-link{--item-rot:0deg;--pill-min-h:120px;width:100%;min-height:var(--pill-min-h);background:var(--pill-bg);color:var(--pill-fg);box-shadow:0 8px 30px var(--shadow-strong);border:1px solid var(--border-soft);will-change:transform;box-sizing:border-box;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;padding:clamp(1.5rem,3vw,4rem) 0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Inter,sans-serif;font-size:clamp(1.8rem,3.5vw,3.2rem);font-weight:500;line-height:1;text-decoration:none;transition:background .3s,color .3s,transform .3s;display:flex;position:relative;overflow:hidden}@media (width>=900px){.bubble-menu-items .pill-link{transform:rotate(var(--item-rot))}.bubble-menu-items .pill-link:hover{transform:rotate(var(--item-rot)) scale(1.06);background:var(--invert-bg);color:var(--invert-fg)}.bubble-menu-items .pill-link:active{transform:rotate(var(--item-rot)) scale(.94)}}.bubble-menu-items .pill-link .pill-label{will-change:transform, opacity;height:auto;line-height:1.2;display:inline-block}@media (width<=899px){.bubble-menu-items{align-items:flex-start;padding-top:120px}.bubble-menu-items .pill-list{row-gap:16px}.bubble-menu-items .pill-list .pill-col{flex:0 0 100%;overflow:visible;margin-left:0!important}.bubble-menu-items .pill-link{min-height:80px;padding:clamp(1rem,2vw,2rem) 0;font-size:clamp(1.4rem,4vw,2.5rem)}}.theme-toggle{--size:48px;top:calc(1.2rem + var(--size) + 12px);z-index:999;width:var(--size);height:var(--size);border:1px solid var(--border-soft);background:var(--pill-bg);color:var(--pill-fg);box-shadow:0 4px 16px var(--shadow-strong);cursor:pointer;border-radius:12px;place-items:center;padding:0;transition:transform .2s;display:grid;position:fixed;right:2rem}@media (width>=768px){.theme-toggle{--size:52px}}.theme-toggle svg{width:22px;height:22px;overflow:visible}.theme-toggle-core{fill:currentColor;transition:r .5s cubic-bezier(.34,1.56,.64,1)}.theme-toggle-cutout{transition:cx .5s cubic-bezier(.34,1.56,.64,1),cy .5s cubic-bezier(.34,1.56,.64,1)}.theme-toggle-rays{stroke:currentColor;stroke-width:2px;stroke-linecap:round;transform-origin:12px 12px;transition:transform .5s cubic-bezier(.34,1.56,.64,1),opacity .3s}.theme-toggle.is-dark .theme-toggle-core{r:8.5px}.theme-toggle.is-dark .theme-toggle-cutout{cx:16px;cy:7px}.theme-toggle.is-dark .theme-toggle-rays{opacity:0;transform:rotate(-60deg)scale(.4)}.theme-toggle:focus-visible{outline-offset:3px;outline:3px solid #0a84ff}.service-dialog-backdrop{z-index:5000;background:var(--backdrop);-webkit-backdrop-filter:blur(14px)saturate(140%);backdrop-filter:blur(14px)saturate(140%);justify-content:center;align-items:center;padding:24px;animation:.3s both dialog-backdrop-in;display:flex;position:fixed;inset:0}.service-dialog{background:var(--sheet-bg);width:100%;max-width:760px;height:90dvh;max-height:calc(100dvh - 32px);box-shadow:0 30px 80px -20px #00000047, 0 0 0 1px var(--sheet-border);color:var(--sheet-fg);text-align:left;transform-origin:50%;border-radius:40px;flex-direction:column;padding:clamp(36px,5vh,56px) clamp(28px,4vw,52px);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Inter,sans-serif;display:flex;position:relative;overflow-y:auto}.service-dialog-body{flex-direction:column;flex:1;min-height:0;display:flex}.service-dialog-backdrop.is-closing{animation:.28s both dialog-backdrop-out}.service-dialog-backdrop.is-closing .service-dialog{animation:.28s cubic-bezier(.4,0,1,1) both dialog-out}@keyframes dialog-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes dialog-backdrop-out{0%{opacity:1}to{opacity:0}}@keyframes dialog-out{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(10px)scale(.95)}}.service-dialog-close{z-index:1;background:var(--accent);color:#fff;cursor:pointer;min-width:40px;height:40px;font:inherit;border:none;border-radius:999px;justify-content:center;align-items:center;padding:0 11px;display:inline-flex;position:absolute;top:26px;right:26px}.service-dialog-close svg{fill:none;stroke:#fff;stroke-width:2.6px;stroke-linecap:round;flex:0 0 18px;width:18px;height:18px}.service-dialog-close-label{opacity:0;white-space:nowrap;letter-spacing:-.01em;max-width:0;font-size:1rem;font-weight:600;transition:max-width .4s cubic-bezier(.22,1.2,.36,1),margin .4s cubic-bezier(.22,1.2,.36,1),opacity .25s;display:inline-block;overflow:hidden}.service-dialog-close:hover .service-dialog-close-label,.service-dialog-close:focus-visible .service-dialog-close-label{opacity:1;max-width:64px;margin:0 6px 0 5px}.service-dialog-close:focus-visible{outline:3px solid color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:3px}.service-dialog-title{letter-spacing:-.03em;margin:0 56px 14px 0;font-size:clamp(2.2rem,4.8vh,3.2rem);font-weight:800;line-height:1.15}.service-dialog-desc{color:var(--fg-muted);margin:0 0 clamp(20px,4vh,40px);font-size:clamp(1.2rem,2.6vh,1.5rem);line-height:1.5}.service-dialog-highlights{gap:clamp(10px,1.8vh,18px);margin:0 0 clamp(24px,4vh,44px);padding:0;list-style:none;display:grid}.service-dialog-highlights li{color:var(--sheet-fg);align-items:flex-start;gap:12px;font-size:clamp(1.1rem,2.3vh,1.32rem);line-height:1.4;display:flex}.service-dialog-highlights svg{fill:none;width:24px;height:24px;stroke:var(--accent);stroke-width:2.8px;stroke-linecap:round;stroke-linejoin:round;flex:0 0 24px;margin-top:1px}.tech-pills{flex-wrap:wrap;gap:6px;margin:auto 0 0;padding:0;list-style:none;display:flex}.tech-pills .tech-break{flex-basis:100%;height:0;margin:0;padding:0}.tech-pill{color:#fff;letter-spacing:-.01em;white-space:nowrap;background:linear-gradient(135deg, var(--from), var(--to));text-shadow:0 1px 1px #0000002e;will-change:transform;border-radius:999px;flex:auto;justify-content:center;align-items:center;gap:12px;height:clamp(52px,6.8vh,68px);padding:0 30px 0 26px;font-size:1.65rem;font-weight:600;transition:transform .35s cubic-bezier(.34,1.56,.64,1);display:inline-flex;box-shadow:inset 0 1px #ffffff47}@supports (background:linear-gradient(in oklch, red, blue)){.tech-pill{background:linear-gradient(in oklch 135deg, var(--from), var(--to))}}.tech-pill:hover{transform:scale(1.04)}.tech-pill{animation:.85s cubic-bezier(.215,.61,.355,1) both pill-in;animation-delay:calc(.5s + var(--i,0) * 60ms)}@keyframes pill-in{0%{opacity:0;translate:0 28px}to{opacity:1;translate:0}}.tech-pill{isolation:isolate;position:relative;overflow:hidden}.tech-pill:before{content:"";z-index:-1;pointer-events:none;background:linear-gradient(-35deg,#fff0 60%,#ffffff61 70%,#fff0,#fff0 100%) -100% -100%/280% 280% no-repeat;transition:background-position .75s;position:absolute;inset:0}.tech-pill:hover:before{background-position:100% 100%}.tech-pill svg{fill:#fff;filter:drop-shadow(0 1px 1px #00000026);flex:0 0 32px;width:32px;height:32px}@media (width<=768px){.service-dialog-backdrop{padding:12px}.service-dialog{border-radius:32px;height:88dvh;padding:32px 22px 24px}.service-dialog-close{top:20px;right:20px}.service-dialog-title{font-size:1.8rem}.tech-pills{gap:5px}.tech-pill{gap:9px;height:56px;padding:0 18px 0 16px;font-size:1.28rem}.tech-pill svg{flex-basis:25px;width:25px;height:25px}}@media (prefers-reduced-motion:reduce){.service-dialog-backdrop,.service-dialog,.service-dialog-backdrop.is-closing,.service-dialog-backdrop.is-closing .service-dialog{animation-duration:10ms}.tech-pill:hover{transform:none}.tech-pill:before{transition:none}.tech-pill{animation:none}}.tech-pills--dense .tech-pill{gap:10px;height:clamp(46px,5.6vh,60px);padding:0 22px 0 18px;font-size:1.32rem}.tech-pills--dense .tech-pill svg{flex-basis:26px;width:26px;height:26px}@media (width<=768px){.tech-pills--dense .tech-pill{height:50px;padding:0 16px 0 14px;font-size:1.1rem}.tech-pills--dense .tech-pill svg{flex-basis:22px;width:22px;height:22px}}.service-dialog.service-dialog--fit{max-width:860px;height:auto}.service-dialog--fit .tech-pills{margin-top:8px}.tech-pills--all{gap:6px}.tech-pills--all .tech-pill{height:50px;animation-delay:calc(.45s + var(--i,0) * 25ms);gap:9px;padding:0 20px 0 16px;font-size:1.15rem}.tech-pills--all .tech-pill svg{flex-basis:22px;width:22px;height:22px}@media (width<=768px){.tech-pills--all .tech-pill{height:44px;padding:0 16px 0 13px;font-size:1rem}.tech-pills--all .tech-pill svg{flex-basis:19px;width:19px;height:19px}}.services-list{flex-direction:column;gap:clamp(1.4rem,3.6vw,3.4rem);margin:0;padding:0 6%;list-style:none;display:flex}.service-title{letter-spacing:-.045em;color:var(--fg);margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Inter,sans-serif;font-size:clamp(2.4rem,7vw,6.6rem);font-weight:800;line-height:1.04}.service-trigger{all:unset;font:inherit;color:inherit;letter-spacing:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;display:inline}.service-trigger:focus-visible{outline-offset:8px;border-radius:12px;outline:3px solid #0a84ff}.service-plus{vertical-align:middle;background:var(--invert-bg);border-radius:50%;place-items:center;width:max(30px,.4em);height:max(30px,.4em);margin-left:max(10px,.16em);transition:transform .35s cubic-bezier(.34,1.56,.64,1);display:inline-grid;transform:translateY(-.06em)}.service-plus svg{fill:none;width:60%;height:60%;stroke:var(--invert-fg);stroke-width:2.6px;stroke-linecap:round}.service-row:hover .service-plus{transform:translateY(-.06em)rotate(90deg)}.doodle-anchor{white-space:nowrap;display:inline-block;position:relative}.doodle{--ink:var(--fg);pointer-events:none;transition:transform .5s cubic-bezier(.34,1.56,.64,1);position:absolute;overflow:visible}.doodle path{fill:none;stroke:var(--ink);stroke-width:var(--w,4);stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1px}.service-row.is-drawn .doodle path{stroke-dashoffset:0;transition:stroke-dashoffset .8s cubic-bezier(.65,0,.35,1);transition-delay:calc(.35s + var(--d,0s))}.doodle-underline{--ink:#0a84ff;--w:3.2;width:104%;height:.24em;top:94%;left:-2%}.doodle-circle{--ink:#ff375f;--w:2.6;width:132%;height:120%;top:-10%;left:-16%}.doodle-arrow{--ink:#30d158;--w:4.4;width:.95em;height:.72em;top:-.66em;left:100%}.doodle-crown{--ink:#ff9f0a;--w:3.4;transform-origin:50% 100%;width:.6em;height:.42em;top:-.09em;left:calc(50% - .3em);transform:rotate(-8deg)}.doodle-sparkle{--ink:#ff9f0a;--w:4.5;width:.3em;height:.3em;top:-.36em;left:96%}.service-row.is-drawn .doodle-underline{transform-origin:0%;animation:.9s cubic-bezier(.34,1.56,.64,1) .35s both doodle-swoosh}.service-row.is-drawn .doodle-circle{animation:.8s cubic-bezier(.34,1.56,.64,1) .3s both doodle-pop}.service-row.is-drawn .doodle-arrow{animation:.6s ease-in-out 1.3s 2 both doodle-poke}.service-row.is-drawn .doodle-crown{animation:1s cubic-bezier(.22,1,.36,1) .3s both doodle-crown-drop}.service-row.is-drawn .doodle-sparkle{animation:.6s cubic-bezier(.34,1.56,.64,1) .9s both doodle-sparkle-in,2.4s ease-in-out 1.6s infinite doodle-twinkle}@keyframes doodle-swoosh{0%{opacity:0;scale:.6 1}to{opacity:1;scale:1}}@keyframes doodle-pop{0%{opacity:0;rotate:-20deg;scale:.6}60%{opacity:1;rotate:3deg;scale:1.08}to{opacity:1;rotate:0deg;scale:1}}@keyframes doodle-poke{0%,to{translate:0}50%{translate:-.07em .05em}}@keyframes doodle-crown-drop{0%{opacity:0;translate:0 -.7em;rotate:-35deg}45%{opacity:1;translate:0 .03em;rotate:6deg}65%{translate:0 -.08em;rotate:-4deg}82%{translate:0 .01em;rotate:2deg}to{opacity:1;translate:0;rotate:0deg}}@keyframes doodle-sparkle-in{0%{rotate:-90deg;scale:0}70%{rotate:15deg;scale:1.35}to{rotate:0deg;scale:1}}@keyframes doodle-twinkle{0%,to{opacity:1;scale:1}50%{opacity:.6;scale:.65}}.service-row:hover .doodle-underline{transform:translateY(.04em)scaleX(1.03)}.service-row:hover .doodle-circle{transform:rotate(-4deg)scale(1.04)}.service-row:hover .doodle-arrow{transform:translate(-.06em,.04em)rotate(-8deg)}.service-row:hover .doodle-crown{transform:rotate(6deg)translateY(-.06em)}.service-row:hover .doodle-sparkle{transform:rotate(45deg)scale(1.2)}@media (width<=768px){.services-list{text-align:center;align-items:center;padding:0 5%}.service-title{font-size:8.4vw}}@media (prefers-reduced-motion:reduce){.service-row{opacity:1!important;transform:none!important}.service-row.is-drawn .doodle{animation:none!important}.doodle path,.service-row.is-drawn .doodle path{stroke-dashoffset:0;transition:none}}.skills-marquee-section{background:var(--bg);width:100%;padding:10px 0 30px}.skills-marquee{all:unset;cursor:pointer;-webkit-tap-highlight-color:transparent;flex-direction:column;gap:10px;width:100%;padding:8px 0;display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.skills-marquee:focus-visible{outline-offset:4px;border-radius:20px;outline:3px solid #0a84ff}.skills-marquee-track{width:max-content;animation:45s linear infinite skills-marquee-scroll;display:flex}.skills-marquee-track.is-reverse{animation-duration:50s;animation-direction:reverse}.skills-marquee-group{gap:8px;margin:0;padding:0 8px 0 0;list-style:none;display:flex}@keyframes skills-marquee-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.skills-marquee .tech-pill{pointer-events:none;gap:9px;height:50px;padding:0 20px 0 16px;font-size:1.15rem;animation:none}.skills-marquee .tech-pill svg{flex-basis:22px;width:22px;height:22px}.skills-marquee-hint{text-align:center;color:var(--fg-soft);margin:10px 0 0;font-size:.85rem;font-weight:600;display:none}@media (width<=768px){.skills-marquee .tech-pill{height:42px;padding:0 15px 0 13px;font-size:1rem}.skills-marquee .tech-pill svg{flex-basis:18px;width:18px;height:18px}.skills-marquee-hint{display:block}}@media (prefers-reduced-motion:reduce){.skills-marquee-track,.skills-marquee-track.is-reverse{animation-duration:240s}}.gradual-blur{isolation:isolate}.gradual-blur-inner{width:100%;height:100%;position:relative}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.gradual-blur-inner>div{opacity:.5;background:#0000004d}}.updates-ribbon{background:var(--bg);box-sizing:border-box;width:100%;padding:24px 6% 30px}.updates-ribbon-head{justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;display:flex}.updates-view-all{color:#fff;white-space:nowrap;background:#0a84ff;border-radius:999px;flex-shrink:0;align-items:center;height:48px;padding:0 26px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Inter,sans-serif;font-size:1.05rem;font-weight:600;text-decoration:none;transition:filter .2s;display:inline-flex}.updates-view-all:hover{filter:brightness(1.08)}.post-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.post-card{background:var(--surface);color:var(--fg);border-radius:22px;align-items:stretch;gap:18px;min-width:0;padding:12px;text-decoration:none;display:flex}.post-card-banner{aspect-ratio:16/10;background:var(--bg);border-radius:14px;flex:0 0 42%;overflow:hidden}.post-card-banner img{object-fit:cover;width:100%;height:100%;transition:transform .6s cubic-bezier(.22,1,.36,1);display:block}.post-card:hover .post-card-banner img{transform:scale(1.04)}.post-card-text{flex-direction:column;justify-content:center;gap:6px;min-width:0;padding:4px 8px 4px 0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Inter,sans-serif;display:flex}.post-card-date{color:var(--fg-soft);font-size:.85rem;font-weight:600}.post-card-title{letter-spacing:-.02em;color:var(--fg);margin:0;font-size:clamp(1.15rem,1.6vw,1.45rem);font-weight:700;line-height:1.2}.post-card-subtitle{color:var(--fg-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.98rem;line-height:1.45;display:-webkit-box;overflow:hidden}.updates-page{background:var(--bg);width:100%;min-height:100vh;color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Inter,sans-serif;position:relative;overflow-x:hidden}.updates-main{box-sizing:border-box;width:100%;max-width:1180px;margin:0 auto;padding:150px 6% 140px}.updates-back{margin-bottom:30px}h1.updates-title{letter-spacing:-2.5px!important;color:var(--fg)!important;margin:0!important;font-size:clamp(3rem,6.5vw,5.5rem)!important;font-weight:900!important;line-height:1.05!important}.updates-subtitle{color:var(--fg-muted);margin:12px 0 44px;font-size:clamp(1.2rem,2vw,1.5rem)}.updates-empty{color:var(--fg-muted);font-size:1.1rem}.post{max-width:760px;margin:0 auto}.post-date{color:var(--fg-soft);margin-bottom:10px;font-size:.95rem;font-weight:600;display:block}.post-title{letter-spacing:-.035em;color:var(--fg);margin:0;font-size:clamp(2.4rem,5vw,3.8rem);font-weight:800;line-height:1.08}.post-subtitle{color:var(--fg-muted);margin:14px 0 32px;font-size:clamp(1.15rem,2vw,1.4rem);line-height:1.45}.post-hero{background:var(--surface);aspect-ratio:16/9;border-radius:24px;margin:0 0 40px;overflow:hidden}.post-hero img{object-fit:cover;width:100%;height:100%;display:block}.post-body{color:var(--fg);font-size:1.15rem;line-height:1.7}.post-body>*+*{margin-top:1.1em}.post-body h2{letter-spacing:-.02em;margin-top:1.8em;font-size:1.75rem;font-weight:800;line-height:1.2}.post-body h3{margin-top:1.5em;font-size:1.35rem;font-weight:700;line-height:1.3}.post-body p,.post-body li{color:var(--fg-muted)}.post-body a{color:#0a84ff;text-underline-offset:3px;text-decoration:underline}.post-body ul,.post-body ol{padding-left:1.4em}.post-body li+li{margin-top:.4em}.post-body img{border-radius:18px;max-width:100%;height:auto;display:block}.post-body figure{margin-left:0;margin-right:0}.post-body figcaption{text-align:center;color:var(--fg-soft);margin-top:10px;font-size:.9rem}.post-body blockquote{color:var(--fg);border-left:3px solid #0a84ff;margin-left:0;margin-right:0;padding:4px 0 4px 20px;font-size:1.25rem}.post-body code{background:var(--surface);border-radius:6px;padding:2px 6px;font-size:.92em}.post-body pre{background:var(--surface);border-radius:16px;padding:18px;overflow-x:auto}.post-body pre code{background:0 0;padding:0}.post-body hr{background:var(--border);border:none;height:1px;margin:2.4em 0}@media (width<=768px){.updates-ribbon{padding:36px 5% 20px}.updates-ribbon-head{text-align:center;flex-direction:column;align-items:center}.post-grid{grid-template-columns:1fr}.post-card{gap:14px}.post-card-banner{flex-basis:40%}.updates-main{padding:120px 5% 100px}}.text-rotate{vertical-align:middle;color:#000;background-color:#fff;border-radius:14px;justify-content:center;align-items:center;margin:0 6px;padding:4px 18px;display:inline-flex;position:relative;overflow:hidden}.text-rotate-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.text-rotate-inner{align-items:center;display:inline-flex;position:relative}.text-rotate-word{align-items:center;padding-bottom:2px;display:inline-flex;overflow:hidden}.text-rotate-lines{flex-direction:column;width:100%;display:flex}.text-rotate-element{will-change:transform, opacity;display:inline-block}.text-rotate-space{white-space:pre}.text-rotate-element.is-in{animation:.45s cubic-bezier(.34,1.3,.64,1) both text-rotate-in}.text-rotate-element.is-out{animation:.3s cubic-bezier(.4,0,1,1) both text-rotate-out}@keyframes text-rotate-in{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes text-rotate-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-120%)}}.dither-container{z-index:1;pointer-events:none;width:100%;height:100%;image-rendering:pixelated;display:block;position:absolute;top:0;left:0}.service-dialog.project-dialog{border-radius:40px;max-width:1080px;height:auto;max-height:calc(100dvh - 32px);padding:28px}.project-dialog-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:stretch;gap:32px;display:grid}.project-banner{aspect-ratio:16/10;background:var(--surface);border-radius:24px;position:relative;overflow:hidden}.project-banner img{object-fit:cover;width:100%;height:100%;display:block}.project-info{flex-direction:column;min-width:0;padding:8px 8px 4px 0;display:flex}.project-title{letter-spacing:-.035em;color:var(--sheet-fg);margin:0 60px 10px 0;font-size:clamp(2rem,3.4vw,3rem);font-weight:800;line-height:1.05}.project-desc{color:var(--fg-muted);margin:0 0 24px;font-size:clamp(1.05rem,1.4vw,1.3rem);line-height:1.45}.project-bottom{flex-direction:column;margin-top:auto;display:flex}.project-visit{background:var(--accent);color:#fff;border-radius:999px;justify-content:center;align-self:center;align-items:center;gap:8px;width:min(100%,320px);height:52px;margin-bottom:20px;font-size:1.08rem;font-weight:600;text-decoration:none;transition:filter .2s;display:inline-flex}.project-visit:hover{filter:brightness(1.08)}.project-visit svg{fill:none;stroke:currentColor;stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.project-made-with{color:var(--fg-soft);margin:0 0 10px;font-size:.95rem;font-weight:600}.tech-pills.tech-pills--compact{gap:6px;margin:0}.tech-pills--compact .tech-pill{height:42px;animation-delay:calc(.55s + var(--i,0) * 60ms);gap:8px;padding:0 18px 0 14px;font-size:1rem}.tech-pills--compact .tech-pill svg{flex-basis:20px;width:20px;height:20px}.project-glide{z-index:6000;pointer-events:none;background:var(--surface);position:fixed;overflow:hidden;box-shadow:0 30px 60px -20px #00000059}.project-glide img{object-fit:cover;width:100%;height:100%;display:block}@media (width<=860px){.service-dialog.project-dialog{border-radius:30px;padding:16px 16px 22px;overflow-y:auto}.project-dialog-grid{grid-template-columns:1fr;gap:18px}.project-info{padding:0 6px}.project-title{margin-right:0}.project-visit{width:100%}.project-dialog .service-dialog-close{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0000008c;top:26px;right:26px}}.glare-hover{width:var(--gh-width);height:var(--gh-height);background:var(--gh-bg);border-radius:var(--gh-br);border:1px solid var(--gh-border);place-items:center;display:grid;position:relative;overflow:hidden}.glare-hover:before{content:"";background:linear-gradient(var(--gh-angle), #0000 60%, var(--gh-rgba) 70%, #0000, #0000 100%);transition:var(--gh-duration) ease;background-size:var(--gh-size) var(--gh-size), 100% 100%;background-position:-100% -100%,0 0;background-repeat:no-repeat;position:absolute;inset:0}.glare-hover:hover{cursor:pointer}.glare-hover:hover:before{background-position:100% 100%,0 0}.glare-hover--play-once:before{transition:none}.glare-hover--play-once:hover:before{transition:var(--gh-duration) ease;background-position:100% 100%,0 0}.cta-button{isolation:isolate;color:#000;white-space:nowrap;background:#fff;border-radius:999px;justify-content:center;align-items:center;padding:22px 56px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Inter,sans-serif;font-size:1.35rem;font-weight:500;text-decoration:none;transition:color .35s,box-shadow .35s;display:inline-flex;position:relative;overflow:hidden;box-shadow:0 8px 30px #ffffff26}.cta-button:before{content:"";z-index:-1;border-radius:inherit;opacity:0;background:linear-gradient(110deg,#0a84ff 0%,#5e5ce6 16%,#bf5af2 33%,#ff375f 50%,#ff9f0a 66%,#5e5ce6 83%,#0a84ff 100%) 0 0/300% 100%;transition:opacity .4s;animation:4s linear infinite paused cta-flow;position:absolute;inset:0}@supports (background:linear-gradient(in oklch, red, blue)){.cta-button:before{background-image:linear-gradient(in oklch 110deg, #0a84ff 0%, #5e5ce6 16%, #bf5af2 33%, #ff375f 50%, #ff9f0a 66%, #5e5ce6 83%, #0a84ff 100%)}}.cta-button:hover,.cta-button:focus-visible{color:#fff;box-shadow:0 10px 40px -6px #bf5af28c}.cta-button:hover:before,.cta-button:focus-visible:before{opacity:1;animation-play-state:running}@keyframes cta-flow{0%{background-position:0%}to{background-position:150%}}@media (prefers-reduced-motion:reduce){.cta-button:before{animation:none}}
