.ProjectContent-module__f2MdWq__figure{min-width:0;margin:2rem 0}.ProjectContent-module__f2MdWq__image{object-fit:contain;border-radius:.75rem;width:100%;height:auto;display:block}.ProjectContent-module__f2MdWq__caption{color:color-mix(in srgb,currentColor 75%,transparent);margin-top:.75rem;font-size:.925rem;line-height:1.6}.ProjectContent-module__f2MdWq__gallery,.ProjectContent-module__f2MdWq__chart{border:1px solid color-mix(in srgb,currentColor 18%,transparent);border-radius:1rem;min-width:0;margin:2rem 0;padding:1rem}.ProjectContent-module__f2MdWq__gallerySlide .ProjectContent-module__f2MdWq__figure{margin:0}.ProjectContent-module__f2MdWq__gallerySlide .ProjectContent-module__f2MdWq__image{width:auto;max-width:100%;max-height:min(65svh,32rem);margin-inline:auto}.ProjectContent-module__f2MdWq__galleryControls{justify-content:space-between;align-items:center;gap:.5rem;margin-top:1rem;display:flex}.ProjectContent-module__f2MdWq__galleryButton{border:1px solid color-mix(in srgb,currentColor 25%,transparent);background:var(--bg-color,#fff);min-height:2.75rem;color:inherit;font:inherit;cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:.375rem;padding:.5rem .625rem;font-size:.875rem;display:inline-flex}.ProjectContent-module__f2MdWq__galleryButton:hover:not(:disabled){background:color-mix(in srgb,currentColor 7%,transparent)}.ProjectContent-module__f2MdWq__galleryButton:disabled{opacity:.45;cursor:not-allowed}.ProjectContent-module__f2MdWq__galleryButton:focus-visible,.ProjectContent-module__f2MdWq__chartViewport:focus-visible,.ProjectContent-module__f2MdWq__tableViewport:focus-visible,.ProjectContent-module__f2MdWq__chartDetails summary:focus-visible{outline-offset:3px;outline:2px solid}.ProjectContent-module__f2MdWq__galleryCounter{font-variant-numeric:tabular-nums;white-space:nowrap;margin:0;font-size:.875rem}.ProjectContent-module__f2MdWq__featureList{gap:.625rem;margin:1.5rem 0;padding-inline-start:1.5rem;line-height:1.65;list-style:outside;display:grid}.ProjectContent-module__f2MdWq__techStack{flex-wrap:wrap;gap:.5rem;margin:1.5rem 0;padding:0;list-style:none;display:flex}.ProjectContent-module__f2MdWq__techBadge{color:#1f2937;overflow-wrap:anywhere;background:#e5e7eb;border-radius:999px;padding:.375rem .75rem;font-size:.875rem;line-height:1.5}.ProjectContent-module__f2MdWq__chartCaption{margin:0 0 .75rem;line-height:1.6}.ProjectContent-module__f2MdWq__chartTitle{font-size:1.125rem;font-weight:650;display:block}.ProjectContent-module__f2MdWq__chartCaption .ProjectContent-module__f2MdWq__caption{margin-top:.375rem}.ProjectContent-module__f2MdWq__chartViewport,.ProjectContent-module__f2MdWq__tableViewport{scrollbar-width:thin;max-width:100%;overflow-x:auto}.ProjectContent-module__f2MdWq__chartSvg{width:100%;height:auto;display:block}.ProjectContent-module__f2MdWq__chartGrid{stroke:color-mix(in srgb,currentColor 15%,transparent);stroke-width:1px}.ProjectContent-module__f2MdWq__chartAxis{stroke:color-mix(in srgb,currentColor 55%,transparent);stroke-width:1.5px}.ProjectContent-module__f2MdWq__chartTick,.ProjectContent-module__f2MdWq__chartAxisLabel{fill:currentColor;font-variant-numeric:tabular-nums;font-family:system-ui,sans-serif;font-size:15px}.ProjectContent-module__f2MdWq__chartAxisLabel{font-weight:600}.ProjectContent-module__f2MdWq__chartLine,.ProjectContent-module__f2MdWq__chartPoint,.ProjectContent-module__f2MdWq__chartZeroBar{stroke:var(--project-chart-color,#2563eb);stroke-width:2.5px;vector-effect:non-scaling-stroke}.ProjectContent-module__f2MdWq__chartLine{fill:none;stroke-linecap:round;stroke-linejoin:round}.ProjectContent-module__f2MdWq__chartPoint{fill:var(--bg-color,#fff)}.ProjectContent-module__f2MdWq__chartBar{fill:var(--project-chart-color,#2563eb)}.ProjectContent-module__f2MdWq__chartDetails{margin-top:.75rem}.ProjectContent-module__f2MdWq__chartDetails summary{cursor:pointer;width:fit-content;font-size:.925rem;font-weight:600}.ProjectContent-module__f2MdWq__chartTable{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.875rem;line-height:1.6}.ProjectContent-module__f2MdWq__chartTable caption{text-align:left;padding-block:.75rem}.ProjectContent-module__f2MdWq__chartTable th,.ProjectContent-module__f2MdWq__chartTable td{border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent);text-align:left;white-space:nowrap;padding:.5rem .75rem}.ProjectContent-module__f2MdWq__chartTable th{font-weight:600}.ProjectContent-module__f2MdWq__srOnly{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.ProjectContent-module__f2MdWq__walkthrough{margin-block:2rem}.ProjectContent-module__f2MdWq__walkthroughSteps{gap:.5rem;display:grid}.ProjectContent-module__f2MdWq__walkthroughStep{border:1px solid color-mix(in srgb,currentColor 25%,transparent);background:var(--bg-color,#fff);color:inherit;font:inherit;cursor:pointer;border-radius:.75rem;padding:.75rem .5rem;font-size:.875rem;transition:border-color .15s,background-color .15s}.ProjectContent-module__f2MdWq__walkthroughStep span{font-weight:600}.ProjectContent-module__f2MdWq__walkthroughStep:hover,.ProjectContent-module__f2MdWq__walkthroughStep[aria-pressed=true]{border-color:var(--project-accent,#2563eb)}.ProjectContent-module__f2MdWq__walkthroughStep[aria-pressed=true]{background:color-mix(in srgb,var(--project-accent,#2563eb)8%,var(--bg-color,#fff));color:var(--project-accent,#2563eb)}.ProjectContent-module__f2MdWq__walkthroughStep:focus-visible{outline:2px solid var(--project-accent,#2563eb);outline-offset:3px}@media (max-width:480px){.ProjectContent-module__f2MdWq__walkthroughSteps{grid-template-columns:1fr!important}}
.ProjectArticle-module__noQu-a__page{color:#1f2937;max-width:76rem;margin-inline:auto;padding:5rem 1.5rem;font-family:ui-sans-serif,system-ui,sans-serif;font-size:1rem;line-height:1.8}.ProjectArticle-module__noQu-a__header{margin-bottom:3rem}.ProjectArticle-module__noQu-a__header h1{color:#111827;font-family:var(--font-notes),system-ui,sans-serif;filter:drop-shadow(0 10px 8px #0000000a)drop-shadow(0 4px 3px #0000001a);margin-block:.75rem 1rem;font-size:clamp(3rem,8vw,5rem);line-height:1.1}.ProjectArticle-module__noQu-a__links a{align-items:center;gap:.4rem;font-size:.875rem;display:inline-flex}.ProjectArticle-module__noQu-a__metadata,.ProjectArticle-module__noQu-a__links{flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;display:flex}.ProjectArticle-module__noQu-a__metadata{color:#6b7280;font-size:.875rem}.ProjectArticle-module__noQu-a__metadata span{border-left:1px solid #d1d5db;padding-left:1.25rem}.ProjectArticle-module__noQu-a__links{margin-top:1.25rem}.ProjectArticle-module__noQu-a__links a{border-bottom:1px solid #d1d5db;padding-block:.25rem}.ProjectArticle-module__noQu-a__page a:hover{color:#0369a1}.ProjectArticle-module__noQu-a__page a:focus-visible{outline-offset:4px;border-radius:2px;outline:2px solid #0369a1}.ProjectArticle-module__noQu-a__layout{grid-template-areas:"content";gap:2.5rem;display:grid}.ProjectArticle-module__noQu-a__content{overflow-wrap:anywhere;grid-area:content;min-width:0;max-width:74ch}.ProjectArticle-module__noQu-a__content>:first-child{margin-top:0}.ProjectArticle-module__noQu-a__content :where(p:not([class])){margin-block:1.25rem}.ProjectArticle-module__noQu-a__content :where(h1,h2,h3,h4,h5,h6){color:#111827;scroll-margin-top:6rem;line-height:1.3}.ProjectArticle-module__noQu-a__content :where(h1,h2,h3){font-family:var(--font-notes),system-ui,sans-serif;font-weight:400}.ProjectArticle-module__noQu-a__content :where(h1,h2){margin-block:3rem 1rem;font-size:2.25rem}.ProjectArticle-module__noQu-a__content :where(h3){margin-block:2.25rem .75rem;font-size:1.75rem}.ProjectArticle-module__noQu-a__content :where(h4,h5,h6){margin-block:1.75rem .75rem;font-family:inherit;font-size:1.1rem;font-weight:650}.ProjectArticle-module__noQu-a__content :where(ul:not([class]),ol:not([class])){margin-block:1.25rem;padding-left:1.5rem}.ProjectArticle-module__noQu-a__content :where(ul:not([class])){list-style:outside}.ProjectArticle-module__noQu-a__content :where(ol:not([class])){list-style:decimal}.ProjectArticle-module__noQu-a__content :where(ul:not([class]),ol:not([class]))>:where(li+li){margin-top:.5rem}.ProjectArticle-module__noQu-a__content :where(a:not([class])){color:#0369a1;text-underline-offset:.2em;text-decoration:underline}.ProjectArticle-module__noQu-a__content :where(blockquote){color:#475569;border-left:3px solid #cbd5e1;margin-block:2rem;padding-left:1.25rem}.ProjectArticle-module__noQu-a__content :where(pre){background:#f3f4f6;border-radius:.75rem;max-width:100%;margin-block:2rem;padding:1.25rem;font-size:.875rem;line-height:1.7;overflow-x:auto}.ProjectArticle-module__noQu-a__content :where(code){font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.9em}.ProjectArticle-module__noQu-a__content :where(:not(pre)>code){background:#f3f4f6;border-radius:.25rem;padding:.15rem .3rem}.ProjectArticle-module__noQu-a__content :where(img,svg,video){max-width:100%}.ProjectArticle-module__noQu-a__content :where(img){height:auto}.ProjectArticle-module__noQu-a__content :where(hr){border-color:#e5e7eb;margin-block:3rem}.ProjectArticle-module__noQu-a__content :where(table){border-collapse:collapse;text-align:left;width:100%;font-size:.9rem}.ProjectArticle-module__noQu-a__content :where(th,td){border-bottom:1px solid #e5e7eb;padding:.75rem 1rem}.ProjectArticle-module__noQu-a__content :where(th){font-weight:600}.ProjectArticle-module__noQu-a__tableContainer{max-width:100%;margin-block:2rem;overflow-x:auto}.ProjectArticle-module__noQu-a__headingAnchor{color:#94a3b8;opacity:0;margin-left:.5rem;font-size:.8em;text-decoration:none}.ProjectArticle-module__noQu-a__content :where(h1,h2,h3,h4,h5,h6):hover .ProjectArticle-module__noQu-a__headingAnchor,.ProjectArticle-module__noQu-a__headingAnchor:focus-visible{opacity:1}.ProjectArticle-module__noQu-a__contents{grid-area:contents;min-width:0;font-size:.875rem;display:none}.ProjectArticle-module__noQu-a__contents nav{border-left:1px solid #e5e7eb;padding-left:1.25rem}.ProjectArticle-module__noQu-a__contents p{margin-bottom:.75rem;font-weight:600}.ProjectArticle-module__noQu-a__contents ol{gap:.5rem;list-style:none;display:grid}.ProjectArticle-module__noQu-a__contents li[data-depth="3"]{padding-left:.75rem}.ProjectArticle-module__noQu-a__contents a{color:#6b7280}@media (min-width:768px){.ProjectArticle-module__noQu-a__content>.project-content-wide{width:calc(100% + 3rem);margin-inline:-1.5rem}}@media (min-width:1100px){.ProjectArticle-module__noQu-a__page{padding-top:7rem}.ProjectArticle-module__noQu-a__withContents{grid-template-columns:minmax(0,1fr) 12rem;grid-template-areas:"content contents";gap:3rem}.ProjectArticle-module__noQu-a__contents{display:block}.ProjectArticle-module__noQu-a__contents nav{max-height:calc(100vh - 8rem);position:sticky;top:6rem;overflow-y:auto}}
