@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";:root{--bg-primary:#20312f;--text-primary:#f2f3ef;--text-secondary:#aab8b3;--text-muted:#82938d;--accent:#ff7b50;--accent-hover:#ff936f;--border:#aec8bf33;--border-hover:#aec8bf61;--project-container:1280px;--project-text-column:740px;color:#111;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#fafafa;font-family:Manrope,sans-serif}*{box-sizing:border-box}html{scroll-behavior:auto}body{margin:0}body:has(.project-detail){background:var(--bg-primary)}a{color:inherit;text-decoration:none}.content-section{flex-direction:column;justify-content:center;width:100%;max-width:1180px;margin:0 auto;padding:6rem 2rem 5rem;display:flex;position:relative}.empty-state{color:#77837f;padding:2rem 0}.page-shell{scroll-snap-type:y mandatory;height:100svh;overflow:hidden auto}.snap-section{scroll-snap-align:start;scroll-snap-stop:always;min-height:100svh;position:relative}.topbar svg,.contact-corner svg,.social-links svg,.external-icon,.carousel-controls svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.social-links a{place-items:center;min-width:32px;min-height:32px;display:grid}.social-links svg{stroke-width:1.55px;width:27px;height:27px}.social-links .linkedin-link{color:#0a66c2}.social-links .github-link{color:#24292f}.social-links .email-link{color:#d14836}.social-links .linkedin-link:hover,.social-links .github-link:hover,.social-links .email-link:hover{filter:saturate(1.25)brightness(.85)}.contact-corner{align-items:center;gap:.75rem;font-size:.75rem;display:inline-flex}@keyframes blink{50%{opacity:0}}@keyframes heartbeat{0%,to{opacity:.82;transform:translate(-50%,-50%)scale(1)}8%{opacity:1;transform:translate(-50%,-50%)scale(1.045)}16%{opacity:.82;transform:translate(-50%,-50%)scale(1)}24%{opacity:.98;transform:translate(-50%,-50%)scale(1.028)}38%,to{opacity:.82;transform:translate(-50%,-50%)scale(1)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-orbit,.cursor{animation:none}}@media (width<=700px){.page-shell{scroll-snap-type:y mandatory}.snap-section{min-height:100svh}}.card-date,.project-number{color:#e87352;letter-spacing:.08em;text-transform:uppercase;font:.68rem DM Mono,monospace}.project-card h3,.education-row h3{letter-spacing:-.04em;margin:.5rem 0 .25rem;font-size:1.35rem}.card-company{color:#77837f;margin:0}.project-card p{color:#65716d;margin:0;line-height:1.7}.tags{flex-wrap:wrap;gap:.45rem;margin-top:1.2rem;display:flex}.tags span{color:#77837f;border:1px solid #dce1dd;border-radius:99px;padding:.35rem .65rem;font:.62rem DM Mono,monospace}.hero{background:#fafafa;justify-content:center;min-height:100svh;display:flex;position:relative;overflow:hidden}.topbar{z-index:20;align-items:center;display:flex;position:absolute;top:18px;left:2.2vw;right:4.3vw}.site-utility{z-index:10;pointer-events:none;position:fixed;inset:18px 2.2vw 1.5rem}.site-social-links{pointer-events:auto;align-items:center;gap:1rem;display:flex}.site-social-links a{place-items:center;width:32px;height:32px;transition:transform .2s,filter .2s;display:grid}.site-social-links a:hover{filter:brightness(.8);transform:translateY(-2px)}.site-social-links img{object-fit:contain;width:27px;height:27px}.site-home-link{pointer-events:auto;background:#ffffffe6;border:1px solid #6c98a159;border-radius:50%;place-items:center;width:36px;height:36px;transition:transform .2s,background .2s,box-shadow .2s;display:grid;position:absolute;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 3px 12px #23373717}.site-home-link:hover{background:#e7ede9;transform:translate(-50%,-2px);box-shadow:0 5px 14px #23373724}.site-home-link img{width:17px;height:17px}.social-links{color:#858585;align-items:center;gap:1rem;font:700 1.05rem DM Mono,monospace;display:flex}.social-links a{transition:color .2s,transform .2s}.social-links img{object-fit:contain;width:24px;height:24px;display:block}.social-links a:hover{color:#222;transform:translateY(-2px)}.contact-corner{z-index:21;pointer-events:auto;color:#939393;letter-spacing:.04em;text-transform:uppercase;margin-left:auto;font:500 .68rem DM Mono,monospace;position:relative}.contact-corner img{object-fit:contain;width:18px;height:18px;display:block}.hero-orbit{border:1px solid #87878721;border-radius:50%;animation:4.8s ease-in-out infinite heartbeat;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.orbit-one{aspect-ratio:1;width:min(115vw,1180px);animation-delay:-.7s}.orbit-two{aspect-ratio:1;border-color:#69919b4d;width:min(83vw,860px);animation-duration:4.8s;animation-delay:-.25s}.orbit-three{aspect-ratio:1;border-color:#87878726;width:min(57vw,590px);animation-duration:4.8s;animation-delay:0s}.hero-content{z-index:1;text-align:center;align-self:center;max-width:900px;margin-top:-1rem;padding:5rem 1.5rem 2rem}.avatar{object-fit:cover;object-position:center 22%;border:0;border-radius:50%;width:122px;height:122px;margin:0 auto 1.8rem;display:block;box-shadow:0 0 0 1px #8282821f}.eyebrow{color:#78818b;letter-spacing:.48em;text-transform:uppercase;margin:0;font:500 .7rem/1.3 DM Mono,monospace}h1{color:#050505;letter-spacing:-.07em;min-height:1.15em;margin:.6rem -1rem 1.15rem;font-size:clamp(2.7rem,5.5vw,4.8rem);font-weight:800;line-height:1.08}.cursor{vertical-align:-.08em;background:#d4e9e7;width:.06em;height:.85em;margin-left:.12em;animation:1s step-end infinite blink;display:inline-block}.hero-navigation{flex-wrap:wrap;justify-content:center;gap:.7rem;margin:0 auto;display:flex}.hero-navigation a{color:#4f5d66;letter-spacing:.05em;text-transform:uppercase;background:#ffffffb8;border:1px solid #b8c4c7;border-radius:999px;padding:.65rem 1rem;font:500 .68rem DM Mono,monospace;transition:color .2s,border-color .2s,background .2s,transform .2s,box-shadow .2s;box-shadow:0 3px 10px #32464b12}.hero-navigation a:hover{color:#203f46;background:#fff;border-color:#6c98a1;transform:translateY(-2px);box-shadow:0 6px 14px #32464b21}.section-home{z-index:2;background:#ffffffe6;border:1px solid #6c98a159;border-radius:50%;place-items:center;width:36px;height:36px;padding:0;transition:transform .2s,background .2s,box-shadow .2s;display:grid;position:absolute;bottom:1rem;left:50%;transform:translate(-50%);box-shadow:0 3px 12px #23373717}.page-shell .section-home{display:none}.section-home:hover{background:#e7ede9;transform:translate(-50%,-2px);box-shadow:0 5px 14px #23373724}.section-home img{object-fit:contain;width:17px;height:17px;display:block}@media (width<=700px){.site-home-link,.section-home{display:none}.topbar{top:22px;left:1.5rem;right:1.5rem}.site-utility{inset:22px 1.5rem 1.5rem}.site-social-links,.social-links{gap:.9rem}.hero-content{padding-top:5rem}.hero-orbit{opacity:.7}.orbit-one{width:140vw}.orbit-two{width:105vw}.orbit-three{width:72vw}.hero-navigation{gap:.35rem .9rem;max-width:340px}.hero-navigation a{font-size:.6rem}}.content-section.about-section{grid-template-columns:minmax(0,2fr) minmax(0,2.4fr);align-items:center;column-gap:clamp(2rem,4vw,4rem);width:100%;max-width:1350px;margin:0 auto;padding:5rem 2rem 5.5rem;display:grid;position:relative}.about-visual{min-width:0}.about-photo{object-fit:cover;object-position:center 38%;border-radius:6px;width:100%;max-width:430px;height:clamp(250px,31vw,410px);margin-top:1.5rem;display:block}.about-section .section-heading{min-width:0}.about-section .section-heading h2{letter-spacing:-.07em;margin:.9rem 0 0;font-size:clamp(2.3rem,4vw,4rem);line-height:1.05}.about-section .section-heading h2 em{color:#e87352;font-style:normal}.about-copy{color:#676571;text-align:justify;width:100%;min-width:0;max-width:54ch;margin-top:8rem;padding:1rem 0 0;font-size:1.125rem;font-weight:500;line-height:1.6}.about-copy-mobile{display:none}@media (width<=1100px){.content-section.about-section{grid-template-columns:.9fr 1.1fr;column-gap:3rem;max-width:1050px}.about-copy{font-size:1rem}}@media (width<=950px){.content-section.about-section{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);column-gap:2rem;padding-left:1.5rem;padding-right:1.5rem}.about-copy{font-size:1rem;line-height:1.6}.about-photo{max-width:100%;height:clamp(230px,34vw,340px)}}@media (width<=700px){.content-section.about-section{width:100%;max-width:100%;padding:5rem 1.5rem;display:block}.about-photo{height:min(78vw,360px);margin-top:1.25rem}.about-copy{margin-top:2rem;font-size:1rem;line-height:1.65}.about-copy-desktop{display:none}.about-copy-mobile{display:block}}.about-copy br+br{line-height:.65}.experience-section{overflow:hidden}.experience-section .section-heading{text-align:center;align-items:center}.experience-section .section-heading .eyebrow{color:#687483;letter-spacing:.48em;font-size:clamp(1.35rem,3vw,2.15rem);font-weight:500}.experience-carousel{margin-top:2.5rem;position:relative}.carousel-controls{gap:.5rem;display:flex;position:absolute;top:-3.5rem;right:0}.carousel-controls button{color:#52615d;cursor:pointer;background:0 0;border:1px solid #cfd8d3;border-radius:50%;place-items:center;width:42px;height:42px;transition:background .2s,color .2s;display:grid}.carousel-controls button:hover{color:#fff;background:#20312f}.experience-rail{scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:#aab8b2 transparent;gap:1rem;padding:.5rem 0 1.5rem;display:flex;overflow-x:auto}.experience-rail:focus-visible{outline-offset:5px;outline:2px solid #e87352}.experience-card{scroll-snap-align:start;background:linear-gradient(135deg,#f5fbfc 0%,#e6f0f2 58%,#dce8eb 100%);border:1px solid #c9d7dabf;border-radius:22px;flex-direction:column;flex:0 0 min(47vw,665px);min-height:445px;padding:1.8rem 3.2rem 2rem;display:flex;box-shadow:0 15px 20px #2a363a1f}.experience-card-header{justify-content:space-between;align-items:start;min-height:92px;display:flex}.experience-card-header .external-icon{color:#5a9da4}.company-mark{color:#173a58;letter-spacing:-.12em;background:#fff;border-radius:50%;place-items:center;width:86px;height:86px;font-size:1.3rem;font-weight:800;display:grid;box-shadow:0 2px 10px #364d531a}.company-logo{object-fit:contain;background:#fff;border-radius:50%;width:86px;height:86px;box-shadow:0 2px 10px #364d531a}.experience-card h3{color:#111;letter-spacing:-.06em;margin:1.2rem 0 .25rem;font-size:clamp(1.5rem,2.2vw,2rem)}.experience-card .card-company{color:#59a99e;font-size:1.15rem;font-weight:800}.experience-tags{margin-top:.75rem}.experience-tags span{color:#65717b;background:#ffffffb8;border-color:#0000;font-size:.6rem}.experience-card .card-date{color:#6e7a89;margin:1.2rem 0 .8rem;font-size:.68rem}.experience-description{color:#171717;gap:.55rem;margin:0;padding-left:1.15rem;font-size:.85rem;line-height:1.55;display:grid}.experience-description li::marker{font-size:.65rem}@media (width<=700px){.carousel-controls{justify-content:flex-end;margin-bottom:.25rem;position:static}.experience-carousel{margin-top:1rem}.experience-card{flex-basis:84vw;min-height:360px}}.projects-section{background:var(--bg-primary);max-width:none;color:var(--text-primary);padding-left:max(2rem,50% - 590px);padding-right:max(2rem,50% - 590px)}.projects-section .eyebrow{color:var(--text-muted)}.projects-section h2{color:var(--text-primary)}.project-rail{scroll-snap-type:x proximity;scrollbar-color:#58736c transparent;scrollbar-width:thin;grid-auto-columns:minmax(min(78vw,520px),1fr);grid-auto-flow:column;gap:1rem;margin-top:3.5rem;padding-bottom:1rem;display:grid;overflow-x:auto}.project-carousel{position:relative}.project-controls{display:none}.project-controls button{border:1px solid var(--border);width:42px;height:42px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:50%;place-items:center;display:grid}.project-controls svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.project-rail:focus-visible{outline:2px solid var(--accent);outline-offset:6px}.project-card{border:1px solid var(--border);scroll-snap-align:start;min-height:270px;color:inherit;flex-direction:column;justify-content:space-between;padding:2rem;text-decoration:none;transition:background .2s,transform .2s;display:flex}.project-card:hover{background:#2b4440;transform:translateY(-4px)}.project-card h3{font-size:1.75rem}.project-card p{color:var(--text-secondary)}.project-card .tags span{border-color:var(--border);color:var(--text-secondary)}.project-footer{justify-content:space-between;align-items:end;display:flex}.project-cta{border:1px solid var(--accent);color:var(--accent);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;border-radius:4px;justify-content:center;align-items:center;padding:.55rem .8rem;font-size:.72rem;font-weight:700;line-height:1;transition:background-color .2s,color .2s,transform .2s;display:inline-flex}.project-card:hover .project-cta{background:var(--accent);color:var(--bg-primary)}.project-detail{width:min(100%, var(--project-container));background:var(--bg-primary);min-height:100vh;color:var(--text-primary);margin:0 auto;padding:4rem 3rem 6rem}.project-detail .eyebrow{color:var(--text-muted)}.project-detail-nav{z-index:2;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#20312ff0;justify-content:space-between;align-items:center;gap:1rem;min-height:52px;margin:-4rem -3rem 0;padding:0 3rem;display:flex;position:sticky;top:0}.project-back{color:var(--text-muted);cursor:pointer;background:0 0;border:0;padding:0;font-size:1rem}.project-detail-nav-links{align-items:center;gap:1.25rem;display:flex}.project-detail-nav-links button,.project-detail-nav-links a{color:var(--text-muted);cursor:pointer;letter-spacing:.06em;text-transform:uppercase;background:0 0;border:0;padding:0;font:.75rem DM Mono,monospace}.project-detail-nav-links button:hover,.project-detail-nav-links a:hover{color:var(--accent-hover)}.project-back:focus-visible,.project-detail-nav-links button:focus-visible,.project-detail-nav-links a:focus-visible,.project-github:focus-visible,.project-pagination button:focus-visible,.project-card:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.project-detail-header{max-width:var(--project-text-column);padding:7rem 0 5rem}.project-hero-topline{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.project-detail-header h1{max-width:850px;color:var(--text-primary);letter-spacing:-.08em;margin:.75rem 0 1.5rem;font-size:clamp(3rem,8vw,7rem);line-height:.95}.project-lede{max-width:700px;color:var(--text-secondary);font-size:clamp(1.25rem,2.1vw,1.6rem);line-height:1.6}.project-meta{border-top:1px solid var(--border);border-bottom:1px solid var(--border);color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.5rem;margin:2.25rem 0;padding:1.25rem 0;font-size:.8rem;display:grid}.project-meta div{flex-direction:column;gap:.35rem;display:flex}.project-meta strong{color:var(--text-secondary);letter-spacing:.02em;text-transform:none;font:400 .8rem/1.5 DM Mono,monospace}.project-github{color:var(--accent);border-bottom:1px solid;align-items:center;gap:.55rem;padding-bottom:.4rem;font-weight:700;transition:color .2s;display:inline-flex}.project-github-label{position:relative}.project-github-label:after{content:"";transform-origin:0;background:currentColor;height:1px;transition:transform .25s;position:absolute;bottom:-.4rem;left:0;right:0;transform:scaleX(.35)}.project-github:hover{color:var(--accent-hover)}.project-github:hover .project-github-label:after{transform:scaleX(1)}.project-detail-body{width:100%}.project-detail-layout{width:100%;max-width:var(--project-container)}.project-detail-section{border-top:1px solid var(--border);padding:2.5rem 0}.project-text-section,.project-detail-section[aria-labelledby=challenge-heading],.project-detail-section[aria-labelledby=outcome-heading]{max-width:var(--project-text-column)}.project-detail-section h2{color:var(--text-primary);text-transform:uppercase;letter-spacing:.08em;margin:0 0 1rem;font-size:1.2rem}.project-detail-section p,.project-detail-section li{color:var(--text-secondary);font-size:1rem;line-height:1.8}.project-text-section p{white-space:pre-line}.project-detail-section ul{margin:0;padding-left:1.2rem}.challenge-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.challenge-card{border:1px solid var(--border);min-width:0;padding:1.25rem}.challenge-number{color:var(--accent);letter-spacing:.08em;margin-bottom:1.25rem;font:.8rem DM Mono,monospace;display:block}.challenge-card h3{color:var(--text-primary);margin:0 0 1.25rem;font-size:1.1rem}.challenge-card div+div{margin-top:1rem}.challenge-card strong{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font:.75rem DM Mono,monospace}.challenge-card p{color:var(--text-secondary);margin:.35rem 0 0;font-size:.9rem;line-height:1.6}.project-pipeline{grid-template-columns:repeat(4,1fr);gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.project-pipeline li{border:1px solid var(--border);flex-direction:column;justify-content:space-between;gap:1rem;min-height:120px;padding:1rem;display:flex;position:relative}.project-pipeline li:not(:last-child):after{content:"→";color:var(--accent);line-height:1;position:absolute;top:50%;right:-.7rem;transform:translateY(-50%)}.project-pipeline li span{color:var(--accent);font:.8rem DM Mono,monospace}.project-pipeline strong{color:var(--text-primary);font-size:1rem;line-height:1.35}.project-pipeline p{color:var(--text-secondary);text-align:justify;margin:0;font-size:.88rem;line-height:1.55}.stack-groups{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.stack-group{border:1px solid var(--border);padding:1rem}.stack-group h3{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .5rem;font-size:.8rem}.stack-group p{color:var(--text-secondary);margin:0;font-size:.9rem;line-height:1.5}.stack-group .tags{margin-top:.85rem}.stack-group .tags span{padding:.35rem .6rem;font-size:.72rem}.project-pagination{max-width:var(--project-container);border:1px solid var(--border);justify-content:space-between;gap:0;margin-top:4rem;display:flex}.project-pagination-link{width:50%;min-height:108px;color:var(--text-primary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;padding:1.5rem;transition:background .2s,color .2s}.project-pagination-link+.project-pagination-link{border-left:1px solid var(--border)}.project-pagination-next{text-align:right}.project-pagination-link>span{flex-direction:column;gap:.35rem;display:inline-flex}.project-pagination small{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem}.project-pagination-link:hover{color:var(--accent-hover);background:#aec8bf0f}.project-pagination-icon{background-color:var(--accent);flex:0 0 22px;width:22px;height:22px;transition:transform .2s;display:inline-block;transform:translateY(7px);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.project-pagination-previous:hover .project-pagination-icon{transform:translate(-3px,7px)}.project-pagination-next:hover .project-pagination-icon{transform:translate(3px,7px)}.project-pagination-icon-previous{-webkit-mask-image:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%2020010904//EN'%20'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'%3e%3csvg%20version='1.0'%20xmlns='http://www.w3.org/2000/svg'%20width='360.000000pt'%20height='360.000000pt'%20viewBox='0%200%20360.000000%20360.000000'%20preserveAspectRatio='xMidYMid%20meet'%3e%3cg%20transform='translate(0.000000,360.000000)%20scale(0.100000,-0.100000)'%20fill='%23000000'%20stroke='none'%3e%3cpath%20d='M1606%202954%20c-190%20-36%20-393%20-140%20-548%20-283%20-216%20-199%20-358%20-522%20-358%20-816%200%20-89%2024%20-247%2051%20-339%2093%20-312%20345%20-586%20655%20-711%20144%20-58%20251%20-79%20414%20-79%20252%20-1%20459%2063%20659%20204%20271%20192%20443%20494%20469%20828%204%2049%204%20104%200%20120%20-18%2070%20-116%2097%20-170%2047%20-27%20-25%20-28%20-27%20-43%20-192%20-12%20-128%20-74%20-290%20-156%20-410%20-53%20-76%20-167%20-186%20-251%20-241%20-368%20-239%20-842%20-188%20-1152%20124%20-244%20247%20-326%20603%20-215%20938%2095%20286%20349%20520%20648%20595%20124%2031%20314%2030%20443%20-3%20223%20-57%20411%20-191%20545%20-391%2050%20-74%2062%20-85%20105%20-91%2047%20-7%2094%2024%20109%2074%2010%2036%209%2044%20-14%2091%20-118%20233%20-415%20454%20-712%20527%20-97%2023%20-372%2028%20-479%208z'/%3e%3cpath%20d='M1853%202201%20c-327%20-273%20-363%20-317%20-333%20-403%2012%20-34%2040%20-65%20145%20-157%20239%20-209%20241%20-211%20289%20-211%2071%200%20118%2068%2093%20137%20-8%2022%20-56%2070%20-147%20148%20-74%2064%20-135%20120%20-135%20124%200%205%2061%2061%20135%20125%20145%20126%20169%20160%20149%20214%20-19%2050%20-48%2072%20-95%2072%20-37%200%20-51%20-7%20-101%20-49z'/%3e%3c/g%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%2020010904//EN'%20'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'%3e%3csvg%20version='1.0'%20xmlns='http://www.w3.org/2000/svg'%20width='360.000000pt'%20height='360.000000pt'%20viewBox='0%200%20360.000000%20360.000000'%20preserveAspectRatio='xMidYMid%20meet'%3e%3cg%20transform='translate(0.000000,360.000000)%20scale(0.100000,-0.100000)'%20fill='%23000000'%20stroke='none'%3e%3cpath%20d='M1606%202954%20c-190%20-36%20-393%20-140%20-548%20-283%20-216%20-199%20-358%20-522%20-358%20-816%200%20-89%2024%20-247%2051%20-339%2093%20-312%20345%20-586%20655%20-711%20144%20-58%20251%20-79%20414%20-79%20252%20-1%20459%2063%20659%20204%20271%20192%20443%20494%20469%20828%204%2049%204%20104%200%20120%20-18%2070%20-116%2097%20-170%2047%20-27%20-25%20-28%20-27%20-43%20-192%20-12%20-128%20-74%20-290%20-156%20-410%20-53%20-76%20-167%20-186%20-251%20-241%20-368%20-239%20-842%20-188%20-1152%20124%20-244%20247%20-326%20603%20-215%20938%2095%20286%20349%20520%20648%20595%20124%2031%20314%2030%20443%20-3%20223%20-57%20411%20-191%20545%20-391%2050%20-74%2062%20-85%20105%20-91%2047%20-7%2094%2024%20109%2074%2010%2036%209%2044%20-14%2091%20-118%20233%20-415%20454%20-712%20527%20-97%2023%20-372%2028%20-479%208z'/%3e%3cpath%20d='M1853%202201%20c-327%20-273%20-363%20-317%20-333%20-403%2012%20-34%2040%20-65%20145%20-157%20239%20-209%20241%20-211%20289%20-211%2071%200%20118%2068%2093%20137%20-8%2022%20-56%2070%20-147%20148%20-74%2064%20-135%20120%20-135%20124%200%205%2061%2061%20135%20125%20145%20126%20169%20160%20149%20214%20-19%2050%20-48%2072%20-95%2072%20-37%200%20-51%20-7%20-101%20-49z'/%3e%3c/g%3e%3c/svg%3e")}.project-pagination-icon-next{-webkit-mask-image:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%2020010904//EN'%20'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'%3e%3csvg%20version='1.0'%20xmlns='http://www.w3.org/2000/svg'%20width='360.000000pt'%20height='360.000000pt'%20viewBox='0%200%20360.000000%20360.000000'%20preserveAspectRatio='xMidYMid%20meet'%3e%3cg%20transform='translate(0.000000,360.000000)%20scale(0.100000,-0.100000)'%20fill='%23000000'%20stroke='none'%3e%3cpath%20d='M1670%202875%20c-8%20-2%20-49%20-9%20-90%20-15%20-439%20-71%20-805%20-418%20-905%20-857%20-25%20-109%20-34%20-252%20-20%20-289%2027%20-66%20115%20-87%20167%20-39%2027%2025%2028%2027%2043%20192%2012%20128%2074%20290%20156%20410%2053%2076%20167%20186%20251%20241%20368%20239%20842%20188%201152%20-124%20499%20-504%20254%20-1361%20-439%20-1534%20-79%20-20%20-107%20-22%20-240%20-17%20-173%206%20-248%2023%20-378%2088%20-152%2077%20-265%20178%20-364%20324%20-50%2074%20-62%2085%20-105%2091%20-47%207%20-94%20-24%20-109%20-74%20-10%20-35%20-9%20-44%2013%20-89%2073%20-145%20248%20-316%20425%20-416%20156%20-88%20304%20-128%20505%20-134%20263%20-9%20466%2047%20673%20187%20243%20165%20411%20420%20477%20725%2016%2077%2016%20332%20-1%20410%20-50%20235%20-142%20412%20-298%20575%20-152%20160%20-324%20258%20-552%20317%20-89%2022%20-313%2040%20-361%2028z'/%3e%3cpath%20d='M1578%202143%20c-14%20-16%20-28%20-39%20-31%20-53%20-11%20-52%2014%20-86%20153%20-205%2074%20-64%20136%20-119%20137%20-123%201%20-4%20-61%20-61%20-138%20-127%20-153%20-132%20-170%20-158%20-145%20-220%2018%20-43%2052%20-65%2098%20-65%2041%200%2050%207%20283%20211%20105%2092%20133%20123%20145%20157%2026%2075%206%20108%20-145%20241%20-239%20209%20-241%20211%20-289%20211%20-33%200%20-48%20-6%20-68%20-27z'/%3e%3c/g%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%2020010904//EN'%20'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'%3e%3csvg%20version='1.0'%20xmlns='http://www.w3.org/2000/svg'%20width='360.000000pt'%20height='360.000000pt'%20viewBox='0%200%20360.000000%20360.000000'%20preserveAspectRatio='xMidYMid%20meet'%3e%3cg%20transform='translate(0.000000,360.000000)%20scale(0.100000,-0.100000)'%20fill='%23000000'%20stroke='none'%3e%3cpath%20d='M1670%202875%20c-8%20-2%20-49%20-9%20-90%20-15%20-439%20-71%20-805%20-418%20-905%20-857%20-25%20-109%20-34%20-252%20-20%20-289%2027%20-66%20115%20-87%20167%20-39%2027%2025%2028%2027%2043%20192%2012%20128%2074%20290%20156%20410%2053%2076%20167%20186%20251%20241%20368%20239%20842%20188%201152%20-124%20499%20-504%20254%20-1361%20-439%20-1534%20-79%20-20%20-107%20-22%20-240%20-17%20-173%206%20-248%2023%20-378%2088%20-152%2077%20-265%20178%20-364%20324%20-50%2074%20-62%2085%20-105%2091%20-47%207%20-94%20-24%20-109%20-74%20-10%20-35%20-9%20-44%2013%20-89%2073%20-145%20248%20-316%20425%20-416%20156%20-88%20304%20-128%20505%20-134%20263%20-9%20466%2047%20673%20187%20243%20165%20411%20420%20477%20725%2016%2077%2016%20332%20-1%20410%20-50%20235%20-142%20412%20-298%20575%20-152%20160%20-324%20258%20-552%20317%20-89%2022%20-313%2040%20-361%2028z'/%3e%3cpath%20d='M1578%202143%20c-14%20-16%20-28%20-39%20-31%20-53%20-11%20-52%2014%20-86%20153%20-205%2074%20-64%20136%20-119%20137%20-123%201%20-4%20-61%20-61%20-138%20-127%20-153%20-132%20-170%20-158%20-145%20-220%2018%20-43%2052%20-65%2098%20-65%2041%200%2050%207%20283%20211%20105%2092%20133%20123%20145%20157%2026%2075%206%20108%20-145%20241%20-239%20209%20-241%20211%20-289%20211%20-33%200%20-48%20-6%20-68%20-27z'/%3e%3c/g%3e%3c/svg%3e")}.project-pagination-previous:hover{transform:translate(-4px)}.project-pagination-next:hover{transform:translate(4px)}.project-github-bottom{margin-top:3rem;font-size:1.1rem}@media (prefers-reduced-motion:reduce){.project-card{transition:none}}@media (width<=900px){.project-detail{padding-inline:2rem}.project-detail-nav{margin-inline:-2rem;padding-inline:2rem}}.external-icon{fill:none;width:21px;height:21px;stroke:var(--accent);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}@media (width<=700px){.content-section,.projects-section{padding-top:5rem;padding-bottom:5rem}.project-controls{justify-content:flex-end;gap:.5rem;margin:1rem 0 .25rem;display:flex}.project-rail{grid-auto-columns:86vw;margin-top:0}.project-card{min-height:235px}.project-detail{width:100%;padding:2rem 1.25rem 4rem}.project-detail-nav{margin:-2rem -1.25rem 0;padding-inline:1.25rem}.project-detail-nav-links{gap:.85rem}.project-detail-header{padding:5rem 0 3rem}.project-detail-header h1{font-size:clamp(2.8rem,15vw,5rem)}.project-hero-topline{flex-direction:column;align-items:flex-start;gap:.5rem}.project-pipeline{grid-template-columns:1fr;gap:1.5rem}.project-pipeline li:not(:last-child):after{content:"↓";top:auto;bottom:-.95rem;right:50%;transform:translate(50%)}.stack-groups{grid-template-columns:1fr;gap:.75rem}.challenge-grid{grid-template-columns:1fr}.project-pagination{margin-top:2rem}.project-pagination-link{width:50%;min-height:108px;padding:1rem .75rem}.project-pagination-link+.project-pagination-link{border-left:1px solid var(--border)}.project-meta{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.project-card,.project-cta,.project-github,.project-github-label:after,.project-pagination-link{transition:none}}.project-github-icon{background-color:currentColor;flex:0 0 18px;width:18px;height:18px;transition:transform .2s;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20version='1.1'%20width='256'%20height='256'%20viewBox='0%200%20256%20256'%20xml:space='preserve'%3e%3cg%20style='stroke:%20none;%20stroke-width:%200;%20stroke-dasharray:%20none;%20stroke-linecap:%20butt;%20stroke-linejoin:%20miter;%20stroke-miterlimit:%2010;%20fill:%20none;%20fill-rule:%20nonzero;%20opacity:%201;'%20transform='translate(1.4065934065934016%201.4065934065934016)%20scale(2.81%202.81)'%3e%3cpath%20d='M%2045%200%20C%2020.147%200%200%2020.467%200%2045.714%20C%200%2067.034%2014.367%2084.944%2033.802%2090%20c%20-0.013%20-5.283%20-0.03%20-11.763%20-0.04%20-13.782%20c%20-12.986%202.869%20-15.726%20-5.595%20-15.726%20-5.595%20c%20-2.123%20-5.481%20-5.183%20-6.939%20-5.183%20-6.939%20c%20-4.236%20-2.943%200.319%20-2.883%200.319%20-2.883%20c%204.687%200.334%207.156%204.887%207.156%204.887%20c%204.163%207.249%2010.92%205.153%2013.584%203.942%20c%200.419%20-3.064%201.628%20-5.157%202.964%20-6.341%20c%20-10.368%20-1.199%20-21.268%20-5.265%20-21.268%20-23.435%20c%200%20-5.177%201.824%20-9.407%204.81%20-12.728%20c%20-0.485%20-1.195%20-2.083%20-6.018%200.452%20-12.55%20c%200%200%203.92%20-1.274%2012.84%204.861%20c%203.724%20-1.051%207.717%20-1.578%2011.684%20-1.596%20c%203.967%200.018%207.963%200.545%2011.694%201.596%20c%208.91%20-6.135%2012.824%20-4.861%2012.824%20-4.861%20c%202.541%206.532%200.943%2011.355%200.458%2012.55%20c%202.993%203.321%204.804%207.551%204.804%2012.728%20c%200%2018.214%20-10.92%2022.223%20-21.315%2023.398%20c%201.674%201.472%203.166%204.357%203.166%208.781%20c%200%203.513%20-0.016%2011.601%20-0.031%2017.74%20C%2076.021%2084.439%2090%2066.74%2090%2045.714%20C%2090%2020.467%2069.853%200%2045%200%20z'%20style='stroke:%20none;%20stroke-width:%201;%20stroke-dasharray:%20none;%20stroke-linecap:%20butt;%20stroke-linejoin:%20miter;%20stroke-miterlimit:%2010;%20fill:%20rgb(0,0,0);%20fill-rule:%20nonzero;%20opacity:%201;'%20transform='%20matrix(1%200%200%201%200%200)%20'%20stroke-linecap='round'/%3e%3c/g%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20version='1.1'%20width='256'%20height='256'%20viewBox='0%200%20256%20256'%20xml:space='preserve'%3e%3cg%20style='stroke:%20none;%20stroke-width:%200;%20stroke-dasharray:%20none;%20stroke-linecap:%20butt;%20stroke-linejoin:%20miter;%20stroke-miterlimit:%2010;%20fill:%20none;%20fill-rule:%20nonzero;%20opacity:%201;'%20transform='translate(1.4065934065934016%201.4065934065934016)%20scale(2.81%202.81)'%3e%3cpath%20d='M%2045%200%20C%2020.147%200%200%2020.467%200%2045.714%20C%200%2067.034%2014.367%2084.944%2033.802%2090%20c%20-0.013%20-5.283%20-0.03%20-11.763%20-0.04%20-13.782%20c%20-12.986%202.869%20-15.726%20-5.595%20-15.726%20-5.595%20c%20-2.123%20-5.481%20-5.183%20-6.939%20-5.183%20-6.939%20c%20-4.236%20-2.943%200.319%20-2.883%200.319%20-2.883%20c%204.687%200.334%207.156%204.887%207.156%204.887%20c%204.163%207.249%2010.92%205.153%2013.584%203.942%20c%200.419%20-3.064%201.628%20-5.157%202.964%20-6.341%20c%20-10.368%20-1.199%20-21.268%20-5.265%20-21.268%20-23.435%20c%200%20-5.177%201.824%20-9.407%204.81%20-12.728%20c%20-0.485%20-1.195%20-2.083%20-6.018%200.452%20-12.55%20c%200%200%203.92%20-1.274%2012.84%204.861%20c%203.724%20-1.051%207.717%20-1.578%2011.684%20-1.596%20c%203.967%200.018%207.963%200.545%2011.694%201.596%20c%208.91%20-6.135%2012.824%20-4.861%2012.824%20-4.861%20c%202.541%206.532%200.943%2011.355%200.458%2012.55%20c%202.993%203.321%204.804%207.551%204.804%2012.728%20c%200%2018.214%20-10.92%2022.223%20-21.315%2023.398%20c%201.674%201.472%203.166%204.357%203.166%208.781%20c%200%203.513%20-0.016%2011.601%20-0.031%2017.74%20C%2076.021%2084.439%2090%2066.74%2090%2045.714%20C%2090%2020.467%2069.853%200%2045%200%20z'%20style='stroke:%20none;%20stroke-width:%201;%20stroke-dasharray:%20none;%20stroke-linecap:%20butt;%20stroke-linejoin:%20miter;%20stroke-miterlimit:%2010;%20fill:%20rgb(0,0,0);%20fill-rule:%20nonzero;%20opacity:%201;'%20transform='%20matrix(1%200%200%201%200%200)%20'%20stroke-linecap='round'/%3e%3c/g%3e%3c/svg%3e");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.project-github:hover .project-github-icon{transform:translateY(-1px)}.project-nav-github{align-items:center;gap:.4rem;display:inline-flex}.project-nav-github .project-github-icon{flex:0 0 14px;width:14px;height:14px}.skills-section{max-width:1060px;height:100svh;min-height:100svh;padding-top:4.5rem;padding-bottom:4.5rem}.skills-section .section-heading h2{letter-spacing:-.07em;margin:.75rem 0 .45rem;font-size:clamp(2.3rem,4vw,3.8rem)}.skills-intro{color:#69716f;margin:0;font-size:clamp(.95rem,1.5vw,1.15rem)}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:2.5rem;display:grid}.skill-category{background:#ffffff75;border:1px solid #d2d6d4;border-radius:20px;min-height:220px;padding:1.55rem 1.8rem 1.45rem;transition:transform .2s,background .2s,border-color .2s,box-shadow .2s}.skill-category:hover{background:#fff1e6;border-color:#e1b48e;transform:translateY(-3px);box-shadow:0 12px 24px #d6a07533}.skill-category-number{color:#111;margin:0;font:.78rem DM Mono,monospace}.skill-category h3{color:#080808;letter-spacing:-.06em;margin:.8rem 0 .85rem;font-size:clamp(1.35rem,2vw,1.7rem)}.skill-category-tags{flex-wrap:wrap;gap:.45rem;display:flex}.skill-category-tags span{color:#242725;border:1px solid #d0d3d1;border-radius:99px;padding:.42rem .72rem;font-size:.82rem}.skill-category-description{color:#1d211f;margin:1.05rem 0 0;font-size:.83rem;line-height:1.45}@media (width<=700px){.skills-section{height:auto;min-height:100svh;padding-bottom:5rem}.skills-grid{grid-template-columns:1fr;margin-top:2.25rem}.skill-category{min-height:0}}.education-section{padding-bottom:9rem}.education-row{border-top:1px solid #dce1dd;justify-content:space-between;align-items:center;padding:1.5rem 0;display:flex}.education-row p{color:#77837f;font-size:.85rem}@media (width<=700px){.education-row{display:block}.education-row>p{margin-top:1rem}}.contact-section{background:#e7ede9;grid-template-columns:minmax(220px,.75fr) minmax(320px,1fr);align-content:center;gap:4rem;padding:6rem max(2rem,50% - 590px) 5rem;display:grid;position:relative}.contact-copy p{color:#77837f;letter-spacing:.15em;text-transform:uppercase;font:.72rem DM Mono,monospace}.contact-copy h2{letter-spacing:-.08em;margin:1rem 0 0;font-size:clamp(2.5rem,5vw,4.8rem);line-height:.98}.contact-copy h2 span{color:#e87352;vertical-align:middle;align-items:center;display:inline-flex}.contact-chat-icon{width:clamp(1.1rem,2vw,1.7rem);height:auto;display:block;transform:translateY(-.08em)}.contact-form{gap:1rem;display:grid}.form-row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.contact-form label{color:#52615d;letter-spacing:.08em;text-transform:uppercase;gap:.45rem;font:.65rem DM Mono,monospace;display:grid}.contact-form input,.contact-form textarea{color:#192322;letter-spacing:normal;text-transform:none;resize:vertical;background:#ffffffa6;border:1px solid #c3d0ca;border-radius:8px;width:100%;padding:.85rem 1rem;font:.9rem Manrope,sans-serif}.contact-form input:focus,.contact-form textarea:focus{border-color:#6c98a1;outline:2px solid #6c98a166}.contact-form button{color:#fff;cursor:pointer;text-transform:uppercase;background:#20312f;border:0;border-radius:999px;justify-self:start;padding:.85rem 1.25rem;font:600 .72rem DM Mono,monospace;transition:transform .2s,background .2s}.contact-form button:hover{background:#e87352;transform:translateY(-2px)}.contact-toast{z-index:10;color:#20312f;border:1px solid;border-radius:10px;align-items:center;gap:.75rem;width:min(100vw - 3rem,420px);padding:.9rem 1rem;animation:.25s ease-out contact-toast-in;display:flex;position:fixed;top:1.5rem;right:1.5rem;box-shadow:0 12px 30px #20312f29}.contact-toast.success{background:#eff8f1;border-color:#a8c9b5}.contact-toast.error{background:#fff3ef;border-color:#e6b4a5}.contact-toast-icon{color:#fff;background:#3b8c5a;border-radius:50%;flex:0 0 1.4rem;place-items:center;width:1.4rem;height:1.4rem;font:700 .8rem DM Mono,monospace;display:grid}.contact-toast.error .contact-toast-icon{background:#d65d3c}.contact-toast p{flex:1;margin:0;font-size:.78rem;line-height:1.45}.contact-toast button{color:#77837f;cursor:pointer;background:0 0;border:0;padding:.1rem;font-size:1.25rem;line-height:1}@keyframes contact-toast-in{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}.contact-section small{color:#8d9894;text-align:center;grid-column:1/-1;margin-top:2rem;font:.65rem DM Mono,monospace;display:block}@media (width<=700px){.contact-section{padding-top:5rem;display:block}.contact-copy h2{margin-bottom:2rem}.form-row{grid-template-columns:1fr}.contact-section small{margin-top:3rem}.contact-toast{width:calc(100vw - 2rem);top:1rem;right:1rem}}.chat-widget{z-index:50;font-family:Manrope,sans-serif;position:fixed;bottom:1.5rem;right:1.5rem}.chat-launcher{color:#fff;cursor:pointer;background:#20312f;border:0;border-radius:50%;place-items:center;width:3.5rem;height:3.5rem;margin-left:auto;transition:transform .2s,background .2s;display:grid;box-shadow:0 12px 32px #20312f3d}.chat-launcher:hover{background:#e87352;transform:translateY(-2px)}.chat-launcher img{object-fit:contain;filter:brightness(0)invert();width:2.65rem;height:2.65rem;display:block;transform:translateY(2px)}.chat-panel{background:#f8faf8;border:1px solid #aec8bf59;border-radius:18px;grid-template-rows:auto minmax(0,1fr) auto;width:min(390px,100vw - 2rem);height:min(600px,100svh - 7rem);margin-bottom:.8rem;display:grid;overflow:hidden;box-shadow:0 22px 60px #16232140}.chat-header{color:#fff;background:#20312f;border-bottom:1px solid #dce4df;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.1rem;display:flex}.chat-header>div{gap:.2rem;display:grid}.chat-header strong{font-size:.95rem}.chat-eyebrow{color:#aab8b3;letter-spacing:.11em;text-transform:uppercase;font:.6rem DM Mono,monospace}.chat-close{color:#aab8b3;cursor:pointer;background:0 0;border:0;padding:.2rem .35rem;font-size:1.4rem;line-height:1}.chat-close:hover{color:#fff}.chat-messages{overscroll-behavior:contain;padding:1rem;overflow-y:auto}.chat-intro{color:#52615d;background:#fff;border:1px solid #dce4df;border-radius:12px;padding:1rem}.chat-intro p{color:#20312f;margin:0 0 .65rem;font-size:.87rem;line-height:1.55}.chat-intro span{color:#77837f;font:.66rem/1.5 DM Mono,monospace}.chat-message{gap:.3rem;margin-top:.9rem;display:grid}.chat-message>span{color:#87948f;letter-spacing:.08em;text-transform:uppercase;font:.58rem DM Mono,monospace}.chat-message p{white-space:pre-wrap;overflow-wrap:anywhere;border-radius:12px;width:fit-content;max-width:88%;margin:0;padding:.7rem .85rem;font-size:.82rem;line-height:1.55}.chat-message.assistant p{color:#35433f;background:#fff;border:1px solid #dce4df}.chat-message.assistant strong{font-weight:700}.chat-message.assistant a{color:#356d75;text-underline-offset:2px;text-decoration:underline}.chat-message.assistant a:hover{color:#e87352}.chat-message.user{justify-items:end}.chat-message.user>span{text-align:right}.chat-message.user p{color:#fff;background:#20312f}.chat-thinking{color:#77837f!important}.chat-error{color:#a4442a;background:#fff3ef;border:1px solid #e6b4a5;border-radius:10px;margin:.9rem 0 0;padding:.7rem .8rem;font-size:.75rem;line-height:1.45}.chat-form{background:#fff;border-top:1px solid #dce4df;padding:.85rem}.chat-form textarea{resize:vertical;color:#20312f;background:#f8faf8;border:1px solid #cbd7d1;border-radius:10px;outline:none;width:100%;min-height:4rem;max-height:8rem;padding:.7rem .8rem;font:.8rem/1.45 Manrope,sans-serif;display:block}.chat-form textarea:focus{border-color:#6c98a1;box-shadow:0 0 0 2px #6c98a129}.chat-form-footer{justify-content:space-between;align-items:center;margin-top:.55rem;display:flex}.chat-form-footer span{color:#8d9894;font:.58rem DM Mono,monospace}.chat-form-footer button{color:#fff;cursor:pointer;text-transform:uppercase;background:#20312f;border:0;border-radius:999px;padding:.55rem .85rem;font:600 .62rem DM Mono,monospace}.chat-form-footer button:hover:not(:disabled){background:#e87352}.chat-form-footer button:disabled,.chat-form textarea:disabled{cursor:not-allowed;opacity:.55}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}@media (width<=700px){.chat-widget{bottom:1rem;right:1rem}.chat-panel{width:calc(100vw - 2rem);height:min(560px,100svh - 6rem)}.chat-launcher{width:3.25rem;height:3.25rem}}@media (prefers-reduced-motion:reduce){.chat-launcher{transition:none}}
