.floating-dock_wrap__bdp1T{position:fixed;bottom:12px;left:50%;z-index:50;transform:translateX(-50%);pointer-events:none}.floating-dock_dock__M8OnG{display:flex;align-items:flex-end;gap:6px;padding:8px 10px;border:1px solid var(--border-soft);border-radius:999px;background:var(--surface);box-shadow:0 12px 32px rgba(0,0,0,.16);pointer-events:auto}.floating-dock_item__hhVmx{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;border-radius:999px;background:var(--surface-2);color:var(--text-dim);font-size:16px;text-decoration:none;transform-origin:bottom center;transition:transform .15s ease,color .15s ease,background .15s ease}.floating-dock_item__hhVmx:focus-visible,.floating-dock_item__hhVmx:hover{color:var(--accent);background:var(--accent-soft)}.floating-dock_item__hhVmx.floating-dock_active__bbu0k{color:var(--accent);background:var(--accent-soft)}.floating-dock_item__hhVmx.floating-dock_active__bbu0k:after{content:"";position:absolute;bottom:-6px;left:50%;width:4px;height:4px;border-radius:999px;background:var(--accent);transform:translateX(-50%)}.floating-dock_divider__SGsI2{align-self:stretch;width:1px;margin:4px 2px;background:var(--border-soft)}button.floating-dock_item__hhVmx{border:none;cursor:pointer}.floating-dock_tooltip__tIFqm{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translateX(-50%);padding:4px 10px;border-radius:6px;background:var(--text);color:var(--surface);font-size:12px;font-weight:500;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s ease}.floating-dock_item__hhVmx:focus-visible .floating-dock_tooltip__tIFqm,.floating-dock_item__hhVmx:hover .floating-dock_tooltip__tIFqm{opacity:1}@media (max-width:640px){.floating-dock_wrap__bdp1T{bottom:16px}.floating-dock_item__hhVmx{width:36px;height:36px;font-size:14px}}.footer_footer__mqdak{border-top:1px solid var(--border-soft);padding-bottom:96px}.footer_inner__o6Jv8{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 24px;max-width:var(--container);margin:0 auto;padding:19px 24px 20px;color:var(--text-faint);font-size:12px;line-height:16px}.footer_inner__o6Jv8 p{margin:0}.footer_inner__o6Jv8 a{color:var(--text-faint);text-decoration:none}.footer_inner__o6Jv8 a:hover{color:var(--text-dim)}.section-heading_heading__LgL6l{max-width:660px;margin-bottom:32px}.section-heading_eyebrow__0fNCm{margin:0 0 10px;color:var(--text-faint);font-size:12px;font-weight:600;line-height:16px;letter-spacing:.1em;text-transform:uppercase}.section-heading_heading__LgL6l h2{margin:0 0 10px;color:var(--text);font-size:clamp(26px,3vw,32px);font-weight:700;line-height:1.2;letter-spacing:-.02em}.section-heading_intro__ePMO3{margin:0;color:var(--text-dim);font-size:16px;line-height:1.6}.contact_contact__iwe4u{padding-bottom:33px}.contact_form__RfAI7{display:grid;grid-gap:16px;gap:16px;max-width:640px}.contact_row__ErMmf{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}.contact_form__RfAI7 label{display:grid;grid-gap:6px;gap:6px;color:var(--text-strong);font-size:13px;font-weight:500}.contact_form__RfAI7 input,.contact_form__RfAI7 textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-size:15px;font-weight:400}.contact_form__RfAI7 textarea{resize:vertical;min-height:120px}.contact_form__RfAI7 input:focus-visible,.contact_form__RfAI7 textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.contact_honeypot__MV5y9{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.contact_actions__QUFst{display:flex;flex-wrap:wrap;align-items:center;gap:16px}.contact_actions__QUFst button{border:0;cursor:pointer}.contact_actions__QUFst button:disabled{opacity:.6;cursor:progress}.contact_error__jSqSx,.contact_success__Tadfh{flex-basis:100%;font-size:14px}.contact_error__jSqSx:empty,.contact_success__Tadfh:empty{display:none}.contact_success__Tadfh{color:var(--text-dim)}.contact_error__jSqSx{color:#dc2626}[data-theme=dark] .contact_error__jSqSx{color:#f87171}.contact_or___DL5m{color:var(--text-faint);font-size:14px}@media (max-width:640px){.contact_row__ErMmf{grid-template-columns:minmax(0,1fr)}}.contact_email__pVR26{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:12px}.contact_email__pVR26 a{color:var(--text-strong);font-size:14px;line-height:20px;text-decoration:none}.contact_email__pVR26 a:hover{color:var(--text);text-decoration:underline;text-underline-offset:4px}.contact_email__pVR26 button{min-height:0;padding:0;border:0;background:none;color:var(--text-faint);font-size:12px;line-height:16px;cursor:pointer}.contact_email__pVR26 button:hover{color:var(--text-dim)}.contact_status__H___L{position:absolute;top:100%;left:0;margin-top:4px;color:var(--text-dim);font-size:12px;line-height:16px}.contact_profiles__dSoev{display:flex;flex-wrap:wrap;gap:24px;margin-top:31px}.contact_profiles__dSoev a{display:inline-flex;align-items:center;gap:6px;color:var(--text-dim);font-size:12px;line-height:16px;text-decoration:none}.contact_profiles__dSoev a:hover{color:var(--text)}.experience_tabs__uOOP7{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--border-soft);border-radius:10px;background:var(--surface-2)}.experience_tab__NvNAP{min-height:36px;padding:8px 18px;border:0;border-radius:7px;background:none;color:var(--text-dim);font-size:14px;font-weight:600;line-height:20px;cursor:pointer;transition:background .15s ease,color .15s ease,box-shadow .15s ease}.experience_tab__NvNAP:hover{color:var(--text);background:color-mix(in srgb,var(--surface) 50%,transparent)}.experience_tab__NvNAP[aria-selected=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.08),0 1px 1px rgba(0,0,0,.04)}[data-theme=dark] .experience_tabs__uOOP7{background:var(--bg);border-color:var(--border)}[data-theme=dark] .experience_tab__NvNAP[aria-selected=true]{background:var(--border-soft)}.experience_tab__NvNAP:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.experience_list__B7RwJ{margin:24px 0 0;padding:0;list-style:none;border:1px solid var(--border-soft);border-radius:8px}.experience_item__SCfKd{display:flex;align-items:flex-start;gap:16px;padding:18px 20px 20px}.experience_item__SCfKd~.experience_item__SCfKd{border-top:1px solid var(--border-soft)}.experience_item__SCfKd[hidden]{display:none}.experience_badge__NMcJ7{display:grid;flex:none;place-items:center;width:28px;height:28px;border-radius:6px;color:#fff;font-size:12px;font-weight:700;line-height:1}.experience_logo__IjgW5{overflow:hidden;border:1px solid var(--border-soft);background:#fff}.experience_logo__IjgW5 img{display:block;width:100%;height:100%;object-fit:contain}.experience_details__JnTdg{flex:1 1;min-width:0;margin-top:-2px}.experience_titleRow__0ujyh{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:4px 16px}.experience_titleRow__0ujyh h3{margin:0;color:var(--text);font-size:14px;font-weight:600;line-height:17.5px}.experience_titleRow__0ujyh a{color:inherit;text-decoration:none}.experience_titleRow__0ujyh a:hover{text-decoration:underline;text-underline-offset:3px}.experience_dates___YYNL{margin-top:2px;color:var(--text-faint);font-size:12px;line-height:16px}.experience_role__ivnre{margin:3px 0 0;color:var(--text-dim);font-size:12px;line-height:16px}.experience_description__XlubV{margin:5px 0 0;color:var(--text-dim);font-size:12px;line-height:16px}.experience_courses__jm8Cd{margin:0;padding-left:16px}.experience_courses__jm8Cd ul{margin:2px 0 4px;padding-left:16px}.experience_courses__jm8Cd strong{color:var(--text-strong);font-weight:600}.experience_more__kYPoS{display:inline-flex;align-items:center;gap:4px;min-height:0;margin-top:18px;padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text-muted);font-size:12px;line-height:16px;cursor:pointer}.experience_more__kYPoS:hover{background:var(--surface-2);color:var(--text)}.hero_hero__Iln7T{display:flex;align-items:center;gap:40px;margin:0 -24px;padding:54px 24px 36px;border-bottom:1px solid var(--border-soft)}.hero_portrait___gzmq{flex:none;width:200px;height:200px;overflow:hidden;border-radius:12px;background:linear-gradient(var(--surface-2),var(--border))}.hero_portrait___gzmq img{display:block;width:100%;height:100%;object-fit:cover}.hero_intro___8jJw{flex:1 1;min-width:0}.hero_kicker__YqVEQ{margin:0;color:var(--text-faint);font-size:12px;line-height:16px}.hero_hero__Iln7T h1{margin:4px 0 0;color:var(--text);font-size:30px;font-weight:600;line-height:36px;letter-spacing:-.025em}.hero_divider__gb_2_{margin:22px 0 20px;border:0;border-top:1px solid var(--border-soft)}.hero_lede__Zzgqt{margin:0;color:var(--text-dim);font-size:14px;line-height:22.75px}.hero_actions__y3WHz{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:20px}.hero_primary__ncCx0,.hero_secondary__YnWCc{display:inline-flex;align-items:center;gap:4px;font-size:14px;font-weight:500;line-height:20px;text-decoration:none}.hero_primary__ncCx0{padding:8px 16px;border-radius:6px;background:var(--accent);color:var(--on-accent)}.hero_primary__ncCx0:hover{background:var(--accent-hover);color:var(--on-accent)}.hero_secondary__YnWCc{color:var(--text-dim)}.hero_secondary__YnWCc:hover{color:var(--text)}.hero_quickLinks__CehYl{display:flex;flex-wrap:wrap;gap:16px;margin-top:20px}.hero_quickLinks__CehYl a{display:inline-flex;align-items:center;gap:6px;color:var(--text-faint);font-size:12px;line-height:16px;text-decoration:none}.hero_quickLinks__CehYl a:hover{color:var(--text-dim)}@media (max-width:767px){.hero_hero__Iln7T{flex-direction:column;align-items:stretch;gap:32px;margin:0 -18px;padding:40px 18px 28px}}.projects_section__n8QrV{color:var(--text)}.projects_sectionLink__3UwKX{display:inline-flex;align-items:center;gap:12px;min-height:44px;margin-top:12px;font-size:14px;font-weight:600;text-underline-offset:5px}.projects_grid__YDQJF{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:24px;gap:24px}.projects_card__I0ELT{position:relative;display:flex;flex-direction:column;min-width:0;border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden}.projects_card__I0ELT:has(:focus-visible){border-color:var(--accent)}.projects_preview__XdO8b{aspect-ratio:16/10;min-width:0;overflow:hidden;background:var(--surface-2);border-bottom:1px solid var(--border-soft)}.projects_preview__XdO8b>a{display:flex;align-items:center;justify-content:center;height:100%;padding:16px;box-sizing:border-box}.projects_preview__XdO8b>a:focus-visible{outline-offset:-4px}.projects_preview__XdO8b img{display:block;width:100%;height:100%;object-fit:contain;transition:transform .3s var(--ease)}.projects_card__I0ELT:hover .projects_preview__XdO8b img{transform:scale(1.03)}.projects_body__5paVH{display:flex;flex:1 1;flex-direction:column;align-items:flex-start;padding:28px;min-width:0}.projects_status__83reN{position:absolute;top:12px;right:12px;z-index:2;padding:3px 10px;border-radius:999px;background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.12);color:var(--text-strong);font-size:12px;font-weight:600;white-space:nowrap}.projects_body__5paVH h3{margin:0 0 12px;font-size:25px;line-height:1.2;letter-spacing:-.02em}.projects_company__ygmVT{display:flex;align-items:center;gap:12px;margin-bottom:24px;color:var(--text-dim);font-size:14px}.projects_company__ygmVT img{flex-shrink:0;object-fit:contain;padding:5px;background:#ffffff;border:1px solid var(--border-soft);border-radius:10px}.projects_body__5paVH h3 a{color:inherit;text-decoration:none}.projects_body__5paVH h3 a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:4px}.projects_lead__GLHoC{margin:0 0 24px;color:var(--text);font-size:16px;line-height:1.65}.projects_contribution__GBoyk{margin-bottom:28px}.projects_contribution__GBoyk h4{margin:0 0 6px;font-size:13px;font-weight:600}.projects_contribution__GBoyk p{margin:0;font-size:15px;color:var(--text-dim);line-height:1.65}.projects_footer__vH3Os{width:100%;margin-top:auto}.projects_technologies__Yu5Co{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0 0 24px;padding:0}.projects_technologies__Yu5Co li{padding:4px 10px;border-radius:999px;background:var(--surface-2);color:var(--text-strong);font-size:12px;font-weight:500;line-height:1.5}.projects_action__3GC6_{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:44px;padding-top:12px;border-top:1px solid var(--border-soft);color:var(--text);font-size:14px;font-weight:600;text-decoration:none}.projects_action__3GC6_:hover{color:var(--text);text-decoration:underline;text-underline-offset:4px}.projects_action__3GC6_:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.projects_featured__4_RCQ>.projects_card__I0ELT:first-child{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}.projects_featured__4_RCQ>.projects_card__I0ELT:first-child .projects_preview__XdO8b{aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--border-soft);background:var(--surface-2)}.projects_featured__4_RCQ>.projects_card__I0ELT:first-child .projects_preview__XdO8b>a{min-height:360px}.projects_featured__4_RCQ>.projects_card__I0ELT:first-child h3{font-size:clamp(28px,3vw,36px)}.projects_more___N2vd{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 32px;margin-top:24px;padding:28px;border:1px solid var(--border-soft);border-radius:16px}.projects_more___N2vd h3{margin:0 0 6px;font-size:20px}.projects_more___N2vd p{margin:0;color:var(--text-dim)}.projects_more___N2vd a{display:inline-flex;align-items:center;gap:16px;min-height:44px;font-size:14px;font-weight:600;text-underline-offset:5px}.projects_carousel__LGKiy .image-carousel{width:100%;height:100%;max-width:none;margin:0;border-radius:0;background:var(--surface-2);box-shadow:none}.projects_carousel__LGKiy .carousel-image{padding:16px 16px 40px;box-sizing:border-box;object-fit:contain;aspect-ratio:auto;background:var(--surface-2);border-radius:0;transform:none}.projects_viewMore__EDtm_{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:24px}.projects_carousel__LGKiy .carousel-btn{min-width:44px;min-height:44px}@media (max-width:767px){.projects_grid__YDQJF{grid-template-columns:minmax(0,1fr);gap:20px}.projects_body__5paVH{padding:22px}.projects_featured__4_RCQ>.projects_card__I0ELT:first-child{display:flex}.projects_featured__4_RCQ>.projects_card__I0ELT:first-child .projects_preview__XdO8b{aspect-ratio:16/10;border-right:0;border-bottom:1px solid var(--border-soft)}.projects_featured__4_RCQ>.projects_card__I0ELT:first-child .projects_preview__XdO8b>a{min-height:0}}.projects_page___NjIq{min-width:0}.projects_moreProjects__CV_Ut{max-width:var(--container,1120px);box-sizing:border-box;margin:0 auto;padding:32px 24px 48px}.projects_moreProjects__CV_Ut:before{content:"";display:block;margin-bottom:32px;border-top:1px solid var(--border-soft)}.projects_moreProjects__CV_Ut h2{margin:0 0 10px;color:var(--text);font-size:clamp(24px,2.6vw,28px);font-weight:700;line-height:1.2;letter-spacing:-.02em}.projects_moreProjects__CV_Ut>p:not(.eyebrow){margin:0 0 20px;color:var(--text-dim);font-size:16px;line-height:1.6}.projects_page___NjIq .container{max-width:var(--container,1120px);margin:0 auto;padding:0 24px}.projects_page___NjIq .header{text-align:left;margin:48px 0 32px}.projects_page___NjIq .eyebrow{display:block;color:var(--text-faint);font-size:12px;font-weight:600;line-height:16px;letter-spacing:.1em;text-transform:uppercase;margin:0 0 10px}.projects_page___NjIq .project-title{color:var(--text);max-width:24ch;font-size:clamp(32px,4.5vw,44px);font-weight:700;line-height:1.15;letter-spacing:-.025em;margin:0 0 12px;text-wrap:balance}.projects_page___NjIq .project-summary{max-width:64ch;color:var(--text-dim);font-size:17px;line-height:1.6;margin:0 0 20px}.projects_page___NjIq .tags{display:flex;gap:.5rem;justify-content:flex-start;flex-wrap:wrap}.projects_page___NjIq .tag{width:auto;height:auto;background:var(--surface-2);color:var(--text-strong);border:0;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:500;line-height:1.5;opacity:1}.projects_page___NjIq .project-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;margin-top:24px}.projects_page___NjIq .github-button{display:inline-flex;align-items:center;gap:8px;height:44px;box-sizing:border-box;line-height:20px;background:var(--accent);color:var(--on-accent,white);padding:0 18px;text-decoration:none;border-radius:8px;font-size:15px;font-weight:600}.projects_page___NjIq .github-button:hover{background:var(--accent-hover)}.projects_page___NjIq .project-actions .btn-secondary{display:inline-flex;align-items:center;gap:6px;height:44px;min-height:0;box-sizing:border-box;padding:0 18px;font-size:15px;line-height:20px}.projects_page___NjIq .project-demo-link{color:var(--text);font-size:15px;font-weight:600;text-underline-offset:5px;padding:10px 0}.projects_page___NjIq .project-story{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px;margin:32px 0 0}.projects_page___NjIq .project-story-step{min-width:0;padding:24px 28px;background:var(--surface);border:1px solid var(--border-soft);border-radius:16px}.projects_page___NjIq .project-story-number{color:var(--text-faint);font-size:12px;font-weight:600;letter-spacing:.1em}.projects_page___NjIq .project-story h2{color:var(--text);font-size:17px;font-weight:600;line-height:1.4;margin:8px 0}.projects_page___NjIq .project-story p{color:var(--text-muted);font-size:15px;line-height:1.65;margin:0}.projects_page___NjIq .info-box{min-width:0;padding:32px 0 0;border-radius:0;border:0;border-top:1px solid var(--border-soft);margin:32px 0 0;background:transparent;scroll-margin-top:32px}.projects_page___NjIq .info-box h2{color:var(--text);margin:0 0 16px;font-size:clamp(24px,2.6vw,28px);font-weight:700;line-height:1.2;letter-spacing:-.02em}.projects_page___NjIq .info-box h3{color:var(--text);font-size:17px;font-weight:600;line-height:1.4;margin:0 0 12px}.projects_page___NjIq .info-box p{color:var(--text-muted);font-size:15px;line-height:1.7;margin:0 0 16px}.projects_page___NjIq .info-box>p{max-width:75ch}.projects_page___NjIq .info-box ul{padding-left:1.5rem}.projects_page___NjIq .info-box>:last-child,.projects_page___NjIq .theory-item>:last-child,.projects_page___NjIq .two-column-grid>*>:last-child{margin-bottom:0}.projects_page___NjIq .theory-item+.theory-content{margin-top:24px}.projects_page___NjIq .info-box li{color:var(--text-muted);font-size:15px;line-height:1.65;margin-bottom:8px}.projects_page___NjIq .theory-content,.projects_page___NjIq .two-column-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:24px 32px;gap:24px 32px;margin-bottom:16px;align-items:stretch}.projects_page___NjIq .theory-item,.projects_page___NjIq .two-column-grid>*{display:flex;flex-direction:column;min-width:0}.projects_page___NjIq .theory-item{height:100%;box-sizing:border-box}.projects_page___NjIq .info-img,.projects_page___NjIq .theory-img,.projects_page___NjIq .theory-img-hover{display:block;width:100%;max-width:100%;height:auto;max-height:440px;border-radius:12px;margin-bottom:16px;object-fit:contain}.projects_page___NjIq .overview-container{display:flex;justify-content:center;align-items:center;padding:clamp(12px,3vw,32px);margin:32px 0;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:16px}.projects_page___NjIq .overview-img{display:block;width:100%;max-width:960px;height:auto;max-height:640px;border-radius:6px;object-fit:contain}.projects_page___NjIq .overview-img.unset{aspect-ratio:unset;width:80%;max-width:80%}.projects_page___NjIq .code-accordion{display:grid;grid-gap:10px;gap:10px;margin:16px 0 0}.projects_page___NjIq .code-accordion-item{min-width:0;background:var(--surface);border:1px solid var(--border-soft);border-radius:12px;overflow:hidden}.projects_page___NjIq .theory-item>.code-accordion,.projects_page___NjIq .theory-item>.code-accordion-item,.projects_page___NjIq .two-column-grid>*>.code-accordion-item{margin-top:auto}.projects_page___NjIq .code-accordion-header{padding:10px 12px 10px 18px;color:var(--text);display:flex;justify-content:space-between;gap:12px;align-items:center;cursor:pointer;font-size:14px;font-weight:600;list-style:none}.projects_page___NjIq .code-accordion-header:hover{background:var(--surface-2)}.projects_page___NjIq .code-accordion-content{min-width:0;padding:0 .75rem .75rem}.projects_page___NjIq .code-accordion-header::-webkit-details-marker{display:none}.projects_page___NjIq .code-accordion-header:focus-visible{outline:2px solid var(--accent);outline-offset:-4px}.projects_page___NjIq a:focus-visible,.projects_page___NjIq button:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.projects_page___NjIq .code-accordion-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;transition:transform .28s}.projects_page___NjIq .code-accordion-item[open] .code-accordion-icon{transform:rotate(90deg)}.projects_page___NjIq pre{background:#2d2d2d;color:#ccc;padding:1em;margin:.5em 0;overflow:auto;border-radius:8px;-moz-tab-size:4;tab-size:4;line-height:1.5;text-align:left}.projects_page___NjIq pre code{font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;white-space:pre;word-break:normal;word-wrap:normal;font-size:.9rem;color:inherit;background:transparent}.projects_page___NjIq .token.cdata,.projects_page___NjIq .token.comment,.projects_page___NjIq .token.doctype,.projects_page___NjIq .token.prolog{color:#999}.projects_page___NjIq .token.punctuation{color:#ccc}.projects_page___NjIq .token.constant,.projects_page___NjIq .token.deleted,.projects_page___NjIq .token.property,.projects_page___NjIq .token.symbol,.projects_page___NjIq .token.tag{color:#f2777a}.projects_page___NjIq .token.boolean,.projects_page___NjIq .token.number{color:#f08d49}.projects_page___NjIq .token.attr-name,.projects_page___NjIq .token.builtin,.projects_page___NjIq .token.char,.projects_page___NjIq .token.inserted,.projects_page___NjIq .token.selector,.projects_page___NjIq .token.string{color:#a9dc76}.projects_page___NjIq .token.entity,.projects_page___NjIq .token.operator,.projects_page___NjIq .token.url{color:#67cdcc}.projects_page___NjIq .token.atrule,.projects_page___NjIq .token.attr-value,.projects_page___NjIq .token.keyword{color:#cc99cd}.projects_page___NjIq .token.class-name,.projects_page___NjIq .token.function{color:#f8c555}.projects_page___NjIq .flow-steps{display:flex;gap:10px;margin:0;overflow-x:auto}.projects_page___NjIq .flow-step{flex:1 1;min-width:100px;padding:14px 16px;border:1px solid var(--border-soft);border-radius:12px;background:var(--surface)}.projects_page___NjIq .step-num{font-family:monospace;font-size:10px;color:var(--text-dim);margin-bottom:5px}.projects_page___NjIq .step-title{font-size:12px;font-weight:600;margin-bottom:3px}.projects_page___NjIq .step-sub{font-size:11px;color:var(--text-dim);line-height:1.45}.projects_page___NjIq .arch-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:12px;gap:12px;margin:0 0 16px}.projects_page___NjIq .arch-card{border:1px solid var(--border-soft);border-radius:12px;padding:16px 18px;background:var(--surface)}.projects_page___NjIq .arch-card-badge{display:inline-block;font-size:.8rem;font-family:monospace;margin-bottom:8px;font-weight:600;letter-spacing:.02em;color:var(--text)}.projects_page___NjIq .chat-project{overflow-wrap:anywhere}.projects_page___NjIq .chat-project pre code{white-space:pre-wrap;overflow-wrap:anywhere}.projects_page___NjIq .chat-project .theory-content{display:flex;flex-wrap:wrap;gap:1rem}.projects_page___NjIq .chat-project .theory-item{flex:1 1 250px}.projects_page___NjIq .image-carousel{width:100%;max-width:960px;height:480px;margin:0 auto 16px;position:relative;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:16px;overflow:hidden}.projects_page___NjIq .carousel-images{position:absolute;inset:0}.projects_page___NjIq .carousel-image{width:100%;height:100%;object-fit:contain;position:absolute;inset:0;opacity:0;transition:opacity .3s;background:var(--surface-2);border-radius:8px}.projects_page___NjIq .carousel-image.active{opacity:1;z-index:1}.projects_page___NjIq .carousel-btn{position:absolute;top:50%;transform:translateY(-50%);background:#0009;color:white;border:none;width:40px;height:40px;border-radius:50%;font-size:1.5rem;cursor:pointer;z-index:2}.projects_page___NjIq .carousel-btn-prev{left:10px}.projects_page___NjIq .carousel-btn-next{right:10px}.projects_page___NjIq .carousel-status{position:absolute;bottom:6px;left:50%;transform:translateX(-50%);background:#000b;color:white;border-radius:4px;padding:0 8px;z-index:2;font-size:12px}.projects_page___NjIq #unity-container{position:relative;width:960px;max-width:100%;border-radius:16px;overflow:hidden}.projects_page___NjIq #unity-canvas{background:#231f20;display:block;width:100%;height:auto;aspect-ratio:960/600}.projects_page___NjIq #unity-loading-bar,.projects_page___NjIq #unity-warning{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--surface);color:var(--text);padding:1rem;border-radius:6px;width:min(90%,420px)}.projects_page___NjIq #unity-start{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#d1d5db;font-size:13px}.projects_page___NjIq #unity-start .btn-primary{display:inline-flex;align-items:center;gap:8px;border:0;cursor:pointer}.projects_page___NjIq #unity-loading-bar{display:flex;flex-direction:column;align-items:center;gap:12px}.projects_page___NjIq #unity-footer{display:flex;justify-content:space-between;align-items:center;background:var(--surface-2);padding:8px 12px 8px 16px;color:var(--text-strong);font-size:14px;font-weight:600}.projects_page___NjIq #unity-fullscreen-button{height:34px;min-height:0;padding:0 14px;font-size:13px;cursor:pointer}@media (max-width:1000px){.projects_page___NjIq .image-carousel{height:clamp(240px,50vw,480px)}}@media (max-width:768px){.projects_moreProjects__CV_Ut,.projects_page___NjIq .container{padding-inline:20px}.projects_page___NjIq .theory-content,.projects_page___NjIq .two-column-grid{grid-template-columns:1fr}.projects_page___NjIq .info-box{padding:24px 0}}@media (max-width:560px){.projects_page___NjIq .project-story{grid-template-columns:1fr}.projects_page___NjIq .project-story-step{padding:1.25rem}.projects_page___NjIq .flow-steps{flex-wrap:wrap}.projects_page___NjIq .flow-step{min-width:45%}}