:root{color-scheme:light;--color-ink: #1f252f;--color-muted: #667085;--color-soft: #f5f7fa;--color-line: #dde3ea;--color-maroon: #700000;--color-maroon-dark: #4a0000;--color-blush: #fff7f7;--color-teal: #0f766e;--color-sage: #6f8f72;--color-blue: #245c8f;--shadow-soft: 0 18px 48px rgba(23, 32, 46, .1);--shell: 1120px;--font-heading: "Newsreader", Georgia, "Times New Roman", serif;--font-body: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;font-family:var(--font-body)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:92px}body{margin:0;background:#fff;color:var(--color-ink);font-family:inherit;letter-spacing:0}body,button,input,textarea,select{font:inherit}a{color:inherit}img,svg{display:block;max-width:100%}:focus-visible{outline:3px solid rgba(112,0,0,.24);outline-offset:3px}.site-shell{width:min(100% - 40px,var(--shell));margin:0 auto}.site-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:24px;width:min(100% - 32px,var(--shell));margin:0 auto;padding:18px 0;background:#ffffffe0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.brand-link{display:inline-grid;width:40px;height:40px;place-items:center;border:1px solid var(--color-line);border-radius:8px;color:var(--color-maroon);font-family:var(--font-mono);font-size:.88rem;font-weight:700;text-decoration:none;background:#fff}.site-header nav{display:flex;align-items:center;gap:8px;overflow-x:auto;scrollbar-width:none}.site-header nav::-webkit-scrollbar{display:none}.site-header nav a{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:8px 12px;border-radius:8px;color:#3a4453;font-size:.94rem;font-weight:650;text-decoration:none;white-space:nowrap}.site-header nav a span{color:#98a2b3;font-family:var(--font-mono);font-size:.72rem;font-weight:700}.site-header nav a:hover,.site-header nav a.is-active{color:var(--color-maroon);background:var(--color-blush)}.site-header nav a.is-active span{color:var(--color-maroon)}.hero-section{padding:92px 0 84px}.hero-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(320px,.72fr);gap:64px;align-items:center}.hero-copy h1{max-width:780px;margin:0;font-family:var(--font-heading);font-size:5.4rem;line-height:.9;font-weight:720;letter-spacing:0}.hero-lede{max-width:720px;margin:28px 0 0;color:#313a47;font-size:1.45rem;line-height:1.45}.hero-body{max-width:680px;margin:20px 0 0;color:var(--color-muted);font-size:1.03rem;line-height:1.8}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:34px}.button{display:inline-flex;min-height:46px;align-items:center;justify-content:center;border-radius:8px;padding:0 18px;font-weight:720;text-decoration:none;white-space:nowrap}.button-primary{color:#fff;background:var(--color-maroon);box-shadow:0 12px 30px #7000002e}.button-primary:hover{background:var(--color-maroon-dark)}.button-secondary{border:1px solid var(--color-line);color:#263241;background:#fff}.button-secondary:hover{border-color:#eccaca;color:var(--color-maroon);background:var(--color-blush)}.hero-proof{display:grid;gap:16px}.systems-panel,.proof-note{border:1px solid var(--color-line);border-radius:8px;background:#fff;box-shadow:var(--shadow-soft)}.systems-panel{display:grid;overflow:hidden}.systems-panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px;border-bottom:1px solid var(--color-line)}.systems-panel-header span{color:#98a2b3;font-family:var(--font-mono);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.systems-panel-header strong{color:#354052;font-weight:720}.systems-list{display:grid}.system-row{display:grid;grid-template-columns:48px minmax(0,1fr);gap:14px;align-items:center;padding:16px 20px;border-bottom:1px solid var(--color-line);text-decoration:none}.system-row:last-child{border-bottom:0}.system-row:hover{background:#fbfcfe}.system-row img{width:48px;height:48px;border:1px solid var(--color-line);border-radius:8px;object-fit:cover;background:#fff}.system-row strong,.system-row small{display:block}.system-row strong{color:#273243}.system-row small{margin-top:4px;overflow:hidden;color:var(--color-muted);font-size:.86rem;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.proof-note{padding:22px;background:linear-gradient(180deg,#fff,#f8fbfd)}.proof-note strong{display:block;color:var(--color-maroon);font-size:.98rem}.proof-note p{margin:8px 0 0;color:var(--color-muted);line-height:1.65}.about-section,.work-section,.project-index-section,.experience-section,.approach-section{padding:84px 0;border-top:1px solid var(--color-line)}.work-section{background:#fbfcfe}.section-heading{display:grid;max-width:760px;gap:12px;margin-bottom:36px}.section-heading h2{margin:0;font-family:var(--font-heading);font-size:2.55rem;line-height:1.1;font-weight:680;letter-spacing:0}.section-heading p{margin:0;color:var(--color-muted);font-size:1.05rem;line-height:1.75}.section-heading-split{grid-template-columns:minmax(240px,.44fr) minmax(0,.56fr);max-width:none;align-items:end}.about-grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(320px,.72fr);gap:64px;align-items:start}.about-grid h2{margin:0 0 22px;font-family:var(--font-heading);font-size:2.55rem;line-height:1.1;font-weight:680;letter-spacing:0}.about-grid p{max-width:720px;margin:0;color:#344051;font-size:1.08rem;line-height:1.85}.about-grid p+p{margin-top:18px}.about-notes{border-top:1px solid var(--color-line)}.about-notes div{display:grid;grid-template-columns:52px minmax(0,1fr);gap:18px;padding:20px 0;border-bottom:1px solid var(--color-line)}.about-notes span,.experience-list span{color:var(--color-maroon);font-family:var(--font-mono);font-size:.78rem;font-weight:700;letter-spacing:.08em}.about-notes strong{color:#283344;line-height:1.5}.case-study-stack{display:grid;gap:28px}.case-study{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,.86fr);gap:42px;align-items:center;padding:36px;border:1px solid var(--color-line);border-radius:8px;background:#fff}.case-study-glymo{border-color:#f0dada;background:linear-gradient(180deg,snow,#fff 42%)}.case-study-financejot{border-color:#eadada;background:linear-gradient(180deg,#fff,#fafafa)}.case-study-happybums{border-color:#eadfd7;background:linear-gradient(180deg,#fff,#fffaf6)}.case-copy{min-width:0}.project-title-row{display:flex;align-items:center;gap:14px}.project-mark{width:52px;height:52px;flex:0 0 auto;border:1px solid var(--color-line);border-radius:8px;object-fit:cover;background:#fff}.project-title-row h3{margin:0;font-family:var(--font-heading);font-size:2.05rem;line-height:1.08;font-weight:700;letter-spacing:0}.project-title-row p{margin:5px 0 0;color:var(--color-muted);font-weight:650}.project-summary,.project-contribution{margin:24px 0 0;color:#344051;font-size:1rem;line-height:1.75}.project-contribution{color:var(--color-muted)}.project-narrative{display:grid;margin-top:26px;border-top:1px solid var(--color-line)}.project-narrative div{display:grid;grid-template-columns:150px minmax(0,1fr);gap:18px;padding:15px 0;border-bottom:1px solid var(--color-line)}.project-narrative span{color:var(--color-maroon);font-family:var(--font-mono);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.project-narrative p{margin:0;color:#3f4a5a;line-height:1.65}.highlight-list,.stack-list{display:flex;flex-wrap:wrap;gap:8px;padding:0;list-style:none}.highlight-list{display:grid;gap:10px;margin:24px 0 0}.highlight-list li{position:relative;padding-left:20px;color:#3c4655;line-height:1.55}.highlight-list li:before{position:absolute;left:0;color:var(--color-maroon);content:"/";font-family:var(--font-mono);font-weight:800}.stack-list{margin:24px 0 0}.stack-list li{padding:8px 10px;border:1px solid var(--color-line);border-radius:8px;color:#344051;background:#fff;font-family:var(--font-mono);font-size:.88rem;font-weight:600}.project-visual{min-width:0}.phone-stage{position:relative;min-height:500px}.phone-shot{position:absolute;width:245px;border-radius:28px;box-shadow:0 22px 54px #17202e2e}.phone-shot-main{top:0;left:0;z-index:2}.phone-shot-secondary{right:0;bottom:0;opacity:.82}.app-preview{width:min(100%,380px);margin-left:auto;border:1px solid var(--color-line);border-radius:8px;padding:16px;background:#fff;box-shadow:var(--shadow-soft)}.preview-topbar{display:flex;align-items:center;gap:12px}.preview-topbar img{width:46px;height:46px;border:1px solid var(--color-line);border-radius:8px;background:#fff}.preview-topbar strong,.preview-topbar span{display:block}.preview-topbar strong{font-size:1.08rem}.preview-topbar span{margin-top:2px;color:var(--color-muted);font-size:.86rem;font-weight:650}.safe-to-spend{display:grid;gap:8px;margin-top:18px;border-radius:8px;padding:22px;color:#fff8f8;background:var(--color-maroon)}.safe-to-spend span,.safe-to-spend small{color:#fff8f8c2;font-weight:650}.safe-to-spend strong{font-family:var(--font-mono);font-size:2.2rem;line-height:1;font-weight:600}.finance-row,.quick-note,.report-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;margin-top:10px;border:1px solid var(--color-line);border-radius:8px;padding:12px;color:#2c3542;background:#fff}.finance-row span,.quick-note span,.report-strip span{color:var(--color-muted);font-size:.86rem;font-weight:700}.finance-row strong,.quick-note strong,.report-strip strong{text-align:right;font-size:.92rem}.happy-preview{background:#fff9f4}.baby-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}.baby-grid div{display:grid;gap:6px;border:1px solid #eadfd7;border-radius:8px;padding:14px;background:#fff}.baby-grid span{color:#776b66;font-size:.86rem;font-weight:700}.baby-grid strong{color:#2b1b18;font-family:var(--font-mono);font-size:1.5rem}.quick-note{background:#fff0ef}.report-strip{background:#eaf4ff}.project-index-list{border-top:1px solid var(--color-line)}.project-index-row{display:grid;grid-template-columns:minmax(180px,.24fr) minmax(0,1fr) minmax(220px,.36fr);gap:28px;align-items:start;padding:24px 0;border-bottom:1px solid var(--color-line)}.project-index-row strong,.project-index-row span{display:block}.project-index-row strong{color:#1f252f;font-size:1.08rem}.project-index-row span{margin-top:6px;color:var(--color-muted);line-height:1.5}.project-index-row p{margin:0;color:#344051;line-height:1.7}.project-index-row ul{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.project-index-row li{padding:7px 9px;border:1px solid var(--color-line);border-radius:8px;color:#344051;background:#fff;font-family:var(--font-mono);font-size:.82rem;font-weight:600}.experience-section{background:#fbfcfe}.experience-grid{display:grid;grid-template-columns:minmax(0,.76fr) minmax(0,1fr);gap:56px;align-items:start}.experience-heading{position:sticky;top:104px;margin-bottom:0}.experience-list{display:grid;border-top:1px solid var(--color-line)}.experience-list article{display:grid;grid-template-columns:56px minmax(0,1fr);gap:22px;padding:24px 0;border-bottom:1px solid var(--color-line)}.experience-list h3{margin:0;color:#1f252f;font-family:var(--font-heading);font-size:1.25rem;font-weight:700}.experience-list p{margin:8px 0 0;color:var(--color-muted);line-height:1.75}.approach-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1fr);gap:48px}.approach-heading{margin-bottom:0}.approach-list{display:grid;gap:14px}.approach-list article{border-top:1px solid var(--color-line);padding-top:18px}.approach-list h3{margin:0;font-family:var(--font-heading);font-size:1.25rem;font-weight:700}.approach-list p{margin:8px 0 0;color:var(--color-muted);line-height:1.7}.contact-footer{padding:64px 0;color:#fff;background:#1f252f}.footer-grid{display:flex;align-items:center;justify-content:space-between;gap:32px}.contact-footer h2{max-width:620px;margin:0;font-family:var(--font-heading);font-size:2.25rem;line-height:1.14;letter-spacing:0}.contact-footer p{max-width:680px;margin:12px 0 0;color:#c9d2df;line-height:1.7}.footer-links{display:flex;flex-wrap:wrap;gap:14px;margin-top:18px}.footer-links a{color:#fff;font-weight:720;text-underline-offset:5px}@media(max-width:920px){.hero-grid,.about-grid,.case-study,.section-heading-split,.experience-grid,.approach-grid{grid-template-columns:1fr}.hero-section{padding-top:64px}.hero-copy h1{font-size:4rem}.hero-proof{max-width:560px}.about-grid{gap:40px}.experience-heading{position:static}.project-index-row{grid-template-columns:1fr;gap:12px}.phone-stage{width:min(100%,520px);margin:0 auto}.app-preview{margin:0}}@media(max-width:640px){.site-shell{width:min(100% - 28px,var(--shell))}.site-header{width:min(100% - 24px,var(--shell));gap:12px}.site-header nav{gap:2px}.site-header nav a{padding:8px;font-size:.86rem}.site-header nav a span{display:none}.hero-copy h1{font-size:3.2rem}.hero-section{padding:44px 0 48px}.hero-grid{gap:34px}.hero-lede{font-size:1.18rem}.hero-body{line-height:1.65}.hero-actions{margin-top:28px}.systems-panel-header{display:grid;gap:4px}.proof-note{display:none}.section-heading h2,.about-grid h2,.contact-footer h2{font-size:2rem}.case-study{padding:22px}.project-title-row h3{font-size:1.65rem}.project-narrative div,.experience-list article{grid-template-columns:1fr;gap:8px}.phone-stage{min-height:410px}.phone-shot{width:190px}.footer-grid{align-items:flex-start;flex-direction:column}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important}}
