@import"https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap";.case-study{--ink: #292a28;--muted: #6c7166;--line: #292a281f;--surface: #f1f0ea;color:var(--ink)}.case-study code,.case-study pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-variant-ligatures:none}.case-study :not(pre)>code{font-size:.9em}.cs-part{border-top:1px solid var(--line);padding-top:40px;margin-top:60px}.cs-part:first-child{margin-top:20px}.cs-part>h2{font-size:30px;font-weight:700;letter-spacing:-1px;margin:0 0 14px}.cs-lead{max-width:760px;font-size:15px;line-height:1.85;color:var(--muted);margin:0;word-break:keep-all}.cs-block{margin-top:40px}.cs-block>h3{font-size:17px;font-weight:600;margin:0 0 14px}.cs-table{width:100%;border-collapse:collapse;font-size:13.5px}.cs-table th{text-align:left;font-size:12px;font-weight:600;color:var(--muted);padding:0 12px 10px 0;border-bottom:1px solid var(--ink)}.cs-table td{padding:12px 12px 12px 0;border-bottom:1px solid var(--line);color:var(--muted);vertical-align:top;word-break:keep-all}.cs-table td:first-child{color:var(--ink);font-weight:500;white-space:nowrap}.cs-table tr.is-chosen td{color:var(--ink);font-weight:600}.cs-codes{display:grid;grid-template-columns:minmax(0,1fr);gap:28px}.code-block{margin:0;min-width:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fcfcf9}.code-file{font:500 12px JetBrains Mono,ui-monospace,Menlo,monospace;color:var(--muted);padding:10px 16px;border-bottom:1px solid var(--line);background:var(--surface)}.code-block pre{margin:0;padding:14px 0;overflow-x:auto;font-size:12.5px;line-height:1.7;color:#33352f;-moz-tab-size:4;tab-size:4}.code-block pre code{display:block;min-width:max-content}.code-line{display:block;padding:0 16px}.code-line.is-highlighted{background:#f3efd8}.lang-text pre{white-space:pre-wrap}.lang-text pre code{min-width:0}.tok-comment{color:#8f9488}.tok-string{color:#4f7a2c}.tok-annotation,.tok-number{color:#a35a24}.tok-keyword{color:#6b4a9b}.tok-type{color:#2f6f7a}.code-caption{font-size:13px;line-height:1.7;color:var(--muted);margin:0;padding:12px 16px;border-top:1px solid var(--line);word-break:keep-all}.cs-shot{margin:40px 0 0}.cs-shot img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px}.cs-shot figcaption{font-size:12.5px;color:var(--muted);margin-top:10px}.seq{border:1px solid var(--line);border-radius:10px;overflow:hidden}.seq-tabs{display:flex;border-bottom:1px solid var(--line);background:var(--surface);overflow-x:auto}.seq-tabs button{font-size:13px;padding:11px 16px;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}.seq-tabs button.is-active{color:var(--ink);font-weight:600;border-bottom-color:var(--ink)}.seq-board{background:#fcfcf9;padding:18px 0 22px}.seq-board:not(.is-active),.seq-title{display:none}.seq-lanes,.seq-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.seq-lanes span{justify-self:center;font-size:12px;font-weight:600;padding:5px 12px;border:1px solid var(--ink);border-radius:6px;background:#fff}.seq-steps{list-style:none;margin:0;padding:18px 0 0;row-gap:12px;background:linear-gradient(var(--line),var(--line)) 16.6667% 0 / 1px 100% no-repeat,linear-gradient(var(--line),var(--line)) 50% 0 / 1px 100% no-repeat,linear-gradient(var(--line),var(--line)) 83.3333% 0 / 1px 100% no-repeat}.seq-step{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;margin-inline:calc(50% / var(--span));padding:0 6px 10px}.seq-step.is-self{margin-inline:10px;padding:8px 10px;background:#fff;border:1px solid var(--line);border-radius:6px}.seq-label{font:500 12.5px JetBrains Mono,ui-monospace,Menlo,monospace;word-break:break-word}.seq-detail{font-size:11.5px;color:var(--muted);word-break:keep-all}.seq-arrow{position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--ink)}.seq-arrow:after{content:"";position:absolute;top:-4px;border:4.5px solid transparent}.is-right .seq-arrow:after{right:0;border-left:7px solid var(--ink);border-right:0}.is-left .seq-arrow{background:repeating-linear-gradient(90deg,var(--ink) 0 5px,transparent 5px 9px)}.is-left .seq-arrow:after{left:0;border-right:7px solid var(--ink);border-left:0}.lock-timeline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fcfcf9}.lock-col{padding:18px 20px}.lock-col+.lock-col{border-left:1px solid var(--line)}.lock-col h4{font:600 12.5px JetBrains Mono,ui-monospace,Menlo,monospace;margin:0 0 12px}.lock-col ol{list-style:none;margin:0;padding:0}.lock-col li{display:flex;align-items:center;gap:10px;font-size:13px;padding:7px 0;border-bottom:1px dashed var(--line)}.lock-col li.who-B{padding-left:24px}.lock-who{display:grid;place-items:center;flex-shrink:0;width:20px;height:20px;border-radius:50%;border:1px solid var(--ink);font:600 10.5px JetBrains Mono,ui-monospace,Menlo,monospace}.who-B .lock-who{background:var(--ink);color:#fff}.lock-col li.is-fail{color:#b23c2a;font-weight:600}.lock-col li.is-wait{color:var(--muted)}.lock-col li.is-ok{font-weight:600}.lock-col p{font-size:12.5px;line-height:1.7;color:var(--muted);margin:12px 0 0;word-break:keep-all}.mbti-example{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.2fr) minmax(0,.8fr);border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fcfcf9}.mbti-example>div,.mbti-example>ol{padding:20px}.mbti-example>*+*{border-left:1px solid var(--line)}.mbti-caption{display:block;font-size:12px;color:var(--muted);margin-bottom:12px}.mbti-rules p{margin:0 0 12px;font-size:13px}.mbti-rules b{display:block;font-weight:600;margin-bottom:3px}.mbti-rules code{font-size:12px;color:var(--muted)}.mbti-axes{display:flex;flex-direction:column;justify-content:center;gap:14px}.mbti-axis{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:10px;font:500 12.5px JetBrains Mono,ui-monospace,Menlo,monospace}.mbti-axis>span:last-child{text-align:right}.mbti-bar{height:8px;border-radius:4px;background:var(--point, #2f6bed);overflow:hidden}.mbti-bar i{display:block;height:100%;background:#dcdbd3}.mbti-types{list-style:none;margin:0;display:flex;flex-direction:column;justify-content:center;gap:10px}.mbti-types li{display:grid;grid-template-columns:22px 1fr auto;align-items:center;font-size:13px}.mbti-types li>span{font-size:11px;color:var(--muted)}.mbti-types li.is-last{border-top:1px dashed var(--line);padding-top:10px;color:var(--muted)}.mbti-types code{font-weight:600}.itinerary-flow{border:1px solid var(--line);border-radius:10px;background:#fcfcf9;padding:20px}.if-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.if-steps li,.if-case,.if-result{border:1px solid var(--line);border-radius:8px;background:#fff;padding:12px 14px}.if-steps li{position:relative;display:flex;flex-direction:column;gap:4px}.if-steps li+li:before{content:"→";position:absolute;left:-21px;top:50%;transform:translateY(-50%);color:var(--muted)}.if-steps b,.if-result b{font-size:14px}.if-steps span,.if-result span,.if-case p{font-size:12.5px;line-height:1.6;color:var(--muted);word-break:keep-all}.if-branch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:14px 0;padding-top:14px;border-top:1px dashed var(--line)}.if-case h5{font-size:13.5px;margin:0 0 4px}.if-case p{margin:0}.if-case.is-fallback{border-color:var(--ink)}.if-result{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;background:var(--surface)}.pipeline{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}.pipeline li{display:grid;grid-template-columns:40px minmax(0,1fr);gap:8px;padding:16px 0;border-bottom:1px solid var(--line)}.pipeline-no{font:600 14px Space Grotesk,sans-serif;color:var(--muted);padding-top:1px}.pipeline h4{display:flex;align-items:center;gap:8px;font-size:15px;margin:0 0 4px}.pipeline-tag{font-size:10.5px;font-weight:600;padding:1px 6px;border:1px solid var(--ink);border-radius:4px}.pipeline code{font-size:12px;color:var(--muted)}.pipeline p{font-size:13.5px;line-height:1.75;color:var(--muted);margin:6px 0 0;word-break:keep-all}@media(max-width:760px){.cs-part{padding-top:30px;margin-top:44px}.cs-part>h2{font-size:24px}.cs-lead{font-size:14px}.cs-table{font-size:12.5px}.seq-label{font-size:11px}.seq-detail{font-size:10.5px}.seq-lanes span{font-size:10.5px;padding:4px 7px}.seq-step.is-self{margin-inline:4px;padding:6px}.pipeline li{grid-template-columns:28px minmax(0,1fr)}.lock-timeline,.mbti-example,.if-steps,.if-branch{grid-template-columns:minmax(0,1fr)}.mbti-example>*+*{border-left:0;border-top:1px solid var(--line)}.if-steps{gap:22px}.if-steps li+li:before{content:"↓";left:50%;top:-18px;transform:translate(-50%)}.lock-col+.lock-col{border-left:0;border-top:1px solid var(--line)}}@media print{.case-study{font-size:12px}.cs-part{border-top:1px solid var(--line);margin-top:26px;padding-top:18px}.cs-part:first-child{border-top:0;margin-top:18px;padding-top:0}.cs-part>h2{font-size:19px;margin-bottom:8px}.cs-part>h2,.cs-block>h3,.pipeline h4,.code-file{break-after:avoid}.cs-lead{max-width:none;font-size:11.5px;line-height:1.7;orphans:3;widows:3}.cs-block,.cs-shot{margin-top:16px}.cs-block>h3{font-size:13px;margin-bottom:8px}.cs-codes{gap:12px}.pipeline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px}.pipeline li{grid-template-columns:22px minmax(0,1fr);gap:4px;padding:8px 0;break-inside:avoid}.pipeline-no{font-size:11px}.pipeline h4{font-size:12px;margin-bottom:2px}.pipeline code{font-size:10px}.pipeline p{font-size:10.5px;line-height:1.55;margin-top:3px}.cs-shot,.cs-table,.lock-timeline,.mbti-example,.itinerary-flow,.code-block:not(.is-long){break-inside:avoid}.cs-shot img{width:auto;max-width:100%;max-height:78mm;margin:0 auto}.cs-shot figcaption{font-size:10px;margin-top:5px;text-align:center}.cs-table{font-size:11px}.seq,.lock-timeline,.mbti-example,.itinerary-flow{font-size:.9em}.seq-tabs{display:none}.seq-board:not(.is-active){display:block}.seq-board+.seq-board{border-top:1px solid var(--line)}.seq-board{padding:12px 0 14px;break-inside:avoid}.seq-title{display:block;margin:0 0 10px 14px;font-size:11.5px;font-weight:600}.code-file{font-size:9.5px;padding:5px 12px}.code-block pre{overflow:visible;white-space:pre-wrap;padding:7px 0;font-size:9px;line-height:1.5}.code-block pre code{min-width:0}.code-line{padding:0 12px;overflow-wrap:anywhere;break-inside:avoid}.code-caption{font-size:10.5px;line-height:1.6;padding:6px 12px;break-before:avoid}.code-block,.code-file,.code-line.is-highlighted,.cs-table,.seq,.lock-timeline,.mbti-example,.itinerary-flow{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.study-roles{margin:28px 0 0}.study-roles>div{display:grid;grid-template-columns:140px 1fr;gap:24px;padding:18px 0;border-top:1px solid var(--line);font-size:14px;line-height:1.8}.study-roles dt{font-weight:600}.study-roles dd{margin:0;color:var(--muted)}.study-decisions{display:grid;gap:24px}.study-decisions h3{font-size:17px;margin:0 0 8px}.study-decisions p,.study-scope{font-size:14px;line-height:1.9;color:var(--muted);word-break:keep-all;margin:0}.study-scope{margin-top:28px}.study-document-link{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 0;margin-top:24px;border-block:1px solid var(--line);font-size:16px;font-weight:600}.study-document-link:hover{color:var(--point)}.study-document-link svg{flex-shrink:0}.technical-page{max-width:1220px;margin:auto;padding:28px 5% 80px}.technical-heading{padding:24px 0 32px;border-bottom:1px solid var(--line)}.technical-heading h1{margin:0 0 18px;font-size:clamp(28px,3.5vw,42px);line-height:1.4;letter-spacing:-1px;word-break:keep-all}.technical-heading p{max-width:760px;margin:0;font-size:16px;line-height:1.9;color:var(--muted);word-break:keep-all}.technical-layout{display:grid;grid-template-columns:170px minmax(0,1fr);gap:48px;padding-top:38px}.technical-toc{position:sticky;top:32px;align-self:start;font-size:13px}.technical-toc p{font-weight:600;margin:0 0 18px}.technical-toc ol{margin:0;padding:0;list-style:none}.technical-toc li{margin-bottom:16px;line-height:1.6}.technical-toc a:hover{text-decoration:underline;text-underline-offset:4px}.technical-body{min-width:0}.technical-body .cs-part{scroll-margin-top:28px}.technical-body .cs-part:first-child{margin-top:0;padding-top:0;border-top:0}.technical-body .cs-part>h2{font-size:26px}.technical-footer{margin-top:46px;padding-top:24px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:space-between;gap:20px}.technical-footer a{display:inline-flex;align-items:center;gap:8px;font-size:13px}@media(max-width:900px){.technical-layout{grid-template-columns:minmax(0,1fr);gap:30px}.technical-toc{position:static;padding-bottom:12px;border-bottom:1px solid var(--line)}.technical-toc ol{display:flex;flex-wrap:wrap;gap:8px 22px}}@media(max-width:600px){.study-roles>div{grid-template-columns:1fr;gap:4px}.technical-body .cs-part>h2{font-size:23px}}@media print{.technical-page{max-width:none;padding:0}.technical-layout{display:block}.technical-toc,.technical-page>.back{display:none}.technical-heading h1{font-size:26px}.study-decisions>div,.study-roles>div{break-inside:avoid}.study-roles>div,.study-decisions p,.study-scope{font-size:11px}.study-document-link{font-size:12px;padding:12px 0}}.grab-eyebrow{font:600 11px Space Grotesk,sans-serif;letter-spacing:1.8px;color:#576337;margin:0 0 16px}.grab-responsibilities{margin:30px 0 0}.grab-responsibilities>div{display:grid;grid-template-columns:150px 1fr;gap:20px;border-top:1px solid var(--line);padding:18px 0;font-size:14px;line-height:1.8}.grab-responsibilities dt{font-weight:600}.grab-responsibilities dd{margin:0;color:var(--muted)}.grab-metrics{display:grid;grid-template-columns:repeat(3,1fr);margin:32px 0 16px;border-block:1px solid var(--line);padding:26px 0}.grab-metrics>div{padding:0 24px;border-left:1px solid var(--line)}.grab-metrics>div:first-child{padding-left:0;border-left:0}.grab-metrics strong{font:500 clamp(30px,4vw,48px) "Space Grotesk",sans-serif;letter-spacing:-2px}.grab-metrics strong span{font:500 14px Inter,sans-serif;margin-left:7px;letter-spacing:0}.grab-metrics p{margin:9px 0 0;font-size:13px;color:var(--muted)}.grab-note{font-size:12px!important;line-height:1.8!important;color:var(--muted);word-break:keep-all}.grab-story-link{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-top:30px;padding:28px 30px;background:#eef3df;border:1px solid #bfcd9b;border-radius:12px;transition:background .15s}.grab-story-link:hover{background:#e5edcf}.grab-story-link>span{display:grid;gap:9px}.grab-story-link small{font-size:10px;letter-spacing:1.6px;color:#576337}.grab-story-link strong{font-size:20px;line-height:1.5;letter-spacing:-.5px}.grab-story-link span span{font-size:12px;line-height:1.7;color:var(--muted)}.grab-story-link svg{flex-shrink:0}.grab-principles{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:26px}.grab-principles h3{font-size:16px;margin:0 0 12px}.grab-principles p{font-size:14px;line-height:1.9;color:var(--muted);word-break:keep-all;margin:0}.performance-page{max-width:1220px;margin:auto;padding:28px 5% 80px}.grab-article-hero{padding:45px 0 48px;border-bottom:1px solid var(--line)}.grab-article-hero h1{font-size:clamp(34px,4.6vw,60px);line-height:1.25;letter-spacing:-2.4px;font-weight:700;margin:22px 0 24px;word-break:keep-all}.grab-article-deck{color:var(--muted);font-size:17px;line-height:1.9;word-break:keep-all}.grab-article-meta{display:flex;flex-wrap:wrap;gap:8px 24px;margin-top:32px;font-size:11px;color:var(--muted)}.grab-article-layout{display:grid;grid-template-columns:180px minmax(0,1fr);gap:60px;padding-top:48px}.grab-toc{position:sticky;top:32px;align-self:start}.grab-toc>p{font:600 10px Space Grotesk,sans-serif;letter-spacing:1.6px;color:var(--muted);margin:0 0 20px}.grab-toc ol{padding:0;margin:0;list-style:none}.grab-toc li{margin-bottom:15px}.grab-toc a{display:flex;gap:12px;font-size:12px;line-height:1.6}.grab-toc a:hover{color:#506900}.grab-toc span{font:11px Space Grotesk,sans-serif;color:var(--muted);padding-top:2px}.grab-article-body{min-width:0;max-width:760px}.grab-article-body p,.grab-article-body li{font-size:15px;line-height:1.95;word-break:keep-all;overflow-wrap:break-word}.grab-article-body p{margin:18px 0}.grab-article-body .grab-opening{font-size:18px;margin:0 0 36px;line-height:1.95}.grab-article-body section{margin-top:62px;padding-top:30px;border-top:1px solid var(--line);scroll-margin-top:32px}.grab-article-body section>.grab-eyebrow{font-size:10px;line-height:1.5;margin:0 0 12px}.grab-article-body h2{font-size:27px;line-height:1.5;letter-spacing:-.9px;margin:0 0 22px;word-break:keep-all}.grab-article-body h3{font-size:18px;line-height:1.6;margin:30px 0 12px;word-break:keep-all}.grab-article-body blockquote{margin:30px 0;padding:8px 0 8px 24px;border-left:3px solid #78914b;font-size:20px;font-weight:500;line-height:1.9;letter-spacing:-.4px;word-break:keep-all}.grab-flow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));list-style:none;padding:0;margin:28px 0;border-block:1px solid var(--line)}.grab-flow li{position:relative;display:grid;padding:22px 12px;text-align:center}.grab-flow li+li:before{content:"→";position:absolute;top:30px;left:-7px;color:var(--muted)}.grab-flow b{font-size:14px}.grab-flow span{font-size:11px;color:var(--muted)}.grab-callout{background:#eef3df;padding:20px 24px;margin:28px 0;border-radius:4px}.grab-callout>strong{font-size:13px}.grab-callout p{margin:8px 0 0;font-size:14px}.grab-table-scroll{overflow-x:auto;margin:26px 0}.grab-article-body table{width:100%;min-width:420px;border-collapse:collapse;font-size:13px;line-height:1.8}.grab-article-body caption{text-align:left;color:var(--muted);font-size:11px;padding-bottom:12px}.grab-article-body th,.grab-article-body td{text-align:left;padding:14px 12px;border-bottom:1px solid var(--line);vertical-align:top;word-break:keep-all}.grab-article-body thead th{background:#f0f0e9;font-size:11px;color:#606656}.grab-article-body tbody th{font-weight:500;width:35%}.grab-article-body td{color:#505649}.grab-cache-flow{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;align-items:center;padding:24px 14px;background:#f0f0e9;font-size:13px}.grab-timing-figure{border-block:1px solid var(--line);padding:8px 0 18px;margin:26px 0}.grab-timing-figure>div{display:grid;grid-template-columns:70px 1fr;align-items:baseline;gap:12px}.grab-timing-figure b{font-size:12px;color:#506633}.grab-timing-figure p{font-size:13px;margin:14px 0}.grab-timing-figure small{display:block;color:var(--muted);font-size:11px;margin-top:8px}.grab-limitations{border:1px solid var(--line);padding:18px 22px;margin:26px 0}.grab-article-body summary{font-size:13px;cursor:pointer;line-height:1.8}.grab-limitations ul{padding-left:18px}.grab-limitations li{font-size:13px;margin:10px 0;color:var(--muted)}.grab-article-sources{margin-top:56px;border-top:1px solid var(--line);padding-top:30px}.grab-article-sources h2{font-size:20px}.grab-article-sources>a{display:flex;align-items:center;gap:10px;width:fit-content;margin:16px 0;font-size:13px;text-decoration:underline;text-underline-offset:4px}.grab-article-sources>.grab-return{margin-top:36px;text-decoration:none;padding:14px 0}.grab-comparison-pending{padding:24px;border:1px dashed #bcc5ad;background:#f3f4ec}.grab-comparison-pending h3{margin:12px 0 8px;font-size:16px}.grab-comparison-pending p{margin:0;font-size:13px;color:var(--muted)}.grab-chart{margin:36px 0;padding:24px 20px;border:1px solid var(--line);background:#fcfcf9;border-radius:8px}.grab-chart figcaption h3{margin:0}.grab-chart figcaption p{font-size:12px;color:var(--muted)}.grab-chart-controls{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}.grab-chart-controls button{padding:8px 12px;border:1px solid var(--line);border-radius:4px;font-size:12px}.grab-chart-controls button[aria-pressed=true]{background:#e5edcf;border-color:#78914b}.grab-chart svg{display:block;width:100%;height:auto;margin:18px 0}.grab-chart svg text{font:11px Inter,sans-serif;fill:#606656}.grab-chart-legend{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:11px;color:#8872a4}.grab-chart-legend span+span{color:#4b6900}@media(max-width:900px){.grab-article-layout{grid-template-columns:minmax(0,1fr);gap:32px}.grab-toc{position:static;padding-bottom:20px;border-bottom:1px solid var(--line)}.grab-toc ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.grab-toc li{margin:0}.grab-article-body{max-width:none}}@media(max-width:600px){.grab-responsibilities>div{grid-template-columns:1fr;gap:4px}.grab-principles{grid-template-columns:1fr;gap:24px}.grab-metrics>div{padding:0 10px}.grab-metrics strong{font-size:29px;letter-spacing:-1px}.grab-metrics strong span{display:block;font-size:12px;margin:6px 0}.grab-metrics p{font-size:11px;line-height:1.7}.grab-story-link{padding:22px;gap:12px}.grab-story-link strong{font-size:17px}.grab-article-hero{padding-top:26px}.grab-article-hero h1{letter-spacing:-1.5px}.grab-article-deck{font-size:15px}.grab-wide-break{display:none}.grab-article-body .grab-opening{font-size:17px}.grab-article-body h2{font-size:24px}.grab-flow li{padding:16px 6px}.grab-flow span{font-size:10px}.grab-flow li+li:before{top:24px}.grab-chart{padding:20px 10px}}@media print{.grab-story-link,.grab-metrics,.grab-principles{break-inside:avoid}.grab-metrics{padding:12px 0;margin:18px 0 10px}.grab-metrics strong{font-size:26px}.grab-principles{gap:18px}.grab-principles p,.grab-responsibilities>div{font-size:11px}.grab-story-link{padding:16px}.grab-story-link strong{font-size:14px}.performance-page{max-width:none;padding:0}.performance-page>.back,.grab-toc,.grab-chart-controls,.grab-return{display:none}.grab-article-layout{display:block;padding-top:22px}.grab-article-body{max-width:none}.grab-article-hero h1{font-size:32px}.grab-article-body p,.grab-article-body li{font-size:11px}.grab-article-body section{margin-top:25px;padding-top:20px}.grab-article-body h2{font-size:20px;break-after:avoid}.grab-table-scroll{overflow:visible}}.grab-article-hero{padding:24px 0 32px}.grab-article-hero h1{font-size:clamp(28px,3.5vw,42px);letter-spacing:-1px;margin:0 0 18px;line-height:1.4}.grab-article-deck{font-size:16px}.grab-article-body .grab-opening{font-size:15px}.grab-toc>p{font-family:inherit;font-size:13px;letter-spacing:0}.grab-story-link{background:transparent;border:0;border-block:1px solid var(--line);border-radius:0;padding:22px 0}.grab-story-link:hover{background:transparent;color:#506900}.grab-story-link strong{font-size:16px;letter-spacing:0}.resume-contact{margin:10px 0 0;font-size:13px;color:#72796a}.resume-contact a:hover{text-decoration:underline;text-underline-offset:3px}.resume-address{margin:-18px 0 0;font-size:12px;line-height:1.8;color:#72796a;word-break:keep-all;overflow-wrap:anywhere}.resume-address>span{margin-right:8px;font-weight:600;color:#464f3c}.resume-profile h2{font-size:clamp(20px,1.6vw,25px);line-height:1.6;word-break:keep-all}.resume-profile>p,.experience-description{font-size:13px;line-height:1.9;color:#707769;word-break:keep-all;overflow-wrap:anywhere}.resume-profile>p{margin:8px 0}.resume-highlights,.experience-results{margin:20px 0 0;font-size:13px;line-height:1.9}.resume-highlights>div,.experience-results>div{display:grid;grid-template-columns:50px minmax(0,1fr);gap:12px;margin-top:10px}.resume-highlights dt,.experience-results dt{font-weight:600;color:#596642}.resume-highlights dd,.experience-results dd{margin:0;color:#707769;word-break:keep-all;overflow-wrap:anywhere}.experience-team{color:#596642;font-size:11px;white-space:nowrap}.experience-description{margin:0 0 12px}.experience-role{margin:0 0 16px;font-size:12px;line-height:1.8;font-weight:600;color:#596642}.experience-results{padding:14px 16px;border-radius:12px;background:#edf0e4}.experience-results>div:first-child{margin-top:0}.experience-results>div{grid-template-columns:28px minmax(0,1fr)}.experience-measurement{margin:10px 0 0;font-size:11px;line-height:1.8;color:#72796a}.experience-links{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:18px}.experience-detail{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border-radius:20px;background:#e6edbb;color:#4f5a2b;font-size:12px;font-weight:500}.experience-detail:hover{background:#dbe5a3}.resume-education h3{font-size:16px;line-height:1.7;margin:0 0 12px;word-break:keep-all}.resume-education .experience-head>p{margin:0;font-size:13px;color:#596642}.resume-education ul{padding-left:17px;margin:18px 0 0;font-size:13px;line-height:1.9;color:#707769}.resume-education li{padding-left:3px;margin-bottom:10px;word-break:keep-all}.resume-education li::marker{color:#a5b18d}.resume-heading .github-link{max-width:100%}.resume-heading .github-link span{min-width:0;overflow-wrap:anywhere}.resume-heading .github-link svg{flex-shrink:0}:root{font-family:Inter,-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,sans-serif;color:#292a28;background:#f8f7f2;font-synthesis:none;scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}a{color:inherit;text-decoration:none}::selection{background:#c0a3f3;color:#292a28}:focus-visible{outline:3px solid #7e58af;outline-offset:5px}button:disabled{opacity:.5;cursor:wait}header{display:flex;align-items:center;justify-content:space-between;height:88px;margin:0 5%;border-bottom:1px solid #292a2825;gap:25px}.brand{font-size:29px;font-weight:800;letter-spacing:-2px;display:flex;gap:7px;align-items:center}.brand-star{font-size:.93em;color:#a68acb;flex-shrink:0;transition:transform .5s}.brand:hover .brand-star{transform:rotate(90deg)}.header-note{font-size:8px;letter-spacing:1.4px;color:#898a82}nav{display:flex;align-items:center;gap:30px;font-size:11px}nav button,nav a{display:flex;gap:8px;align-items:center;padding:8px 0}nav svg{transition:transform .3s}nav .rotated{transform:rotate(45deg)}nav a{background:#e6edbb;border-radius:30px;padding:11px 16px}.home{padding:0 5%}.home-top{display:flex;justify-content:space-between;padding:27px 0 30px;font-size:8px;letter-spacing:1.6px;color:#73776f}.home-top>span:first-child{display:flex;align-items:center;gap:8px}.dot{width:6px;height:6px;border-radius:50%;background:#85a74c;display:inline-block}.home-grid{display:grid;grid-template-columns:.95fr 1.25fr;gap:7%;max-width:1600px;margin:auto}.welcome{padding:10px 0 0;position:relative}.hello-sticker{font-size:11px;display:inline-flex;align-items:center;gap:15px;border:1px solid #484b3d33;padding:9px 12px;border-radius:6px;transform:rotate(-3deg);background:#edeee3}.hello-sticker>span{font-size:17px;line-height:1}h1,h2,h3,p{margin-top:0}.welcome h1{font-size:clamp(40px,4.5vw,77px);line-height:1.02;letter-spacing:-.067em;font-weight:700;margin:26px 0 22px;font-family:Space Grotesk,Inter,sans-serif}.welcome h1>span{color:#858e68}.welcome h1>span:last-child{font-size:.78em;white-space:nowrap}.welcome>p{font-size:12px;line-height:1.9;color:#797c73;margin-bottom:10px}.welcome strong{font-weight:500;color:#3c4136}.welcome-bottom{height:160px;display:flex;align-items:center;gap:30px;margin-top:0}.mascot{width:165px;height:145px;position:relative;transform:rotate(-7deg);animation:bob 4s ease-in-out infinite}.head{position:absolute;width:116px;height:90px;left:20px;top:29px;background:#c7b2e5;border:2px solid #3f3c49;border-radius:29px 29px 35px 35px;box-shadow:inset -8px -6px #a990cf55;z-index:2}.antenna{position:absolute;height:22px;width:2px;left:80px;top:11px;background:#3f3c49}.antenna:before{content:"";position:absolute;width:10px;height:10px;left:-4px;top:-5px;border:2px solid #3f3c49;background:#dbec9d;border-radius:50%}.eyes{display:flex;gap:26px;position:absolute;left:29px;top:29px}.eyes i{width:8px;height:15px;border-radius:50%;background:#383341;animation:blink 6s infinite}.smile{position:absolute;border-bottom:2px solid #383341;width:21px;height:13px;border-radius:0 0 50% 50%;top:42px;left:46px}.cheek{position:absolute;width:13px;height:5px;border-radius:50%;background:#f1a49c;top:48px}.cheek.left{left:18px}.cheek.right{right:18px}.foot{position:absolute;width:31px;height:14px;background:#484151;border-radius:50%;bottom:15px}.f1{left:35px;transform:rotate(-20deg)}.f2{right:40px;transform:rotate(20deg)}.spark{position:absolute;font-size:30px;color:#8b9b55}.s1{right:-9px;top:10px}.s2{left:0;bottom:20px;font-size:19px;color:#caa07f}.hand-note{font-family:Space Grotesk,sans-serif;font-size:11px;line-height:1.5;transform:rotate(7deg);color:#85877e;position:relative}.hand-note span{position:absolute;font-size:35px;left:-29px;bottom:-30px}.welcome-meta{display:flex;gap:8px;align-items:center;color:#93968c;font-size:7px;letter-spacing:.8px;margin-top:5px}.project-shelf{display:flex;flex-direction:column;gap:14px}.project-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0;background:var(--tint);border:1.5px solid var(--point);border-radius:18px;padding:28px 30px;transition:transform .25s,background .25s}.project-card:hover{transform:translateY(-3px);background:var(--tint-strong)}.card-logo{display:block;width:170px;height:auto}.project-card.grab .card-logo{width:186px}.card-summary{font-size:15px;font-weight:600;color:#292a28;margin:14px 0 6px}.card-meta{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;color:#5f6559;margin:0}.card-arrow{position:absolute;right:22px;top:22px;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#fff;color:var(--point);transition:transform .25s}.project-card:hover .card-arrow{transform:rotate(45deg)}.shelf-foot{display:flex;justify-content:space-between;font-size:8px;color:#90958a;margin-top:3px;align-items:center}.shelf-foot>svg{color:#a5af89}footer{border-top:1px solid #292a2820;display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:38px;padding:21px 0;font-size:8px;color:#8b8e83}footer>span:nth-child(2){font-family:Space Grotesk,sans-serif;font-size:11px;color:#6c7163}.footer-flower{display:inline-block;color:#9e81b9;font-size:18px;vertical-align:middle;margin-left:5px}.intro{position:fixed;top:0;right:0;bottom:0;left:0;background:#e6ebcf;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;animation:intro-out .4s 1.05s forwards;pointer-events:none}.intro .mascot{transform:scale(1.3);margin-bottom:30px;animation:arrive .6s ease both}.intro p{font-family:Space Grotesk,sans-serif;font-size:15px;letter-spacing:-.3px}.loading-line{width:130px;height:3px;background:#c0c9a8;overflow:hidden;border-radius:5px}.loading-line:after{content:"";display:block;height:100%;background:#748450;animation:load 1.1s ease both}.about-panel{--about-scale: 1;position:absolute;z-index:10;right:5%;top:78px;width:560px;max-height:calc(100vh - 100px);overflow-y:auto;overscroll-behavior:contain;background:#f4f1e8;border:1px solid #292a2825;padding:36px 36px 12px;border-radius:14px;box-shadow:0 20px 50px #30302020;animation:arrive .25s}.about-tools{display:flex;align-items:center;gap:10px;margin:0 0 26px;padding-bottom:16px;border-bottom:1px solid #292a281f}.about-tools-label{font-size:10px;letter-spacing:.6px;color:#73796b}.font-stepper{display:flex;align-items:center;gap:2px;border:1px solid #292a2828;border-radius:20px;padding:3px;background:#fbfaf5}.font-stepper button{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;color:#5f6559;transition:background .2s,color .2s}.font-stepper button:hover:not(:disabled){background:#e6edbb;color:#3c4433}.font-stepper span{min-width:42px;text-align:center;font:500 10px Space Grotesk,sans-serif;color:#6c7163}.about-print{display:inline-flex;align-items:center;gap:6px;margin-left:auto;padding:7px 12px;border-radius:20px;background:#e6edbb;color:#4f5a2b;font-size:11px;font-weight:500;transition:background .2s}.about-print:hover{background:#dbe5a3}.about-print-head,.repo-url,.card-repo{display:none}.eyebrow{font-size:9px;letter-spacing:1.3px;color:#73796b}.about-panel section{margin-bottom:30px}.about-panel section+section{border-top:1px solid #292a281f;padding-top:26px}.about-panel h2{font-size:calc(19px * var(--about-scale));font-weight:700;letter-spacing:-.5px;line-height:1.45;margin:0 0 14px;word-break:keep-all}.about-panel p{font-size:calc(13.5px * var(--about-scale));line-height:1.9;color:#5f6559;margin:0 0 10px;word-break:keep-all}.about-panel strong{font-weight:600;color:#292a28}.about-panel mark{font-weight:600;color:#292a28;background:linear-gradient(transparent 58%,#dfe9a6 58%);padding:0 1px}.tags{display:flex;flex-wrap:wrap;gap:6px}.tags span{border:1px solid #292a2828;padding:6px 10px;font-size:9px;border-radius:20px}.about-panel small{font-size:9px;display:block;margin-top:22px;color:#858a7c}.detail{max-width:1300px;margin:auto;padding:25px 5% 60px}.back{display:inline-flex;align-items:center;gap:8px;font-size:11px;margin-bottom:25px;color:#777e6e}.grab{--point: #6f9a00;--tint: #eef8cf;--tint-strong: #e3f2b0}.knotty{--point: #e8604a;--tint: #fde6df;--tint-strong: #fbd6cc}.packing{--point: #2f6bed;--tint: #e4ecff;--tint-strong: #d3e0ff}.detail-hero{display:flex;flex-direction:column;align-items:flex-start;background:var(--tint);border:1.5px solid var(--point);border-radius:24px;padding:48px 56px}.detail-logo{display:block;width:240px;height:auto}.detail-summary{font-size:17px;font-weight:500;color:#292a28;margin:14px 0 28px}.detail-facts{display:flex;flex-wrap:wrap;gap:14px 40px;margin:0 0 28px}.detail-facts dt{font-size:12px;color:#8a8f83;margin-bottom:5px}.detail-facts dd{margin:0;font-size:14px;color:#292a28}.detail-hero .github-link{margin-top:0;background:#fff;color:var(--point)}.detail-hero .github-link:hover{background:#ffffffb3}.detail-content{padding:15px 25px}.next-project{border-block:1px solid #292a2825;display:flex;align-items:center;justify-content:space-between;padding:25px 0;margin-top:50px}.next-project>span{font-size:8px;letter-spacing:1px;color:#8a917f}.next-project h3{font-family:Space Grotesk,sans-serif;font-size:35px;letter-spacing:-1px;font-weight:500;margin:10px 0 0;color:#3c4433}.next-project:hover>svg{transform:translate(7px)}.next-project svg{transition:transform .2s}.not-found{padding:80px 10%}.not-found h1{font-size:70px;letter-spacing:-4px}.not-found button{display:flex;gap:10px;align-items:center}@keyframes bob{50%{transform:translateY(-7px) rotate(2deg)}}@keyframes blink{0%,43%,48%,to{transform:scaleY(1)}45%{transform:scaleY(.1)}}@keyframes arrive{0%{opacity:0;translate:0 15px}to{opacity:1;translate:0 0}}@keyframes intro-out{to{opacity:0;visibility:hidden;transform:translateY(-15px)}}@keyframes load{0%{width:0}to{width:100%}}@media(min-width:1400px){header,.home{max-width:1700px;margin-inline:auto}header{padding:0 5%}.welcome-bottom{height:190px}.mascot{scale:1.1}.welcome>p{font-size:14px}.welcome h1{margin-top:35px}.welcome-meta{margin-top:15px}}@media(max-width:1000px){.home-grid{gap:5%;grid-template-columns:1fr 1.2fr}.welcome h1{font-size:4.7vw}.welcome-bottom{gap:10px}.hand-note{font-size:9px}.header-note{font-size:7px}}@media(max-width:760px){header{height:76px}.header-note{display:none}nav{font-size:10px;gap:18px}.brand{font-size:26px}.home-top{font-size:7px;padding:23px 0}.home-grid{grid-template-columns:1fr;gap:30px}.welcome{padding:10px 0 0;min-height:325px}.welcome h1{font-size:49px;margin-top:23px;max-width:75%;line-height:1}.welcome h1>span:last-child{font-size:.69em}.welcome>p{font-size:11px}.welcome-bottom{position:absolute;right:0;bottom:38px;height:145px}.welcome-bottom .mascot{scale:.8;transform-origin:right center}.hand-note{display:none}.welcome-meta{font-size:6px;margin-top:22px}.hello-sticker{font-size:10px;padding:7px 10px}.project-shelf{gap:12px}.shelf-foot{font-size:7px}footer{margin-top:30px;flex-wrap:wrap;gap:14px;font-size:7px}footer>span:nth-child(2){font-size:10px}footer>span:last-child{width:100%;text-align:right;font-size:7px}.about-panel{width:90%;padding:25px}.detail{padding-top:20px}.detail-content{padding:0 5px}.next-project h3{font-size:28px}}@media(max-width:380px){.welcome h1{font-size:42px}.welcome-bottom{right:-8px;bottom:30px}.welcome-bottom .mascot{scale:.65}}@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.intro{display:none}}.home-grid{padding-top:40px;padding-bottom:40px}.detail-content{padding-top:50px}@media(max-width:760px){.home-grid{padding-top:28px;padding-bottom:30px}.welcome-bottom{bottom:10px}.detail-content{padding-top:35px}}.home-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:7%;align-items:start;padding-top:48px;padding-bottom:80px}.project-shelf{position:sticky;top:24px;align-self:start;max-height:calc(100dvh - 48px);overflow-y:auto;overflow-x:hidden;padding:5px 5px 12px;margin:-5px;scrollbar-width:thin;scrollbar-color:#c8cbbd transparent}.resume{min-width:0}.resume-intro{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:45px}.resume-intro h1{font-size:50px;font-weight:700;letter-spacing:-2px;margin:0}.resume-intro h1>span{display:block;font:500 16px Space Grotesk,sans-serif;letter-spacing:0;color:#818d65;margin-top:12px}.resume-birth{margin:14px 0 0;font-size:13px;color:#72796a}.email-link{overflow-wrap:anywhere}.email-link:hover{text-decoration:underline;text-underline-offset:3px}.github-link{display:inline-flex;align-items:center;gap:7px;margin-top:14px;padding:7px 13px;border-radius:30px;background:#e6edbb;color:#4f5a2b;font-size:12px;font-weight:500;transition:background .2s,transform .2s}.github-link:hover{background:#dbe5a3;transform:translateY(-1px)}.resume-intro .resume-heading{flex:1;min-width:0}.profile-photo{position:relative;flex-shrink:0;width:136px;margin:0 14px 0 6px}.profile-photo:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:24px;background:#dfd4ef;transform:rotate(-6deg) translate(-6px,4px);transition:transform .4s}.profile-photo img{position:relative;display:block;width:100%;height:auto;aspect-ratio:600 / 777;object-fit:cover;border-radius:24px;border:4px solid #fff;box-shadow:0 10px 24px #292a2814;background:#edeee3;transform:rotate(2deg);transition:transform .4s}.profile-sticker{position:absolute;right:-12px;bottom:-10px;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#e6edbb;border:3px solid #f8f7f2;color:#889c4c;font-size:20px;line-height:1;transition:transform .5s}.profile-photo:hover:before{transform:rotate(-9deg) translate(-8px,5px)}.profile-photo:hover img{transform:rotate(0)}.profile-photo:hover .profile-sticker{transform:rotate(90deg)}.resume-section{border-top:1px solid #dcded4;padding-top:28px;margin-top:35px}.resume-section h2{font-size:21px;letter-spacing:-.6px;font-weight:600;margin:0 0 22px}.resume-skills{margin:0}.resume-skills>div{display:grid;grid-template-columns:110px 1fr;gap:18px;margin:18px 0}.resume-skills dt{font:500 13px Space Grotesk,sans-serif;color:#464f3c}.resume-skills dd{margin:0;font-size:13px;line-height:1.8;color:#737b69}.resume-experience{padding-bottom:27px;margin-bottom:27px;border-bottom:1px solid #e6e7de}.resume-experience:last-child{border:0;padding-bottom:0;margin-bottom:0}.resume-experience h3{font:600 24px Space Grotesk,sans-serif;letter-spacing:-.8px;margin:0 0 8px}.experience-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.experience-period{font:500 12px Space Grotesk,sans-serif;color:#8e9581;letter-spacing:.2px}.experience-summary{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-size:13px;color:#838c74;margin:0 0 18px}.experience-repo{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border:1px solid #292a2828;border-radius:20px;font-size:11px;color:#5f6758;transition:background .2s,border-color .2s}.experience-repo:hover{background:#e6edbb;border-color:transparent}.resume-experience ul{padding-left:17px;margin:0;color:#707769;font-size:13px;line-height:1.9}.resume-experience li{padding-left:3px;margin-bottom:10px;word-break:keep-all}.resume-experience li::marker{color:#a5b18d}.resume-last{padding-bottom:10px}@media(min-width:1400px){.resume-intro h1{font-size:60px}}@media(min-width:761px)and (max-height:720px){.project-shelf{gap:10px}}@media(max-width:1000px)and (min-width:761px){.home-grid{gap:5%;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}.resume-skills>div{grid-template-columns:1fr;gap:6px}}@media(max-width:760px){.home-grid{display:flex;flex-direction:column;gap:36px;padding-top:32px;padding-bottom:40px}.resume{width:100%}.project-shelf{position:static;max-height:none;overflow:visible;margin:0;padding:0;width:100%}.resume-intro{margin-bottom:30px}.resume-intro h1{font-size:43px}.resume-intro h1>span{font-size:14px}.resume-skills>div{grid-template-columns:100px 1fr;gap:12px}}@media(max-width:760px){.profile-photo{width:104px;margin:0 8px 0 4px}.profile-photo:before,.profile-photo img{border-radius:18px}.profile-sticker{width:32px;height:32px;font-size:16px;right:-8px;bottom:-8px}}@media(max-width:760px){.detail-hero{padding:32px 24px}.detail-logo{width:180px}.project-card{padding:22px 22px 24px}.card-logo{width:140px}.project-card.grab .card-logo{width:154px}.detail-facts{gap:14px 28px}}@media(max-width:380px){.profile-photo{width:88px}.resume-skills>div{grid-template-columns:1fr;gap:5px}}.print-link,.print-doc{display:none}@media print{.print-link{display:flex!important;align-items:center;justify-content:space-between;gap:20px;margin:0 0 28px;padding:14px 18px;border:1px solid #dcded4;border-radius:12px;break-inside:avoid}.print-link>div{display:flex;flex-direction:column;gap:4px}.print-link-label{font:600 9px Space Grotesk,sans-serif;letter-spacing:1.2px;text-transform:uppercase;color:#889c4c}.print-link>div>a{font:600 16px Space Grotesk,sans-serif;color:#1f201d}.print-link p{margin:0;font-size:10.5px;color:#6f7567}.print-link-qr svg{display:block;width:23mm;height:23mm}body.print-all #root>:not(.print-doc){display:none!important}.print-doc{display:block!important}.print-doc-about{margin-top:22px;padding-top:16px!important;border-top:2px solid #292a28!important}.print-doc>.detail{margin-top:30px}.print-doc .resume-intro{gap:22px}.print-doc .profile-photo{width:96px}.print-doc .resume-section{padding-top:16px;margin-top:16px}.print-doc .resume-skills>div{grid-template-columns:110px 1fr;gap:12px;margin:4px 0}.print-doc .resume-skills dt,.print-doc .resume-skills dd{font-size:11.5px;line-height:1.6}.print-doc .about-panel section{padding-top:12px;margin-bottom:4px}.print-doc .about-panel h2{font-size:15px;margin-bottom:6px}.print-doc .about-panel p{font-size:11.5px;line-height:1.75;margin-bottom:5px}.resume-section h2,.experience-head{break-after:avoid}.resume-experience{padding-bottom:16px;margin-bottom:16px}.resume-experience ul{font-size:11.5px;line-height:1.65}.resume-experience li{margin-bottom:3px}.detail-hero{display:grid;grid-template-columns:150px minmax(0,1fr);column-gap:26px;align-items:center;padding:16px 22px;border-radius:14px}.detail-logo{grid-row:1 / span 3;width:140px}.detail-summary{font-size:13.5px;font-weight:600;margin:0 0 8px}.detail-facts{gap:6px 22px;margin:0 0 8px}.detail-facts dt{font-size:9.5px;margin-bottom:2px}.detail-facts dd{font-size:11px}.detail-content{padding:0}.print-doc>.detail{max-width:none;padding:0}.print-doc-eyebrow{font:600 10px Space Grotesk,sans-serif!important;letter-spacing:1.4px;text-transform:uppercase;color:#889c4c!important;margin:0 0 4px!important}@page{margin:12mm 13mm}:root,body{background:#fff;color:#1f201d}header,.intro,footer,.next-project,.detail .back,.shelf-foot,.about-tools{display:none!important}a{color:inherit;text-decoration:none}body.about-open .home,body.about-open .detail,body.about-open .not-found{display:none!important}.about-panel{position:static;width:auto;max-height:none;overflow:visible;margin:0;padding:0;border:0;border-radius:0;background:#fff;box-shadow:none;animation:none}.about-print-head{display:block;border-bottom:2px solid #292a28;padding-bottom:12px;margin-bottom:28px}.about-print-head h1{font-size:26px;font-weight:700;letter-spacing:-1px;margin:0}.about-print-head h1 span{font-size:13px;font-weight:500;letter-spacing:0;color:#6f7567;margin-left:8px}.about-print-head p{margin:7px 0 0;font-size:11.5px;color:#6f7567}.about-panel h2{font-size:calc(19px * var(--about-scale));break-after:avoid}.about-panel p{font-size:calc(13.5px * var(--about-scale));orphans:3;widows:3}.about-panel section{padding-top:22px;margin-bottom:22px}.about-panel section+section{border-top:1px solid #dcded4}.about-panel mark{background:none;border-bottom:2px solid #dfe9a6}.repo-url{display:inline!important}.card-repo{display:block!important}.repo-url{margin-left:5px;font-size:10.5px;font-family:Space Grotesk,sans-serif;color:#5f6559}.card-repo{margin:6px 0 0 4px;font-family:Space Grotesk,sans-serif;font-size:10px;color:#4f5a2b;white-space:nowrap}.detail-hero .github-link,.experience-repo{padding:0;border:0;border-radius:0;background:none}.detail-hero .github-link svg,.experience-repo svg{display:none}.project-card,.detail-hero,.profile-photo img,.about-panel mark{-webkit-print-color-adjust:exact;print-color-adjust:exact}.project-card,.resume-experience,.detail-hero{break-inside:avoid}.card-arrow,.project-card:hover .card-arrow{display:none}.project-card:hover{transform:none}.home-grid{display:block;padding:0}.project-shelf{position:static;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:auto auto;grid-auto-flow:column;column-gap:12px;row-gap:0;max-height:none;overflow:visible;margin:12px 0 0;padding:0;break-inside:avoid}.project-card{padding:14px 16px 12px;border-radius:14px}.project-card .card-logo{max-width:104px;height:auto}.project-card .card-summary{font-size:11.5px;word-break:keep-all}.project-card .card-meta{flex-wrap:wrap;font-size:10px;gap:2px 8px}.profile-photo:before{display:none}}
