:root{--bg:#fafaf8;--text:#1a1a1a;--muted:#5e5e5c;--border:#e4e4e1;--font:ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--measure:40rem;--page:160rem;color-scheme:light}*,:before,:after{box-sizing:border-box}html{background:var(--bg)}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:1.0625rem;line-height:1.6}h1,h2,h3,p{margin:0}h1,h2{text-wrap:balance;letter-spacing:-.03em;font-weight:600;line-height:1.1}p{text-wrap:pretty}a{color:inherit;text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus{outline:none}:focus-visible{outline:2px solid var(--text);outline-offset:3px}::selection{color:#1a1a1a;background:#d9d9d4}.skip{background:var(--bg);color:var(--text);z-index:2;padding:.5rem .75rem;position:absolute;top:0;left:1rem;transform:translateY(-120%)}.skip:focus{transform:none}.wrap{width:min(100% - 2rem, var(--page));margin-inline:auto}.site-header{border-bottom:1px solid var(--border)}.header-bar{justify-content:space-between;align-items:center;gap:1.5rem 2.5rem;padding:1rem 0;display:flex}.brand{min-width:0;color:inherit;align-items:center;gap:.75rem;text-decoration:none;display:flex}.portrait{object-fit:cover;background:color-mix(in srgb, var(--text) 8%, var(--bg));border-radius:50%;flex:none;width:2.5rem;height:2.5rem}.portrait-fallback{letter-spacing:.04em;place-items:center;font-size:.78rem;font-weight:600;display:grid}.site-name{letter-spacing:-.02em;white-space:nowrap;font-weight:600;text-decoration:none}.nav{flex-wrap:wrap;justify-content:flex-end;gap:.35rem 1.25rem;display:flex}.nav a{font-size:.95rem;text-decoration:none}.nav a:hover{text-decoration:underline}.hero{padding:5.5rem 0 5rem}.hero h1{font-size:clamp(2.5rem,6vw,3.5rem)}.role{letter-spacing:-.02em;margin-top:1rem;font-size:1.35rem}.years{max-width:var(--measure);margin-top:1.25rem}.focus-line{color:var(--muted);margin-top:.85rem}.statement{max-width:36rem;margin-top:1.5rem;font-size:1.125rem;line-height:1.5}.actions{flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:2.5rem;display:flex}section{padding:4.75rem 0}h2{font-size:clamp(1.75rem,3vw,2rem)}.group-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:2.75rem 0 0;font-size:.75rem;font-weight:600}.work-group+.work-group .group-label{margin-top:4.5rem}.project-list,.timeline,.areas,.footer-links{margin:0;padding:0;list-style:none}.project-list{margin-top:1.25rem}.project{border-top:1px solid var(--border);grid-template-columns:minmax(14rem,18rem) minmax(0,36rem);align-items:baseline;gap:.75rem 3rem;padding:1.75rem 0;display:grid}.project h3{letter-spacing:-.02em;font-size:1.25rem;font-weight:600;line-height:1.3}.context,.tech,.when,.company,.dev-note,.site-footer,.focus-line{color:var(--muted)}.context,.tech,.company{margin-top:.35rem;font-size:.95rem}.case-link{margin-top:.85rem;display:inline-block}.project-links{flex-wrap:wrap;gap:.35rem 1.25rem;margin-top:.85rem;display:flex}.timeline{margin-top:2rem}.timeline>li{border-top:1px solid var(--border);grid-template-columns:11rem 1fr;align-items:start;gap:.35rem 2rem;padding:1.5rem 0;display:grid}.timeline h3{letter-spacing:-.02em;font-size:1.125rem;font-weight:600}.timeline .summary{max-width:40rem;margin-top:.65rem}.timeline .where,.timeline .domain{color:var(--muted);margin-top:.2rem;font-size:.9rem;display:block}.timeline .points,.timeline .points ul{max-width:40rem;margin:.75rem 0 0;padding-left:1.15rem;list-style:outside}.timeline .points ul{margin-top:.35rem;list-style:circle}.timeline .points li+li{margin-top:.45rem}.timeline .worked-on,.timeline .tech{max-width:40rem;margin-top:.85rem}.areas{grid-template-columns:1fr 1fr;column-gap:4rem;margin-top:2.5rem;display:grid}.areas li{border-top:1px solid var(--border);padding:.9rem 0}.about p{max-width:var(--measure);margin-top:1.25rem}.about p+p{margin-top:1rem}.dev-note{max-width:var(--measure);margin-top:1.25rem;font-size:.95rem}.contact-links{flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:1.5rem;display:flex}.site-footer{border-top:1px solid var(--border);padding:2.5rem 0 3.5rem;font-size:.95rem}.footer-name{color:var(--text);letter-spacing:-.02em;font-weight:600}.footer-links{flex-wrap:wrap;gap:.5rem 1.25rem;margin-top:1rem;display:flex}.copyright{margin-top:1.5rem}.case-study{padding:4.5rem 0 5rem}.case-study h1{margin-top:1rem;font-size:clamp(2.25rem,5vw,3rem)}.case-study .context{margin-top:.85rem}.case-study .back{font-size:.95rem}.prose{max-width:var(--measure);margin-top:2rem}.prose p+p,.detail+.detail{margin-top:1rem}.detail{max-width:var(--measure);margin-top:2.5rem}.detail h2{font-size:1.25rem}.detail ul{margin:.85rem 0 0;padding-left:1.1rem}.detail li+li{margin-top:.35rem}[hidden]{display:none!important}.subnav-bar{border-bottom:1px solid var(--border)}.subnav-bar .nav{justify-content:flex-start;padding:.85rem 0}#apps{padding-top:2.75rem}.home-intro{margin:0 0 2.25rem;container-type:inline-size}.home-intro p{letter-spacing:-.03em;max-width:none;font-size:clamp(.75rem,3.55cqi,3.25rem);line-height:1.22}@media (width>=721px){.home-intro p{font-size:clamp(1.35rem,3.9cqi,3.25rem)}}.company-strip{margin-bottom:2.75rem}.company-row{grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.75rem;margin:.85rem 0 0;padding:0;list-style:none;display:grid}.company-row li{background:#fff;border:1px solid #d0d0cc;border-radius:.9rem;flex-direction:column;justify-content:center;align-items:center;min-height:4.25rem;padding:.85rem 1.1rem;display:flex;position:relative;box-shadow:0 1px 2px #1a1a1a0f}.appstore-link{color:inherit;align-items:center;gap:.35rem;font-size:.95rem;text-decoration:none;display:inline-flex}.appstore-link svg{width:.95rem;height:.95rem}.appstore-link.compact{color:#fff;background:#1a1a1a;border-radius:.35rem;place-items:center;width:1.2rem;height:1.2rem;display:grid;box-shadow:0 1px 2px #1a1a1a2e}.appstore-link.compact svg{width:.72rem;height:.72rem}.company-row li>.appstore-link.compact{position:absolute;bottom:.35rem;right:.35rem}.store-marks{gap:.3rem;margin-top:.55rem;display:flex}.client-strip .company-row li>.appstore-link.compact{bottom:-.2rem;right:-.15rem}.company-row img{object-fit:contain;width:100%;max-height:2.75rem}.client-strip .company-row{flex-wrap:wrap;align-items:center;gap:.7rem;display:flex}.client-strip .company-row li{background:#fff;border:1px solid #d0d0cc;border-radius:999px;flex:none;width:auto;min-height:3.15rem;padding:.45rem .85rem;overflow:visible;box-shadow:0 1px 2px #1a1a1a0f}.client-strip .company-row img{object-fit:contain;border-radius:0;width:auto;max-width:7.25rem;height:1.7rem;max-height:none;display:block}.apps-head{justify-content:space-between;align-items:flex-end;gap:1.5rem 2rem;display:flex}#apps h1{font-size:clamp(2rem,4vw,2.75rem)}.apps-lead{max-width:var(--measure);color:var(--muted);margin-top:.75rem}.filters{flex-wrap:wrap;gap:.35rem 1.25rem;margin-top:1.15rem;display:flex}.filters button,.carousel-controls button{font:inherit;color:inherit;cursor:pointer;background:0 0}.filters button{color:var(--muted);border:0;padding:0}.filters button[aria-pressed=true]{color:var(--text);text-underline-offset:.18em;text-decoration:underline}.carousel-controls{flex:none;gap:.5rem;display:flex}.carousel-controls button{border:1px solid var(--border);border-radius:999px;place-items:center;width:2.25rem;height:2.25rem;display:grid}.carousel-controls button:hover{border-color:var(--text)}.carousel-controls svg{width:1.1rem;height:1.1rem}.carousel-viewport{margin-top:1.5rem}.carousel-track{scroll-snap-type:x mandatory;scrollbar-width:none;gap:.85rem;margin:0;padding:0 0 .25rem;list-style:none;display:flex;overflow-x:auto}.carousel-track::-webkit-scrollbar{display:none}.carousel-track>li{scroll-snap-align:start;flex:0 0 16.5rem}.app-card{border:1px solid var(--border);border-radius:1.1rem;flex-direction:column;align-items:flex-start;gap:.35rem;height:100%;min-height:10.5rem;padding:1.1rem 1.15rem 1.2rem;text-decoration:none;display:flex;overflow:hidden}.app-card:hover{border-color:var(--text)}.app-card-mark{background:var(--tone,var(--text));border-radius:999px;width:2.25rem;height:.35rem;margin-bottom:.65rem}.app-card-photo,.app-card-logos{width:calc(100% + 2.3rem);height:8.5rem;margin:-1.1rem -1.15rem .7rem}.app-card-photo{object-fit:cover;background:#fff}.app-card-photo.is-contain{object-fit:contain;padding:.85rem}.app-card-logos{background:#fff;grid-template-columns:repeat(4,1fr);align-items:center;gap:.4rem;padding:.7rem;display:grid}.app-card-logos img{object-fit:contain;width:100%;height:2.4rem}.app-card-title{letter-spacing:-.02em;font-size:1.15rem;font-weight:600;line-height:1.3}.app-card-lead{line-height:1.4}.app-card-status{margin-top:auto;font-size:.85rem;font-weight:600}.kind-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:600}.features{flex-direction:column;gap:2.5rem;margin-top:3.5rem;display:flex}.feature{scroll-margin-top:1.25rem}.feature-grid{border:1px solid var(--border);border-radius:1.5rem;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;display:grid;overflow:hidden}.feature-panel{min-width:0;min-height:100%}.feature-visual{background:color-mix(in srgb, var(--tone,var(--text)) 10%, var(--bg));place-items:center;padding:2.5rem 2rem;display:grid}.feature-visual.has-photo,.feature-visual:has(.logo-grid){flex-direction:column;justify-content:center;gap:0;padding:0;display:flex}.feature-stage{flex:none;width:100%;height:20rem;position:relative}.feature-stage .feature-photo{aspect-ratio:auto;object-fit:contain;background:0 0;flex:none;width:100%;height:100%;min-height:0;margin:0;padding:1.5rem;position:absolute;inset:0}.feature-stage.has-nav .feature-photo{padding:1.5rem 3.25rem 2.4rem}#ion-ott .feature-stage{height:24rem}#ion-ott .feature-stage .feature-photo,#ion-ott .feature-stage.has-nav .feature-photo{padding:1.15rem .75rem 2.35rem}.feature-stage.is-phone-scroll{aspect-ratio:auto;background:0 0;height:auto}.phone-scroll{scroll-snap-type:x mandatory;gap:.85rem;margin:0;padding:1.15rem;scroll-padding-inline:1.15rem;list-style:none;display:flex;overflow-x:auto}.phone-scroll li{scroll-snap-align:start;flex:none}.phone-scroll img{object-fit:contain;border-radius:1.15rem;width:auto;max-width:none;height:30rem;display:block}.feature-visual.has-photo:has(.feature-stage){background:color-mix(in srgb, var(--tone,var(--text)) 10%, var(--bg));justify-content:center}.stage-nav{z-index:1;color:#1a1a1a;cursor:pointer;background:#fff;border:1px solid #d0d0cc;border-radius:999px;place-items:center;width:2.15rem;height:2.15rem;margin-top:-1.075rem;padding:0;display:grid;position:absolute;top:50%;box-shadow:0 1px 2px #1a1a1a14}.stage-nav svg{width:1rem;height:1rem}.stage-prev{left:.7rem}.stage-next{right:.7rem}.stage-dots{z-index:1;justify-content:center;gap:.35rem;display:flex;position:absolute;bottom:.75rem;left:0;right:0}.stage-dots button{cursor:pointer;background:#ffffffb8;border:0;border-radius:999px;width:.42rem;height:.42rem;padding:0;box-shadow:0 0 0 1px #1a1a1a66}.stage-dots button[aria-current=true]{background:#1a1a1a;width:1.05rem;box-shadow:0 0 0 1px #fff}.feature-photo{object-fit:cover;flex:1;width:100%;min-height:16rem;display:block}.feature-photo.is-contain{object-fit:contain;background:#fff;padding:2.5rem}.feature-visual.has-photo:has(.is-contain:not(.is-phone)){background:color-mix(in srgb, var(--tone,var(--text)) 10%, var(--bg));justify-content:center}.feature-photo.is-contain:not(.is-phone){aspect-ratio:auto;background:0 0;flex:none;width:100%;height:auto;min-height:0;padding:0}.feature-photo.is-phone{width:min(100% - 4rem,18rem);box-shadow:0 18px 40px color-mix(in srgb, var(--text) 12%, transparent);border-radius:2rem;margin:2rem auto}.logo-grid{grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:.75rem;width:100%;margin:0;padding:1rem;list-style:none;display:grid}.logo-grid li{background:#fff;border-radius:.9rem;place-items:center;min-height:6.5rem;padding:1rem;display:grid}.logo-grid img{object-fit:contain;width:100%;max-height:4.5rem}.feature-copy{border-inline-start:1px solid var(--border);flex-direction:column;min-height:0;padding:2rem 2rem 1.85rem;display:flex}.feature-body{flex-direction:column;flex:1;min-height:0;display:flex}.feature-scroll{overscroll-behavior:contain;scrollbar-color:#c4c4be transparent;scrollbar-width:thin;flex:auto;min-height:0;max-height:20rem;margin-top:.25rem;padding-right:.35rem;overflow-y:auto}.feature-scroll::-webkit-scrollbar{width:.45rem}.feature-scroll::-webkit-scrollbar-thumb{background:#c4c4be;border-radius:999px}.feature.flip .feature-visual{order:2}.feature.flip .feature-copy{border-inline-start:0;border-inline-end:1px solid var(--border);order:1}.feature-tabs{flex-wrap:wrap;gap:.4rem;margin:.85rem 0 .35rem;display:flex}.feature-tabs button{border:1px solid var(--border);color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:999px;padding:.35rem .8rem;font-size:.85rem}.feature-tabs button[aria-selected=true]{color:#fff;background:#1a1a1a;border-color:#1a1a1a}.feature-photo.is-logo{aspect-ratio:auto;object-fit:contain;background:0 0;flex:none;width:min(100% - 4rem,16rem);height:auto;min-height:0;margin:3rem auto;padding:0}.feature-visual.has-photo:has(.is-logo){background:color-mix(in srgb, var(--tone,var(--text)) 10%, var(--bg));justify-content:center}.feature-copy h2{margin-top:.45rem;font-size:clamp(1.7rem,3vw,2.15rem)}.feature-tagline{margin-top:.35rem;font-size:1.05rem}.feature-role,.feature-status{color:var(--muted);margin-top:.35rem}.feature-status{color:var(--text);font-weight:600}.feature.is-study .feature-visual.has-photo{justify-content:flex-start}@media (width>=721px){.feature.is-study .feature-stage{position:sticky;top:1.5rem}}.feature-story h3,.feature-block{margin-top:1.5rem}.feature-story h3,.feature-block h3{letter-spacing:-.01em;font-size:.95rem;font-weight:600}.feature-story p,.feature-story ul,.feature-block p,.feature-block ul{margin-top:.45rem}.feature-story ul,.feature-block ul{margin-bottom:0;padding-left:1.1rem}.feature-story li+li,.feature-block li+li{margin-top:.4rem}.feature-copy .tech,.feature-copy .project-links{flex:none}.feature-copy .tech{margin-top:1.35rem}.device{width:min(100%,22rem)}.device-phone{width:min(100%,15.5rem)}.device img,.device-screen{background:var(--bg);width:100%;box-shadow:0 0 0 1px color-mix(in srgb, var(--text) 12%, transparent);border-radius:1.35rem;display:block}.device img{height:auto}.device-screen{padding:1.35rem 1.2rem 1.2rem}.device-phone .device-screen,.device-phone img{box-shadow:0 0 0 1px color-mix(in srgb, var(--text) 14%, transparent), 0 18px 40px color-mix(in srgb, var(--text) 8%, transparent);border-radius:1.75rem}.device-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.72rem;font-weight:600}.device-title{letter-spacing:-.03em;margin-top:.45rem;font-size:1.35rem;font-weight:600;line-height:1.15}.device-bar,.device-block{background:color-mix(in srgb, var(--tone,var(--text)) 55%, var(--border));border-radius:999px;margin-top:.85rem;display:block}.device-bar{width:72%;height:.45rem}.device-bar-short{width:46%;margin-top:.45rem}.device-block{opacity:.9;border-radius:.9rem;height:7.5rem;margin-top:1.15rem}.shots{gap:.65rem;margin:.7rem 0 0;padding:0;list-style:none;display:flex;overflow-x:auto}.shots img{object-fit:cover;border:1px solid var(--border);border-radius:.75rem;width:7.5rem;height:12rem}.shots-wide img{width:14rem;height:7.9rem}.shots-in-visual{background:#0b0b0b;grid-template-columns:1fr 1fr;gap:.45rem;width:100%;margin:0;padding:.65rem;display:grid;overflow:visible}.shots-in-visual img,.shots-in-visual.shots-wide img{aspect-ratio:16/9;width:100%;height:auto}.home-close{border-top:1px solid var(--border)}[data-tone="1"]{--tone:#8d6a4a}[data-tone="2"]{--tone:#3d6b8c}[data-tone="3"]{--tone:#3f6f66}[data-tone="4"]{--tone:#6a5a8c}[data-tone="5"]{--tone:#8c5a4a}[data-tone="6"]{--tone:#4a6741}[data-tone="7"]{--tone:#5c5c58}@media (width<=720px){.wrap{width:min(100% - 1.5rem, var(--page))}.header-bar{flex-direction:column;align-items:flex-start;gap:.75rem}.nav{justify-content:flex-start}.hero{padding:3.5rem 0 3rem}section{padding:3.5rem 0}.project,.timeline>li,.areas,.feature-grid{grid-template-columns:1fr}.feature-stage{height:16rem}#ion-ott .feature-stage{height:16.5rem}.feature-stage.is-phone-scroll{height:auto}.feature-scroll{max-height:16rem}.phone-scroll img{height:24rem}.apps-head{flex-direction:column;align-items:flex-start}.feature.flip .feature-visual,.feature.flip .feature-copy{order:unset}.feature-copy,.feature.flip .feature-copy{border-inline:0;border-top:1px solid var(--border)}.project{gap:.75rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
