@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto Flex Variable;font-style:normal;font-weight:100 1000;font-stretch:25% 151%;font-display:swap;src:url(/fonts/roboto-flex/roboto-flex-cyrillic-ext.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto Flex Variable;font-style:normal;font-weight:100 1000;font-stretch:25% 151%;font-display:swap;src:url(/fonts/roboto-flex/roboto-flex-cyrillic.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Roboto Flex Variable;font-style:normal;font-weight:100 1000;font-stretch:25% 151%;font-display:swap;src:url(/fonts/roboto-flex/roboto-flex-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto Flex Variable;font-style:normal;font-weight:100 1000;font-stretch:25% 151%;font-display:swap;src:url(/fonts/roboto-flex/roboto-flex-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/roboto-mono-cyrillic-ext-wght-normal.BUDPrIko.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/roboto-mono-cyrillic-wght-normal.HUlVHixE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/roboto-mono-greek-wght-normal.BJJTbwTT.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/roboto-mono-vietnamese-wght-normal.DlC-zuDL.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/roboto-mono-latin-ext-wght-normal.QAYlOegK.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/roboto-mono-latin-wght-normal.CZtBPCCa.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--color-ink:#000;--color-ink-hover:#1c1c1c;--color-ink-soft:#656565;--color-heading:#2c2c2c;--color-page:#fff;--color-surface:#fff;--color-surface-hover:#ededed;--color-surface-sunken:#f7f7f7;--color-border:#e8e8e8;--color-scroll:#00000026;--color-cell:#f1f1f1;--color-cell-hover:#e3e3e3;--color-track:#ededed;--color-knob:#fff;--shadow-knob:0 0 3px -1px #0000001f;--color-control:#ededed;--color-control-hover:#e3e3e3;--color-avatar-bg:#d9d9d9;--shadow-card:0 -4px 20px #00000014;--radius-lg:48px;--radius-md:40px;--radius-sm:12px;--radius-xs:8px;--radius-pill:100px;--space-3xs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:40px;--space-3xl:48px;--avatar-size:140px;--ff-display:"Roboto Flex Variable", "Roboto Flex", sans-serif;--ff-body:"Inter Variable", "Inter", sans-serif;--ff-mono:"Roboto Mono Variable", "Roboto Mono", monospace;--fs-display:clamp(24px, 1.1rem + 1.5vw, 32px);--fs-title:clamp(20px, 1rem + .6vw, 24px);--fs-body:16px;--fs-sub:14px;--lh-tight:1.1;--lh-normal:1.4;--ease:cubic-bezier(.16, 1, .3, 1);--dur:.22s}:root[data-theme=dark]{color-scheme:dark;--color-ink:#f4f4f4;--color-ink-hover:#e0e0e0;--color-ink-soft:#9b9b9b;--color-heading:#fafafa;--color-page:#101010;--color-surface:#1f1f1f;--color-surface-hover:#2a2a2a;--color-surface-sunken:#171717;--color-border:#2b2b2b;--color-scroll:#ffffff2e;--color-cell:#1b1b1b;--color-cell-hover:#2c2c2c;--color-track:#101010;--color-knob:#2a2a2a;--shadow-knob:none;--color-control:#333;--color-control-hover:#3d3d3d;--color-avatar-bg:#2e2e2e;--shadow-card:0 -4px 20px #00000073}*{box-sizing:border-box}@supports (corner-shape:superellipse(2)){*{corner-shape:superellipse(1.3)}}html{scroll-behavior:smooth;scrollbar-color:var(--color-scroll) transparent}body{background:var(--color-page);color:var(--color-ink);font-family:var(--ff-body);font-size:var(--fs-body);line-height:var(--lh-normal);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}ul,ol{margin:0;padding:0;list-style:none}h1,h2,h3,p{margin:0}:focus-visible{outline:2px solid var(--color-ink);outline-offset:3px;border-radius:var(--radius-xs)}::selection{background:var(--color-ink);color:var(--color-surface)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}::view-transition-old(root),::view-transition-new(root){mix-blend-mode:normal;animation:none}:root[data-vt=theme]::view-transition-new(root){animation:vt-reveal .5s var(--ease)}@keyframes vt-reveal{0%{clip-path:circle(0 at var(--vt-x) var(--vt-y))}to{clip-path:circle(var(--vt-r) at var(--vt-x) var(--vt-y))}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.text-display{font-family:var(--ff-display);font-variation-settings:"opsz" 96, "wdth" 132;font-weight:600;font-size:var(--fs-display);line-height:var(--lh-tight);letter-spacing:-.015em;color:var(--color-heading);text-wrap:balance}.text-body{font-size:var(--fs-body);line-height:var(--lh-normal);color:var(--color-ink-soft)}.mono{font-family:var(--ff-mono)}.panel{gap:var(--space-xs);padding:var(--space-xs);border-radius:var(--radius-lg);background:var(--color-surface-sunken);flex-direction:column;display:flex}.card{border-radius:var(--radius-md);background:var(--color-surface);width:100%}.page{gap:var(--space-md);max-width:1920px;padding:var(--space-lg);flex-direction:column;margin:0 auto;display:flex}.btn{height:48px;padding:0 var(--space-lg);border-radius:var(--radius-pill);corner-shape:round;font:inherit;font-size:var(--fs-body);white-space:nowrap;cursor:pointer;transition:background var(--dur) var(--ease), transform var(--dur) var(--ease);border:0;flex-shrink:0;justify-content:center;align-items:center;gap:6px;line-height:1;display:inline-flex}.btn:active{transform:scale(.97)}.btn--dark{background:var(--color-ink);color:var(--color-surface)}.btn--dark:hover{background:var(--color-ink-hover)}.btn--control{background:var(--color-control);color:var(--color-ink)}.btn--control:hover{background:var(--color-control-hover)}.btn--wide-icon{width:72px;padding:0}.btn:disabled,.btn[aria-disabled=true]{width:auto;padding:0 var(--space-lg);background:var(--color-ink-soft);color:var(--color-page);cursor:default}.btn:disabled:active{transform:none}.chip{height:32px;padding:0 var(--space-sm);border-radius:var(--radius-pill);corner-shape:round;background:var(--color-surface-sunken);font-family:var(--ff-mono);font-size:var(--fs-body);white-space:nowrap;align-items:center;line-height:1;display:flex}.tags{gap:var(--space-xs);flex-wrap:wrap;display:flex}.theme-switch{gap:var(--space-3xs);width:100%;height:100%;padding:var(--space-3xs);border-radius:inherit;background:var(--color-track);display:flex}.theme-option{border-radius:calc(var(--radius-sm) - 4px);color:var(--color-ink-soft);cursor:pointer;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;border:0;flex:1;justify-content:center;align-items:center;padding:0;display:flex}.theme-option:hover{color:var(--color-ink)}.theme-option[aria-checked=true]{background:var(--color-knob);color:var(--color-ink);box-shadow:var(--shadow-knob)}.profile{overflow:hidden}.tool-grid{grid-template-columns:repeat(auto-fill,minmax(48px,1fr));grid-template-rows:repeat(2, var(--cell,48px));gap:var(--space-3xs);height:calc(var(--space-md) + 2 * var(--cell,48px) + var(--space-3xs));padding:var(--space-md) var(--space-md) 0;grid-auto-rows:0;display:grid;overflow:hidden}.tool-cell{border-radius:var(--radius-sm);background:var(--color-cell);transition:background .6s}.tool-cell:hover{background:var(--color-cell-hover);transition-duration:0s}.tool-slot{border-radius:var(--radius-sm);grid-row:2}.tool-slot--theme{grid-column:-3/-1}.profile-row{gap:var(--space-xs);grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);display:grid}.profile-card{gap:var(--space-lg);padding:0 var(--space-xl) var(--space-xl);flex-direction:column;display:flex}.avatar-slot{width:var(--avatar-size);height:calc(var(--avatar-size) / 2);flex-shrink:0;position:relative}.avatar{top:calc(var(--avatar-size) / -2);width:var(--avatar-size);height:var(--avatar-size);corner-shape:round;object-fit:cover;background:var(--color-avatar-bg);outline:4px solid var(--color-surface-sunken);border-radius:50%;place-items:center;display:grid;position:absolute;left:0}.avatar--initials{font-family:var(--ff-display);font-variation-settings:"opsz" 96, "wdth" 132;color:var(--color-ink-soft);font-size:40px;font-weight:600}.profile-body{gap:var(--space-lg) var(--space-xs);grid-template-columns:1fr auto;grid-template-areas:"identity pill""links links""bio bio";display:grid}.profile-identity{gap:var(--space-3xs);flex-direction:column;grid-area:identity;min-width:0;display:flex}.profile-name{font-family:var(--ff-display);font-variation-settings:"opsz" 96, "wdth" 132;font-size:var(--fs-title);font-weight:600;line-height:var(--lh-tight);letter-spacing:-.015em;text-wrap:balance}.profile-role{color:var(--color-ink-soft)}.contact-pill{grid-area:pill;align-self:start;width:72px;padding:0}.contact-label{display:none}.profile-links{gap:var(--space-md);flex-wrap:wrap;grid-area:links;display:flex}.profile-link{align-items:center;gap:var(--space-3xs);transition:opacity var(--dur) var(--ease);display:inline-flex}.profile-link:hover{opacity:.6}.link-icon{flex-shrink:0;width:20px;height:20px}.bio{grid-area:bio;max-width:62ch}.experience-card{height:0;min-height:100%;padding:var(--space-xl) var(--space-xl) 0;flex-direction:column;display:flex;overflow:hidden}.experience-heading{margin-bottom:var(--space-xs);font-family:var(--ff-mono);font-size:var(--fs-sub);color:var(--color-ink-soft)}.experience-list{min-height:0;margin-right:calc(var(--space-md) * -1);padding-right:var(--space-md);padding-bottom:var(--space-xl);overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--color-scroll) transparent;flex-direction:column;flex:1;display:flex;overflow-y:auto;mask-image:linear-gradient(#000 calc(100% - 40px),#0000)}.experience-row{border-bottom:1px solid var(--color-border);padding:20px 0}.experience-row:first-child{padding-top:var(--space-sm)}.experience-row:last-child{border-bottom:0;padding-bottom:0}.experience-title{font-family:var(--ff-display);font-variation-settings:"wdth" 132;font-weight:600;line-height:var(--lh-tight);color:var(--color-heading)}.experience-dates{margin-top:var(--space-3xs);font-size:var(--fs-sub);color:var(--color-ink-soft);font-variant-numeric:tabular-nums;line-height:18px}.projects{gap:var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.case-card{gap:0;position:relative}.case-stage{aspect-ratio:1220/712;border-radius:var(--radius-md);background:var(--color-surface-sunken);position:relative;overflow:hidden;container-type:inline-size}.case-stage-img{transform-origin:50%;width:calc(100% - 48px);height:auto;transition:transform .5s var(--ease);position:absolute;inset:auto 24px 0}.case-card:hover .case-stage-img{transform:scale(1.03)}.case-content{z-index:2;gap:var(--space-lg);margin-top:calc(var(--space-xl) * -1);padding:var(--space-xl);box-shadow:var(--shadow-card);flex-direction:column;display:flex;position:relative}.case-summary{align-items:flex-end;gap:var(--space-md);display:flex}.case-text{gap:var(--space-xs);flex-direction:column;flex:1;min-width:0;display:flex}.case-title{font-size:var(--fs-title)}.case-open{transition:background var(--dur) var(--ease), transform var(--dur) var(--ease)}.case-link{z-index:3;border-radius:var(--radius-lg);position:absolute;inset:0}.case-card:has(.case-link){cursor:pointer}.case-card:has(.case-link):hover .case-open{transform:translate(4px)}.btn-icon{flex-shrink:0;width:16px;height:16px}.btn-icon path{vector-effect:non-scaling-stroke}.foot{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-lg) var(--space-xl);flex-wrap:wrap;display:flex}.foot-text{gap:var(--space-3xs);flex-direction:column;display:flex}.foot-actions{gap:var(--space-xs);flex-wrap:wrap;display:flex}.foot-copy{font-size:var(--fs-sub);color:var(--color-ink-soft)}@media (width<=1100px){.profile-row{grid-template-columns:1fr}.experience-card{height:auto;max-height:380px}}@media (width<=860px){.projects{grid-template-columns:1fr}}@media (width<=600px){:root{--avatar-size:112px}.page{padding:var(--space-md)}.profile-card,.experience-card{padding-inline:var(--space-lg)}.profile-body{grid-template-columns:1fr;grid-template-areas:"identity""links""bio""pill"}.contact-pill{width:100%}.contact-label{display:inline}.case-content{padding:var(--space-lg)}}.js .reveal{opacity:0;transition:opacity .6s var(--ease), translate .6s var(--ease);translate:0 16px}.js .reveal.is-in{opacity:1;translate:0}.theme-dark-only,:root[data-theme=dark] .theme-light-only{display:none!important}:root[data-theme=dark] .theme-dark-only{display:block!important}.stage{--m-bg:var(--color-surface-sunken);--m-surface:var(--color-surface);--m-line:var(--color-cell);--m-soft:var(--color-surface-sunken);--m-ink:var(--color-cell-hover);--m-accent:#d2d2d2;--m-accent-soft:var(--color-cell-hover);--m-shadow:#0000000f}:root[data-theme=dark] .stage{--m-ink:#333;--m-accent:#444;--m-accent-soft:#2c2c2c;--m-shadow:#0006}.stage{--u:1cqw;aspect-ratio:1220/712;border-radius:var(--radius-md);background:var(--m-bg);position:relative;overflow:hidden;container-type:inline-size}.stage--compact{--u:1cqw}.stage-img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.mock{font-size:var(--u);transition:transform .6s var(--ease);position:absolute;inset:0}.mock i,.mock b,.mock em,.mock span,.mock strong{display:block}.case-card:has(.case-link):hover .mock{transform:translateY(-1.4em)scale(1.015)}.ph{background:var(--m-surface);width:25em;height:56em;box-shadow:0 0 0 .45em var(--m-ink), 0 2em 5em var(--m-shadow);border-radius:3.8em;flex-direction:column;gap:1.3em;padding:1.6em;display:flex;position:absolute;top:7em;left:50%;translate:-50%}.ph--side{border-radius:3.3em;width:21em;padding:1.4em;top:15em}.ph--l{left:calc(50% - 26.5em)}.ph--r{left:calc(50% + 26.5em)}.ph-island{background:var(--m-ink);border-radius:1em;align-self:center;width:6.4em;height:1.7em}.ph-head{justify-content:space-between;align-items:center;margin-top:.4em;display:flex}.ph-head span{background:var(--m-ink);opacity:.85;border-radius:1em;width:9em;height:1.5em}.ph-head b{background:var(--m-line);border-radius:50%;width:2.6em;height:2.6em}.ph-hero{background:var(--m-accent);border-radius:2.2em;flex-direction:column;gap:1em;padding:1.6em;display:flex}.ph-hero span{background:oklch(100% 0 0/.5);border-radius:1em;width:7em;height:1em}.ph-hero strong{background:oklch(100% 0 0/.95);border-radius:1em;width:13em;height:2.4em}.ph-hero em{background:oklch(100% 0 0/.28);border-radius:2em;width:6em;height:2.2em;margin-top:1.4em}.ph-tiles{grid-template-columns:1fr 1fr;gap:1em;display:grid}.ph-tiles i{background:var(--m-soft);border:.15em solid var(--m-line);border-radius:1.6em;height:6.5em}.ph-tiles i:first-child{background:var(--m-accent-soft);border-color:#0000}.ph-row{grid-template-rows:auto;grid-template-columns:3em 1fr auto;align-items:center;gap:1em;display:grid}.ph-row b{background:var(--m-line);border-radius:1em;width:3em;height:3em}.ph-row span{background:var(--m-line);border-radius:1em;width:80%;height:1.1em}.ph-row em{background:var(--m-accent-soft);border-radius:1em;width:3em;height:1.1em}.ph-chart{background:var(--m-soft);border-radius:1.8em;align-items:flex-end;gap:.7em;height:12em;padding:1.2em;display:flex}.ph-chart i,.bw-chart i{background:var(--m-accent-soft);border-radius:.5em .5em .2em .2em;flex:1}.ph-chart i.on,.bw-chart i.on{background:var(--m-accent)}.ph-cta{background:var(--m-ink);border-radius:2em;height:4em}.bw{background:var(--m-surface);width:82em;height:60em;box-shadow:0 0 0 .2em var(--m-line), 0 2em 5em var(--m-shadow);border-radius:1.8em;position:absolute;top:7em;left:9em;overflow:hidden}.bw-bar{border-bottom:.15em solid var(--m-line);align-items:center;gap:.6em;height:4em;padding:0 1.6em;display:flex}.bw-bar i{background:var(--m-line);border-radius:50%;width:1em;height:1em}.bw-bar span{background:var(--m-soft);border-radius:1em;width:24em;height:1.8em;margin-left:2em}.bw-body{grid-template-columns:15em 1fr;height:100%;display:grid}.bw-side{background:var(--m-soft);border-right:.15em solid var(--m-line);flex-direction:column;gap:.7em;padding:2em 1.4em;display:flex}.bw-side b{background:var(--m-accent);border-radius:.9em;width:3em;height:3em;margin-bottom:1.6em}.bw-side span{background:linear-gradient(var(--m-line), var(--m-line)) .8em 50% / 60% .9em no-repeat;border-radius:.8em;height:2.6em}.bw-side span.on{background-color:var(--m-surface);background-image:linear-gradient(var(--m-ink), var(--m-ink));box-shadow:0 0 0 .15em var(--m-line)}.bw-main{flex-direction:column;gap:1.6em;padding:2.2em 2.4em;display:flex}.bw-top{justify-content:space-between;align-items:center;display:flex}.bw-top span{background:var(--m-ink);opacity:.85;border-radius:1em;width:18em;height:2.2em}.bw-top b{background:var(--m-accent);border-radius:2em;width:9em;height:3em}.bw-stats{grid-template-columns:repeat(3,1fr);gap:1.2em;display:grid}.bw-stats div{border:.15em solid var(--m-line);border-radius:1.4em;flex-direction:column;gap:1em;padding:1.4em;display:flex}.bw-stats span{background:var(--m-line);border-radius:1em;width:50%;height:.9em}.bw-stats strong{background:var(--m-ink);opacity:.8;border-radius:1em;width:70%;height:2em}.bw-stats div:first-child{background:var(--m-accent-soft);border-color:#0000}.bw-chart{background:var(--m-soft);border-radius:1.4em;align-items:flex-end;gap:1.1em;height:15em;padding:1.6em;display:flex}.bw-table{flex-direction:column;display:flex}.bw-table div{border-bottom:.15em solid var(--m-line);grid-template-columns:2em 2fr 1fr 5em;align-items:center;gap:1.6em;padding:1em 0;display:grid}.bw-table b{background:var(--m-line);border-radius:.6em;width:2em;height:2em}.bw-table span{background:var(--m-line);border-radius:1em;height:1em}.bw-table em{background:var(--m-accent-soft);border-radius:1em;height:1.8em}.mo{position:absolute;inset:0}.mo-ring{border:.5em dashed var(--m-line);border-radius:50%;width:34em;height:34em;margin:-19em 0 0 -17em;animation:40s linear infinite mo-spin;position:absolute;top:50%;left:50%}.mo-disc{background:var(--m-accent);border-radius:50%;width:20em;height:20em;margin:-14em 0 0 -15em;animation:7s ease-in-out infinite mo-float;position:absolute;top:50%;left:50%}.mo-square{background:var(--m-ink);border-radius:3.6em;width:14em;height:14em;margin:-6em 0 0 2em;animation:9s ease-in-out -3s infinite reverse mo-float;position:absolute;top:50%;left:50%;rotate:16deg}.mo-pill{background:var(--m-surface);width:15em;height:5em;box-shadow:0 1em 3em var(--m-shadow);border-radius:3em;align-items:center;margin:-17em 0 0 3em;padding:0 1em;animation:6s ease-in-out -1s infinite mo-float;display:flex;position:absolute;top:50%;left:50%}.mo-pill b{background:var(--m-accent-soft);border-radius:50%;width:3em;height:3em}.mo-timeline{background:var(--m-line);border-radius:1em;height:.3em;position:absolute;bottom:5em;left:8em;right:8em}.mo-key{background:var(--m-ink);border-radius:.3em;width:1.4em;height:1.4em;margin:-.7em 0 0 -.7em;position:absolute;top:50%;rotate:45deg}.mo-playhead{background:var(--m-accent);border-radius:1em;width:.3em;height:3.5em;animation:6s linear infinite mo-play;position:absolute;top:-1.6em}@keyframes mo-spin{to{transform:rotate(360deg)}}@keyframes mo-float{0%,to{transform:translateY(0)}50%{transform:translateY(-1.6em)}}@keyframes mo-play{0%{left:0}to{left:100%}}.cd{position:absolute;inset:0}.cd-card{width:36em;height:22.5em;transition:transform .6s var(--ease);border-radius:3em;margin:-11.25em 0 0 -18em;position:absolute;top:50%;left:50%}.cd-card--3{background:var(--m-ink);transform:rotate(-14deg)translate(-4em,-2em)}.cd-card--2{background:var(--m-surface);box-shadow:0 0 0 .2em var(--m-line);transform:rotate(-4deg)translateY(-1em)}.cd-card--1{background:radial-gradient(120% 120% at 100% 0%, var(--m-accent-soft) 0%, transparent 55%), var(--m-accent);box-shadow:0 2em 5em var(--m-shadow);padding:2.6em;transform:rotate(8deg)translate(4em,2em)}.cd-card--1 i{background:oklch(100% 0 0/.85);border-radius:.9em;width:5em;height:3.6em}.cd-card--1 span{background:oklch(100% 0 0/.9);border-radius:1em;width:20em;height:1.6em;margin-top:6.2em}.cd-card--1 em{background:oklch(100% 0 0/.5);border-radius:1em;width:10em;height:1.1em;margin-top:1.2em}.cd-card--1 b{background:oklch(100% 0 0/.3);border-radius:50%;width:4.6em;height:4.6em;position:absolute;bottom:2.6em;right:2.6em;box-shadow:-2.4em 0 oklch(100% 0 0/.5)}.case-card:hover .cd-card--3{transform:rotate(-18deg)translate(-6em,-3em)}.case-card:hover .cd-card--1{transform:rotate(11deg)translate(6em,3em)}.case-page{justify-content:center;align-items:flex-start;gap:var(--space-md);max-width:1920px;padding:var(--space-lg);margin:0 auto;display:flex;overflow-x:clip}.case-page[data-version=short] [data-full-only],.case-page:not([data-version=short]) [data-short-only]{display:none}.case-back-col{top:var(--space-lg);flex:0 0 clamp(56px,100vw - 1152px,240px);justify-content:flex-end;display:flex;position:sticky}.case-nav-back{background:var(--color-surface-sunken);color:var(--color-ink)}.case-nav-back:hover{background:var(--color-surface-hover)}.case-back-fab,.case-menu-fab,.case-nav-close{display:none}.case-content-col{gap:var(--space-xl);flex-direction:column;flex:1;min-width:0;max-width:824px;display:flex}.case-content-col>*{min-width:0}.case-topbar{align-items:center;min-height:48px}.case-heading{font-size:var(--fs-display)}.switch{gap:var(--space-3xs);padding:var(--space-3xs);border-radius:var(--radius-pill);corner-shape:round;background:var(--color-surface-sunken);display:flex;position:relative}.switch:before{content:"";top:var(--space-3xs);left:var(--space-3xs);width:calc((100% - var(--space-3xs) * 3) / 2);height:calc(100% - var(--space-3xs) * 2);border-radius:var(--radius-pill);corner-shape:round;background:var(--color-surface);box-shadow:var(--shadow-knob);transition:transform var(--dur) var(--ease);position:absolute}.switch:has(>:last-child.is-active):before{transform:translateX(calc(100% + var(--space-3xs)))}.case-tab{z-index:1;padding:20px var(--space-md);border-radius:var(--radius-pill);color:var(--color-ink-soft);font:inherit;cursor:pointer;transition:color var(--dur) var(--ease);background:0 0;border:0;flex:1;position:relative}.case-tab:hover,.case-tab.is-active{color:var(--color-ink)}.case-section{gap:var(--space-xl);scroll-margin-top:var(--space-lg);flex-direction:column;display:flex}.case-section+.case-section{margin-top:var(--space-xl)}.case-section-title,.case-h2,.case-h3{font-family:var(--ff-display);font-variation-settings:"wdth" 132;font-weight:600;line-height:var(--lh-tight);letter-spacing:-.015em;color:var(--color-heading)}.case-section-title{font-variation-settings:"opsz" 96, "wdth" 132;font-size:var(--fs-display)}.case-h2,.case-h3{font-size:clamp(20px,1rem + .8vw,24px)}.case-body{font-size:var(--fs-body);line-height:var(--lh-normal);color:var(--color-ink-soft)}.case-list{flex-direction:column;gap:.35em;display:flex}.case-list>li{padding-left:1.1em;position:relative}.case-list>li:before{content:"·";font-weight:700;position:absolute;top:0;left:.15em}.case-figure{gap:var(--space-xs);min-width:0;padding:var(--space-xs);border-radius:var(--radius-lg);background:var(--color-surface-sunken);flex-direction:column;display:flex}.case-media{gap:var(--space-xs);border-radius:var(--radius-md);flex-direction:column;min-width:0;display:flex}.case-media-img{border-radius:var(--radius-md);width:100%;height:auto;display:block}img.case-media-img,img.case-screen{cursor:zoom-in}.case-media--overlap,.case-media--bleed{gap:0}.case-media--overlap .case-media-img{border-bottom-right-radius:0;border-bottom-left-radius:0}.case-media--overlap .case-caption,.case-media--bleed .case-caption{z-index:1;box-shadow:var(--shadow-card);position:relative}.case-media--overlap .case-caption{margin-top:calc(var(--space-2xl) * -1)}.case-caption,.case-card-white,.case-card-pain,.case-metric{gap:var(--space-xs);padding:var(--space-lg);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;display:flex}.case-card-white--list{gap:var(--space-md)}.case-two-col{gap:var(--space-xs);grid-template-columns:1fr 1fr;display:grid}.case-two-col>*{min-width:0}.case-two-col--brief{grid-template-columns:1fr 66.6%}.case-two-col:not(.case-two-col--brief):has(>.case-card-white:only-child),.case-page[data-version=short] .case-two-col--brief:has(>[data-full-only]){grid-template-columns:1fr}.case-pains{gap:var(--space-xs);grid-template-columns:1fr 1fr;display:grid}.case-metrics{gap:var(--space-xs);grid-template-columns:repeat(3,1fr);display:grid}.case-metric-num{font-family:var(--ff-display);font-variation-settings:"opsz" 96, "wdth" 132;font-size:64px;font-weight:600;line-height:var(--lh-tight);letter-spacing:-.011em;color:var(--color-heading)}.case-hscroll{min-width:0;margin-inline:calc(var(--space-xs) * -1);padding-inline:var(--space-xs);overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent;user-select:none;display:flex;overflow-x:auto}.case-hscroll.is-scrollable{cursor:grab}.case-hscroll.is-dragging{cursor:grabbing}.case-hscroll img{-webkit-user-drag:none}.case-screens{width:max-content;padding:var(--space-2xl) clamp(32px, 4vw, 56px);align-items:flex-start;gap:clamp(32px,4vw,56px);margin:auto;display:flex}.case-screens--hero{gap:var(--space-xl);padding-inline:var(--space-3xl)}.case-screens--fit{justify-content:center;width:100%}.case-screens--fit .case-screen{min-width:0;width:calc((100% - var(--fit-gaps)) / var(--fit-count));flex:0 auto;max-width:264px;height:auto}.case-screen{flex:none;width:auto;max-width:none;height:572px;display:block}.case-screens--hero .case-screen{height:436px}.case-screens--lg{width:100%;padding:var(--space-2xl) var(--space-lg) 0;justify-content:center;gap:4.2%;overflow:hidden}.case-screens--lg .case-screen{width:38%;height:auto;margin-bottom:-16%}.case-screens--single .case-screen{width:56%;margin-bottom:-24%}.case-switch{min-width:0;padding:var(--space-lg) var(--space-lg) var(--space-2xl);border-radius:var(--radius-md);justify-content:center;align-items:center;display:flex;position:relative}.case-switch-slide{display:none}.case-switch-slide.is-active{display:block}.case-switch .case-screen{height:480px}.case-switch-dots{bottom:var(--space-md);gap:var(--space-xs);display:flex;position:absolute;left:50%;translate:-50%}.case-switch-dot{corner-shape:round;background:var(--color-border);cursor:pointer;width:10px;height:10px;transition:background var(--dur) var(--ease);border:0;border-radius:50%;padding:0}.case-switch-dot.is-active{background:var(--color-ink)}.case-footer{padding:var(--space-md) 0;justify-content:flex-end;display:flex}.btn--tall-icon{width:48px;height:72px;padding:0}.case-nav{top:var(--space-lg);flex:0 0 240px;width:240px;position:sticky}.case-nav-inner{align-items:flex-start;gap:var(--space-xl);padding:var(--space-lg);background:var(--color-surface-sunken);flex-direction:column;display:flex}:root[data-theme=dark] .case-nav-inner{background:var(--color-surface-sunken)}.case-nav-top{justify-content:space-between;align-items:center;gap:var(--space-md);width:100%;display:flex}.case-nav-switches{gap:var(--space-3xs);display:flex}.case-nav-inner .theme-switch{border-radius:var(--radius-pill);corner-shape:round;background:var(--color-page);width:auto;height:48px}.case-nav-inner .theme-option{border-radius:var(--radius-pill);corner-shape:round;flex:none;width:56px}.case-nav-inner .theme-option[aria-checked=true]{background:var(--color-surface-sunken);box-shadow:none}:root[data-theme=dark] .case-nav-inner .theme-option[aria-checked=true]{background:var(--color-control)}.case-toc ol{gap:var(--space-md);flex-direction:column;display:flex}.case-toc-link{color:var(--color-ink-soft);white-space:nowrap;transition:color var(--dur) var(--ease)}.case-toc-link:hover,.case-toc-link.is-active{color:var(--color-ink)}.case-zoom{z-index:100;padding:var(--space-3xl) var(--space-lg);cursor:zoom-out;background:#101010f0;place-items:center;display:grid;position:fixed;inset:0}.case-zoom[hidden]{display:none}.case-zoom img{width:auto;max-width:100%;height:auto;max-height:calc(100dvh - var(--space-3xl) * 2);object-fit:contain;border-radius:var(--radius-sm)}.case-zoom-close{top:var(--space-md);right:var(--space-md);position:absolute}.sk-phone{aspect-ratio:9/19.5;background:var(--color-surface);box-shadow:0 0 0 3px var(--color-cell-hover), 0 12px 32px -12px #0000001f;border-radius:13%/6%;flex-direction:column;gap:4.5%;padding:5% 6%;display:flex;overflow:hidden}.sk-phone i,.sk-phone b,.sk-phone em,.sk-phone span{display:block}.sk-island{background:var(--color-cell-hover);border-radius:99px;flex:none;align-self:center;width:30%;height:3.2%}.sk-top{justify-content:space-between;align-items:center;display:flex}.sk-top b{background:var(--color-cell-hover);border-radius:99px;width:40%;height:10px}.sk-top i{background:var(--color-cell);border-radius:50%;width:22px;height:22px}.sk-hero{background:var(--color-cell-hover);border-radius:16px;flex-direction:column;gap:8px;padding:10%;display:flex}.sk-hero b{background:var(--color-surface);opacity:.8;border-radius:99px;width:50%;height:8px}.sk-hero b+b{width:70%;height:16px}.sk-hero i{background:var(--color-surface);border-radius:99px;width:36%;height:22px;margin-top:8px}.sk-chart{background:var(--color-surface-sunken);border-radius:16px;flex:none;align-items:flex-end;gap:6%;height:22%;padding:6%;display:flex}.sk-chart i{background:var(--color-cell-hover);border-radius:4px;flex:1}.sk-chart i.on{background:var(--color-ink-soft);opacity:.5}.sk-map{background:linear-gradient(90deg, transparent 48%, var(--color-surface) 48% 52%, transparent 52%), linear-gradient(0deg, transparent 40%, var(--color-surface) 40% 44%, transparent 44%), var(--color-cell);border-radius:16px;flex:none;height:30%;position:relative}.sk-map i{background:var(--color-ink-soft);opacity:.6;border-radius:50% 50% 50% 0;width:14px;height:14px;position:absolute;rotate:-45deg}.sk-map i:first-child{top:20%;left:22%}.sk-map i:nth-child(2){top:55%;left:64%}.sk-map i:nth-child(3){top:30%;left:76%}.sk-form{flex-direction:column;gap:10px;display:flex}.sk-form span{background:var(--color-surface-sunken);border-radius:12px;height:36px}.sk-chips{gap:6px;display:flex}.sk-chips i{background:var(--color-cell);border-radius:99px;width:28%;height:22px}.sk-chips i.on{background:var(--color-cell-hover)}.sk-rows{flex-direction:column;gap:12px;display:flex}.sk-row{grid-template-columns:26px 1fr 28px;align-items:center;gap:10px;display:grid}.sk-row i{background:var(--color-cell);border-radius:8px;width:26px;height:26px}.sk-row b{background:var(--color-cell);border-radius:99px;height:8px}.sk-row em{background:var(--color-cell-hover);border-radius:99px;height:8px}.sk-cta{background:var(--color-cell-hover);border-radius:99px;flex:none;height:40px;margin-top:auto}.sk-wide{aspect-ratio:16/9;background:var(--color-surface);position:relative;overflow:hidden}.sk-wide-stage{aspect-ratio:auto;border-radius:0;position:absolute;inset:0}.sk-board{grid-template-columns:repeat(9,1fr);align-items:start;gap:3%;display:grid;position:absolute;inset:10% 6% 22%}.sk-board i{aspect-ratio:9/19;background:var(--color-surface-sunken);box-shadow:0 0 0 1px var(--color-border);translate:0 calc(var(--r) * 6%);border-radius:10%;display:block}.sk-flow{flex-direction:column;justify-content:space-around;display:flex;position:absolute;inset:12% 6% 24%}.sk-flow-row{align-items:center;display:flex}.sk-flow-row i{aspect-ratio:9/13;background:var(--color-surface-sunken);width:12%;box-shadow:0 0 0 1px var(--color-border);border-radius:12%;flex:none;display:block}.sk-flow-row span{background:repeating-linear-gradient(90deg, var(--color-cell-hover) 0 6px, transparent 6px 12px);flex:1;height:2px;display:block}.sk-flow-row:nth-child(2){padding-left:14%}.sk-palette{grid-template-columns:1fr 1fr;gap:8%;display:grid;position:absolute;inset:10% 6% 24%}.sk-type{flex-direction:column;justify-content:space-between;display:flex}.sk-type b{width:calc(40% + var(--fs) * 1%);height:calc(var(--fs) * .032cqw);background:var(--color-cell-hover);border-radius:99px;min-height:4px;display:block}.sk-swatches{grid-template-columns:repeat(4,1fr);align-content:center;gap:8%;display:grid}.sk-swatches i{aspect-ratio:1;background:var(--c);box-shadow:0 0 0 1px var(--color-border);border-radius:22%;display:block}.sk-wide--palette{container-type:inline-size}.rule-vis{--vis-box:#fff;--vis-line:#e4e4e4;--vis-dim:#d9d9d9;--vis-accent:#845cdd;--vis-accent-soft:#e4dafa;--vis-shadow:0 2px 10px #0000000f;height:168px;margin:calc(var(--space-md) * -1) calc(var(--space-md) * -1) var(--space-md);position:relative;overflow:hidden}.rule-vis>div{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.rule-vis i,.rule-vis b,.rule-vis span{display:block}.rv-steps{gap:10px}.rv-steps i{background:var(--vis-box);width:28px;height:40px;box-shadow:var(--vis-shadow);animation:rv-pulse 2.4s var(--ease) infinite;animation-delay:calc(var(--i) * .2s);border-radius:8px}.rv-steps b{background:var(--vis-accent);border-radius:50%;width:40px;height:40px}.rv-slots{grid-template-columns:repeat(4,34px);align-content:center;gap:8px;display:grid!important}.rv-slots i{background:var(--vis-box);height:34px;box-shadow:var(--vis-shadow);border-radius:8px}.rv-slots i.on{background:var(--vis-accent);animation:rv-pulse 2.4s var(--ease) infinite}.rv-signal{gap:8px}.rv-signal span{background:var(--vis-box);width:48px;height:80px;box-shadow:var(--vis-shadow);border-radius:10px}.rv-signal i{background:var(--vis-accent);opacity:.2;width:6px;height:6px;animation:1.6s linear infinite rv-blink;animation-delay:calc(var(--i) * .16s);border-radius:50%}.rv-signal b{background:var(--vis-accent);border-radius:12px;width:40px;height:40px}.rv-chart{gap:10px;padding:32px 0;align-items:flex-end!important}.rv-chart i{width:18px;height:var(--h);background:var(--vis-box);box-shadow:var(--vis-shadow);transform-origin:bottom;animation:rv-grow 2.8s var(--ease) infinite;animation-delay:calc(var(--i) * 80ms);border-radius:5px}.rv-chart i:last-child{background:var(--vis-accent)}.rv-shield i{background:var(--vis-box);width:72px;height:84px;box-shadow:var(--vis-shadow);border-radius:14px 14px 36px 36px}.rv-shield b{border-left:3px solid var(--vis-accent);border-bottom:3px solid var(--vis-accent);width:26px;height:14px;position:absolute;translate:0 -6px;rotate:-45deg}.rv-chat{flex-direction:column;gap:8px}.rv-chat i{background:var(--vis-box);width:120px;height:26px;box-shadow:var(--vis-shadow);animation:rv-pulse 3s var(--ease) infinite;border-radius:14px 14px 14px 4px}.rv-chat i:nth-child(2){background:var(--vis-accent);width:90px;box-shadow:none;border-radius:14px 14px 4px;align-self:center;animation-delay:.4s;translate:30px}.rv-chat i:nth-child(3){width:70px;animation-delay:.8s}@keyframes rv-pulse{0%,to{translate:0}50%{translate:0 -6px}}@keyframes rv-blink{0%,to{opacity:.2}50%{opacity:.9}}@keyframes rv-grow{0%,to{scale:1}50%{scale:1 .7}}@media (width<=1100px){.case-page{flex-direction:column;align-items:stretch;padding-top:88px}.case-content-col{max-width:100%}.case-back-col{display:none}.case-back-fab,.case-menu-fab{top:var(--space-md);z-index:50;background:var(--color-surface);color:var(--color-ink);display:flex;position:fixed;box-shadow:0 0 12px -3px #0000002e}.case-back-fab{left:var(--space-md)}.case-menu-fab{right:var(--space-md)}.case-back-fab:hover,.case-menu-fab:hover{background:var(--color-surface-hover)}body.is-nav-open .case-menu-fab{opacity:0;pointer-events:none}.case-nav{top:var(--space-md);right:var(--space-md);z-index:60;width:min(372px, calc(100vw - var(--space-md) * 2));opacity:0;visibility:hidden;transform-origin:100% 0;transition:opacity .14s var(--ease), transform .14s var(--ease), visibility 0s linear .14s;position:fixed;transform:scale(.94);box-shadow:0 0 24px -6px #00000040}.case-nav.is-open{opacity:1;visibility:visible;transition:opacity .16s var(--ease), transform .22s var(--ease), visibility 0s;transform:none}.case-nav-inner{gap:var(--space-lg)}.case-nav-close{display:inline-flex}}@media (width<=760px){.case-two-col,.case-two-col--brief,.case-metrics{grid-template-columns:1fr}.case-pains{margin:0 calc(var(--space-xs) * -1) calc(var(--space-xs) * -1);padding:0 var(--space-xs) var(--space-xs);scroll-snap-type:x proximity;scrollbar-width:none;grid-template-columns:none;grid-auto-columns:288px;grid-auto-flow:column;overflow-x:auto}.case-pains>*{scroll-snap-align:start}.case-figure:has(.case-pains){overflow:hidden}.case-screens{gap:var(--space-lg);padding:var(--space-lg)}.case-screen,.case-screens--hero .case-screen{height:420px}.case-screens--fit{justify-content:flex-start;width:max-content}.case-screens--fit .case-screen{width:auto;max-width:none;height:420px}.case-screens--lg .case-screen{width:44%}.case-screens--single .case-screen{width:64%}.case-switch .case-screen{height:420px}.case-metric-num{font-size:48px}}@media (width<=571px){.case-page{padding-inline:var(--space-xs)}.case-topbar,.case-heading,.case-section-title,.case-footer{padding-inline:var(--space-md)}.case-tabs{margin-inline:var(--space-md)}.case-tab{padding:var(--space-sm);font-size:13px}}@media (prefers-reduced-motion:reduce){.rule-vis *{animation:none!important}}
