.page_page__ZU32B{--gray-rgb:0,0,0;--gray-alpha-200:rgba(var(--gray-rgb),0.08);--gray-alpha-100:rgba(var(--gray-rgb),0.05);--button-primary-hover:#383838;--button-secondary-hover:#f2f2f2;display:grid;grid-template-rows:20px 1fr 20px;align-items:center;justify-items:center;min-height:100svh;padding:80px;grid-gap:64px;gap:64px;font-family:var(--font-geist-sans)}@media (prefers-color-scheme:dark){.page_page__ZU32B{--gray-rgb:255,255,255;--gray-alpha-200:rgba(var(--gray-rgb),0.145);--gray-alpha-100:rgba(var(--gray-rgb),0.06);--button-primary-hover:#ccc;--button-secondary-hover:#1a1a1a}}.page_main__GlU4n{display:flex;flex-direction:column;grid-row-start:2;background:#f8f9fa}.page_imageHero__ie3Q2{position:relative;width:100%;height:100svh;min-height:540px;overflow:hidden}.page_imageHeroImg__97GVz{object-fit:cover;object-position:center 35%}.page_imageHeroOverlay__01c7_{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.25),rgba(0,0,0,.12) 40%,rgba(0,0,0,.35))}.page_imageHero__ie3Q2:after{content:"";position:absolute;left:0;right:0;bottom:0;height:18%;background:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.35) 60%,rgba(0,0,0,.6));pointer-events:none}.page_imageHeroContent__r0Bnq{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:space-between;text-align:center;padding:0 24px}.page_heroTop__hP508{margin-top:clamp(40px,12vh,140px)}.page_heroCenter__4w_RG{display:flex;align-items:center;justify-content:center;margin-bottom:clamp(60px,16vh,180px)}.page_heroTitle__Gfler{font-size:clamp(32px,8vw,80px);line-height:1.1;letter-spacing:-.015em;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.45);margin:0 0 4px}.page_heroTagline__BFtFD{color:#e5e7eb;font-size:clamp(14px,1.6vw,18px);margin-top:0;margin-bottom:18px;opacity:.95}.page_heroButtons__5vj38{display:inline-flex;gap:12px}.page_primaryCta__JU8yd:focus-visible{outline:2px solid color-mix(in oklab,var(--accent-red-2) 60%,#ffffff 40%);outline-offset:2px}.page_scrollCue__CilLL{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);width:34px;height:34px;border-radius:999px;border:1px solid rgba(255,255,255,.35);background:rgba(0,0,0,.25);color:#fff;display:grid;place-items:center;text-decoration:none;box-shadow:0 4px 20px rgba(0,0,0,.35)}.page_scrollCue__CilLL:after{content:"⌄";font-size:16px;line-height:1}.page_showcase__fEmoe{display:flex;flex-direction:column;gap:20px;padding:0;border:1px solid var(--gray-alpha-200);border-radius:var(--radius);background:linear-gradient(180deg,rgba(0,0,0,.08),transparent 40%),linear-gradient(0deg,rgba(0,0,0,.05),transparent 60%);margin:0}.page_showcaseInner__G89Qv{width:min(1100px,100%);margin:0 auto;padding:36px 28px 26px}.page_spotlightHeader__XBlHz{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:12px}.page_showcaseHeader__tIf9t{display:flex;flex-direction:column;gap:8px}.page_showcaseTitle__pyEbO{display:block;font-size:30px;line-height:36px;letter-spacing:-.01em;margin:0}.page_visitInline__viFjo{font-size:14px;font-weight:600;color:inherit;opacity:.8;text-decoration:none;border-bottom:1px dashed}.page_visitInline__viFjo:hover{opacity:1}.page_showcaseSubtitle__JIH1C{opacity:.95;color:var(--muted);margin:6px 0 0;max-width:70ch}.page_stackBadges__Gj6sW{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px;margin-bottom:6px}.page_visualHero__k1FsO{position:relative;width:100%;height:0;padding-bottom:32%;border-radius:calc(var(--radius) + 2px);overflow:hidden;border:1px solid var(--border);background:#ffffff;margin-top:12px;box-shadow:0 10px 30px rgba(0,0,0,.25)}.page_visualImg__B_NYL{object-fit:cover;filter:saturate(.85) contrast(1.03)}.page_visualOverlay__8AfF9{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.1),transparent 35%),radial-gradient(120% 120% at 0 0,rgba(0,0,0,.25),transparent 55%),radial-gradient(120% 120% at 100% 100%,rgba(0,0,0,.25),transparent 55%)}.page_visualCaption__w8AR_{position:absolute;left:16px;bottom:14px;padding:8px 12px;background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.12);border-radius:10px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#fff;font-size:13px}.page_screenImg__27aj6{object-fit:contain}.page_surfaceBadge__syL6K{position:absolute;left:8px;bottom:8px;background:rgba(0,0,0,.5);color:#fff;font-size:12px;padding:4px 8px;border-radius:8px;border:1px solid rgba(255,255,255,.12)}.page_badge__s34Is{font-size:12px;padding:8px 12px;border:1px solid var(--border);border-radius:999px;background:#ffffff;box-shadow:0 4px 12px rgba(0,0,0,.15)}.page_featureGrid__LbVmI{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:12px;gap:12px}@media (max-width:1200px){.page_featureGrid__LbVmI{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:700px){.page_featureGrid__LbVmI{grid-template-columns:repeat(1,minmax(0,1fr))}}.page_featureCard__09F8a{border:1px solid var(--gray-alpha-200);border-radius:10px;padding:14px;background:var(--background)}.page_featureCard__09F8a h3{margin:0 0 6px;font-size:16px}.page_featureCard__09F8a p{margin:0;opacity:.9}.page_screenshotGrid__3I2x8{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:12px;gap:12px}@media (max-width:1200px){.page_screenshotGrid__3I2x8{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:700px){.page_screenshotGrid__3I2x8{grid-template-columns:repeat(1,minmax(0,1fr))}}.page_screenshot__7CcmD{border:1px solid var(--gray-alpha-200);border-radius:10px;background:radial-gradient(120% 120% at 0 0,var(--gray-alpha-100),transparent),radial-gradient(120% 120% at 100% 100%,var(--gray-alpha-100),transparent);height:0;padding-bottom:56.25%;position:relative;color:inherit;font-weight:600}.page_screenshot__7CcmD,.page_screenshot__7CcmD:after{display:flex;align-items:center;justify-content:center}.page_screenshot__7CcmD:after{content:attr(aria-label);position:absolute;inset:0}.page_screenshotImg__2C9WC{object-fit:contain;border-radius:10px}.page_ctaRow__yWcJm{display:flex;gap:12px;justify-content:flex-end}.page_visitButton__hnRXW{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:10px;background:var(--accent-red);color:#ffffff;text-decoration:none;font-weight:600;border:1px solid rgba(255,255,255,.12);box-shadow:0 6px 24px rgba(0,0,0,.35)}.page_visitButton__hnRXW:hover{background:var(--accent-red-2)}.page_contentGrid__G_RTU{display:grid;grid-template-columns:1.2fr .8fr;grid-gap:18px;gap:18px;align-items:stretch;margin-top:16px}@media (max-width:900px){.page_contentGrid__G_RTU{grid-template-columns:1fr}}@media (max-width:768px){.page_contentGrid__G_RTU{gap:16px;margin-top:12px}}.page_glass__dc3G5{-webkit-backdrop-filter:saturate(140%) blur(6px);backdrop-filter:saturate(140%) blur(6px)}.page_caseHero__UDD8G{border:1px solid var(--border);border-radius:calc(var(--radius) + 2px);background:#ffffff;min-height:220px;box-shadow:0 10px 30px rgba(0,0,0,.25)}.page_caseHeroInner__cgZ2E{padding:22px 22px 20px;display:flex;flex-direction:column;gap:12px}@media (max-width:768px){.page_caseHeroInner__cgZ2E{padding:18px 16px 16px;gap:10px}}.page_heroPills__IALAD{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}@media (max-width:768px){.page_heroPills__IALAD{gap:6px;margin-bottom:6px}}.page_pill__2mmNO{font-size:12px;padding:6px 12px;border:1px solid var(--gray-alpha-200);border-radius:999px;background:var(--gray-alpha-100)}@media (max-width:768px){.page_pill__2mmNO{font-size:11px;padding:5px 10px}}.page_caseHeadline__CrMG4{margin:4px 0 0;font-size:20px}@media (max-width:768px){.page_caseHeadline__CrMG4{font-size:18px;line-height:1.3}}.page_caseLead__ih5KS{margin:0;opacity:.9}@media (max-width:768px){.page_caseLead__ih5KS{font-size:14px;line-height:1.4}}.page_spotlightCtas__HV16F{display:flex;gap:12px;flex-wrap:wrap}@media (max-width:768px){.page_spotlightCtas__HV16F{gap:10px}}.page_primaryCta__JU8yd{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:10px;background:var(--accent-red);color:#fff;text-decoration:none;font-weight:600;border:1px solid rgba(255,255,255,.12);box-shadow:0 6px 24px rgba(0,0,0,.35)}.page_primaryCta__JU8yd:hover{background:var(--accent-red-2)}@media (max-width:768px){.page_primaryCta__JU8yd{padding:8px 14px;font-size:14px}}.page_featureList___8ePa{border:1px solid var(--border);border-radius:calc(var(--radius) + 2px);padding:16px 14px;display:flex;flex-direction:column;gap:12px;background:#ffffff;min-height:220px;box-shadow:0 10px 30px rgba(0,0,0,.25)}@media (max-width:768px){.page_featureList___8ePa{padding:14px 12px;gap:10px;min-height:auto}}.page_featureItem__KOtcF{display:grid;grid-template-columns:28px 1fr;grid-gap:10px;gap:10px;align-items:start}.page_featureItem__KOtcF h4{margin:0 0 4px;font-size:15px}.page_featureItem__KOtcF p{margin:0;opacity:.9}.page_featureIcon__mHZON{font-size:18px;line-height:28px}@media (max-width:768px){.page_featureItem__KOtcF{gap:8px}.page_featureItem__KOtcF h4{font-size:14px;margin:0 0 3px}.page_featureItem__KOtcF p{font-size:13px;line-height:1.3}.page_featureIcon__mHZON{font-size:16px;line-height:24px}}.page_screenRail__z2gDK{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(320px,1fr);grid-gap:16px;gap:16px;overflow-x:auto;padding:6px 28px 22px;scroll-snap-type:x proximity;margin-top:18px}@media (max-width:768px){.page_screenRail__z2gDK{grid-auto-columns:minmax(280px,1fr);gap:12px;padding:6px 16px 16px;margin-top:16px}}.page_screenRail__z2gDK::-webkit-scrollbar{height:10px}.page_screenRail__z2gDK::-webkit-scrollbar-thumb{background:var(--gray-alpha-200);border-radius:10px}.page_screenCard__K2sql{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;scroll-snap-align:start;background:#ffffff;box-shadow:0 10px 30px rgba(0,0,0,.25)}.page_browserChrome__GyEDS{display:grid;grid-template-columns:auto 1fr;grid-gap:10px;gap:10px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--border);background:#ffffff}@media (max-width:768px){.page_browserChrome__GyEDS{padding:8px 10px;gap:8px}}.page_chromeDots__AmEhm{display:inline-flex;gap:6px}.page_chromeDot__NOdUT{width:10px;height:10px;border-radius:50%;display:inline-block}.page_dotRed__4B_AM{background:#ff5f56}.page_dotYellow__Ssx5X{background:#ffbd2e}.page_dotGreen__WKfXC{background:#27c93f}.page_urlBar__I_gkZ{font-family:var(--font-geist-mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:12px;opacity:.85;background:#ffffff;border:1px solid var(--border);border-radius:8px;padding:6px 8px}@media (max-width:768px){.page_urlBar__I_gkZ{font-size:11px;padding:4px 6px}}.page_surface__hSYWw{position:relative;height:0;padding-bottom:50%;background:radial-gradient(100% 120% at 0 0,var(--gray-alpha-100),transparent),radial-gradient(100% 120% at 100% 100%,var(--gray-alpha-100),transparent);display:flex;align-items:center;justify-content:center;font-weight:600}.page_main__GlU4n ol{font-family:var(--font-geist-mono);padding-left:0;margin:0;font-size:14px;line-height:24px;letter-spacing:-.01em;list-style-position:inside}.page_main__GlU4n li:not(:last-of-type){margin-bottom:8px}.page_main__GlU4n code{font-family:inherit;background:var(--gray-alpha-100);padding:2px 4px;border-radius:4px;font-weight:600}.page_ctas__g5wGe{display:flex;gap:16px}.page_ctas__g5wGe a{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:128px;height:48px;padding:0 20px;border:1px solid transparent;transition:background .2s,color .2s,border-color .2s;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;line-height:20px;font-weight:500}a.page_primary__V8M9Y{background:var(--foreground);color:var(--background);gap:8px}a.page_secondary__lm_PT{border-color:var(--gray-alpha-200);min-width:158px}.page_footer__sHKi3{grid-row-start:3;display:flex;gap:24px}.page_footer__sHKi3 a{display:flex;align-items:center;gap:8px}.page_footer__sHKi3 img{flex-shrink:0}@media (hover:hover) and (pointer:fine){a.page_primary__V8M9Y:hover{background:var(--button-primary-hover);border-color:transparent}a.page_secondary__lm_PT:hover{background:var(--button-secondary-hover);border-color:transparent}.page_footer__sHKi3 a:hover{text-decoration:underline;text-underline-offset:4px}}@media (max-width:600px){.page_page__ZU32B{padding:32px 32px 80px}.page_main__GlU4n ol{text-align:center}.page_ctas__g5wGe{flex-direction:column}.page_ctas__g5wGe a{font-size:14px;height:40px;padding:0 16px}a.page_secondary__lm_PT{min-width:auto}.page_footer__sHKi3{flex-wrap:wrap;align-items:center;justify-content:center}}@media (prefers-color-scheme:dark){.page_logo__7fc9l{filter:invert()}}.page_courseworkGrid__MNvzK{display:grid;grid-gap:20px;gap:20px;margin-top:16px}.page_courseCard__ZQG_k{border:1px solid var(--border);border-radius:var(--radius);padding:24px;background:#ffffff;box-shadow:0 10px 30px rgba(0,0,0,.25)}.page_courseHeader__90C38{margin-bottom:16px}.page_courseBadge__kQIHO{display:inline-block;background:var(--accent-red);color:#fff;font-size:12px;padding:4px 8px;border-radius:6px;font-weight:600;margin-bottom:8px}.page_courseTitle__AewSs{font-size:20px;font-weight:600;margin:0 0 4px;color:var(--foreground)}.page_courseInstructor__xdVtr{font-size:14px;color:var(--muted);margin:0}.page_courseDescription__u9tG0{font-size:15px;line-height:1.5;margin:0 0 16px;color:var(--foreground)}.page_courseTech__fM5yn{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.page_techTag__zaMpn{background:rgba(140,29,24,.1);color:var(--accent-red);font-size:12px;padding:4px 8px;border-radius:6px;border:1px solid rgba(140,29,24,.2)}.page_courseStatus__cwm3B{display:flex;gap:8px}.page_statusBadge__536N9{background:rgba(255,255,255,.1);color:var(--foreground);font-size:12px;padding:4px 8px;border-radius:6px;border:1px solid var(--border)}.page_contributionLink__6IfgS{text-decoration:none;color:#ffffff;transition:transform .2s ease-in-out;width:100%;max-width:100%;display:block;margin:0 0 64px;background:#000000;padding:32px;box-shadow:0 10px 30px rgba(0,0,0,.25)}@media (min-width:769px){.page_contributionLink__6IfgS{width:auto;max-width:none;display:inline-block}}.page_contributionLink__6IfgS:hover{transform:scale(1.02)}@media (max-width:768px){.page_contributionLink__6IfgS,.page_contributionLink__6IfgS:hover{transform:none}}.GitHubContributions_container__LqX8E{margin-top:2rem;display:flex;flex-direction:column;align-items:center;width:100%;max-width:100%;overflow-x:auto;padding:0 1rem}.GitHubContributions_calendarWrapper__01t7h{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}@media (min-width:769px){.GitHubContributions_container__LqX8E{width:auto;max-width:none;padding:0}.GitHubContributions_container__LqX8E>div{width:auto!important;max-width:none!important}.GitHubContributions_calendarWrapper__01t7h{width:auto;overflow-x:visible}}.GitHubContributions_title__pk1gq{margin-bottom:1rem;text-align:center;font-size:1.1rem}.GitHubContributions_error__xrIFf,.GitHubContributions_loading__OgivW{margin-top:2rem;font-style:italic;color:#666}.GitHubContributions_error__xrIFf{color:#c23b22}@media (max-width:768px){.GitHubContributions_container__LqX8E{padding:0 .5rem;margin-top:1rem;min-width:0}.GitHubContributions_title__pk1gq{font-size:1rem;margin-bottom:.75rem;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.GitHubContributions_container__LqX8E>div{width:100%!important;max-width:100%!important;overflow-x:auto;min-width:0}.GitHubContributions_container__LqX8E svg{width:100%!important;height:auto!important;max-width:100%!important;min-width:0;transform-origin:top left}.GitHubContributions_container__LqX8E>div>div>div{width:100%!important;max-width:100%!important;min-width:0!important;overflow-x:auto!important}.GitHubContributions_container__LqX8E>div>div{width:100%!important;max-width:100%!important;overflow-x:auto;min-width:0}.GitHubContributions_calendarWrapper__01t7h{min-width:0;max-width:100vw}}@media (max-width:480px){.GitHubContributions_container__LqX8E{padding:0 .25rem;margin-top:.5rem}.GitHubContributions_title__pk1gq{font-size:.9rem;line-height:1.2}.GitHubContributions_calendarWrapper__01t7h{margin:0 -.25rem;padding:0 .25rem}}@media (max-width:428px){.GitHubContributions_container__LqX8E{padding:0 .125rem}.GitHubContributions_title__pk1gq{font-size:.85rem}.GitHubContributions_calendarWrapper__01t7h{margin:0 -.125rem;padding:0 .125rem}}