@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/12d4e8c1f08b4a66-s.1w1m1wqmjasxa.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:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/cabb10e1d7cbc7c1-s.1y3v-klcv8xov.woff2)format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/9f5a2b9f13a4ecbb-s.15dvesjzf7814.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:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/d8aeca813a9ab546-s.p.08ssgmy_tb90r.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:Plus Jakarta Sans Fallback;src:local(Arial);ascent-override:98.88%;descent-override:21.15%;line-gap-override:0.0%;size-adjust:104.98%}.dx4leq_className{font-family:Plus Jakarta Sans,Plus Jakarta Sans Fallback;font-style:normal}.dx4leq_variable{--font-jakarta:"Plus Jakarta Sans", "Plus Jakarta Sans Fallback"}
:root{--color-page:#f4f4f1;--color-surface:#fff;--color-surface-sunken:#f6f6f3;--color-chip:#f1f1ee;--color-chip-hover:#e6e6e2;--color-note:#ededea;--color-divider:#ecece8;--color-dashed:#d3d2cc;--color-ink:#1a1a19;--color-ink-hover:#33332f;--color-text-body:#33332f;--color-text-muted:#55544f;--color-text-subtle:#6b6a66;--color-icon-muted:#8a8984;--color-on-dark-muted:#b9b8b2;--color-dark-chip:#2c2c29;--color-dark-chip-hover:#3a3a36;--color-accent:#2a5eb0;--color-accent-tint:#eaf0fa;--color-accent-tint-hover:#e1e9f7;--color-accent-ink:#3b4a63;--color-pro-bg:#e3f1e6;--color-pro-fg:#25683a;--color-con-bg:#f4e6e2;--color-con-fg:#8c3b2a;--color-shot-alto:#f4f5f7;--color-shot-dark:#000;--font-sans:var(--font-jakarta), ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, monospace;--text-display:clamp(36px, 4.6cqi, 60px);--text-home-h1:clamp(30px, 3.6cqi, 50px);--text-subtitle:clamp(19px, 1.8cqi, 23px);--text-h2:clamp(22px, 2.2cqi, 28px);--text-project-title:clamp(24px, 2.4cqi, 32px);--text-contact:clamp(22px, 2.4cqi, 32px);--text-h3:17px;--text-h3-sm:16px;--text-body-lg:16px;--text-body:15px;--text-small:14px;--text-caption:13px;--text-label:12px;--text-micro:11px;--radius-card:16px;--radius-tile:12px;--radius-row:10px;--radius-pill:999px;--radius-icon:24%;--radius-phone-lg:28px;--radius-phone:24px;--shadow-card:0 1px 2px #1414140a, 0 0 0 1px #1414140f;--shadow-hairline:0 0 0 1px #1414140f;--shadow-hairline-strong:0 0 0 1px #14141414;--shadow-phone:0 12px 32px #14285024, 0 0 0 1px #1414140f;--shadow-shot:0 8px 24px #1428501f, 0 0 0 1px #1414140f;--content-max:1200px;--pad:clamp(16px, 4cqi, 56px);--section-gap:clamp(40px, 5cqi, 72px);--header-h:64px;--dur-fast:.16s;--dur-med:.16s;--ease-out:cubic-bezier(.2, 0, 0, 1)}html{scroll-padding-top:80px}body{background:var(--color-page);color:var(--color-ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}a{color:var(--color-ink);text-decoration:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:8px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important}}
*{box-sizing:border-box}body{min-width:360px}h1,h2,h3,p,figure,dl,dd{margin:0}p{text-wrap:pretty}h1,h2{text-wrap:balance}img{max-width:100%;display:block}strong{color:var(--color-ink);font-weight:600}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page-wrapper{min-height:100svh;container-type:inline-size}.page-container{box-sizing:content-box;max-width:var(--content-max);padding-inline:var(--pad);margin-inline:auto}.page-main{gap:var(--section-gap);flex-direction:column;min-height:calc(100svh - 160px);padding-block:clamp(32px,4cqi,56px);display:flex}.site-header{z-index:10;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f4f4f1e0;position:sticky;top:0}.header-inner{min-height:var(--header-h);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:0 24px;display:flex}.site-name{letter-spacing:-.01em;align-items:center;min-height:44px;font-size:15px;font-weight:700;display:inline-flex}.site-header nav{flex-wrap:wrap;gap:clamp(16px,2.4cqi,28px);display:flex}.nav-link{min-height:44px;color:var(--color-text-muted);transition:color var(--dur-fast) var(--ease-out);align-items:center;gap:7px;font-size:14px;font-weight:500;display:inline-flex}.nav-link:hover{color:var(--color-ink)}.active-dot{background:0 0;border-radius:50%;flex:none;width:5px;height:5px;position:relative}.nav-link[aria-current]{color:var(--color-ink);font-weight:600}.active-dot-fill{background:var(--color-accent);border-radius:50%;display:block;position:absolute;inset:0}.nav-with-indicator{position:relative}.nav-indicator{background:var(--color-accent);pointer-events:none;visibility:hidden;border-radius:50%;width:5px;height:5px;position:absolute;top:0;left:0}.nav-with-indicator[data-indicator-ready]>.nav-indicator{visibility:visible}.nav-with-indicator[data-indicator-ready] .active-dot-fill{visibility:hidden}.site-footer{font-size:var(--text-caption);color:var(--color-text-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;padding-block:24px 32px;display:flex}.site-footer a{min-height:44px;color:inherit;align-items:center;display:inline-flex}.skip-link{z-index:100;background:#fff;border-radius:8px;padding:12px 18px;position:fixed;top:8px;left:16px;transform:translateY(-150%)}.skip-link:focus{transform:none}.card{border-radius:var(--radius-card);background:var(--color-surface);min-width:0;box-shadow:var(--shadow-card);padding:clamp(20px,2.4cqi,28px)}.card-tint{background:var(--color-accent-tint);box-shadow:none;color:var(--color-accent-ink)}.card-dark{background:var(--color-ink);color:#fff}.card-dark strong{color:inherit}.pill{border-radius:var(--radius-pill);width:fit-content;font-size:var(--text-small);justify-content:center;align-items:center;gap:8px;font-weight:600;line-height:1.5;display:inline-flex}.pill-primary,.pill-secondary{min-height:44px;transition:background var(--dur-fast) var(--ease-out);padding:0 18px}.pill-primary{background:var(--color-ink);color:#fff}.pill-primary:hover{background:var(--color-ink-hover)}.pill-secondary{background:var(--color-chip);color:var(--color-ink)}.pill-secondary:hover{background:var(--color-chip-hover)}.pill-tag-mine,.pill-tag-neutral{font-size:var(--text-label);padding:4px 10px}.pill-tag-mine{background:var(--color-accent-tint);color:var(--color-accent);font-weight:700}.pill-tag-neutral{background:var(--color-chip);color:var(--color-text-muted)}.pill-link{min-height:44px}.section-heading{font-size:var(--text-h2);letter-spacing:-.02em;align-items:center;gap:12px;font-weight:700;display:flex}.section-number{width:32px;height:32px;box-shadow:var(--shadow-hairline);color:var(--color-text-muted);letter-spacing:0;background:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex}.note-strip{background:var(--color-note);border-radius:var(--radius-tile);font-size:var(--text-body);color:var(--color-text-muted);padding:14px 18px;line-height:1.6}.pro-con{font-size:var(--text-small);align-items:flex-start;gap:10px;line-height:1.55;display:flex}.pro-con-con{color:var(--color-text-muted)}.pro-con-marker{border-radius:50%;flex:none;justify-content:center;align-items:center;width:20px;height:20px;font-weight:600;line-height:1;display:inline-flex}.pro-con-pro .pro-con-marker{background:var(--color-pro-bg);color:var(--color-pro-fg)}.pro-con-con .pro-con-marker{background:var(--color-con-bg);color:var(--color-con-fg)}.figure{flex-direction:column;gap:10px;min-width:0;display:flex}.figure-frame{border-radius:var(--radius-card);box-shadow:var(--shadow-hairline);background:#fff;padding:clamp(8px,1cqi,12px)}.figure-image{position:relative}.figure-image>img{border-radius:var(--radius-row);width:100%;height:auto}figcaption{font-size:var(--text-caption);color:var(--color-text-subtle);line-height:1.5}.figure-caption{text-align:left;overflow-wrap:anywhere;padding-inline:4px;display:block}.figure-caption-label{white-space:nowrap}.figure-caption .pill{max-width:100%}.figure-contained{border-radius:var(--radius-card);box-shadow:var(--shadow-card);background:#fff;padding:clamp(8px,1cqi,12px)}.figure-contained .figure-frame{box-shadow:none;background:0 0;border-radius:0;padding:0}.figure-contained>.figure-caption{padding-bottom:4px}.figure-contained .figure-image{border-radius:var(--radius-row);overflow:hidden}.figure-caption>.annotation-legend{margin-top:10px}.phone-frame{width:min(100%, var(--phone-width));aspect-ratio:9/19.5;border-radius:var(--radius-phone);min-width:0;box-shadow:var(--shadow-phone);flex:none;padding:6px}.phone-light{background:#fff}.phone-dark{background:var(--color-ink)}.phone-frame img{object-fit:cover;border-radius:19px;width:100%;height:100%}.project-nav{flex-wrap:wrap;gap:12px;display:flex}.project-nav a{min-height:120px;transition:background var(--dur-fast) var(--ease-out);flex-direction:column;justify-content:center;gap:10px;display:flex}.project-nav a>span{color:var(--color-text-muted);font-size:14px}.project-nav strong{font-size:clamp(22px,2.2cqi,28px);font-weight:700}.project-previous{flex:260px}.project-previous:hover{background:var(--color-surface-sunken)}.project-next{text-align:right;flex:2 320px;align-items:flex-end}.project-next:hover{background:var(--color-ink-hover)}.project-next>span{color:var(--color-on-dark-muted)!important}.stack{flex-direction:column;gap:16px;min-width:0;display:flex}.wrap-row{flex-wrap:wrap;gap:12px;display:flex}.wrap-row>.card{flex:260px}.phone-panel{border-radius:var(--radius-card);background:var(--color-accent-tint);justify-content:center;align-items:center;padding:clamp(20px,3cqi,36px);display:flex}.component-preview h1{font-size:var(--text-display);letter-spacing:-.035em;line-height:1.04}.component-preview h3{font-size:var(--text-h3);font-weight:600}.component-preview p{line-height:1.6}.home-page{gap:clamp(48px,6cqi,88px);padding-top:clamp(32px,5cqi,72px);padding-bottom:0}.small-label{color:var(--color-text-subtle);font-size:12px;font-weight:600}.hero{flex-direction:column;gap:clamp(20px,2.4cqi,32px);max-width:920px;padding-top:0;display:flex}.hero-text{letter-spacing:-.025em;text-wrap:pretty;color:var(--color-ink);margin:0;font-size:clamp(26px,3.2cqi,42px);font-weight:600;line-height:1.28}.hero-lede{color:var(--color-icon-muted)}.inline-link{color:var(--color-ink);white-space:nowrap;text-underline-offset:.18em;transition:text-decoration-color var(--dur-fast);-webkit-text-decoration:underline #c9c8c2;text-decoration:underline #c9c8c2;text-decoration-thickness:1.5px}.inline-link:hover{-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.inline-icon{vertical-align:-.12em;border-radius:24%;width:.95em;height:.95em;margin-right:.22em;display:inline-block;box-shadow:0 0 0 1px #14141414}.inline-link--logo img{box-sizing:content-box;vertical-align:calc(-.18em - 1.5px);width:auto;height:.9em;transition:border-color var(--dur-fast);border-bottom:1.5px solid #c9c8c2;padding-bottom:.086em;display:inline-block}.inline-link--logo:hover img{border-bottom-color:var(--color-accent)}.hero-links{flex-wrap:wrap;gap:0 24px;display:flex}.text-link{min-height:44px;color:var(--color-ink);text-underline-offset:.18em;transition:text-decoration-color var(--dur-fast);align-items:center;font-size:15px;font-weight:600;-webkit-text-decoration:underline #c9c8c2;text-decoration:underline #c9c8c2;text-decoration-thickness:1.5px;display:inline-flex}.text-link:hover{-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.section-title-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.section-title-row>span{color:var(--color-text-subtle);font-size:13px;font-weight:600}.project-card{flex-wrap:wrap;gap:12px;padding:clamp(12px,1.6cqi,16px);display:flex}.project-copy{flex-direction:column;flex:5 320px;gap:16px;min-width:0;padding:clamp(10px,2cqi,24px);display:flex}.project-tags{gap:6px}.project-title{align-items:center;gap:12px;display:flex}.project-title h3{font-size:var(--text-project-title);letter-spacing:-.02em;font-weight:700;line-height:1.15}.app-icon{aspect-ratio:1;border-radius:var(--radius-icon);width:clamp(40px,4cqi,48px);height:auto;box-shadow:var(--shadow-hairline);flex:none}.project-wordmark{width:auto;height:clamp(30px,3cqi,40px)}.project-description{max-width:46ch;font-size:16px;line-height:1.6}.contribution{border-radius:var(--radius-tile);background:var(--color-surface-sunken);flex-direction:column;gap:8px;padding:14px 16px;display:flex}.contribution ul{color:var(--color-text-muted);flex-direction:column;gap:6px;margin:0;padding:0;font-size:14px;line-height:1.5;list-style:none;display:flex}.contribution li{gap:10px;display:flex}.contribution li:before{content:"";background:var(--color-accent);border-radius:50%;flex:none;width:6px;height:6px;margin-top:8px}.project-stack{color:var(--color-text-subtle);font-size:13px;line-height:1.6}.team-credit{border-radius:var(--radius-tile);background:var(--color-surface-sunken);color:var(--color-text-muted);padding:14px 16px;font-size:14px;line-height:1.55}.project-preview{border-radius:var(--radius-tile);flex:7 440px;justify-content:center;align-items:center;min-width:0;display:flex}.alto-preview{background:var(--color-accent-tint);transition:background var(--dur-med) var(--ease-out);padding:clamp(12px,2.4cqi,28px)}.alto-preview:hover{background:var(--color-accent-tint-hover)}.alto-preview img{width:100%;height:auto;box-shadow:var(--shadow-shot);border-radius:10px}.phone-preview{background:var(--color-chip);align-self:center;position:relative;overflow:hidden}.sidequest-preview{aspect-ratio:4/3;gap:3%;padding:4% 5%}.pushup-pal-preview{aspect-ratio:16/10;gap:5%;padding:6% 8%}.phone-preview .preview-phone{width:auto;box-shadow:var(--shadow-hairline-strong);border-radius:18px;flex:0 30%;padding:0;overflow:hidden}.phone-preview .preview-phone img{border-radius:inherit}.pushup-pal-preview .preview-phone{flex-basis:28%;max-width:280px}.background-intro{max-width:58ch;font-size:17px;line-height:1.6}.role-list{gap:12px}.background-role{box-shadow:var(--shadow-hairline);flex-wrap:wrap;gap:8px 28px;padding:20px 22px;display:flex}.role-date{flex:150px}.role-description{flex-direction:column;flex:999 360px;gap:6px;min-width:0;display:flex}.role-description h3{font-size:17px;font-weight:600;line-height:1.4}.role-description p{max-width:64ch;color:var(--color-text-muted);font-size:15px;line-height:1.55}.contact-card{flex-wrap:wrap;align-items:center;gap:32px clamp(24px,4cqi,56px);padding:clamp(24px,4cqi,48px);display:flex;overflow:hidden}.contact-copy{flex-direction:column;flex:3 380px;gap:24px;min-width:0;display:flex}.contact-copy h2{color:var(--color-on-dark-muted);font-size:14px;font-weight:600}.contact-copy>p{max-width:30ch;font-size:var(--text-contact);letter-spacing:-.02em;text-wrap:balance;font-weight:600;line-height:1.3}.contact-links{gap:8px}.contact-links .pill{background:var(--color-dark-chip);color:#fff;min-height:48px}.contact-links .pill:hover{background:var(--color-dark-chip-hover)}.contact-links .email-pill{color:var(--color-ink);background:#fff;padding-inline:20px;font-size:15px}.contact-links .email-pill:hover{background:var(--color-chip)}.contact-art{flex:240px;min-width:0;max-width:380px;margin-inline:auto}.contact-cluster{aspect-ratio:1/.82;width:100%;position:relative}.contact-tile{aspect-ratio:1;width:42%;transition:transform var(--dur-fast) var(--ease-out);border-radius:24%;justify-content:center;align-items:center;display:flex;position:absolute;overflow:hidden;box-shadow:0 18px 40px #00000073,0 0 0 1px #ffffff14}.contact-tile img{object-fit:cover;width:100%;height:100%}.tile-alto{z-index:4;background:#fff;top:36%;left:0;transform:rotate(-8deg)}.tile-sidequest{z-index:3;background:#fff;top:2%;left:30%;transform:rotate(4deg)}.tile-pushup-pal{z-index:2;background:#000;top:20%;right:2%;transform:rotate(10deg)}.contact-tile:hover{transform:rotate(0)scale(1.04)}@media (max-width:480px){.site-header nav{gap:16px}html{scroll-padding-top:112px}}.breadcrumb{color:var(--color-text-subtle);align-items:center;gap:14px;font-size:13px;display:flex}.breadcrumb .pill{box-shadow:var(--shadow-hairline);background:#fff}.case-hero{flex-wrap:wrap;align-items:center;gap:clamp(24px,4cqi,48px);padding:clamp(24px,4cqi,48px);display:flex}.case-hero-copy{flex:6 400px;gap:20px}.case-hero>.phone-figure{flex:4 280px}.case-eyebrow{color:var(--color-text-muted);font-size:13px;font-weight:600}.case-title{align-items:center;gap:18px;display:flex}.case-title h1{font-size:var(--text-display);letter-spacing:-.035em;font-weight:700;line-height:1.04}.case-icon{border-radius:var(--radius-icon);width:clamp(52px,6cqi,72px);height:auto}.case-wordmark{width:auto;height:clamp(44px,5cqi,68px)}.case-subtitle{font-size:var(--text-subtitle);max-width:42ch;font-weight:600;line-height:1.4}.case-description{color:var(--color-text-muted);max-width:56ch;font-size:16px;line-height:1.6}.case-meta{flex-wrap:wrap;gap:16px 24px;font-size:14px;line-height:1.5;display:flex}.case-meta>div{flex-direction:column;flex:180px;gap:4px;display:flex}.case-meta dt{color:var(--color-text-subtle);font-size:12px;font-weight:600}.case-alto .case-meta>div:last-child{flex-basis:100%}.project-actions{gap:8px}.content-cards{flex-wrap:wrap;gap:12px;display:flex}.content-cards>.card{flex:280px}.content-card{gap:12px;padding:22px;font-size:15px;line-height:1.55}.content-card h3{font-size:17px;font-weight:600;line-height:1.4}.content-card.card-tint h3{color:var(--color-accent);font-weight:700}.content-card>p{color:var(--color-text-muted)}.content-card.card-tint>p{color:var(--color-accent-ink)}.card-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.card-tags{gap:6px}.card-list{color:var(--color-text-muted);flex-direction:column;gap:8px;margin:0;padding-left:18px;display:flex}.card-tint .card-list{color:var(--color-accent-ink)}.summary-strip>.card{flex-basis:220px;gap:8px;padding:18px 20px}.summary-strip h3{font-size:13px;font-weight:700}.summary-strip .card-tint h3{color:var(--color-accent)}.summary-four{grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.section-jumps{gap:8px}.section-jumps .pill{box-shadow:var(--shadow-hairline);background:#fff;padding-inline:10px 14px}.jump-number{background:var(--color-chip);width:24px;height:24px;color:var(--color-text-muted);border-radius:50%;justify-content:center;align-items:center;font-size:11px;display:inline-flex}.case-section{gap:20px}.subsection-heading{font-size:17px;font-weight:600}.phone-figure{flex-direction:column;gap:12px;min-width:0;display:flex}.phone-figure .phone-panel{background:var(--color-chip)}.hero-phone .phone-panel{background:var(--color-accent-tint)}.hero-phone .phone-frame{border-radius:var(--radius-phone-lg)}.hero-phone .phone-frame img{border-radius:22px}.figure-tag{padding-top:8px;display:flex}.annotation{color:#fff;background:var(--color-accent);border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:13px;font-weight:700;display:flex;position:absolute;box-shadow:0 0 0 3px #fff,0 2px 6px #14141433}.annotation-1{top:19%;left:48.2%;transform:translateY(-50%)}.annotation-2{top:56.6%;left:calc(17.8% + 10px);transform:translateY(-50%)}.annotation-3{top:93.8%;left:18.6%;transform:translate(-50%,-50%)}.annotation-legend{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.annotation-legend li{border-radius:var(--radius-tile);background:var(--color-surface-sunken);flex:220px;align-items:flex-start;gap:10px;min-width:0;padding:12px 14px;font-size:14px;line-height:1.45;display:flex}.annotation-legend li>span:first-child{background:var(--color-accent);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;font-weight:700;display:flex}.paired-figures{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.paired-figures .figure-frame{padding:0}.paired-figures .figure:first-child{flex:1.29806 257.65px}.paired-figures .figure:last-child{flex:1.59363 310.85px}.alto-roles>.card:first-child{flex-grow:1.3}.alto-roles .card-heading{justify-content:flex-start}.alto-roles .card-heading h3{font-size:15px}.alto-roles .card-tint .pill{background:var(--color-surface)}.alto-roles .card-list{padding:0;line-height:1.45;list-style:none}.alto-roles .card-list li{padding-left:16px;position:relative}.alto-roles .card-list li:before{content:"";background:var(--color-on-dark-muted);border-radius:50%;width:6px;height:6px;position:absolute;top:8px;left:0}.alto-roles .card-tint .card-list{color:var(--color-ink)}.alto-roles .card-tint .card-list li:before{background:var(--color-accent)}.case-alto #context .content-card{gap:8px;padding:20px}.case-alto #context .content-card h3{font-size:15px}.case-alto #context .card-tint>p{color:var(--color-ink)}.architecture-card{padding:16px}.pipeline{flex-wrap:wrap;gap:8px;display:flex}.pipeline-step{background:var(--color-surface-sunken);border-radius:var(--radius-tile);flex-direction:column;flex:150px;gap:8px;min-width:0;padding:16px 14px;display:flex}.pipeline-highlight{background:var(--color-accent-tint)}.pipeline-owner{color:var(--color-text-muted);font-size:11px;font-weight:700}.pipeline-highlight .pipeline-owner{color:var(--color-accent)}.alto-pipeline .pipeline-owner{border-radius:var(--radius-pill);background:var(--color-chip);align-self:flex-start;padding:3px 9px}.alto-pipeline .pipeline-highlight .pipeline-owner{background:var(--color-accent);color:#fff}.pipeline-step h3{font-size:15px;font-weight:600;line-height:1.35}.pipeline-step p{color:var(--color-text-muted);font-size:13px;line-height:1.5}.pipeline-highlight p{color:var(--color-accent-ink)}.alto-pipeline{grid-template-columns:repeat(6,minmax(0,1fr));display:grid}.architecture-notes{flex-wrap:wrap;gap:8px;display:flex}.architecture-notes>div{border:1px dashed var(--color-dashed);border-radius:var(--radius-row);flex:220px;padding:12px 14px;font-size:13px;line-height:1.5}.architecture-notes strong{color:var(--color-text-muted);font-size:11px}.architecture-notes p{padding-top:4px}@container (max-width:1100px){.alto-pipeline{grid-template-columns:repeat(3,minmax(0,1fr))}}@container (max-width:950px){.summary-four{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (max-width:600px){.alto-pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (max-width:520px){.summary-four{grid-template-columns:minmax(0,1fr)}}.summary-label{font-size:13px;font-weight:700}.summary-strip .card-tint .summary-label{color:var(--color-accent)}.split-row{flex-wrap:wrap;align-items:stretch;gap:16px;display:flex}.sidequest-context>.phone-figure{flex:220px}.sidequest-context .phone-panel{flex:1}.quest-steps{flex-direction:column;flex:1.6 300px;gap:10px;display:flex}.quest-step{box-shadow:var(--shadow-hairline);color:var(--color-ink);border-radius:14px;flex:auto;align-items:center;gap:16px;padding:14px 18px;display:flex}.step-number{background:var(--color-chip);width:28px;height:28px;color:var(--color-text-muted);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.quest-step .step-number{width:32px;height:32px;color:var(--color-accent);font-weight:700}.quest-step.card-tint .step-number{background:var(--color-accent);color:#fff}.quest-step>div{flex-direction:column;gap:4px;display:flex}.quest-step h3,.sidequest-contributions>h3{font-size:16px;font-weight:600;line-height:1.4}.quest-step h3{font-size:17px}.quest-step p{color:var(--color-text-muted);font-size:14px;line-height:1.5}.quest-step.card-tint p{color:var(--color-accent-ink)}.sidequest-role{flex-wrap:wrap-reverse}.sidequest-role>.phone-figure{flex:260px}.sidequest-role .phone-panel{flex:1}.sidequest-role-copy{flex:1.3 300px;gap:12px}.sidequest-role-copy>.note-strip{padding:12px 16px;font-size:14px}.sidequest-contributions{flex-direction:column;flex:1;gap:0;padding:8px clamp(20px,3cqi,32px);display:flex}.sidequest-contributions>h3{color:var(--color-accent);padding-block:16px 6px;font-size:13px;font-weight:700}.sidequest-contributions dl{flex-direction:column;flex:1;gap:0;display:flex}.sidequest-contributions dl>div{border-bottom:1px solid var(--color-divider);flex-direction:column;flex:auto;justify-content:center;gap:2px;padding-block:14px;display:flex}.sidequest-contributions dl>div:last-child{border:0}.sidequest-contributions dt{font-size:15px;font-weight:600}.sidequest-contributions dd{color:var(--color-text-muted);font-size:14px;line-height:1.5}.mvvm-card{padding:clamp(16px,2.4cqi,28px)}.mvvm-layers{flex-wrap:wrap;gap:28px;display:flex}.mvvm-layers>div{border-radius:var(--radius-tile);background:var(--color-surface-sunken);flex:200px;min-width:0;padding:18px;position:relative}.mvvm-layers>div:not(:last-child):after{content:"↔";color:var(--color-text-subtle);position:absolute;top:50%;right:-22px;transform:translateY(-50%)}.mvvm-layers h3{font-size:15px;font-weight:600}.mvvm-layers p{color:var(--color-text-muted);padding-top:6px;font-size:13px;line-height:1.5}.collections-heading{color:var(--color-text-subtle);font-size:13px;font-weight:600}.collection-tiles{flex-wrap:wrap;gap:8px;display:flex}.collection-tiles>div{background:var(--color-surface-sunken);border-radius:var(--radius-row);flex-direction:column;flex:150px;gap:8px;min-width:0;padding:14px;display:flex}.collection-tiles>.collection-mine{background:var(--color-accent-tint)}.collection-tiles h4{font-family:var(--font-mono);margin:0;font-size:12px;font-weight:600}.collection-mine h4{color:var(--color-accent)}.collection-tiles p{color:var(--color-text-muted);font-size:13px;line-height:1.5}.collection-mine p{color:var(--color-accent-ink)}.comments-focus{align-items:center;gap:12px;padding:clamp(12px,1.6cqi,16px)}.comments-focus>.phone-figure{flex:220px}.comments-focus .phone-panel{background:0 0;padding:0}.comments-copy{flex:1.4 320px;gap:14px;padding:clamp(8px,2cqi,20px)}.focus-label{border-radius:var(--radius-pill);background:var(--color-accent);color:#fff;align-self:flex-start;padding:4px 10px;font-size:12px;font-weight:700;line-height:1.5}.comments-copy>h3{letter-spacing:-.01em;color:var(--color-ink);font-size:clamp(19px,1.8cqi,22px);line-height:1.3}.comments-copy>p:not(.focus-label){color:var(--color-text-body);font-size:15px;line-height:1.6}.comments-copy>.card{border-radius:var(--radius-tile);box-shadow:none;color:var(--color-ink);gap:10px;padding:16px}.comments-next{border-top:1px solid var(--color-divider);color:var(--color-text-muted);padding-top:10px;font-size:14px;line-height:1.5}@container (max-width:760px){.mvvm-layers{gap:12px}.mvvm-layers>div:not(:last-child):after{display:none}}.case-sidequest .case-hero,.case-pushup-pal .case-hero{align-items:stretch;gap:12px;padding:clamp(12px,1.6cqi,16px)}.case-sidequest .case-hero-copy,.case-pushup-pal .case-hero-copy{flex-basis:340px;justify-content:center;gap:18px;padding:clamp(12px,2.4cqi,32px)}.case-eyebrow{background:var(--color-chip);border-radius:var(--radius-pill);align-self:flex-start;align-items:center;gap:8px;padding:6px 12px;display:inline-flex}.case-eyebrow:before{content:"";background:var(--color-accent);border-radius:50%;flex:none;width:6px;height:6px}.case-sidequest .case-meta,.case-pushup-pal .case-meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-width:480px;display:grid}.case-sidequest .case-meta>div,.case-pushup-pal .case-meta>div{border-radius:var(--radius-tile);background:var(--color-surface-sunken);padding:12px 14px}.case-sidequest .case-subtitle{text-wrap:balance;max-width:28ch}.case-hero>.hero-phone{border-radius:var(--radius-tile);background:var(--color-accent-tint);gap:14px;padding:clamp(20px,3cqi,36px) clamp(16px,2cqi,28px) clamp(14px,2cqi,20px)}.hero-phone .phone-panel{background:0 0;padding:0}.hero-phone figcaption{text-align:center;max-width:36ch;color:var(--color-accent-ink);align-self:center}.hero-phone .figure-tag{justify-content:center}.hero-phone .figure-tag .pill{background:#fff}.case-study{padding-top:clamp(24px,3cqi,44px)}.case-intro{gap:16px}.case-icon{width:clamp(52px,6cqi,76px)}.case-description{max-width:44ch}.experience-intro{max-width:62ch;color:var(--color-text-body);font-size:16px;line-height:1.6}.experience-steps{flex-wrap:wrap;gap:12px;display:flex}.experience-phone{border-radius:var(--radius-card);min-width:0;box-shadow:var(--shadow-hairline);background:#fff;flex-direction:column;flex:240px;gap:14px;padding:12px;display:flex}.experience-phone .phone-panel{background:var(--color-chip);border-radius:var(--radius-tile);padding:20px 16px}.experience-phone:nth-child(2) .phone-panel{background:var(--color-accent-tint)}.experience-phone figcaption{align-items:flex-start;gap:12px;padding:0 6px 6px;display:flex}.experience-phone figcaption strong{font-size:16px;font-weight:600;display:block}.experience-step-detail{color:var(--color-text-subtle);padding-top:2px;font-size:14px;line-height:1.5;display:block}.experience-phone:nth-child(2) .step-number{color:#fff;background:var(--color-accent)}.experience-phone .step-number{color:var(--color-accent);font-weight:700}.demo-card{flex-direction:column;gap:16px;padding:clamp(16px,2.4cqi,28px);display:flex}.demo-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}.demo-heading h3{font-size:15px;font-weight:600}.demo-heading .pill{background:var(--color-dark-chip);color:#fff}.demo-heading .pill:hover{background:var(--color-dark-chip-hover)}.demo-card iframe{aspect-ratio:16/9;border-radius:var(--radius-tile);background:#000;border:0;width:100%;height:auto;display:block}.scoring-cards h3{font-size:17px;font-weight:600}.scoring-card h3{color:var(--color-accent);font-size:16px;font-weight:700}.scoring-card{gap:14px;padding:20px}.scoring-cards .scoring-card>p{color:var(--color-accent-ink);font-size:13px}.scoring-cards p{color:var(--color-text-muted);font-size:14px;line-height:1.6}.score-row{flex-direction:column;gap:8px;display:flex}.score-row h4{color:var(--color-accent-ink);margin:0;font-size:13px;font-weight:600}.score-bar{border-radius:var(--radius-row);display:flex;overflow:hidden}.score-bar>span{text-align:center;background:var(--color-surface);min-width:0;color:var(--color-accent);overflow-wrap:anywhere;flex:none;padding:8px;font-size:12px;font-weight:600;line-height:1.5}.score-bar>span:first-child{background:var(--color-accent);color:#fff}.score-bar strong{color:inherit}.gemini-card{gap:10px;padding:20px}.gemini-card h3{font-size:16px}.gemini-card .wrap-row{gap:6px}.gemini-card .pill{color:var(--color-ink);padding:6px 12px;font-size:13px}.closing-card{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;display:flex}.closing-card>p{flex:300px;font-size:15px;line-height:1.6}.case-alto .case-hero{align-items:end;gap:28px clamp(28px,4cqi,56px);padding:clamp(24px,3.4cqi,44px)}.case-alto .case-hero-copy{flex:999 400px;gap:18px}.case-alto .case-subtitle{max-width:34ch;font-weight:500;line-height:1.45}.case-alto .case-meta{flex:320px;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-width:460px;display:grid}.case-alto .case-meta>div{border-radius:var(--radius-tile);background:var(--color-surface-sunken);padding:12px 14px}.case-alto .case-meta>div:last-child{grid-column:1/-1}.summary-strip .content-card>p{color:var(--color-ink);font-size:16px;font-weight:500;line-height:1.5}.summary-strip .summary-label{color:var(--color-text-subtle)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.tile-alto:hover{transform:rotate(-8deg)}.tile-sidequest:hover{transform:rotate(4deg)}.tile-pushup-pal:hover{transform:rotate(10deg)}}.mobile-menu-trigger,.mobile-nav-panel,.mobile-nav-scrim{display:none}.site-footer noscript{flex-basis:100%}.footer-fallback-nav ul{margin:0;padding-left:20px}.footer-fallback-nav a{text-decoration:underline}@media not (min-width:640px){html{scroll-padding-top:72px}.header-inner{flex-wrap:nowrap;height:56px;min-height:56px}.site-header .desktop-nav{display:none}.mobile-menu-trigger{border-radius:var(--radius-pill);min-width:44px;height:44px;color:var(--color-ink);font:inherit;cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.mobile-menu-pill{border-radius:var(--radius-pill);background:var(--color-surface);height:40px;box-shadow:var(--shadow-hairline);justify-content:center;align-items:center;padding:0 14px;font-size:14px;font-weight:600;display:inline-flex}.mobile-nav-scrim{z-index:20;touch-action:none;background:#1414143d;border:0;border-radius:0;width:100%;padding:0;display:block;position:fixed;inset:56px 0 0}.mobile-nav-panel{z-index:21;overscroll-behavior:contain;background:var(--color-surface);max-height:calc(100dvh - 64px);box-shadow:var(--shadow-card), 0 12px 32px #1414141f;border-radius:16px;padding:8px;display:block;position:fixed;top:56px;left:8px;right:8px;overflow-y:auto}.mobile-nav-panel[hidden]{display:none}.mobile-nav-panel nav{flex-direction:column;display:flex}.mobile-nav-link{height:52px;color:var(--color-ink);transition:background var(--dur-fast) var(--ease-out);border-radius:12px;flex:none;align-items:center;gap:12px;padding:0 14px;font-size:17px;font-weight:600;display:flex}.mobile-nav-link[aria-current]{background:var(--color-accent-tint)}.mobile-nav-link:hover,.mobile-nav-link:active{background:var(--color-chip)}.mobile-nav-actions{margin:8px;border-top:1px solid var(--color-divider);gap:8px;margin-bottom:0;padding-top:8px;display:flex}.mobile-nav-action{border-radius:var(--radius-pill);flex:1 1 0;justify-content:center;align-items:center;min-width:0;min-height:44px;padding:0 14px;font-size:14px;font-weight:600;display:inline-flex}.mobile-action-primary{color:#fff;background:var(--color-ink)}.mobile-action-primary:hover{background:var(--color-ink-hover)}.mobile-action-secondary{background:var(--color-chip)}.mobile-action-secondary:hover{background:var(--color-chip-hover)}.case-study .breadcrumb>.pill{display:none}}.phone-figure:not(.hero-phone){background:var(--color-chip);border-radius:var(--radius-card);align-items:center;gap:14px;padding:20px 16px 16px}.phone-figure:not(.hero-phone) .phone-panel{background:0 0;flex:none;padding:0}.phone-figure:not(.hero-phone) .figure-caption{text-align:center;max-width:30ch}.phone-figure .figure-caption-label{font-weight:700}.phone-figure:not(.hero-phone) .figure-tag{justify-content:center}.phone-figure:not(.hero-phone) .figure-tag .pill{background:#fff}.sidequest-role>.phone-figure{background:var(--color-accent-tint);padding:clamp(20px,3cqi,32px) 20px 18px}.comments-focus>.phone-figure{background:0 0}.figure.card.architecture-card{gap:12px;padding:clamp(14px,2cqi,22px)}.case-alto #product{gap:16px}.case-alto #product>.figure-contained{gap:12px}.footer-meta{flex-wrap:wrap;align-items:center;gap:4px 16px;display:flex}.footer-toggle{appearance:none;min-height:44px;font:inherit;color:inherit;cursor:pointer;text-underline-offset:.2em;background:0 0;border:0;padding:0;-webkit-text-decoration:underline #c9c8c2;text-decoration:underline #c9c8c2;text-decoration-thickness:1px}.footer-toggle:hover{color:var(--color-ink);-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.footer-toggle[hidden]{display:none}@media (prefers-reduced-motion:no-preference){.page-main{view-transition-name:page-content}.site-header{view-transition-name:site-header}::view-transition-group(*){animation-duration:.32s;animation-timing-function:var(--ease-out)}::view-transition-group(root){animation:none}::view-transition-group(site-header){animation:none}::view-transition-old(root){display:none}::view-transition-old(site-header){display:none}::view-transition-new(root){animation:none}::view-transition-new(site-header){animation:none}::view-transition-old(page-content){animation:page-crossfade-out .2s var(--ease-out) both;mix-blend-mode:normal}::view-transition-new(page-content){animation:page-crossfade-in .2s var(--ease-out) both;mix-blend-mode:normal}}@keyframes page-crossfade-out{to{opacity:0}}@keyframes page-crossfade-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation:none!important}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}}.hero .line,.hero .line-inner{display:block}.hero .line{overflow:clip}@media (prefers-reduced-motion:no-preference){.js:not(.hero-ready) .hero .line-inner{opacity:0;transform:translateY(105%)}.js:not(.hero-ready) .hero-links a{opacity:0}}.project-preview{overflow:hidden}.project-media-shift,.project-media-scale{width:100%;min-width:0}.phone-preview .project-media-scale{justify-content:center;align-items:center;gap:3%;display:flex}.pushup-pal-preview .project-media-scale{gap:5%}@media (min-width:900px) and (prefers-reduced-motion:no-preference){.project-media-shift{scale:1.12}.alto-preview .project-media-scale{transform-origin:50%}}.read-progress{background:var(--color-accent);transform-origin:0;pointer-events:none;height:2px;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}@media (prefers-reduced-motion:reduce){.read-progress{display:none}}#demo{scroll-margin-top:72px}.flow-desktop{display:none}.flow-screens{width:100%;height:100%;position:relative}.flow-screens img{object-fit:cover;border-radius:19px;width:100%;height:100%;position:absolute;inset:0}.flow-screens img:not(:first-child){opacity:0}.flow-caption[hidden]{display:none}@media (min-width:900px) and (prefers-reduced-motion:no-preference){.js .phone-flow .flow-desktop{grid-template-columns:minmax(240px,.85fr) minmax(0,1.4fr);align-items:start;gap:clamp(32px,6vw,88px);display:grid}.js .phone-flow .flow-fallback{display:none}.flow-phone{top:calc(var(--header-h) + 8vh);background:var(--color-chip);border-radius:var(--radius-card);flex-direction:column;align-items:center;gap:16px;padding:24px 16px;display:flex;position:sticky}.flow-phone .phone-frame{max-height:62vh;width:min(var(--phone-width), calc(62vh * 9 / 19.5))}.flow-phone figcaption{text-align:center;max-width:30ch}.flow-phone .figure-tag{justify-content:center}.flow-step{align-items:flex-start;gap:16px;min-height:clamp(280px,44vh,420px);padding-block:12vh 8vh;display:flex}.flow-step h3{letter-spacing:-.02em;font-size:clamp(22px,2.4vw,28px);line-height:1.3}.flow-step p{color:var(--color-text-muted);margin-top:10px;font-size:17px;line-height:1.6}.flow-step .step-number{margin-top:4px}.flow-step[data-active=true] .step-number{background:var(--color-accent);color:#fff}}
