@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/portfolio/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/portfolio/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/portfolio/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/portfolio/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/portfolio/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/portfolio/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff")}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/portfolio/assets/ibm-plex-serif-latin-400-normal-BIGslYFI.woff2) format("woff2"),url(/portfolio/assets/ibm-plex-serif-latin-400-normal-BB-zNvJB.woff) format("woff")}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:500;src:url(/portfolio/assets/ibm-plex-serif-latin-500-normal-REKAfBVG.woff2) format("woff2"),url(/portfolio/assets/ibm-plex-serif-latin-500-normal-C3_OdgN3.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/portfolio/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/portfolio/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/portfolio/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/portfolio/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}:root{--font-sans: "IBM Plex Sans", system-ui, sans-serif;--font-serif: "IBM Plex Serif", Georgia, serif;--font-mono: "IBM Plex Mono", "Consolas", monospace;--bg: #f6f4ef;--surface: #fffcf7;--ink: #1a1917;--ink-secondary: #4a4843;--ink-muted: #7a776f;--border: #ddd8ce;--border-light: #ebe6dc;--accent: #2a4538;--accent-hover: #1e3329;--accent-soft: #e8efe9;--accent-text: #3d6b56;--radius-sm: 4px;--radius-md: 8px;--shadow-sm: 0 1px 2px rgba(26, 25, 23, .04);--shadow-md: 0 4px 24px rgba(26, 25, 23, .06);--max-width: 1080px;--gutter: clamp(24px, 5vw, 56px);font-family:var(--font-sans);color:var(--ink);background:var(--bg);font-synthesis:none;font-weight:400;font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}*,*:before,*:after{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea,summary{-webkit-tap-highlight-color:transparent}a,button,summary{touch-action:manipulation}a:hover{color:var(--accent-text)}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:4px}p,h1,h2,h3{margin:0}svg{flex-shrink:0}section,article[id],main{scroll-margin-top:72px}.site-shell{max-width:var(--max-width);padding:0 var(--gutter);margin:0 auto}.main-column{padding-bottom:16px}.site-header{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;gap:32px;padding:20px 0;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid transparent;transition:border-color .2s}.site-header:after{content:"";position:absolute;bottom:0;left:calc(-1 * var(--gutter));right:calc(-1 * var(--gutter));height:1px;background:var(--border-light)}.brand{display:flex;align-items:center;gap:14px}.brand:hover{color:var(--ink)}.brand-mark{display:grid;place-items:center;width:36px;height:36px;background:var(--ink);color:var(--surface);font-family:var(--font-serif);font-size:17px;font-weight:500;border-radius:var(--radius-sm);flex-shrink:0}.brand-text{font-size:15px;font-weight:500;line-height:1.4}.brand-text small{display:block;font-size:12px;font-weight:400;color:var(--ink-muted);margin-top:1px}.main-nav{display:flex;gap:28px;font-size:14px;color:var(--ink-secondary)}.main-nav a[aria-current=page]{color:var(--accent);font-weight:500}.hero{position:relative;padding:clamp(64px,10vw,112px) 0 clamp(56px,8vw,88px);max-width:780px}.hero-grid{position:absolute;inset:0;left:-var(--gutter);right:-40%;background-image:linear-gradient(to right,var(--border-light) 1px,transparent 1px),linear-gradient(to bottom,var(--border-light) 1px,transparent 1px);background-size:64px 64px;-webkit-mask-image:radial-gradient(ellipse 80% 70% at 20% 30%,black 20%,transparent 75%);mask-image:radial-gradient(ellipse 80% 70% at 20% 30%,black 20%,transparent 75%);opacity:.55;pointer-events:none;z-index:-1}.kicker{font-family:var(--font-mono);font-size:13px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-text);margin-bottom:24px}h1{font-family:var(--font-serif);font-size:clamp(38px,5.5vw,58px);font-weight:400;line-height:1.1;letter-spacing:-.03em}h1 span{display:block;color:var(--ink-muted);margin-top:.12em}.hero-focus{display:flex;flex-wrap:wrap;gap:8px 14px;list-style:none;margin:26px 0 0;padding:0;color:var(--ink-secondary);font-size:clamp(16px,1.9vw,18px)}.hero-focus li:not(:last-child):after{content:"·";margin-left:14px;color:var(--ink-muted)}.hero-copy{max-width:590px;margin-top:28px;color:var(--ink-secondary);font-size:clamp(17px,2vw,19px);line-height:1.7}.hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:24px;margin-top:36px}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:0;padding:13px 22px;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:500;letter-spacing:.01em}.button-primary{background:var(--accent);color:var(--surface)}.button-primary:hover{background:var(--accent-hover);color:var(--surface)}.button:disabled{opacity:.6;cursor:wait}.text-link{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:500;color:var(--ink-secondary)}.text-link:hover{color:var(--accent-text)}.hero-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:56px;padding-top:28px;border-top:1px solid var(--border)}.hero-meta div{padding-right:20px}.hero-meta dt{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:6px}.hero-meta dd{margin:0;font-size:14px;color:var(--ink-secondary)}.hero-meta strong{font-weight:500;color:var(--ink)}.page-section{padding:clamp(48px,7vw,72px) 0;border-top:1px solid var(--border)}.section-header{display:grid;grid-template-columns:auto 1fr;gap:20px 32px;align-items:start;margin-bottom:clamp(28px,4vw,44px)}.section-index{font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--ink-muted);padding-top:6px;letter-spacing:.02em}.section-heading h2{font-family:var(--font-serif);font-size:clamp(24px,3vw,30px);font-weight:400;line-height:1.25;letter-spacing:-.02em}.section-heading>p{margin-top:10px;color:var(--ink-secondary);max-width:560px;font-size:15px}.project-list{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);overflow:hidden}.project{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:clamp(20px,4vw,48px);padding:clamp(24px,3vw,32px) clamp(24px,3vw,36px);transition:background .18s}.project+.project{border-top:1px solid var(--border-light)}.project:hover{background:color-mix(in srgb,var(--accent-soft) 40%,var(--surface))}.project-category{display:inline-block;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--accent-text);margin-bottom:10px}.project h3{font-size:clamp(18px,2.2vw,21px);font-weight:500;line-height:1.35;letter-spacing:-.015em}.project h3 a{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.project h3 svg{color:var(--ink-muted);margin-top:4px;transition:transform .18s,color .18s}.project h3 a:hover svg{color:var(--accent-text);transform:translate(2px,-2px)}.project-description>p{color:var(--ink-secondary);font-size:15px}.project-stack{font-family:var(--font-mono);font-size:12px;color:var(--ink-muted);margin-top:14px;line-height:1.6}.archive-link{display:inline-flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin-top:24px;padding:14px 18px;border:1px dashed var(--border);border-radius:var(--radius-sm);font-size:14px;transition:border-color .18s,background .18s}.archive-link:hover{border-color:var(--accent-text);background:var(--accent-soft);color:var(--ink)}.archive-label{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted)}.archive-link strong{font-weight:500}.study-index{display:grid;gap:12px}.study-card{display:grid;grid-template-columns:auto 1fr auto;gap:20px;align-items:start;padding:clamp(20px,3vw,28px) clamp(20px,3vw,32px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:border-color .18s,box-shadow .18s,transform .18s}.study-card:hover{border-color:color-mix(in srgb,var(--accent-text) 40%,var(--border));box-shadow:var(--shadow-md);color:var(--ink);transform:translateY(-1px)}.study-card-index{font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--ink-muted);padding-top:4px}.study-card h3{font-size:18px;font-weight:500;letter-spacing:-.015em}.study-card p{color:var(--ink-secondary);font-size:15px;margin-top:6px;max-width:580px}.study-result{display:block;margin-top:12px;font-family:var(--font-mono);font-size:12px;color:var(--accent-text);font-variant-numeric:tabular-nums;line-height:1.5}.study-card-cta{display:inline-block;margin-top:16px;font-size:13px;font-weight:500;color:var(--ink);border-bottom:1px solid var(--border)}.study-card:hover .study-card-cta{border-color:var(--accent-text);color:var(--accent-text)}.study-card-arrow{margin-top:6px;color:var(--ink-muted);transition:transform .18s,color .18s}.study-card:hover .study-card-arrow{color:var(--accent-text);transform:translate(3px)}.disclaimer{font-size:13px;color:var(--ink-muted);margin-top:24px;max-width:620px;line-height:1.6}.service-grid{display:grid;gap:0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);overflow:hidden}.service-grid article{display:grid;grid-template-columns:auto 1fr;gap:24px;padding:clamp(24px,3vw,32px) clamp(24px,3vw,36px)}.service-grid article+article{border-top:1px solid var(--border-light)}.service-index{font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--ink-muted);padding-top:3px}.service-grid h3{font-size:17px;font-weight:500;line-height:1.4;margin-bottom:8px}.service-grid p{color:var(--ink-secondary);font-size:15px}.process-note{margin-top:28px;padding:20px 24px;background:var(--accent-soft);border-radius:var(--radius-md);border-left:3px solid var(--accent-text);max-width:640px}.process-note strong{display:block;font-weight:500;font-size:14px;margin-bottom:6px}.process-note p{color:var(--ink-secondary);font-size:14px}.timeline{position:relative;display:grid;gap:0;padding-left:24px}.timeline:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:1px;background:var(--border)}.timeline article{position:relative;display:grid;grid-template-columns:140px 1fr;gap:clamp(16px,3vw,40px);padding:24px 0}.timeline article:before{content:"";position:absolute;left:-28px;top:32px;width:7px;height:7px;border-radius:50%;background:var(--surface);border:2px solid var(--accent-text)}.timeline-date{font-family:var(--font-mono);font-size:12px;color:var(--ink-muted);padding-top:4px;line-height:1.5}.timeline h3{font-weight:500;font-size:17px;line-height:1.4}.timeline .company{color:var(--accent-text);margin:4px 0 10px;font-size:14px;font-weight:500}.timeline-body>p:last-child{color:var(--ink-secondary);font-size:15px}.research-link{margin-top:12px}.contact-section{padding-bottom:clamp(48px,6vw,72px)}.contact-layout{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,64px);align-items:start}.contact-lead h3{font-family:var(--font-serif);font-size:clamp(26px,3.5vw,34px);font-weight:400;letter-spacing:-.025em;line-height:1.2}.contact-lead p{margin-top:16px;color:var(--ink-secondary);font-size:15px;line-height:1.7}.contact-email{display:inline-flex;align-items:center;gap:10px;margin-top:24px;font-family:var(--font-mono);font-size:14px;color:var(--accent-text);padding:10px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);transition:border-color .18s,background .18s}.contact-email:hover{border-color:var(--accent-text);background:var(--accent-soft);color:var(--accent)}.contact-form-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:0 24px;box-shadow:var(--shadow-sm)}.contact-form-wrap summary{cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:500;padding:18px 0;list-style:none;-webkit-user-select:none;user-select:none}.contact-form-wrap summary::-webkit-details-marker{display:none}.summary-icon{font-family:var(--font-mono);font-size:18px;font-weight:400;color:var(--ink-muted);transition:transform .2s}.contact-form-wrap[open] summary{border-bottom:1px solid var(--border-light)}.contact-form-wrap[open] .summary-icon{transform:rotate(45deg)}form{padding:24px 0 28px}label{display:flex;flex-direction:column;gap:8px;font-size:13px;font-weight:500;color:var(--ink-secondary)}input,textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--ink);padding:11px 14px;font-size:15px;transition:border-color .18s,box-shadow .18s}input:focus,textarea:focus{outline:none;border-color:var(--accent-text);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-soft) 80%,transparent)}textarea{resize:vertical;min-height:120px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.form-actions{display:flex;align-items:center;flex-wrap:wrap;gap:16px;margin-top:20px}.form-actions p{font-size:14px;color:var(--accent-text)}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:28px 0 40px;border-top:1px solid var(--border);color:var(--ink-muted);font-size:13px}.footer-copy{line-height:1.6}.social-links{display:flex;gap:24px}.studies-hero{padding:clamp(40px,6vw,64px) 0 clamp(32px,4vw,48px);max-width:680px}.back-link{display:inline-flex;gap:8px;align-items:center;font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:40px}.back-link:hover{color:var(--accent-text)}.studies-lead{font-size:clamp(17px,2vw,19px);color:var(--ink-secondary);margin-top:24px;line-height:1.7}.studies-hero small{display:block;color:var(--ink-muted);font-size:13px;margin-top:20px;line-height:1.6}.studies-layout{display:grid;grid-template-columns:170px minmax(0,1fr);gap:clamp(32px,5vw,64px);align-items:start}.studies-sidebar{position:relative}.studies-sidebar nav{position:sticky;top:104px;display:grid;gap:2px;padding-left:16px;border-left:1px solid var(--border)}.studies-sidebar p{margin-bottom:8px;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-muted)}.studies-sidebar a{display:flex;align-items:baseline;gap:8px;padding:7px 0;font-size:13px;color:var(--ink-secondary);line-height:1.4}.studies-sidebar a:hover{color:var(--accent-text)}.studies-sidebar a span{font-family:var(--font-mono);font-size:10px;color:var(--ink-muted)}.studies-content{min-width:0}.study-tabs{display:grid;grid-template-columns:1fr;gap:12px;padding:8px 0 clamp(40px,6vw,64px);border-bottom:1px solid var(--border);scroll-margin-top:90px}.study-tabs-label{grid-column:1 / -1;margin-bottom:4px;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.study-tabs a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;font-size:13px;font-weight:500;padding:16px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--ink-secondary);transition:border-color .18s,background .18s,color .18s,transform .18s}.study-tabs a:hover{border-color:var(--accent-text);background:var(--accent-soft);color:var(--accent);transform:translateY(-1px)}.study-tab-index{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted)}.study-tab-copy{min-width:0}.study-tab-copy strong{display:block;color:var(--ink);font-weight:500;line-height:1.35}.study-tab-copy small{display:block;margin-top:6px;color:var(--ink-muted);font-size:12px;font-weight:400;line-height:1.5}.full-study{padding:clamp(48px,6vw,64px) 0;border-top:1px solid var(--border);max-width:720px}.study-label{font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-text)}.full-study h2{font-family:var(--font-serif);font-size:clamp(26px,3.5vw,32px);font-weight:400;line-height:1.25;letter-spacing:-.025em;margin-top:14px;max-width:600px}.full-study-header>p{color:var(--ink-secondary);font-size:17px;margin-top:16px;line-height:1.65}.full-study-header>a{display:inline-flex;align-items:center;gap:6px;margin-top:18px;font-family:var(--font-mono);font-size:13px;color:var(--accent-text)}.study-impact{display:block;width:fit-content;margin-top:18px;padding:8px 12px;border-radius:var(--radius-sm);background:var(--accent-soft);font-size:13px;font-weight:500;color:var(--accent-text);font-variant-numeric:tabular-nums}.study-copy{margin-top:36px;display:grid;gap:28px}.study-copy h3{font-size:15px;font-weight:500;margin-bottom:8px;color:var(--ink)}.study-copy p{color:var(--ink-secondary);font-size:15px}.study-aside{padding:20px 24px;background:var(--accent-soft);border-radius:var(--radius-md);border-left:3px solid var(--accent-text)}.study-aside h3{color:var(--accent)}.study-limit{font-size:14px;color:var(--ink-muted);padding-top:8px;border-top:1px solid var(--border-light)}.study-limit strong{font-weight:500;color:var(--ink-secondary)}.technical-note{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.technical-note summary{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:14px 16px;cursor:pointer;list-style:none;font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--ink-secondary)}.technical-note summary::-webkit-details-marker{display:none}.technical-note summary span{font-size:16px;color:var(--ink-muted);transition:transform .18s}.technical-note[open] summary{border-bottom:1px solid var(--border-light)}.technical-note[open] summary span{transform:rotate(45deg)}.technical-note>p{padding:16px;font-size:14px}.study-pagination{display:flex;justify-content:space-between;gap:20px;margin-top:36px;padding-top:20px;border-top:1px solid var(--border)}.study-pagination a{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:500;color:var(--ink-secondary)}.study-pagination a:hover{color:var(--accent-text)}.table-scroll{overflow:auto;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:13px;font-variant-numeric:tabular-nums}caption{text-align:left;font-weight:500;font-size:15px;padding:16px 18px 0}th,td{padding:12px 18px;text-align:left;border-bottom:1px solid var(--border-light)}tbody tr:last-child th,tbody tr:last-child td{border-bottom:0}th{font-weight:500}thead th{color:var(--ink-secondary);background:color-mix(in srgb,var(--bg) 60%,var(--surface));font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.04em;text-transform:uppercase}th:first-child,td:first-child{padding-left:18px}.table-hint{display:none;font-size:12px;font-family:var(--font-mono);color:var(--ink-muted)}.skip-link{position:fixed;top:-100px;left:20px;background:var(--surface);padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius-sm);z-index:100;font-size:14px;font-weight:500}.skip-link:focus{top:12px}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}a,button{transition:color .16s,background-color .16s,border-color .16s}}@media(max-width:820px){.hero-meta{grid-template-columns:1fr;gap:20px}.hero-meta div{padding-right:0}.contact-layout{grid-template-columns:1fr}.section-header{grid-template-columns:1fr;gap:8px}.section-index{padding-top:0}.studies-layout{grid-template-columns:1fr;gap:32px}.studies-sidebar nav{position:static;display:flex;gap:6px;overflow-x:auto;padding:0 0 12px;border-left:0;border-bottom:1px solid var(--border);scrollbar-width:thin}.studies-sidebar p{display:none}.studies-sidebar a{flex:0 0 auto;padding:7px 11px;border:1px solid var(--border);border-radius:999px;background:var(--surface);font-size:12px}}@media(max-width:720px){.site-header{padding:16px 0}.brand-text{font-size:14px}.brand-text small{font-size:11px}.main-nav{gap:20px;font-size:13px}.project{grid-template-columns:1fr;gap:12px}.service-grid article{grid-template-columns:1fr;gap:8px}.timeline{padding-left:20px}.timeline article{grid-template-columns:1fr;gap:8px;padding:20px 0}.timeline article:before{left:-24px;top:26px}.site-footer{align-items:flex-start;flex-direction:column;gap:20px}.table-hint{display:block}.form-actions,.study-pagination{align-items:flex-start;flex-direction:column}}@media(max-width:480px){.site-header{flex-direction:column;align-items:flex-start;gap:16px}.main-nav{gap:24px}.hero-actions{flex-direction:column;align-items:flex-start}.form-row{grid-template-columns:1fr}.study-card{grid-template-columns:1fr;gap:12px}.study-card-index{padding-top:0}.study-card-arrow{display:none}}
