@property --fill{syntax:"<number>";inherits:false;initial-value:.4}:root{--modal-scrim-tint:48%;--modal-backdrop-tint:60%;--modal-veil-tint:72%;--scrollbar-thumb:rgba(23,23,27,.3);--scrollbar-thumb-hover:rgba(23,23,27,.55);--color-bg:#f4f4f6;--color-page-bg:#f4f4f6;--color-surface:#fff;--color-border:#e5e5e7;--color-text:#17171b;--color-text-muted:#6c6c70;--color-accent:#111114;--color-on-accent:#fff;--color-accent-hover:color-mix(in srgb,var(--color-accent) 86%,#fff);--color-accent-bg:#4a7dff;--color-success:#34c759;--color-danger:#ff3b30;--color-warning:#ff9230;--color-purple:#cb30e0;--tile-hover:88%;--tile-press:80%;--tile-dim-hover:12%;--tile-dim-press:20%}:root{--r-sm:4px;--r-md:8px;--r-lg:12px;--r-xl:20px;--r-pill:999px;--shadow-sm:0 4px 14px rgba(0,0,0,.2);--shadow-lg:0 12px 28px rgba(0,0,0,.3);--text-shadow:0 1px 4px rgba(0,0,0,.45);--t-fast:.15s;--t-base:.25s;--t-slow:.4s;--t-hover:.35s;--ease-emph:cubic-bezier(.32,.72,0,1);--ease-sig:cubic-bezier(.3,.7,.3,1);--scrim:rgba(0,0,0,.4);--glass:rgba(255,255,255,.16);--glass-hover:rgba(255,255,255,.26);--blur-lg:24px;--blur-sm:4px}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-color-scheme:dark){:root{--modal-scrim-tint:28%;--modal-backdrop-tint:30%;--modal-veil-tint:0%;--scrollbar-thumb:rgba(255,255,255,.28);--scrollbar-thumb-hover:rgba(255,255,255,.55)}}@media(prefers-color-scheme:dark){:root{--color-bg:#0e0e10;--color-page-bg:#000;--color-surface:#1c1c1f;--color-border:#303034;--color-text:#e8e8ea;--color-text-muted:#8a8a8f;--color-accent:#fff;--color-on-accent:#111114;--color-accent-hover:color-mix(in srgb,var(--color-accent) 90%,black);--color-purple:#db34f2;--tile-hover:72%;--tile-press:62%;--tile-dim-hover:28%;--tile-dim-press:38%;--color-accent-bg:#4a7dff;--color-success:#30d158;--color-danger:#ff453a}}html{scrollbar-gutter:stable;overflow-x:hidden}*{scrollbar-width:thin;scrollbar-color:var(--color-text-muted) rgba(0,0,0,0)}[inert],[inert] *{pointer-events:none!important}.is-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:rgba(0,0,0,0)}::-webkit-scrollbar-thumb{background-color:var(--color-text-muted);border-radius:var(--r-md);border:2px solid var(--color-page-bg);background-clip:padding-box}@media(hover:hover)and (pointer:fine){::-webkit-scrollbar-thumb:hover{background-color:var(--color-text);background-clip:padding-box}}::-webkit-scrollbar-corner{background:rgba(0,0,0,0)}*{box-sizing:border-box;transition:color var(--t-fast) ease,background-color var(--t-fast) ease}symbol,symbol *{transition:none}.icon{display:inline-block;vertical-align:middle;fill:none;color:inherit}html,body{height:100%;margin:0}:root{--fw-bold:700;--fw-semi:600;--fw-medium:500}html[data-os=win]{--fw-bold:600;--fw-semi:550;--fw-medium:450}html[data-os=android],html[data-os=other]{--fw-bold:600;--fw-semi:500;--fw-medium:450}h1,h2,h3,h4,h5,h6,b,strong,th{font-weight:var(--fw-bold)}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--color-page-bg);color:var(--color-text);overflow-x:hidden;overscroll-behavior-y:none;-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI Variable Text","Segoe UI",Roboto,"Helvetica Neue",Helvetica,Arial,"Noto Sans","Liberation Sans",Cantarell,system-ui,sans-serif}a,button,.btn,[role=button],input[type=submit]{touch-action:manipulation}a,button,[role=button]{-webkit-user-drag:none;user-drag:none}img,svg{-webkit-user-drag:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important;-webkit-user-select:none!important}img{pointer-events:none}.modal{-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.modal .project-detail__body,.modal .skill-detail__body,.modal .project-detail__title,.modal .skill-detail__title,.modal .about-bio,.modal .about-photo-card__name,.modal .about-photo-card__subtitle,.modal .contact-info__copy,.modal .brand-card__sub,.modal input,.modal textarea,.modal [contenteditable]{-moz-user-select:text;-ms-user-select:text;user-select:text;-webkit-user-select:text}.artifact,.brand-card{-moz-user-select:text;-ms-user-select:text;user-select:text;-webkit-user-select:text}.artifact button,.artifact [role=button],.artifact .project-tile,.artifact .skill-related-card,.artifact .brand-card__btn,.artifact .contact-detail__copy,.brand-card button,.brand-card [role=button],.brand-card .project-tile,.brand-card .skill-related-card,.brand-card .brand-card__btn,.brand-card .contact-detail__copy{-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.welcome{-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.welcome .services__copy{-moz-user-select:text;-ms-user-select:text;user-select:text;-webkit-user-select:text}.chat__messages{-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.chat__messages .message__text,.chat__messages .message--user .message__bubble{-moz-user-select:text;-ms-user-select:text;user-select:text;-webkit-user-select:text}.chat__messages .message__text p{margin:0 0 .5em}.chat__messages .message__text p:last-child{margin-bottom:0;display:inline}.chat__messages .message__text ul,.chat__messages .message__text ol{margin:0 0 .5em;padding-left:1.25em}.chat__messages .message__text ul:last-child,.chat__messages .message__text ol:last-child{margin-bottom:0}.chat__messages .message__text code{background:color-mix(in srgb,var(--color-text) 12%,transparent);padding:.1em .3em;border-radius:var(--r-sm);font-size:.9em}.chat__messages .message__text a{word-break:break-word}.prompt-bar{-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.prompt-bar input,.prompt-bar textarea,.prompt-bar [contenteditable]{-moz-user-select:text;-ms-user-select:text;user-select:text;-webkit-user-select:text}.app{position:relative;height:100vh;height:100dvh;width:100%;overflow:hidden}.chat{position:absolute;inset:0}.chat__scroll{position:absolute;inset:0;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-scroll-chaining:none;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--color-border) rgba(0,0,0,0)}.chat__scroll::-webkit-scrollbar{width:8px}.chat__scroll::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--r-sm)}.chat__scroll::-webkit-scrollbar-track{background:rgba(0,0,0,0)}.chat__messages{list-style:none;margin:0 auto;max-width:900px;padding:80px 24px calc(168px + var(--bar-extra,0px));display:flex;flex-direction:column;gap:20px;min-height:100%}.chat__messages>.message--assistant+.message--assistant{margin-top:-12px}.chat__fade{position:absolute;left:0;right:0;pointer-events:none;z-index:2}.chat__fade--top{top:0;height:56px;background:linear-gradient(to bottom,var(--color-page-bg) 0%,color-mix(in srgb,var(--color-page-bg) 0%,transparent) 100%)}.chat__fade--bottom{bottom:0;height:168px;background:linear-gradient(to top,var(--color-page-bg) 0%,var(--color-page-bg) 35%,color-mix(in srgb,var(--color-page-bg) 90%,transparent) 55%,color-mix(in srgb,var(--color-page-bg) 0%,transparent) 100%)}.welcome{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:stretch;gap:32px;max-width:900px;margin:0 auto;padding:80px 24px calc(168px + var(--bar-extra,0px));transition:opacity var(--t-fast) ease}.welcome.is-hidden{opacity:0;pointer-events:none}.welcome-cards{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:16px;overflow-y:auto;-webkit-overflow-scrolling:touch}@media(max-height:300px){.welcome{overflow-y:auto;-webkit-overflow-scrolling:touch}.welcome .welcome-cards{flex:none;overflow:visible}}@media(min-width:641px){.welcome{padding-top:96px}}.hero{display:flex;align-items:center;gap:18px;padding:0 4px}.hero__socials{list-style:none;margin:0 0 0 auto;padding:0;display:flex;flex-direction:row;gap:0;flex-shrink:0}.hero__socials:empty{display:none}.hero__social a{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:rgba(0,0,0,0);transition:background-color var(--t-hover) ease}@media(hover:hover)and (pointer:fine){.hero__social a:hover{background:color-mix(in srgb,var(--color-text) 10%,transparent)}}.hero__social a:active{background:color-mix(in srgb,var(--color-text) 16%,transparent)}.hero__social img{width:20px;height:20px}@media(prefers-color-scheme:light){.hero__social img{-webkit-filter:brightness(0);filter:brightness(0)}}.hero__social-fallback{display:none;position:absolute;inset:0;align-items:center;justify-content:center;font-size:13px;font-weight:var(--fw-bold);text-transform:uppercase;color:var(--color-text-muted)}.hero__text{min-width:0}.hero__avatar-wrap{position:relative;width:64px;height:64px;flex-shrink:0}.hero__avatar{position:absolute;inset:0;width:100%;height:100%;border-radius:50%;object-fit:cover;opacity:0;transition:opacity var(--t-slow) ease}.hero__avatar.is-loaded{opacity:1}.hero__avatar-expand{position:absolute;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;border:none;border-radius:50%;padding:0;background:rgba(0,0,0,0);color:#fff;cursor:pointer;opacity:0;transition:background-color var(--t-fast) ease,opacity var(--t-fast) ease}.hero__avatar-expand svg{width:18px;height:18px;-webkit-filter:drop-shadow(var(--text-shadow));filter:drop-shadow(var(--text-shadow))}@media(hover:hover)and (pointer:fine){.hero__avatar-wrap:hover .hero__avatar-expand{background:var(--scrim);opacity:1;transition:background-color .4s ease .14s,opacity .4s ease .14s}}.hero__avatar-wrap:active .hero__avatar-expand{background:var(--scrim);opacity:1;transition-delay:0s}@keyframes hero-secret-pulse{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--color-accent-bg) 55%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--color-accent-bg) 0%,transparent)}}.hero__avatar-wrap.is-secret-active{border-radius:50%;animation:hero-secret-pulse 2.2s ease-in-out infinite}.hero__avatar-spinner{position:absolute;top:50%;left:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border-radius:50%;border:2.5px solid var(--color-border);border-top-color:var(--color-text-muted);animation:spin .7s linear infinite;opacity:1;transition:opacity var(--t-base) ease;pointer-events:none}.hero__avatar-spinner.is-hidden{opacity:0}.hero__title{margin:0;font-size:24px;font-weight:var(--fw-bold);color:var(--color-text)}.hero__subtitle{margin:6px 0 0;display:flex;align-items:center;flex-wrap:wrap;gap:5px;font-size:15px;line-height:1.4;color:var(--color-text-muted)}.hero__subtitle-prefix{white-space:nowrap}.hero__role-wrap{position:relative;display:inline-block;vertical-align:top;line-height:1.4;height:1.4em;min-width:0;max-width:100%;overflow:hidden}.hero__role{display:inline-block;max-width:100%;font-weight:var(--fw-semi);color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:5px}.hero__role-caret{position:absolute;top:50%;left:0;width:2px;height:1.05em;border-radius:1px;background:var(--color-text);animation:caret-blink 1.06s step-end infinite}@keyframes caret-blink{0%,100%{background-color:var(--color-text)}50%{background-color:rgba(0,0,0,0)}}.welcome-grid{--card-pad:22px;--card-cy:26px;--card-arrow:20px;--card-icon:44px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,120px);grid-template-areas:"about contact" "about work" "services work";align-items:stretch;gap:16px}.welcome-grid--no-services{grid-template-rows:repeat(2,120px);grid-template-areas:"about contact" "about work"}.welcome-card--about{grid-area:about}.welcome-card--work{grid-area:work}.welcome-card--contact{grid-area:contact}.welcome-card{position:relative;overflow:hidden;border:none;border-radius:var(--r-xl);min-height:0;padding:0 var(--card-pad) calc(var(--card-cy) - 12px);display:flex;align-items:flex-end;cursor:pointer;color:#fff;font-family:inherit;text-align:left;background:var(--wc);transition:background-color var(--t-hover) ease}@media(hover:hover)and (pointer:fine){.welcome-card:hover{background:color-mix(in srgb,var(--wc) 76%,black);transition-delay:.08s}}.welcome-card:active{background:color-mix(in srgb,var(--wc) 64%,black);transition-delay:0s}.welcome-card--about{--wc:var(--color-success)}.welcome-card--work{--wc:var(--color-warning)}.welcome-card--contact{--wc:var(--color-purple)}.ripple{position:absolute;border-radius:50%;background:color-mix(in srgb,#fff 55%,transparent);transform:scale(0);opacity:.55;pointer-events:none;animation:ripple-expand var(--t-slow) ease-out forwards;animation-delay:.08s}@keyframes ripple-expand{0%{transform:scale(0);opacity:.55}100%{transform:scale(1);opacity:0}}.services{--svc-bg:#08f;--svc-fg:#fff;--p:0;--pad:var(--card-pad);--bar-cy:var(--card-cy);--arrow-size:var(--card-arrow);--logo-h:24px;--dash-w:20px;--dash-w-active:44px;--bar-h:4px;grid-area:services;position:relative;overflow:hidden;min-width:0;min-height:0;border-radius:var(--r-xl);background:var(--svc-bg);color:var(--svc-fg);transition:background-color .56s ease,color .56s ease}.services::before{content:"";position:absolute;inset:0;border-radius:inherit;background:rgba(0,0,0,0);pointer-events:none;transition:background-color var(--t-hover) ease}@media(hover:hover)and (pointer:fine){.services:hover::before{background:color-mix(in srgb,#000 var(--tile-dim-hover),transparent);transition-delay:.08s}}.services:active::before{background:color-mix(in srgb,#000 var(--tile-dim-press),transparent);transition-delay:0s}.services__slide{position:absolute;inset:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:6px;padding:var(--pad) var(--pad) calc(var(--bar-cy) + 16px);border:0;background:none;color:inherit;font:inherit;text-align:left;text-decoration:none;cursor:pointer;opacity:0;transform:translateY(8px);-webkit-filter:blur(5px);filter:blur(5px);pointer-events:none;transition:opacity .56s var(--ease-sig),transform .56s var(--ease-sig),-webkit-filter .56s var(--ease-sig);transition:opacity .56s var(--ease-sig),transform .56s var(--ease-sig),filter .56s var(--ease-sig);transition:opacity .56s var(--ease-sig),transform .56s var(--ease-sig),filter .56s var(--ease-sig),-webkit-filter .56s var(--ease-sig)}.services__slide.is-active{opacity:1;transform:none;-webkit-filter:none;filter:none;pointer-events:auto}.services__slide.is-leaving{transform:translateY(-8px)}.services__logo{display:block;flex-shrink:0;transition:opacity .25s ease;width:min(var(--logo-h)*var(--ar,1),140px);aspect-ratio:var(--ar,1);background:currentColor;-webkit-mask:var(--logo) no-repeat left center/contain;mask:var(--logo) no-repeat left center/contain}.services__logo:not(.is-norm):not(.ln-skip){opacity:0;animation:ln-reveal .01s 2s forwards}html.ln-off .services__logo:not(.is-norm):not(.ln-skip),html[class*=ec-] .services__logo:not(.is-norm):not(.ln-skip){opacity:1;animation:none}@keyframes ln-reveal{to{opacity:1}}.about-tech-card__image img:not([data-lnr]){visibility:hidden;animation:ln-show .01s 2s forwards}html.ln-off .about-tech-card__image img:not([data-lnr]),html[class*=ec-] .about-tech-card__image img:not([data-lnr]){visibility:visible;animation:none}@keyframes ln-show{to{visibility:visible}}.services__logo.is-norm{width:calc(var(--logo-h)*var(--kw));height:calc(var(--logo-h)*var(--kh));aspect-ratio:auto;-webkit-mask-size:calc(var(--logo-h)*var(--kw)/var(--fw)) calc(var(--logo-h)*var(--kh)/var(--fh));mask-size:calc(var(--logo-h)*var(--kw)/var(--fw)) calc(var(--logo-h)*var(--kh)/var(--fh));-webkit-mask-position:calc(var(--logo-h)*var(--kw)*var(--fx)/var(--fw)*-1) calc(var(--logo-h)*var(--kh)*var(--fy)/var(--fh)*-1);mask-position:calc(var(--logo-h)*var(--kw)*var(--fx)/var(--fw)*-1) calc(var(--logo-h)*var(--kh)*var(--fy)/var(--fh)*-1)}.services__name{font-size:17px;font-weight:var(--fw-bold);letter-spacing:-.01em;line-height:1.2}.services__copy{margin-top:auto;max-width:100%;overflow:hidden;font-size:14px;line-height:1.35;white-space:nowrap;text-overflow:ellipsis;opacity:.92}.services__arrow{position:absolute;right:var(--pad);bottom:calc(var(--bar-cy) - var(--arrow-size)/2);display:flex;transform:translateY(-8px);transition:transform .56s var(--ease-sig)}.services__slide.is-active .services__arrow{transform:none}.services__slide.is-leaving .services__arrow{transform:translateY(8px)}.services__arrow svg{width:var(--arrow-size);height:var(--arrow-size);transition:transform var(--t-base) ease}@media(hover:hover)and (pointer:fine){.services__slide:hover .services__arrow svg{transform:translateX(5px)}}.services__slide:active .services__arrow svg{transform:translateX(5px)}.services__dashes{position:absolute;left:var(--pad);bottom:calc(var(--bar-cy) - 12px);z-index:2;display:flex;align-items:center;gap:6px}.services__dash{display:flex;align-items:center;width:var(--dash-w);height:24px;padding:0;border:0;background:none;color:inherit;cursor:pointer;transition:width .5s var(--ease-sig)}.services__dash.is-active{width:var(--dash-w-active)}@media(hover:hover)and (pointer:fine){.services__dash:hover .services__bar{background:color-mix(in srgb,var(--svc-fg) 50%,transparent)}}.services__dash:active .services__bar{background:color-mix(in srgb,var(--svc-fg) 60%,transparent)}.services__dash:focus-visible{outline:2px solid currentColor;outline-offset:2px;border-radius:var(--r-pill)}.services__bar{position:relative;display:block;width:100%;height:var(--bar-h);overflow:hidden;border-radius:var(--r-pill);background:color-mix(in srgb,var(--svc-fg) 30%,transparent);transition:background-color .5s ease}.services__fill{position:absolute;inset:0;border-radius:var(--r-pill);background:var(--svc-fg);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease-sig),background-color .5s ease}.services__dash.is-done .services__fill{transform:scaleX(1)}.services.is-rewinding .services__fill{transition:none}.services__dash.is-active .services__fill{transform:scaleX(var(--p));transition:none}.welcome-card__icon-bg{position:absolute;top:calc(var(--card-pad) - var(--card-icon)*.09);left:calc(var(--card-pad) - var(--card-icon)*.09);width:var(--card-icon);height:var(--card-icon);color:#fff;pointer-events:none}.welcome-card__row{position:relative;z-index:1;width:100%;height:24px;display:flex;align-items:center;justify-content:space-between;gap:12px}.welcome-card__label{font-size:15px;font-weight:var(--fw-semi)}.welcome-card__arrow{flex-shrink:0;width:var(--card-arrow);height:var(--card-arrow);color:#fff;transition:transform var(--t-base) ease}@media(hover:hover)and (pointer:fine){.welcome-card:hover .welcome-card__arrow{transform:translateX(5px);transition-delay:.08s}.welcome-card:active .welcome-card__arrow{transition-delay:0s}}.message{display:flex;flex-direction:column;font-size:17px;line-height:1.6}.message__context{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:13px;font-weight:var(--fw-semi);color:var(--color-text-muted)}.message__context svg{width:18px;height:18px;flex-shrink:0;color:var(--color-text-muted)}.message--user{justify-content:flex-end;align-items:flex-end}.message--user .message__context{display:flex;align-items:center;gap:6px;margin-right:4px}.message--user .message__context svg{width:18px;height:18px;flex-shrink:0}.message--user.message--context-only .message__context{margin:0;padding:10px 16px;border-radius:var(--r-pill);background:var(--color-surface);color:var(--color-text);font-size:15px}.message--user .message__bubble{background:var(--color-surface);border-radius:var(--r-pill);padding:10px 16px;max-width:80%}.message--user .message__bubble--multiline{border-radius:26px}.message--assistant{justify-content:flex-start}.message--assistant .message__bubble{width:100%;max-width:100%;color:var(--color-text)}.message--typing .message__bubble,.message--thought-summary .message__bubble{padding:2px 0}.activity{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.activity__row{display:flex;align-items:center;gap:6px;color:var(--color-text-muted)}.activity__row--enter{animation:message-enter var(--t-fast) ease-out both}.message[hidden]{display:none}.message--enter{animation:message-enter var(--t-fast) ease-out both}@keyframes suggested-replies-in{from{max-height:0;margin-top:0;opacity:0}to{max-height:160px;opacity:1}}@keyframes message-enter{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.activity__row--leaving,.message--leaving{overflow:hidden;opacity:0;transition:height var(--t-fast) ease,margin-bottom var(--t-fast) ease,opacity var(--t-fast) ease}.activity__icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--color-text-muted)}.activity__icon svg,.activity__icon .icon{display:block;width:15px;height:15px}.message__bubble,.activity__text,.message__limit-content,.suggested-reply__text{overflow-wrap:anywhere}.activity__row,.message__limit-content,.suggested-reply__text{min-width:0}.message__limit-box{display:flex;align-items:flex-start;gap:12px;background:color-mix(in srgb,var(--color-danger) 8%,transparent);border:1px solid color-mix(in srgb,var(--color-danger) 20%,transparent);border-radius:var(--r-md);padding:12px 14px;margin-top:6px;color:var(--color-danger);font-size:13px;line-height:1.4}.message__limit-box .message__limit-icon{width:20px;height:20px;color:var(--color-danger);stroke:currentColor;flex-shrink:0;margin-top:1px}.message__limit-box .message__limit-content strong{display:block;color:var(--color-danger);font-weight:var(--fw-semi);margin-bottom:2px}.message__limit-box .message__limit-content span{color:color-mix(in srgb,var(--color-danger) 75%,var(--color-text))}.message__limit-box .message__limit-content .btn-retry-chat{display:block;font:inherit;font-size:13px;font-weight:var(--fw-semi);margin-top:8px;padding:6px 16px;border:none;border-radius:var(--r-pill);background:color-mix(in srgb,var(--color-danger) 16%,transparent);color:var(--color-danger);cursor:pointer;transition:background-color var(--t-fast) ease}@media(hover:hover)and (pointer:fine){.message__limit-box .message__limit-content .btn-retry-chat:hover{background:color-mix(in srgb,var(--color-danger) 26%,transparent)}}.message__limit-box .message__limit-content .btn-retry-chat:active{background:color-mix(in srgb,var(--color-danger) 34%,transparent)}.prompt-bar__verify{padding:10px 12px;border:1px solid color-mix(in srgb,var(--color-text) 12%,transparent);border-radius:var(--r-lg);margin-bottom:8px}.prompt-bar__verify-text{margin:0 0 8px;font-size:14px;color:var(--color-text-muted)}.shimmer{display:inline-block;background-image:linear-gradient(90deg,var(--color-text-muted) 0%,var(--color-text-muted) 35%,var(--color-text) 50%,var(--color-text-muted) 65%,var(--color-text-muted) 100%);background-size:200% 100%;background-clip:text;-webkit-background-clip:text;color:rgba(0,0,0,0);animation:shimmer 1.6s linear infinite}@keyframes shimmer{0%{background-position:150% 0}100%{background-position:-50% 0}}.cursor-ball{display:inline-block;position:relative;top:-.15em;width:11px;height:11px;margin-left:2px;border-radius:50%;background:var(--color-text);vertical-align:middle;animation:cursor-pulse 1s ease-in-out infinite}@keyframes cursor-pulse{0%,100%{transform:scale(.75);opacity:.5}50%{transform:scale(1.15);opacity:1}}.modal--detail-closing .modal__content--about::before,#projects-modal.modal--detail-closing .modal__body::before,#projects-modal.modal--detail:not(.modal--transparent) .modal__body::before,#projects-modal.modal--backdrop-dim .modal__body::before,.modal--detail:not(.modal--transparent) .modal__content--about::before,.modal--backdrop-dim .modal__content--about::before{z-index:1;content:"";position:fixed;inset:0;background:color-mix(in srgb,var(--color-bg) var(--modal-veil-tint),transparent);backdrop-filter:blur(var(--blur-lg));-webkit-backdrop-filter:blur(var(--blur-lg));pointer-events:none}.modal-scrim{position:fixed;inset:0;z-index:9;background:color-mix(in srgb,var(--color-bg) var(--modal-scrim-tint),transparent);backdrop-filter:blur(0px) saturate(100%);-webkit-backdrop-filter:blur(0px) saturate(100%);opacity:0;pointer-events:none;transition:opacity var(--t-fast) ease .08s}.modal-scrim.is-active{opacity:1;backdrop-filter:blur(var(--blur-lg)) saturate(100%);-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(100%);transition:opacity var(--t-base) ease}.modal-overlay{position:fixed;inset:0;z-index:10;display:flex;opacity:0;pointer-events:none;visibility:hidden;transition:opacity var(--t-fast) ease .08s,visibility 0s linear .5s}.modal-overlay.is-open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--t-base) ease,visibility 0s}.modal-overlay:not(.is-open):has(.modal--detail){transition:opacity var(--t-base) ease-out,visibility 0s linear .3s}.modal-overlay.is-open:has(.modal--detail:not(.modal--transparent)){opacity:1;transition:none}.modal-overlay:not(.is-open):has(.modal--detail:not(.modal--transparent)){opacity:1;visibility:hidden;transition:visibility 0s linear .26s}.modal-overlay:not(.is-open) .modal--detail:not(.modal--transparent) .modal__content--about::before,.modal-overlay:not(.is-open) .modal--detail:not(.modal--transparent) .modal__body::before{animation:fade-out var(--t-base) ease-out both}.modal-overlay.is-on-top{z-index:11}.modal{position:relative;width:100%;height:100%;padding:0 20px;display:flex;flex-direction:column;background:color-mix(in srgb,var(--color-bg) 0%,transparent);transform:scale(1.12);transition:transform var(--t-base) ease-out .05s,background var(--t-base) ease-out .05s}.modal-overlay.is-open .modal{background:color-mix(in srgb,var(--color-bg) 0%,transparent);transform:none;transition:transform var(--t-base) .01s var(--ease-emph),background var(--t-base) ease}.modal.modal--detail{transform:scale(1);transition:background var(--t-base) ease-out .05s}.modal.modal--transparent,.modal-overlay.is-open .modal.modal--transparent{background:rgba(0,0,0,0)}.perf-reduced-modal-fx .morph-in,.perf-reduced-modal-fx .listview-morph-in,.perf-reduced-modal-fx .skill-detail,.perf-reduced-modal-fx .project-detail{animation:none!important;-webkit-filter:none!important;filter:none!important;transition:none!important}.perf-reduced-modal-fx .modal--detail .modal__content--about::before,.perf-reduced-modal-fx .modal--detail .modal__body::before,.perf-reduced-modal-fx .modal--backdrop-dim .modal__content--about::before,.perf-reduced-modal-fx .modal--backdrop-dim .modal__body::before{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;background:var(--color-bg)!important}.perf-reduced-modal-fx .modal-scrim{transition:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;background:var(--color-bg)!important}.perf-reduced-modal-fx .modal,.perf-reduced-modal-fx .modal__header,.perf-reduced-modal-fx .modal__content,.perf-reduced-modal-fx .project-search,.perf-reduced-modal-fx .carousel{transition:none!important;transform:none!important;-webkit-filter:none!important;filter:none!important;opacity:1!important}.perf-reduced-modal-fx .modal-overlay:not(.is-open) .modal,.perf-reduced-modal-fx .modal-overlay:not(.is-open) .modal__header,.perf-reduced-modal-fx .modal-overlay:not(.is-open) .modal__content,.perf-reduced-modal-fx .modal-overlay:not(.is-open) .project-search,.perf-reduced-modal-fx .modal-overlay:not(.is-open) .carousel{opacity:0!important}.modal__preload-spinner{display:none}.modal-overlay.is-preloading .modal__preload-spinner{display:flex;position:absolute;inset:0;z-index:2;align-items:center;justify-content:center}.modal-overlay.is-preloading .modal__preload-spinner::after{content:"";width:30px;height:30px;border-radius:50%;background:conic-gradient(from 0deg,transparent 0%,var(--color-text-muted) 100%);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 2.5px),#000 calc(100% - 2.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 2.5px),#000 calc(100% - 2.5px));animation:spin .7s linear infinite}.modal-overlay.is-preloading .modal__header,.modal-overlay.is-preloading .modal__body-wrap,.modal-overlay.is-preloading .modal__body{visibility:hidden}.modal__header{opacity:0;-webkit-filter:blur(3px);filter:blur(3px);transition:opacity var(--t-fast) ease .04s,-webkit-filter var(--t-fast) ease .04s;transition:opacity var(--t-fast) ease .04s,filter var(--t-fast) ease .04s;transition:opacity var(--t-fast) ease .04s,filter var(--t-fast) ease .04s,-webkit-filter var(--t-fast) ease .04s}.modal__content{opacity:0;-webkit-filter:blur(10px);filter:blur(10px);transform:scale(1.06);transition:opacity var(--t-fast) ease-out,transform var(--t-base) ease-out,-webkit-filter var(--t-base) ease-out;transition:opacity var(--t-fast) ease-out,filter var(--t-base) ease-out,transform var(--t-base) ease-out;transition:opacity var(--t-fast) ease-out,filter var(--t-base) ease-out,transform var(--t-base) ease-out,-webkit-filter var(--t-base) ease-out}.modal__content p,.modal__content li:not(.project-tile),.modal__content h1,.modal__content h2,.modal__content h3,.modal__content h4,.modal__content span:not(.project-tile__arrow):not(.about-tabs__indicator):not(.about-tech-card__arrow):not(.skill-related-card__arrow):not(.skill-level__bar),.modal__content blockquote,.modal__content div:not(.about-page):not(.skill-detail):not(.about-tabs__track):not(.about-tabs__indicator){transition:color var(--t-slow) ease}.project-search{opacity:0;-webkit-filter:blur(10px);filter:blur(10px);transform:scale(1.06);transition:opacity var(--t-fast) ease-out,transform var(--t-base) ease-out,-webkit-filter var(--t-base) ease-out;transition:opacity var(--t-fast) ease-out,filter var(--t-base) ease-out,transform var(--t-base) ease-out;transition:opacity var(--t-fast) ease-out,filter var(--t-base) ease-out,transform var(--t-base) ease-out,-webkit-filter var(--t-base) ease-out}.carousel{opacity:0;transform:scale(1.06);transition:opacity var(--t-fast) ease-out,transform var(--t-base) ease-out}.modal-overlay.is-open .modal__header{opacity:1;-webkit-filter:blur(0);filter:blur(0);transition:opacity var(--t-fast) ease .01s,-webkit-filter var(--t-fast) ease .01s;transition:opacity var(--t-fast) ease .01s,filter var(--t-fast) ease .01s;transition:opacity var(--t-fast) ease .01s,filter var(--t-fast) ease .01s,-webkit-filter var(--t-fast) ease .01s}.modal-overlay.is-open .modal--backdrop-dim .modal__header{opacity:0;pointer-events:none;transition:none}.modal-overlay.is-open .carousel{opacity:1;transform:scale(1);transition:opacity var(--t-fast) ease .02s,transform var(--t-base) var(--ease-emph) .02s}.modal-overlay.is-open .modal__content{opacity:1;-webkit-filter:none;filter:none;transform:none;transition:opacity var(--t-fast) ease .02s,transform var(--t-base) var(--ease-emph) .02s,-webkit-filter var(--t-fast) ease .02s;transition:opacity var(--t-fast) ease .02s,filter var(--t-fast) ease .02s,transform var(--t-base) var(--ease-emph) .02s;transition:opacity var(--t-fast) ease .02s,filter var(--t-fast) ease .02s,transform var(--t-base) var(--ease-emph) .02s,-webkit-filter var(--t-fast) ease .02s}.modal-overlay.is-open .project-search{opacity:1;-webkit-filter:blur(0);filter:blur(0);transform:scale(1);transition:opacity var(--t-fast) ease .02s,transform var(--t-base) var(--ease-emph) .02s,-webkit-filter var(--t-fast) ease .02s;transition:opacity var(--t-fast) ease .02s,filter var(--t-fast) ease .02s,transform var(--t-base) var(--ease-emph) .02s;transition:opacity var(--t-fast) ease .02s,filter var(--t-fast) ease .02s,transform var(--t-base) var(--ease-emph) .02s,-webkit-filter var(--t-fast) ease .02s}.modal__content.is-virtual{transform-origin:50% 0}.modal__header{position:absolute;top:0;left:0;right:0;z-index:5;width:100%;max-width:980px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:36px;padding:24px 0 12px}.modal__header-scrim{position:absolute;top:0;left:0;right:0;height:100%;z-index:-1;pointer-events:none}.modal__header-scrim::before,.modal__header-scrim::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.modal__header-scrim::before{z-index:-2}.modal__header-scrim::after{z-index:-1}.modal__back{position:absolute;left:0;display:flex;align-items:center;gap:6px;height:36px;border:none;border-radius:var(--r-pill);padding:0 16px 0 12px;font-size:13px;font-weight:var(--fw-bold);font-family:inherit;color:var(--color-on-accent);background:var(--color-accent);cursor:pointer;opacity:0;-webkit-filter:blur(var(--blur-sm));filter:blur(var(--blur-sm));pointer-events:none;box-shadow:0 0 0 color-mix(in srgb,var(--color-accent-bg) 0%,transparent);transition:opacity var(--t-base) ease-out,box-shadow var(--t-base) ease-out,background-color var(--t-fast) ease,color var(--t-fast) ease,transform var(--t-fast) ease,-webkit-filter var(--t-base) ease-out;transition:opacity var(--t-base) ease-out,filter var(--t-base) ease-out,box-shadow var(--t-base) ease-out,background-color var(--t-fast) ease,color var(--t-fast) ease,transform var(--t-fast) ease;transition:opacity var(--t-base) ease-out,filter var(--t-base) ease-out,box-shadow var(--t-base) ease-out,background-color var(--t-fast) ease,color var(--t-fast) ease,transform var(--t-fast) ease,-webkit-filter var(--t-base) ease-out}.modal__back svg{width:16px;height:16px}@media(hover:hover)and (pointer:fine){.modal__back:hover{background:var(--color-accent-hover)}}.modal__back:active{background:var(--color-accent-hover)}.modal__back:active{transform:scale(.96)}.modal--detail .modal__back{opacity:1;-webkit-filter:blur(0);filter:blur(0);pointer-events:auto;box-shadow:0 0 22px color-mix(in srgb,var(--color-accent-bg) 28%,transparent)}.modal--from-artifact .modal__back{opacity:0;-webkit-filter:blur(4px);filter:blur(4px);pointer-events:none}.modal__back::before{content:"";position:absolute;inset:0}.modal__body-wrap{position:absolute;inset:0;display:flex;flex-direction:column}.skill-detail,.modal__listview,.project-detail{overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-scroll-chaining:none;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--color-text-muted) rgba(0,0,0,0)}.skill-detail::-webkit-scrollbar,.modal__listview::-webkit-scrollbar,.project-detail::-webkit-scrollbar{width:8px}.skill-detail::-webkit-scrollbar-thumb,.modal__listview::-webkit-scrollbar-thumb,.project-detail::-webkit-scrollbar-thumb{background:var(--color-text-muted);border-radius:var(--r-sm)}.modal__body{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-scroll-chaining:none;overscroll-behavior:contain;width:100%;padding:84px 4px 24px;display:flex;flex-direction:column;align-items:center;gap:24px;scrollbar-width:thin;scrollbar-color:var(--color-text-muted) rgba(0,0,0,0)}.modal__body::-webkit-scrollbar{width:8px}.modal__body::-webkit-scrollbar-thumb{background:var(--color-text-muted);border-radius:var(--r-sm)}#about-modal.modal--detail .modal__body,#about-modal.modal--backdrop-dim .modal__body,#about-modal.modal--transparent .modal__body,#about-modal.modal--from-artifact .modal__body{overflow-y:hidden}#projects-modal .modal__body{position:relative;overflow:visible;display:block}.modal__content{width:100%;max-width:980px;display:flex;flex-direction:column;gap:24px}.project-search{width:100%;max-width:980px;display:flex;justify-content:flex-end}.project-search[hidden]{display:none}.project-search__box{position:relative;width:240px;max-width:100%}@media(max-width:640px),(pointer:coarse)and (max-height:500px){.project-search__box{width:100%}}.project-search__icon{position:absolute;top:50%;left:14px;transform:translateY(-50%);color:var(--color-text-muted);pointer-events:none}.project-search__clear{position:absolute;top:50%;right:10px;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;background:none;color:var(--color-text-muted);cursor:pointer;transition:color var(--t-fast) ease}.project-search__clear:focus-visible{color:var(--color-text);outline:none}@media(hover:hover)and (pointer:fine){.project-search__clear:hover{color:var(--color-text);outline:none}}.project-search__clear:active{color:var(--color-text)}.project-search__clear[hidden]{display:none}.project-search__input{width:100%;padding:10px 40px 10px 40px;border-radius:var(--r-pill);border:1px solid color-mix(in srgb,var(--color-text) 12%,transparent);background:color-mix(in srgb,var(--color-bg) 45%,transparent);color:var(--color-text);font:inherit;font-size:14px;text-align:left}.project-search__input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.project-search__input::-webkit-input-placeholder{color:var(--color-text-muted)}.project-search__input::-ms-input-placeholder{color:var(--color-text-muted)}.project-search__input::placeholder{color:var(--color-text-muted)}.project-search__input:focus{outline:none;background:var(--color-bg)}.project-grid__empty{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:22px 24px;border-radius:var(--r-xl);border:1px dashed var(--color-border);color:var(--color-text-muted);font-size:14px}.project-grid__empty[hidden]{display:none}.project-grid__empty-clear{padding:6px 4px;border:none;background:none;color:var(--color-text);font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.project-tile mark{background:none;color:inherit;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}.modal__title{position:absolute;left:0;margin:0;font-size:20px;font-weight:var(--fw-bold);color:var(--color-text);-webkit-filter:blur(0);filter:blur(0);transform:scale(1);transform-origin:left center;transition:opacity var(--t-base) .04s ease,transform var(--t-base) .04s var(--ease-emph),-webkit-filter var(--t-base) .04s ease;transition:opacity var(--t-base) .04s ease,filter var(--t-base) .04s ease,transform var(--t-base) .04s var(--ease-emph);transition:opacity var(--t-base) .04s ease,filter var(--t-base) .04s ease,transform var(--t-base) .04s var(--ease-emph),-webkit-filter var(--t-base) .04s ease}.modal--detail .modal__title,.modal--from-artifact .modal__title{opacity:0;pointer-events:none;-webkit-filter:blur(8px);filter:blur(8px);transform:scale(.96);transition-delay:0s}.modal--from-artifact .modal__title{transition:none}.modal__close{position:relative;flex-shrink:0;display:flex;align-items:center;justify-content:flex-end;margin-left:auto;gap:0;width:var(--close-width,auto);height:36px;border-radius:var(--r-pill);padding:0 10px 0 13px;border:none;color:var(--color-on-accent);background:var(--color-accent);cursor:pointer;font-size:13px;font-weight:var(--fw-bold);font-family:inherit;transition:background-color var(--t-base) ease,opacity var(--t-slow) ease,transform var(--t-fast) ease,width var(--t-base) ease-out,padding var(--t-base) ease-out,gap var(--t-base) ease-out,-webkit-filter var(--t-slow) ease;transition:background-color var(--t-base) ease,opacity var(--t-slow) ease,filter var(--t-slow) ease,transform var(--t-fast) ease,width var(--t-base) ease-out,padding var(--t-base) ease-out,gap var(--t-base) ease-out;transition:background-color var(--t-base) ease,opacity var(--t-slow) ease,filter var(--t-slow) ease,transform var(--t-fast) ease,width var(--t-base) ease-out,padding var(--t-base) ease-out,gap var(--t-base) ease-out,-webkit-filter var(--t-slow) ease}.modal--detail:not(.modal--from-artifact) .modal__close{transition:background-color var(--t-base) ease,opacity var(--t-slow) ease,transform var(--t-fast) ease,width var(--t-fast) ease-out .03s,padding var(--t-fast) ease-out .03s,gap var(--t-fast) ease-out .03s,-webkit-filter var(--t-slow) ease;transition:background-color var(--t-base) ease,opacity var(--t-slow) ease,filter var(--t-slow) ease,transform var(--t-fast) ease,width var(--t-fast) ease-out .03s,padding var(--t-fast) ease-out .03s,gap var(--t-fast) ease-out .03s;transition:background-color var(--t-base) ease,opacity var(--t-slow) ease,filter var(--t-slow) ease,transform var(--t-fast) ease,width var(--t-fast) ease-out .03s,padding var(--t-fast) ease-out .03s,gap var(--t-fast) ease-out .03s,-webkit-filter var(--t-slow) ease}.modal__close svg{width:16px;height:16px;flex-shrink:0;transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}@media(hover:hover)and (pointer:fine){.modal__close:hover{background:var(--color-accent-hover)}}.modal__close:active{background:var(--color-accent-hover)}.modal__close:active{transform:scale(.96)}.modal--detail .modal__close{width:36px;padding:0 10px;gap:0;color:var(--color-text-muted);background:var(--color-surface)}@media(hover:hover)and (pointer:fine){.modal--detail .modal__close:hover{background:color-mix(in srgb,var(--color-surface) 88%,black)}}.modal--detail .modal__close:active{background:color-mix(in srgb,var(--color-surface) 80%,black)}.modal--from-artifact .modal__close{width:var(--close-width,auto);padding:0 10px 0 13px;gap:0;color:var(--color-on-accent);background:var(--color-accent)}@media(hover:hover)and (pointer:fine){.modal--from-artifact .modal__close:hover{background:var(--color-accent-hover)}}.modal--from-artifact .modal__close:active{background:var(--color-accent-hover)}.modal__close::before{content:"";position:absolute;inset:0}@property --feather{syntax:"<number>";inherits:false;initial-value:0}.modal__close-label{--feather:0;padding:3px 8px 3px 0;margin:-3px -3px -3px 0;-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 16px),rgba(0,0,0,calc(1 - .25 * var(--feather))) calc(100% - 12px),rgba(0,0,0,calc(1 - .65 * var(--feather))) calc(100% - 7px),rgba(0,0,0,calc(1 - .92 * var(--feather))) calc(100% - 3px),rgba(0,0,0,calc(1 - var(--feather))));mask-image:linear-gradient(to right,#000 calc(100% - 16px),rgba(0,0,0,calc(1 - .25 * var(--feather))) calc(100% - 12px),rgba(0,0,0,calc(1 - .65 * var(--feather))) calc(100% - 7px),rgba(0,0,0,calc(1 - .92 * var(--feather))) calc(100% - 3px),rgba(0,0,0,calc(1 - var(--feather))));color:var(--color-on-accent);display:inline-block;-webkit-clip-path:inset(-8px 0);clip-path:inset(-8px 0);white-space:nowrap;min-width:0;flex-shrink:1;opacity:1;-webkit-filter:blur(0);filter:blur(0);transition:opacity var(--t-fast) ease-out .1s,filter var(--t-fast) ease-out .1s,--feather var(--t-fast) ease-out}.modal--detail .modal__close-label{opacity:0;--feather:1;transition:opacity .05s linear .17s,--feather .06s ease-out}.modal--from-artifact .modal__close-label{opacity:1;-webkit-filter:blur(0);filter:blur(0);--feather:0}.carousel{position:relative;flex-shrink:0;width:100%;max-width:1200px}.carousel__btn{position:absolute;top:50%;z-index:4;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:none;padding:0;--btn-rest-bg:var(--scrim);--btn-rest-fg:#fff;--btn-hover-bg:var(--color-accent);--btn-hover-fg:var(--color-on-accent);background:var(--btn-rest-bg);color:var(--btn-rest-fg);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background-color var(--t-base) ease,color var(--t-base) ease,opacity var(--t-fast) ease,transform var(--t-fast) ease}.carousel__btn svg{width:18px;height:18px}.carousel__btn:focus-visible{background:var(--btn-hover-bg);color:var(--btn-hover-fg)}.carousel__btn:active{background:var(--btn-hover-bg);color:var(--btn-hover-fg)}@media(hover:hover)and (pointer:fine){.carousel__btn:hover{background:var(--btn-hover-bg);color:var(--btn-hover-fg)}}.carousel__btn:active{transform:translateY(-50%) scale(.96)}.carousel__btn:focus-visible{outline:2px solid var(--btn-hover-bg);outline-offset:2px}.carousel__btn:disabled{opacity:.35;cursor:default}.carousel__btn--prev{left:8px}.carousel__btn--next{right:8px}.carousel__frame{position:relative}.carousel__viewport{width:100%;overflow:hidden;padding:24px 0;-webkit-mask-image:linear-gradient(to right,transparent 0,black 40px,black calc(100% - 40px),transparent 100%);mask-image:linear-gradient(to right,transparent 0,black 40px,black calc(100% - 40px),transparent 100%)}.carousel__track{display:flex;gap:16px;transition:transform var(--t-slow) var(--ease-emph);will-change:transform}@supports(width:1cqw){.carousel__viewport{container-type:inline-size}.carousel__card{width:calc(100cqw - 280px)}.carousel__track{transform:translateX(140px)}@media(max-width:960px){.carousel__card{width:calc(100cqw - 210px)}.carousel__track{transform:translateX(105px)}}@media(max-width:640px){.carousel__card{width:calc(100cqw - 36px)}.carousel__track{transform:translateX(18px)}}}.carousel__card{position:relative;flex:0 0 auto;height:420px;border-radius:var(--r-xl);overflow:hidden;cursor:pointer;opacity:.5;transform:scale(.86);transform-origin:right center;transition:transform var(--t-base) ease,opacity var(--t-base) ease;background:linear-gradient(160deg,var(--color-surface),var(--color-border));--rest:.4}.carousel__card.is-active~.carousel__card{transform-origin:left center}.carousel__card.is-active{opacity:1;transform:scale(1);box-shadow:var(--shadow-lg)}.carousel--jumping .carousel__card{transition:none}.carousel__card::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;--fill:var(--rest);--fl:calc(.42 * ((var(--fill) - var(--rest)) / (1 - var(--rest))) * ((var(--fill) - var(--rest)) / (1 - var(--rest))));background-image:linear-gradient(to top,rgba(0,0,0,calc(.92 + var(--fl) * .08)) calc(var(--fill) * 0%),rgba(0,0,0,calc(.8086 + var(--fl) * .1914)) calc(var(--fill) * 6.25%),rgba(0,0,0,calc(.7044 + var(--fl) * .2956)) calc(var(--fill) * 12.5%),rgba(0,0,0,calc(.6073 + var(--fl) * .3927)) calc(var(--fill) * 18.75%),rgba(0,0,0,calc(.5175 + var(--fl) * .4825)) calc(var(--fill) * 25%),rgba(0,0,0,calc(.4348 + var(--fl) * .5652)) calc(var(--fill) * 31.25%),rgba(0,0,0,calc(.3594 + var(--fl) * .6406)) calc(var(--fill) * 37.5%),rgba(0,0,0,calc(.2911 + var(--fl) * .7089)) calc(var(--fill) * 43.75%),rgba(0,0,0,calc(.23 + var(--fl) * .77)) calc(var(--fill) * 50%),rgba(0,0,0,calc(.1761 + var(--fl) * .8239)) calc(var(--fill) * 56.25%),rgba(0,0,0,calc(.1294 + var(--fl) * .8706)) calc(var(--fill) * 62.5%),rgba(0,0,0,calc(.0898 + var(--fl) * .9102)) calc(var(--fill) * 68.75%),rgba(0,0,0,calc(.0575 + var(--fl) * .9425)) calc(var(--fill) * 75%),rgba(0,0,0,calc(.0323 + var(--fl) * .9677)) calc(var(--fill) * 81.25%),rgba(0,0,0,calc(.0144 + var(--fl) * .9856)) calc(var(--fill) * 87.5%),rgba(0,0,0,calc(.0036 + var(--fl) * .9964)) calc(var(--fill) * 93.75%),rgba(0,0,0,calc(0 + var(--fl) * 1)) calc(var(--fill) * 100%),rgba(0,0,0,var(--fl)) 100%);transition:--fill .7s var(--ease-emph)}@media(hover:hover)and (pointer:fine){.carousel__card.is-active:hover::after{--fill:1}}.carousel__card.is-active:active::after{--fill:1}.carousel__card--no-photo{background:linear-gradient(160deg,var(--color-surface),var(--color-border))}.carousel__card--no-photo::after{background-image:none;background-color:var(--scrim)}.carousel__image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1);opacity:0;transition:transform .9s var(--ease-emph),opacity var(--t-base) ease}.carousel__image.is-loaded{opacity:1}@media(hover:hover)and (pointer:fine){.carousel__card.is-active:hover .carousel__image{transform:scale(1.06)}}.carousel__card.is-active:active .carousel__image{transform:scale(1.06)}.carousel__overlay{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px}.carousel__text{min-width:0}.carousel__title{margin:0 0 2px;font-size:24px;font-weight:var(--fw-bold);color:#fff}.carousel__subtitle{margin:0;font-size:15px;color:hsla(0,0%,100%,.85)}.carousel__link{flex-shrink:0;display:flex;align-items:center;gap:6px;border-radius:var(--r-pill);padding:6px 16px;margin:-6px 4px -6px -4px;font-size:16px;font-weight:var(--fw-bold);color:hsla(0,0%,100%,.85);text-decoration:none;white-space:nowrap;background:rgba(0,0,0,0);transition:color var(--t-fast) ease,background-color var(--t-fast) ease}.carousel__link svg{width:17px;height:17px}@media(hover:hover)and (pointer:fine){.carousel__link:hover{color:#fff;background:var(--glass)}}.carousel__link:active{color:#fff;background:var(--glass-hover)}.smooth-caret{position:absolute;top:0;left:0;width:2px;border-radius:1px;background:var(--color-text);pointer-events:none;opacity:0;transition:transform .08s var(--ease-sig);will-change:transform}.smooth-caret.is-visible{opacity:1}.smooth-caret.is-blinking{animation:smooth-caret-blink 1.06s step-end infinite}@keyframes smooth-caret-blink{0%{opacity:1}50%{opacity:0}}.smooth-caret-mirror{position:absolute;top:0;left:-9999px;visibility:hidden;overflow:hidden;pointer-events:none}.project-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:16px}.project-tile{min-width:0;contain:layout style paint;position:relative;display:flex;flex-direction:column;gap:8px;border-radius:var(--r-xl);padding:22px 132px 22px 24px;background:var(--color-surface);border:1px solid var(--color-border);opacity:1;transform:none;cursor:pointer;transition:opacity var(--t-base) ease,transform var(--t-base) ease,background-color var(--t-hover) ease,border-color var(--t-hover) ease,box-shadow var(--t-hover) ease}@media(hover:hover)and (pointer:fine){.project-tile:hover{background:color-mix(in srgb,var(--color-surface) var(--tile-hover),black)}}.project-tile:active{background:color-mix(in srgb,var(--color-surface) var(--tile-press),black)}@media(hover:hover)and (pointer:fine){.project-tile:hover{border-color:color-mix(in srgb,var(--color-border) 78%,var(--color-text))}}.project-tile.is-hidden{display:none}.project-tile.is-ph{pointer-events:none}.project-tile.is-ph>*{visibility:hidden}.project-tile__arrow{position:absolute;top:50%;right:22px;display:flex;color:var(--color-text-muted);transform:translateY(-50%);transition:color var(--t-fast) ease,transform var(--t-fast) ease}.project-tile__arrow svg{width:18px;height:18px}@media(hover:hover)and (pointer:fine){.project-tile:hover .project-tile__arrow{color:var(--color-text);transform:translate(2px,-50%)}}.project-tile__row{min-width:0;display:flex;align-items:baseline;justify-content:space-between;gap:10px}.project-tile__title{min-width:0;overflow:hidden;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;font-size:17px;font-weight:var(--fw-bold);color:var(--color-text)}.project-tile__date{position:absolute;top:50%;right:50px;flex-shrink:0;font-size:13px;color:var(--color-text-muted);transform:translateY(-50%)}.project-tile__subtitle{min-width:0;overflow:hidden;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;font-size:15px;color:var(--color-text-muted)}@keyframes content-morph-in{0%{opacity:0;transform:translateY(var(--detail-scroll-offset,0));-webkit-filter:blur(8px);filter:blur(8px)}100%{opacity:1;transform:translateY(var(--detail-scroll-offset,0));-webkit-filter:blur(0);filter:blur(0)}}@keyframes carousel-slide{0%{transform:translateX(0)}100%{transform:translateX(calc(-100% - 24px))}}.morph-in{animation:content-morph-in var(--t-fast) var(--ease-emph) both}@keyframes listview-morph-in{0%{opacity:1;background:color-mix(in srgb,var(--color-bg) var(--modal-backdrop-tint),transparent)}100%{opacity:1;background:rgba(0,0,0,0)}}.listview-morph-in{animation:listview-morph-in var(--t-fast) ease-out both}.project-detail{z-index:2;position:absolute;inset:0;max-width:720px;margin:0 auto;padding:56px 4px 56px;display:flex;flex-direction:column;opacity:0;pointer-events:none;transition:opacity var(--t-fast) ease-out,padding-top var(--t-slow) ease,-webkit-filter var(--t-base) ease-out;transition:opacity var(--t-fast) ease-out,filter var(--t-base) ease-out,padding-top var(--t-slow) ease;transition:opacity var(--t-fast) ease-out,filter var(--t-base) ease-out,padding-top var(--t-slow) ease,-webkit-filter var(--t-base) ease-out}.modal-overlay:not(.is-open) .project-detail{-webkit-filter:blur(8px);filter:blur(8px)}.project-detail::before,.project-detail::after{content:"";margin:auto 0}.project-detail>*{flex-shrink:0}.project-detail.is-near-full-height{padding-top:72px;padding-bottom:72px}.project-detail.is-near-full-height::before,.project-detail.is-near-full-height::after{margin:0}.modal-overlay.is-open .modal--detail .project-detail{opacity:1;pointer-events:auto}.img-pic{display:contents}.project-detail__photo-wrap{position:relative;width:100%;height:400px;border-radius:var(--r-xl);overflow:hidden;margin-bottom:20px;background:var(--color-surface)}.project-detail__photo-wrap--empty{display:none}.project-detail__gallery{box-sizing:border-box}.project-detail__gallery .project-detail__gallery-track{display:flex;width:100%;height:100%;transition:transform var(--t-slow) var(--ease-emph)}.project-detail__gallery .project-detail__gallery-slide{flex:0 0 100%;width:100%;height:100%;opacity:1}.project-detail__gallery .project-detail__gallery-btn{position:absolute;top:50%;z-index:2;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:50%;background:color-mix(in srgb,var(--color-bg) 75%,transparent);color:var(--color-text);cursor:pointer;backdrop-filter:blur(var(--blur-sm));-webkit-backdrop-filter:blur(var(--blur-sm))}.project-detail__gallery .project-detail__gallery-btn--prev{left:10px;transform:translateY(-50%) scaleX(-1)}.project-detail__gallery .project-detail__gallery-btn--next{right:10px}.project-detail__gallery .project-detail__gallery-btn svg{width:18px;height:18px}@media(hover:hover)and (pointer:fine){.project-detail__gallery .project-detail__gallery-btn:hover{background:var(--color-bg)}}.project-detail__gallery .project-detail__gallery-btn:active{background:var(--color-bg)}.project-detail__photo{display:block;width:100%;height:100%;object-fit:cover;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:0;transition:opacity var(--t-base) ease}.project-detail__photo.is-loaded{opacity:1}.project-detail__photo-expand{position:absolute;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;border:none;padding:0;background:rgba(0,0,0,0);color:#fff;cursor:pointer;opacity:0;transition:background-color var(--t-fast) ease,opacity var(--t-fast) ease}.project-detail__photo-expand svg{width:28px;height:28px;-webkit-filter:drop-shadow(var(--text-shadow));filter:drop-shadow(var(--text-shadow))}@media(hover:hover)and (pointer:fine){.project-detail__photo-wrap:hover .project-detail__photo-expand{background:var(--scrim);opacity:1}}.project-detail__photo-wrap:active .project-detail__photo-expand{background:var(--scrim);opacity:1}.lightbox{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:rgba(10,10,12,.94);opacity:0;pointer-events:none;visibility:hidden;transition:opacity var(--t-base) ease,visibility 0s linear .3s}.lightbox.is-open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--t-base) ease,visibility 0s}.lightbox__img{max-width:90vw;max-height:88vh;object-fit:contain;border-radius:var(--r-md);opacity:0;transform:scale(.96);transition:opacity var(--t-base) ease,transform var(--t-base) ease-out;cursor:zoom-in}.lightbox.is-open .lightbox__img.is-ready{opacity:1;transform:scale(1)}.lightbox__img.is-zoomed{cursor:zoom-out}.lightbox__img.is-rounded{width:min(90vw,88vh);height:min(90vw,88vh);object-fit:cover;border-radius:50%}.lightbox__spinner{position:absolute;top:50%;left:50%;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:50%;border:2.5px solid var(--glass);border-top-color:hsla(0,0%,100%,.85);animation:spin .7s linear infinite;opacity:0;pointer-events:none;transition:opacity var(--t-fast) ease}.lightbox.is-open.is-loading .lightbox__spinner{opacity:1;transition-delay:.12s}.lightbox.is-zoomed-active{background:rgba(10,10,12,.98)}.lightbox__close{position:absolute;top:calc(20px + env(safe-area-inset-top));right:calc(20px + env(safe-area-inset-right));display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:50%;background:var(--glass);color:#fff;cursor:pointer;backdrop-filter:blur(var(--blur-sm));-webkit-backdrop-filter:blur(var(--blur-sm));transition:background-color var(--t-fast) ease;z-index:210}.lightbox__close svg{width:20px;height:20px}@media(hover:hover)and (pointer:fine){.lightbox__close:hover{background:var(--glass-hover)}}.lightbox__close:active{background:var(--glass-hover)}.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:50%;background:var(--glass);color:#fff;cursor:pointer;opacity:1;backdrop-filter:blur(var(--blur-sm));-webkit-backdrop-filter:blur(var(--blur-sm));transition:background-color var(--t-fast) ease,opacity var(--t-fast) ease}.lightbox__nav svg{width:20px;height:20px}@media(hover:hover)and (pointer:fine){.lightbox__nav:hover{background:var(--glass-hover)}}.lightbox__nav:active{background:var(--glass-hover)}.lightbox__nav.is-hidden{opacity:0;pointer-events:none}.lightbox__nav--prev{left:20px}.lightbox__nav--next{right:20px}@media(max-width:640px),(pointer:coarse)and (max-height:500px){.lightbox__close{top:12px;right:12px}.lightbox__nav--prev{left:8px}.lightbox__nav--next{right:8px}}@media(max-height:500px)and (orientation:landscape){.lightbox__img{max-height:94vh}.lightbox__close,.lightbox__nav{width:32px;height:32px}.lightbox__close svg,.lightbox__nav svg{width:18px;height:18px}.lightbox__close{top:8px;right:8px}.lightbox__nav--prev{left:8px}.lightbox__nav--next{right:8px}}.project-detail__spinner{position:absolute;top:50%;left:50%;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:50%;border:2.5px solid var(--color-border);border-top-color:var(--color-text-muted);animation:spin .7s linear infinite;opacity:1;transition:opacity var(--t-base) ease;pointer-events:none}.project-detail__spinner.is-hidden{opacity:0}.project-detail__loading-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;z-index:10}.project-detail__loading-spinner{display:block;width:40px;height:40px;border:4px solid var(--color-border);border-top-color:var(--color-accent-bg);border-radius:50%;animation:spin .7s linear infinite}.project-detail__heading{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:0 0 12px}.project-detail__title,.skill-detail__title{margin:0;font-size:28px;font-weight:var(--fw-bold);color:var(--color-text)}.project-detail__subtitle{margin:0 0 16px;font-size:15px;font-weight:var(--fw-medium);color:color-mix(in srgb,var(--color-text-muted) 70%,var(--color-text))}.project-detail__date{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;padding:6px 10px;border-radius:var(--r-md);background:var(--color-border);font-size:13px;font-weight:var(--fw-semi);color:var(--color-text)}.project-detail__date svg{width:14px;height:14px}.project-detail__skills-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:0 0 24px}.project-detail__skills{display:flex;flex-wrap:wrap;gap:8px;margin:0}.project-detail__skill{font:inherit;font-size:13px;font-weight:var(--fw-semi);padding:6px 13px;border:none;border-radius:var(--r-pill);background:var(--color-border);color:var(--color-text);cursor:pointer;transition:background-color var(--t-fast) ease}@media(hover:hover)and (pointer:fine){.project-detail__skill:hover{background:color-mix(in srgb,var(--color-border) 88%,black)}}.project-detail__skill:active{background:color-mix(in srgb,var(--color-border) 80%,black)}.project-detail__body,.skill-detail__body{font-size:15px;line-height:1.7;color:var(--color-text)}.project-detail__body>*,.skill-detail__body>*{margin:0}.project-detail__body>*+*,.skill-detail__body>*+*{margin-top:10px}.project-detail__body h1,.project-detail__body h2,.project-detail__body h3,.project-detail__body h4,.skill-detail__body h1,.skill-detail__body h2,.skill-detail__body h3,.skill-detail__body h4{color:var(--color-text);font-weight:var(--fw-bold)}.project-detail__body>:is(h1,h2,h3,h4)+*,.skill-detail__body>:is(h1,h2,h3,h4)+*{margin-top:6px}.project-detail__body h1,.skill-detail__body h1{font-size:20px}.project-detail__body h2,.skill-detail__body h2{font-size:17px}.project-detail__body h3,.skill-detail__body h3{font-size:16px}.project-detail__body h4,.skill-detail__body h4{font-size:14px}.project-detail__body ul,.project-detail__body ol,.skill-detail__body ul,.skill-detail__body ol{padding-left:22px}.project-detail__body li+li,.skill-detail__body li+li{margin-top:6px}.project-detail__body li>ul,.project-detail__body li>ol,.skill-detail__body li>ul,.skill-detail__body li>ol{margin-top:6px}.project-detail__body strong,.skill-detail__body strong{font-weight:var(--fw-bold)}.project-detail__body em,.skill-detail__body em{font-style:italic}.project-detail__body a,.skill-detail__body a{color:var(--color-accent-bg);opacity:1;text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb,var(--color-accent-bg) 40%,transparent);text-decoration-color:color-mix(in srgb,var(--color-accent-bg) 40%,transparent);text-underline-offset:2px;transition:-webkit-text-decoration-color var(--t-fast) ease;transition:text-decoration-color var(--t-fast) ease;transition:text-decoration-color var(--t-fast) ease,-webkit-text-decoration-color var(--t-fast) ease}@media(hover:hover)and (pointer:fine){.project-detail__body a:hover,.skill-detail__body a:hover{-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}}.project-detail__body blockquote,.skill-detail__body blockquote{padding:2px 0 2px 16px;border-left:3px solid var(--color-border);color:var(--color-text-muted);font-style:italic}.project-detail__body pre,.skill-detail__body pre{padding:12px 14px;border-radius:var(--r-md);background:color-mix(in srgb,var(--color-border) 50%,transparent);overflow-x:auto}.project-detail__body pre code,.skill-detail__body pre code{font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:13px;white-space:pre;color:var(--color-text);background:none;padding:0;border-radius:0}.project-detail__body code,.skill-detail__body code{font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.9em;background:color-mix(in srgb,var(--color-border) 60%,transparent);padding:1px 5px;border-radius:var(--r-sm)}.project-detail__body hr,.skill-detail__body hr{border:none;border-top:1px solid var(--color-border)}.project-detail__body .lexical-token-comment,.skill-detail__body .lexical-token-comment{color:var(--color-text-muted);font-style:italic}.project-detail__body .lexical-token-punctuation,.skill-detail__body .lexical-token-punctuation{color:var(--color-text-muted)}.project-detail__body .lexical-token-property,.project-detail__body .lexical-token-selector,.skill-detail__body .lexical-token-property,.skill-detail__body .lexical-token-selector{color:#2b8a3e}.project-detail__body .lexical-token-attr,.skill-detail__body .lexical-token-attr{color:#9c36b5}.project-detail__body .lexical-token-function,.skill-detail__body .lexical-token-function{color:#1971c2}.project-detail__body .lexical-token-variable,.skill-detail__body .lexical-token-variable{color:#d9480f}.project-detail__body .lexical-token-operator,.skill-detail__body .lexical-token-operator{color:var(--color-text)}.project-detail__body .lexical-checklist,.skill-detail__body .lexical-checklist{list-style:none;padding-left:4px}.project-detail__body li.lexical-li-checked,.project-detail__body li.lexical-li-unchecked,.skill-detail__body li.lexical-li-checked,.skill-detail__body li.lexical-li-unchecked{position:relative;list-style:none;padding-left:26px}.project-detail__body li.lexical-li-checked::before,.project-detail__body li.lexical-li-unchecked::before,.skill-detail__body li.lexical-li-checked::before,.skill-detail__body li.lexical-li-unchecked::before{content:"";position:absolute;left:2px;top:3px;width:16px;height:16px;border-radius:var(--r-sm);border:1.5px solid var(--color-border);background:var(--color-surface)}.project-detail__body li.lexical-li-checked,.skill-detail__body li.lexical-li-checked{color:var(--color-text-muted);text-decoration:line-through}.project-detail__body li.lexical-li-checked::before,.skill-detail__body li.lexical-li-checked::before{border-color:var(--color-accent-bg);background:var(--color-accent-bg)}.project-detail__body li.lexical-li-checked::after,.skill-detail__body li.lexical-li-checked::after{content:"";position:absolute;left:6px;top:6px;width:9px;height:5px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg)}.project-detail__body .lexical-table-wrap,.skill-detail__body .lexical-table-wrap{overflow-x:auto}.project-detail__body .lexical-table,.skill-detail__body .lexical-table{border-collapse:collapse;width:100%;font-size:14px}.project-detail__body .lexical-table th,.project-detail__body .lexical-table td,.skill-detail__body .lexical-table th,.skill-detail__body .lexical-table td{border:1px solid var(--color-border);padding:6px 10px;text-align:left;vertical-align:top}.project-detail__body .lexical-table th,.skill-detail__body .lexical-table th{background:color-mix(in srgb,var(--color-border) 40%,transparent);font-weight:var(--fw-bold)}.skill-detail__body{max-width:640px;margin-left:auto;margin-right:auto}@media(prefers-color-scheme:dark){.project-detail__body .lexical-token-property,.project-detail__body .lexical-token-selector,.skill-detail__body .lexical-token-property,.skill-detail__body .lexical-token-selector{color:#69db7c}.project-detail__body .lexical-token-attr,.skill-detail__body .lexical-token-attr{color:#da77f2}.project-detail__body .lexical-token-function,.skill-detail__body .lexical-token-function{color:#74c0fc}.project-detail__body .lexical-token-variable,.skill-detail__body .lexical-token-variable{color:#ffa94d}}.project-detail__body .project-detail__inline-photo{display:block;width:100%;max-height:220px;object-fit:cover;border-radius:var(--r-lg);margin:16px 0;cursor:zoom-in;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--color-surface);transition:opacity var(--t-fast) ease}@media(hover:hover)and (pointer:fine){.project-detail__body .project-detail__inline-photo:hover{opacity:.85}}.project-detail__body .project-detail__inline-photo:active{opacity:.7}.lexical-youtube{position:relative;display:block;width:100%;aspect-ratio:16/9;border-radius:var(--r-lg);overflow:hidden;margin:16px 0;background:#000;cursor:pointer}.lexical-youtube img{display:block;width:100%;height:100%;object-fit:cover;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lexical-youtube iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.lexical-youtube__play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:50%;background:red;color:#fff;padding-left:3px;transition:background-color var(--t-fast) ease}@media(hover:hover)and (pointer:fine){.lexical-youtube:hover .lexical-youtube__play{background:color-mix(in srgb,#f00 80%,black)}}.lexical-youtube:active .lexical-youtube__play{background:color-mix(in srgb,#f00 70%,black)}.project-detail__fab,.skill-detail__fab{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(16px);z-index:6;display:flex;align-items:center;gap:5px;border:none;border-radius:var(--r-pill);padding:8px 16px;font-size:14px;font-weight:var(--fw-semi);font-family:inherit;color:#fff;background:var(--color-accent-bg);box-shadow:var(--shadow-sm);cursor:pointer;overflow:hidden;opacity:0;visibility:hidden;pointer-events:none;transition:background-color var(--t-fast) ease,opacity var(--t-base) ease,transform var(--t-slow) ease,visibility 0s linear .3s}.modal-overlay.is-open .modal.modal--detail~.project-detail__fab,.modal-overlay.is-open .modal.modal--detail~.skill-detail__fab{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0);transition:background-color var(--t-fast) ease,opacity var(--t-fast) ease .02s,transform var(--t-base) var(--ease-emph) .02s,visibility 0s linear 0s}.modal-overlay.is-open .modal.modal--detail~.project-detail__fab::after,.modal-overlay.is-open .modal.modal--detail~.skill-detail__fab::after{animation-play-state:running}.project-detail__fab svg,.skill-detail__fab svg{width:16px;height:16px;flex-shrink:0}@media(hover:hover)and (pointer:fine){.project-detail__fab:hover,.skill-detail__fab:hover{background:color-mix(in srgb,var(--color-accent-bg) 84%,black)}}.project-detail__fab:active,.skill-detail__fab:active{background:color-mix(in srgb,var(--color-accent-bg) 72%,black)}@media(hover:hover)and (pointer:fine){.project-detail__fab:hover::after,.skill-detail__fab:hover::after{opacity:0}}.project-detail__fab::after,.skill-detail__fab::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(105deg,transparent 0%,color-mix(in srgb,#fff 0%,transparent) 42%,color-mix(in srgb,#fff 35%,transparent) 50%,color-mix(in srgb,#fff 0%,transparent) 58%,transparent 100%);background-size:200% 100%;background-position:180% 0;mix-blend-mode:overlay;animation:fab-shimmer 1.5s linear 1;animation-play-state:paused;pointer-events:none;transition:opacity var(--t-base) ease}@keyframes fab-shimmer{0%{background-position:180% 0}100%{background-position:-80% 0}}.modal__listview{position:absolute;inset:0;padding:84px 24px 24px;display:flex;flex-direction:column;align-items:center;gap:24px;opacity:0;pointer-events:none;-webkit-filter:blur(0);filter:blur(0);transform:scale(1);transition:opacity var(--t-slow) ease,background var(--t-slow) ease,transform var(--t-slow) ease,-webkit-filter var(--t-slow) ease;transition:opacity var(--t-slow) ease,background var(--t-slow) ease,filter var(--t-slow) ease,transform var(--t-slow) ease;transition:opacity var(--t-slow) ease,background var(--t-slow) ease,filter var(--t-slow) ease,transform var(--t-slow) ease,-webkit-filter var(--t-slow) ease}.modal-overlay.is-open .modal:not(.modal--detail):not(.modal--backdrop-dim) .modal__listview{opacity:1;pointer-events:auto}.modal--detail:not(.modal--transparent) .modal__listview,.modal--backdrop-dim .modal__listview{opacity:1;background:color-mix(in srgb,var(--color-bg) var(--modal-backdrop-tint),transparent);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none}.modal--detail.modal--from-artifact .modal__listview{opacity:0;background:rgba(0,0,0,0)}.modal-overlay.is-open .modal--transparent .modal__listview{opacity:0;pointer-events:none}.modal--presizing .modal__listview{opacity:0!important}.prompt-bar{position:absolute;bottom:calc(12px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:100%;max-width:696px;padding:0 24px;z-index:3}.prompt-bar__disclaimer{margin:14px 0 0;text-align:center;font-size:13px;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prompt-bar__disclaimer.is-notice{color:var(--color-text)}.prompt-bar__context{width:100%}.prompt-bar__context-pill{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 14px;background:color-mix(in srgb,var(--color-text) 14%,transparent);border:1px solid color-mix(in srgb,var(--color-text) 18%,transparent);border-bottom:none;border-radius:var(--r-xl) var(--r-xl) 0 0;color:var(--color-text);font-size:13px;font-weight:var(--fw-semi);margin-bottom:-1px;position:relative;z-index:1}.prompt-bar__context-pill .context-pill__meta{display:flex;align-items:center;gap:8px;min-width:0}.prompt-bar__context-pill svg{width:18px;height:18px;flex-shrink:0;color:var(--color-text-muted)}.prompt-bar__context-pill .context-pill__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:var(--fw-medium)}@supports(text-box:trim-both cap alphabetic){.prompt-bar__context-pill .context-pill__label{text-box:trim-both cap alphabetic;padding-block:.25em;margin-block:-.25em}}.prompt-bar__context-pill .context-pill__close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;border:none;background:rgba(0,0,0,0);color:var(--color-text-muted);cursor:pointer;padding:0;margin-left:8px;transition:background-color var(--t-fast) ease,color var(--t-fast) ease}.prompt-bar__context-pill .context-pill__close svg{width:14px;height:14px}@media(hover:hover)and (pointer:fine){.prompt-bar__context-pill .context-pill__close:hover{background:color-mix(in srgb,var(--color-text) 15%,transparent)}}.prompt-bar__context-pill .context-pill__close:active{background:color-mix(in srgb,var(--color-text) 22%,transparent)}@media(hover:hover)and (pointer:fine){.prompt-bar__context-pill .context-pill__close:hover{color:var(--color-text)}}.prompt-bar__form{position:relative;z-index:2}.prompt-bar__form.has-context{border-radius:0 0 28px 28px}.prompt-bar__form{display:flex;align-items:flex-end;gap:8px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:28px;padding:10px 10px 10px 20px}.prompt-bar__input{flex:1;resize:none;border:none;outline:none;background:rgba(0,0,0,0);color:var(--color-text);font-size:16px;line-height:1.4;max-height:160px;padding:6px 0;font-family:inherit;overflow-y:hidden;-ms-scroll-chaining:none;overscroll-behavior:contain}.prompt-bar__input::-webkit-input-placeholder{color:var(--color-text-muted)}.prompt-bar__input::-ms-input-placeholder{color:var(--color-text-muted)}.prompt-bar__input::placeholder{color:var(--color-text-muted)}.prompt-bar__input.has-smooth-caret{caret-color:rgba(0,0,0,0)}.prompt-bar__send{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:none;outline:none;background:var(--color-border);--send-fg:var(--color-text-muted);color:var(--send-fg);cursor:not-allowed;padding:0;transition:background-color var(--t-fast) ease,color var(--t-fast) ease}.prompt-bar__send:disabled{cursor:not-allowed}.prompt-bar__send svg{color:inherit;transition:none}.prompt-bar__send.is-active,.prompt-bar__send.is-continue{background:var(--color-text);--send-fg:var(--color-page-bg);color:var(--send-fg);cursor:pointer}@media(hover:hover)and (pointer:fine){.prompt-bar__send.is-active:hover,.prompt-bar__send.is-continue:hover{background:color-mix(in srgb,var(--color-text) 88%,var(--color-page-bg))}}.prompt-bar__send.is-active:active,.prompt-bar__send.is-continue:active{background:color-mix(in srgb,var(--color-text) 76%,var(--color-page-bg))}.prompt-bar__send.is-too-long{background:color-mix(in srgb,var(--color-danger) 20%,var(--color-border));--send-fg:var(--color-danger);color:var(--send-fg)}.modal__content--contact{margin-top:auto;margin-bottom:auto}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;align-items:stretch}.contact-info{display:flex;flex-direction:column;border-radius:var(--r-xl);padding:20px;background:var(--color-accent);color:var(--color-on-accent)}.contact-info__badge{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-lg);background:var(--color-accent-bg);color:#fff;margin-bottom:20px}.contact-info__badge svg{width:22px;height:22px}.contact-info__title{margin:0 0 8px;font-size:24px;font-weight:var(--fw-bold)}.contact-info__copy{margin:0 0 20px;font-size:16px;line-height:1.55;color:color-mix(in srgb,var(--color-on-accent) 62%,transparent)}.contact-info__list{list-style:none;margin:auto 0 0;padding:0;display:flex;flex-direction:column;gap:12px}.contact-info__item{display:flex;align-items:center;gap:14px}.contact-info__item:has([data-field=email]),.contact-info__item:has([data-field=phone]),.contact-info__item:has([data-field=address]){opacity:0;visibility:hidden;transition:opacity var(--t-base) ease}.contact-info.is-decoded .contact-info__item{opacity:1;visibility:visible}@media(prefers-reduced-motion:reduce){.contact-info__item{transition:none}}.contact-info__item-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:color-mix(in srgb,var(--color-on-accent) 8%,transparent);color:color-mix(in srgb,var(--color-on-accent) 75%,transparent)}.contact-info__item-icon svg{width:19px;height:19px}.contact-info__value{font-size:16px;font-weight:var(--fw-medium);color:inherit;text-decoration:underline;-webkit-text-decoration-color:rgba(0,0,0,0);text-decoration-color:rgba(0,0,0,0);text-underline-offset:3px;transition:-webkit-text-decoration-color var(--t-base) ease;transition:text-decoration-color var(--t-base) ease;transition:text-decoration-color var(--t-base) ease,-webkit-text-decoration-color var(--t-base) ease;word-break:break-word}@media(hover:hover)and (pointer:fine){.contact-info__value[href]:hover{-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}}.contact-info__value[href]:active{-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}.contact-info__value--address{display:flex;flex-direction:column;gap:2px}.contact-form-card{position:relative;border-radius:var(--r-xl);padding:20px;background:var(--color-surface);border:1px solid var(--color-border);overflow:hidden}.contact-form-card__stack{display:grid;grid-template-rows:1fr;height:100%;min-height:340px}.contact-form-card__stack>*{grid-area:1/1}.contact-form{display:flex;flex-direction:column;min-height:0;position:relative;transition:opacity var(--t-base) ease,transform var(--t-slow) ease,-webkit-filter var(--t-base) ease;transition:opacity var(--t-base) ease,filter var(--t-base) ease,transform var(--t-slow) ease;transition:opacity var(--t-base) ease,filter var(--t-base) ease,transform var(--t-slow) ease,-webkit-filter var(--t-base) ease}.contact-form-card.is-success .contact-form{opacity:0;-webkit-filter:blur(10px);filter:blur(10px);transform:scale(.96);pointer-events:none}.is-honeypot{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;padding:0;border:0;overflow:hidden}.contact-form__spinner{display:none;position:absolute;inset:0;align-items:center;justify-content:center;pointer-events:none;z-index:4}.contact-form__spinner::after{content:"";width:24px;height:24px;border-radius:50%;border:2.5px solid var(--color-border);border-top-color:var(--color-text-muted);animation:spin .7s linear infinite}.contact-form.is-submitting .contact-form__spinner{display:flex}.contact-form.is-submitting .contact-form__fields,.contact-form.is-submitting .contact-form__footer{opacity:.3;pointer-events:none;transition:opacity var(--t-fast) ease}.contact-form__fields{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:14px}.contact-form__footer{flex-shrink:0;display:flex;flex-direction:column;gap:6px;margin-top:14px}.contact-success{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;padding:12px 8px;opacity:0;-webkit-filter:blur(10px);filter:blur(10px);transform:scale(1.06);pointer-events:none;transition:opacity var(--t-slow) ease,transform var(--t-slow) var(--ease-emph),-webkit-filter var(--t-slow) ease;transition:opacity var(--t-slow) ease,filter var(--t-slow) ease,transform var(--t-slow) var(--ease-emph);transition:opacity var(--t-slow) ease,filter var(--t-slow) ease,transform var(--t-slow) var(--ease-emph),-webkit-filter var(--t-slow) ease}.contact-form-card.is-success .contact-success{opacity:1;-webkit-filter:blur(0);filter:blur(0);transform:scale(1);pointer-events:auto;transition-delay:.15s}.contact-success__icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;color:#fff;background:var(--color-success);margin-bottom:4px}.contact-success__icon svg{width:26px;height:26px}.contact-success__title{margin:0;font-size:20px;font-weight:var(--fw-bold);color:var(--color-text)}.contact-success__copy{margin:0;max-width:340px;font-size:15px;line-height:1.6;color:var(--color-text-muted)}.contact-field{display:flex;flex-direction:column;gap:7px}.contact-field--email{position:relative}.contact-email-suggest{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:5;list-style:none;margin:0;padding:6px;border-radius:var(--r-lg);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);opacity:0;transform:translateY(6px) scale(.98);transform-origin:top center;pointer-events:none;transition:opacity var(--t-fast) ease,transform var(--t-base) var(--ease-emph)}.contact-email-suggest.is-open{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.contact-email-suggest__item{width:100%;border:none;border-radius:var(--r-md);padding:8px 10px;font-size:14px;font-family:inherit;text-align:left;color:var(--color-text);background:rgba(0,0,0,0);cursor:pointer;transition:background-color var(--t-fast) ease}.contact-email-suggest__item.is-highlighted{background:color-mix(in srgb,var(--color-surface) var(--tile-hover),black)}@media(hover:hover)and (pointer:fine){.contact-email-suggest__item:hover{background:color-mix(in srgb,var(--color-surface) var(--tile-hover),black)}}.contact-email-suggest__item:active{background:color-mix(in srgb,var(--color-surface) var(--tile-press),black)}.contact-email-suggest__item b{color:var(--color-accent-bg);font-weight:var(--fw-bold)}.contact-email-suggest__item .contact-email-suggest__primary{color:var(--color-text);font-weight:var(--fw-bold)}.contact-email-suggest__tab{margin-left:auto;padding:1px 7px;border-radius:var(--r-pill);background:color-mix(in srgb,var(--color-text) 18%,transparent);color:var(--color-text-muted);font-size:11px;font-weight:var(--fw-bold);letter-spacing:.04em;line-height:1.4;flex-shrink:0;pointer-events:none}@media(pointer:coarse){.contact-email-suggest__tab{display:none}}.contact-email-suggest__item{display:flex;align-items:center;justify-content:space-between;gap:8px}.contact-email-suggest__item span{min-width:0}.contact-field__label{font-size:13px;line-height:18px;font-weight:var(--fw-semi);color:var(--color-text-muted)}.contact-field>.contact-field__label{display:block}.contact-field__head{display:flex;align-items:center;gap:8px;height:18px}.contact-field__error{display:none;align-items:center;gap:4px;margin-left:auto;height:18px;padding:0 8px;border-radius:var(--r-pill);background:color-mix(in srgb,var(--color-danger) 14%,transparent);color:var(--color-danger);font-size:11px;font-weight:var(--fw-semi);line-height:18px;white-space:nowrap}.contact-field__error .icon{width:12px;height:12px;flex-shrink:0}.contact-field.is-error .contact-field__error{display:inline-flex}.contact-field.is-error .contact-field__input{background:color-mix(in srgb,var(--color-danger) 8%,var(--color-bg));border-color:var(--color-danger)}.contact-field__input{width:100%;border:1px solid var(--color-border);border-radius:var(--r-lg);padding:11px 14px;font-size:16px;font-family:inherit;color:var(--color-text);background:var(--color-bg);outline:none;transition:border-color var(--t-fast) ease}.contact-field__input::-webkit-input-placeholder{color:var(--color-text-muted)}.contact-field__input::-ms-input-placeholder{color:var(--color-text-muted)}.contact-field__input::placeholder{color:var(--color-text-muted)}.contact-field__input:focus{border-color:var(--color-accent-bg)}.contact-field__input--area{resize:none;min-height:72px;line-height:1.5;overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--color-border) rgba(0,0,0,0)}.contact-form__submit{margin-top:4px;border:none;border-radius:var(--r-pill);padding:13px 16px;font-size:14px;font-weight:var(--fw-semi);font-family:inherit;color:#fff;background:var(--color-accent-bg);cursor:pointer;transition:transform var(--t-fast) ease,background-color var(--t-hover) ease}@media(hover:hover)and (pointer:fine){.contact-form__submit:hover{background:color-mix(in srgb,var(--color-accent-bg) 84%,black)}}.contact-form__submit:active{background:color-mix(in srgb,var(--color-accent-bg) 72%,black)}.contact-form__submit:active{transform:scale(.96)}@media(prefers-color-scheme:light){.contact-form__submit{background:var(--color-accent);color:var(--color-on-accent)}}@media(prefers-color-scheme:light)and (hover:hover)and (pointer:fine){.contact-form__submit:hover{background:var(--color-accent-hover)}}@media(prefers-color-scheme:light){.contact-form__submit:active{background:var(--color-accent-hover)}}.contact-form__submit:disabled{opacity:.55;cursor:default}.captcha-widget-slot,.captcha-widget-slot iframe{outline:none}.captcha-widget-slot{min-height:0;overflow:hidden;transition:min-height var(--t-base) ease,margin var(--t-base) ease}.captcha-widget-slot[data-captcha-rendered]{margin:14px 0}.contact-form__status{margin:2px 0 0;min-height:18px;font-size:13px;color:var(--color-text-muted)}.contact-form__status.is-success{color:var(--color-success)}.modal__content--about{position:relative;margin-top:auto;margin-bottom:auto}.modal--detail .modal__content--about{opacity:1;-webkit-filter:none;filter:none;transform:none;transition:none;max-height:100%}.modal--detail-closing .modal__content--about{opacity:1;-webkit-filter:none;filter:none;transform:none;transition:none;max-height:100%}.about-page{position:absolute;top:0;left:0;display:flex;flex-direction:column;gap:24px;width:100%;opacity:0;pointer-events:none;-webkit-filter:none;filter:none;transform:none;transition:opacity var(--t-slow) ease,background var(--t-slow) ease,transform var(--t-slow) ease,-webkit-filter var(--t-slow) ease;transition:opacity var(--t-slow) ease,background var(--t-slow) ease,filter var(--t-slow) ease,transform var(--t-slow) ease;transition:opacity var(--t-slow) ease,background var(--t-slow) ease,filter var(--t-slow) ease,transform var(--t-slow) ease,-webkit-filter var(--t-slow) ease}.modal:not(.modal--detail):not(.modal--backdrop-dim):not(.modal--transparent) .about-page{position:relative}.modal-overlay.is-open .modal:not(.modal--detail):not(.modal--backdrop-dim) .about-page{opacity:1;pointer-events:auto}.modal--detail:not(.modal--transparent) .about-page,.modal--backdrop-dim .about-page{position:relative;padding-bottom:24px;margin-bottom:-24px;opacity:1;background:color-mix(in srgb,var(--color-bg) var(--modal-backdrop-tint),transparent);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none}.modal--detail.modal--from-artifact .about-page{opacity:0;background:rgba(0,0,0,0)}.modal-overlay.is-open .modal--transparent .about-page{position:relative;opacity:0;pointer-events:none}.about-cards{display:grid;grid-template-columns:minmax(220px,2fr) minmax(0,4fr);gap:24px;align-items:stretch}.about-photo-card{position:relative;min-height:360px;border-radius:var(--r-xl);overflow:hidden;background:var(--color-surface);border:none}.about-photo-card__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.about-photo-card__plate{position:absolute;left:0;right:0;bottom:0;height:52%;padding:0 26px 22px;display:flex;align-items:flex-end;isolation:isolate}.about-photo-card__plate::before,.about-photo-card__plate::after{content:"";position:absolute;inset:0;pointer-events:none}.about-photo-card__plate::before{z-index:-2;background:linear-gradient(to top,rgba(10,10,12,.62) 0%,rgba(10,10,12,.6) 14%,rgba(10,10,12,.56) 30%,rgba(10,10,12,.5) 44%,rgba(10,10,12,.42) 58%,rgba(10,10,12,.26) 73%,rgba(10,10,12,.1) 86%,rgba(10,10,12,.03) 94%,rgba(10,10,12,.006) 98%,transparent 100%)}.about-photo-card__plate::after{z-index:-1;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);mask-image:linear-gradient(to top,#000 0%,rgba(0,0,0,.95) 18%,rgba(0,0,0,.83) 40%,rgba(0,0,0,.58) 59%,rgba(0,0,0,.28) 77%,rgba(0,0,0,.08) 92%,rgba(0,0,0,.014) 97%,transparent 100%);-webkit-mask-image:linear-gradient(to top,#000 0%,rgba(0,0,0,.95) 18%,rgba(0,0,0,.83) 40%,rgba(0,0,0,.58) 59%,rgba(0,0,0,.28) 77%,rgba(0,0,0,.08) 92%,rgba(0,0,0,.014) 97%,transparent 100%)}.about-photo-card__text{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left}.about-photo-card__name{font-size:28px;font-weight:var(--fw-bold);color:#fff;text-shadow:var(--text-shadow)}.about-photo-card__subtitle{font-size:15px;font-weight:var(--fw-semi);color:hsla(0,0%,100%,.85);text-shadow:var(--text-shadow)}.about-info-card{--tab-gutter:20px;display:flex;flex-direction:column;gap:var(--tab-gutter);border-radius:var(--r-xl);padding:calc(var(--tab-gutter) - 1px);min-width:0;background:var(--color-surface);border:1px solid var(--color-border)}.about-bio{margin:0;font-size:17px;line-height:1.75;margin:-.5em 0 calc(-.375em - 3px);color:var(--color-text)}.about-tabs{display:flex;flex-direction:column;gap:var(--tab-gutter);flex:1;min-height:0}.about-tabs__bar{position:relative;flex-shrink:0;display:inline-flex;gap:4px;padding:2px;border-radius:var(--r-pill);background:var(--color-bg);border:1px solid color-mix(in srgb,var(--color-border) 65%,transparent);align-self:flex-start;margin:0}@media(prefers-color-scheme:light){.about-tabs__bar{background:var(--color-surface)}}.about-tabs__bar .about-tabs__indicator{position:absolute;top:2px;left:2px;height:calc(100% - 4px);width:0;border-radius:var(--r-pill);background:var(--color-accent-bg);cursor:-webkit-grab;cursor:grab;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:left var(--t-base) var(--ease-emph),width var(--t-base) var(--ease-emph)}@media(prefers-color-scheme:light){.about-tabs__bar .about-tabs__indicator{background:rgba(0,0,0,0)}.about-tabs__bar .about-tabs__indicator::after{content:"";position:absolute;inset:0;border-radius:inherit;z-index:3;background:var(--color-accent-bg);backdrop-filter:invert(1);-webkit-backdrop-filter:invert(1);mix-blend-mode:screen;pointer-events:none}}.about-tabs__btn{position:relative;z-index:2;border:none;border-radius:var(--r-pill);padding:10px 17px;font-size:13px;font-weight:var(--fw-semi);font-family:inherit;color:#e5e5e5;background:rgba(0,0,0,0);cursor:pointer;mix-blend-mode:color-dodge}.about-tabs__btn.is-active{pointer-events:none}@media(prefers-color-scheme:light){.about-tabs__btn{color:var(--color-text);mix-blend-mode:normal}}.about-tabs__panels{position:relative;flex:0 0 auto;min-height:0;overflow:visible;-webkit-clip-path:inset(0 calc(var(--tab-gutter) * -1 + 1px));clip-path:inset(0 calc(var(--tab-gutter) * -1 + 1px));isolation:isolate}.about-tabs__panels::before,.about-tabs__panels::after{content:"";position:absolute;top:0;bottom:0;width:calc(var(--tab-gutter) - 1px);z-index:2;pointer-events:none}.about-tabs__panels::before{left:calc(var(--tab-gutter)*-1 + 1px);background:linear-gradient(90deg,var(--color-surface) 0%,color-mix(in srgb,var(--color-surface) 78%,transparent) 38%,color-mix(in srgb,var(--color-surface) 34%,transparent) 70%,transparent 100%)}.about-tabs__panels::after{right:calc(var(--tab-gutter)*-1 + 1px);background:linear-gradient(270deg,var(--color-surface) 0%,color-mix(in srgb,var(--color-surface) 78%,transparent) 38%,color-mix(in srgb,var(--color-surface) 34%,transparent) 70%,transparent 100%)}.about-tabs__panels .about-tabs__track{display:flex;gap:var(--tab-gutter);width:100%;min-height:100%;transition:transform var(--t-slow) var(--ease-emph)}.about-tabs__panel{flex:0 0 100%;width:100%;display:flex;flex-direction:column}.about-tech-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;flex:1;align-content:start}.about-tech-card{min-width:0;display:flex;flex-direction:column;justify-content:center;gap:8px;border-radius:var(--r-lg);padding:10px;height:100px;background:var(--color-bg);border:1px solid rgba(0,0,0,0);cursor:pointer;font-family:inherit;text-align:left;transition:background-color var(--t-hover) ease,border-color var(--t-hover) ease}.about-tech-card.is-ph{pointer-events:none}@media(hover:hover)and (pointer:fine){.about-tech-card:hover{background:color-mix(in srgb,var(--color-bg) var(--tile-hover),black)}}.about-tech-card:active{background:color-mix(in srgb,var(--color-bg) var(--tile-press),black)}@media(hover:hover)and (pointer:fine){.about-tech-card:hover{border-color:var(--color-accent-bg)}.about-tech-card:hover .about-fact__label.is-marquee::before{background:linear-gradient(to left,transparent,color-mix(in srgb,var(--color-bg) var(--tile-hover),black))}.about-tech-card:hover .about-fact__label.is-marquee::after{background:linear-gradient(to right,transparent,color-mix(in srgb,var(--color-bg) var(--tile-hover),black))}}.about-tech-card .about-fact__label{position:relative;overflow:hidden;white-space:nowrap}.about-tech-card .about-fact__label.is-marquee::before,.about-tech-card .about-fact__label.is-marquee::after{content:"";position:absolute;top:0;bottom:0;width:16px;pointer-events:none}.about-tech-card .about-fact__label.is-marquee::before{left:0;background:linear-gradient(to left,transparent,var(--color-bg))}.about-tech-card .about-fact__label.is-marquee::after{right:0;background:linear-gradient(to right,transparent,var(--color-bg))}.about-tech-card .about-fact__label .about-fact__label-text{display:inline-block;vertical-align:top;max-width:calc(100% - 14px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.about-tech-card .about-fact__label.is-marquee .about-fact__label-text{display:inline-flex;max-width:none;overflow:visible;text-overflow:clip;gap:var(--marquee-gap,28px);animation:about-fact-marquee var(--marquee-duration,8s) linear infinite}@media(hover:hover)and (pointer:fine){.about-tech-card .about-fact__label.is-marquee .about-fact__label-text{animation-play-state:paused}.about-tech-card .about-fact__label.is-marquee:hover .about-fact__label-text{animation-play-state:running;animation-duration:var(--marquee-duration-hover,3.5s)}}@keyframes about-fact-marquee{from{transform:translateX(0)}to{transform:translateX(calc(-1 * var(--marquee-distance,100%)))}}.about-tech-card--logo-only{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr;gap:0;align-items:center}.about-tech-card--logo-only::before{content:"";height:16px}.about-tech-card--logo-only .about-fact__label{display:none!important}.about-tech-card--logo-only .about-tech-card__row{display:flex;align-items:center;justify-content:flex-end;width:100%;height:16px;gap:6px}.about-tech-card--logo-only .about-tech-card__arrow svg{width:16px;height:16px}.about-tech-card--logo-only .about-tech-card__image{align-self:center;margin-top:-3px}.about-tech-card__image{margin-block:auto;display:flex;align-items:center;justify-content:center;height:36px}.about-tech-card__image picture{display:contents}.about-tech-card__image img{height:100%;width:auto;max-width:100%;object-fit:contain}.about-tech-card__image svg{width:28px;height:28px;color:var(--color-accent-bg)}.about-tech-card__image--invert img{-webkit-filter:invert(1);filter:invert(1)}.about-tech-card__fallback{display:none;align-items:center;justify-content:center;height:100%;font-size:15px;font-weight:var(--fw-bold);letter-spacing:.02em;color:var(--color-text-muted)}.about-tech-card__row{display:flex;align-items:center;gap:4px}.about-fact__label{flex:1;min-width:0;font-size:14px;font-weight:var(--fw-medium);color:var(--color-text)}.about-tech-card .about-tech-card__arrow{flex-shrink:0;display:flex;color:var(--color-text-muted);transition:color var(--t-hover) ease,transform var(--t-hover) ease}.about-tech-card .about-tech-card__arrow svg{width:16px;height:16px}@media(hover:hover)and (pointer:fine){.about-tech-card:hover .about-tech-card__arrow{color:var(--color-text);transform:translateX(3px)}}.skill-level{flex-shrink:0;display:flex;align-items:flex-end;gap:2px;height:12px}.skill-level__bar{width:3px;border-radius:1px;background:var(--color-border);transition:background-color var(--t-fast) ease}.skill-level__bar:nth-child(1){height:5px}.skill-level__bar:nth-child(2){height:8.5px}.skill-level__bar:nth-child(3){height:12px}.skill-level[data-level="1"] .skill-level__bar:nth-child(1),.skill-level[data-level="2"] .skill-level__bar:nth-child(-n+2),.skill-level[data-level="3"] .skill-level__bar{background:var(--color-accent-bg)}.skill-level .skill-level__bar,.about-tech-card .skill-level .skill-level__bar,.skill-related-card .skill-level .skill-level__bar{transition:background-color var(--t-hover) ease}@media(hover:hover)and (pointer:fine){.about-tech-card:hover .skill-level__bar{background:color-mix(in srgb,var(--color-text) 40%,transparent)}}@media(hover:hover)and (pointer:fine){.about-tech-card:hover .skill-level[data-level="1"] .skill-level__bar:nth-child(1),.about-tech-card:hover .skill-level[data-level="2"] .skill-level__bar:nth-child(-n+2),.about-tech-card:hover .skill-level[data-level="3"] .skill-level__bar{background:var(--color-accent-bg)}}.skill-detail{z-index:2;position:absolute;top:0;left:0;width:100%;height:100%;padding:0 20px 72px;display:flex;flex-direction:column;opacity:0;pointer-events:none;transition:opacity var(--t-fast) ease-out,-webkit-filter var(--t-base) ease-out;transition:opacity var(--t-fast) ease-out,filter var(--t-base) ease-out;transition:opacity var(--t-fast) ease-out,filter var(--t-base) ease-out,-webkit-filter var(--t-base) ease-out}.modal-overlay:not(.is-open) .skill-detail{-webkit-filter:blur(8px);filter:blur(8px)}.skill-detail::before,.skill-detail::after{content:"";margin:auto 0}.skill-detail>*{flex-shrink:0}.skill-detail.is-near-full-height::before,.skill-detail.is-near-full-height::after{margin:0}.modal-overlay.is-open .modal--detail .skill-detail{opacity:1;pointer-events:auto}.skill-detail-carousel{display:flex;flex-wrap:nowrap;width:100%;max-width:640px;margin:0 auto;overflow:hidden;gap:24px;padding-bottom:72px;position:relative}.skill-detail-carousel::before,.skill-detail-carousel::after{content:"";position:absolute;top:0;bottom:0;width:40px;background:linear-gradient(90deg,color-mix(in srgb,var(--color-bg) 100%,transparent),color-mix(in srgb,var(--color-bg) 60%,transparent),transparent);pointer-events:none;z-index:1}.skill-detail-carousel::before{left:0}.skill-detail-carousel::after{right:0;background:linear-gradient(270deg,color-mix(in srgb,var(--color-bg) 100%,transparent),color-mix(in srgb,var(--color-bg) 60%,transparent),transparent)}.skill-detail-carousel--animate{animation:carousel-slide var(--t-slow) var(--ease-emph) forwards}.skill-detail-carousel__slide{flex:0 0 100%;width:100%;min-width:0}.skill-detail__heading{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;max-width:640px;margin:0 auto 16px}.skill-detail__heading::after{content:"";order:1;flex-basis:100%;height:0}.skill-detail__effort{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:var(--r-md);background:color-mix(in srgb,var(--color-border) 90%,transparent);order:2;margin:4px auto 0}.modal .skill-detail__effort{padding:6px 10px}.modal .skill-detail__effort-label{font-size:13px}.modal .skill-detail__effort .skill-level{height:12px}.modal .skill-detail__effort .skill-level__bar{width:3.5px}.modal .skill-detail__effort .skill-level__bar:nth-child(1){height:5px}.modal .skill-detail__effort .skill-level__bar:nth-child(2){height:8px}.modal .skill-detail__effort .skill-level__bar:nth-child(3){height:12px}.skill-detail__effort-label{font-size:13px;font-weight:var(--fw-medium);letter-spacing:.01em;color:color-mix(in srgb,var(--color-text) 70%,transparent)}.skill-detail__effort .skill-level{opacity:1;height:10px;gap:2px}.skill-detail__effort .skill-level__bar{width:3px;border-radius:1px;background:color-mix(in srgb,var(--color-text) 35%,transparent)}.skill-detail__effort .skill-level__bar:nth-child(1){height:4.5px}.skill-detail__effort .skill-level__bar:nth-child(2){height:7px}.skill-detail__effort .skill-level__bar:nth-child(3){height:10px}.skill-detail__effort .skill-level[data-level="1"] .skill-level__bar:nth-child(1),.skill-detail__effort .skill-level[data-level="2"] .skill-level__bar:nth-child(-n+2),.skill-detail__effort .skill-level[data-level="3"] .skill-level__bar{background:color-mix(in srgb,var(--color-accent-bg) 90%,transparent)}.skill-detail__fab-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit}.skill-detail__fab-icon svg{width:16px;height:16px}.has-expanded-artifact .project-detail__fab,.has-expanded-artifact .skill-detail__fab{display:none}.skill-detail__related{max-width:640px;margin:48px auto 0}.skill-related__title{margin:0 0 12px;font-size:13px;font-weight:var(--fw-bold);letter-spacing:.06em;text-transform:uppercase;color:color-mix(in srgb,var(--color-text) 75%,transparent)}.skill-related__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.skill-related-card{position:relative;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:12px;min-height:72px;border-radius:var(--r-lg);padding:14px 16px;background:var(--color-surface);border:1px solid var(--color-border);cursor:pointer;text-align:left;font-family:inherit;transition:background-color var(--t-hover) ease,border-color var(--t-hover) ease}@media(hover:hover)and (pointer:fine){.skill-related-card:hover{background:color-mix(in srgb,var(--color-surface) var(--tile-hover),black)}}.skill-related-card:active{background:color-mix(in srgb,var(--color-surface) var(--tile-press),black)}@media(hover:hover)and (pointer:fine){.skill-related-card:hover{border-color:color-mix(in srgb,var(--color-border) 78%,var(--color-text))}}.skill-related-card__text{display:flex;flex-direction:column;gap:4px;min-width:0}.skill-related-card .skill-level{margin-left:auto}.skill-related-card__effort{display:flex;align-items:center;gap:6px;flex-shrink:0;margin-left:auto}.skill-related-card__effort .skill-level{margin-left:0}.skill-related-card__title{font-size:15px;font-weight:var(--fw-bold);color:var(--color-text)}.skill-related-card__subtitle{font-size:13px;line-height:1.4;color:var(--color-text-muted)}.skill-related-card__arrow{flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);transition:color var(--t-hover) ease,transform var(--t-hover) ease}.skill-related-card__arrow svg{width:16px;height:16px}@media(hover:hover)and (pointer:fine){.skill-related-card:hover .skill-related-card__arrow{color:var(--color-text);transform:translateX(3px)}}.tooltip{position:fixed;z-index:100;padding:6px 10px;border-radius:var(--r-md);background:var(--color-surface);color:var(--color-text);font-size:13px;line-height:1.4;white-space:nowrap;pointer-events:none;box-shadow:var(--shadow-sm);opacity:0;transform:translateY(4px);animation:tooltip-in var(--t-fast) ease forwards}@keyframes tooltip-in{to{opacity:1;transform:translateY(0)}}@media(min-width:641px)and (max-width:767px){.project-detail{padding-left:max(4px,20px - max(0px,(100vw - 720px)/2));padding-right:max(4px,20px - max(0px,(100vw - 720px)/2))}}@media(min-width:641px)and (max-width:1020px){.modal__header{padding-left:20px;padding-right:20px}.modal__title,.modal__back{left:20px}.about-photo-card__img{object-position:right center}}@media(min-width:641px)and (max-width:960px){.carousel__viewport{-webkit-mask-image:linear-gradient(to right,transparent 0,black 40px,black calc(100% - 40px),transparent 100%);mask-image:linear-gradient(to right,transparent 0,black 40px,black calc(100% - 40px),transparent 100%)}}@media(max-width:640px),(pointer:coarse)and (max-height:500px){.app{font-size:16px}.chat__messages{padding:40px 18px 148px;gap:16px}.chat__fade--top{height:40px}.chat__fade--bottom{height:148px}.welcome{gap:18px;padding:40px 18px calc(108px + var(--bar-extra,0px))}.chat__messages{padding:40px 18px calc(108px + var(--bar-extra,0px))}.chat__fade--bottom{height:108px}.hero__avatar-wrap{width:52px;height:52px}.hero__title{font-size:20px}.hero__subtitle{font-size:14px;flex-wrap:nowrap}.hero__socials{flex-direction:column;gap:0}.welcome-cards{gap:12px}.welcome-grid{--card-pad:16px;--card-cy:22px;--card-arrow:18px;--card-icon:32px;grid-template-rows:repeat(3,100px);gap:10px;flex:0 0 auto;align-content:center}.welcome-grid--no-services{grid-template-rows:repeat(2,100px)}.welcome-card{border-radius:var(--r-lg);min-height:0}.welcome-card__label{font-size:14px}.services{--logo-h:18px;--dash-w:16px;--dash-w-active:34px;border-radius:var(--r-lg)}.services__copy{font-size:13px}.message{font-size:15px}.message--user .message__bubble{max-width:88%;padding:9px 14px}.prompt-bar{bottom:8px;padding:0 18px}.prompt-bar__disclaimer{margin-top:10px;font-size:11px;padding:0 8px}.prompt-bar__form{padding:8px 8px 8px 16px}.prompt-bar__send{width:34px;height:34px}.modal{padding:0 18px}.modal-scrim,.modal-overlay.is-open .modal{background:var(--color-bg)}.modal__content{max-width:100%;gap:18px}.modal__body{padding-left:0;padding-right:0;gap:16px}.modal__listview{padding-left:0;padding-right:0}.modal__header{padding:calc(28px + env(safe-area-inset-top)) 18px 12px}.modal__title,.modal__back{left:18px}.modal__body-wrap{padding:0 18px}.modal--detail::after{content:"";opacity:0;transition:opacity var(--t-fast) ease;position:absolute;left:0;right:0;bottom:0;height:48px;background:linear-gradient(to top,var(--color-bg) 0%,transparent 100%);pointer-events:none;z-index:3}.project-detail{padding-left:20px;padding-right:20px}.modal__header::before,.modal__header::after{content:"";position:absolute;top:0;bottom:0;width:16px;z-index:4;pointer-events:none}.modal__header::before{left:-12px;background:linear-gradient(90deg,var(--color-bg) 0%,transparent 100%)}.modal__header::after{right:-12px;background:linear-gradient(270deg,var(--color-bg) 0%,transparent 100%)}.modal__header{isolation:isolate}.modal__header-scrim{--fade-tail:-8px}.modal--detail .modal__header-scrim{opacity:var(--fade-top,0);transition:opacity var(--t-fast) ease-out}.modal--detail::after{opacity:var(--fade-bottom,0);transition:opacity var(--t-fast) ease-out}.modal-overlay:not(.is-open) .modal.modal--detail{transform:scale(1.12);transition:transform var(--t-base) ease-out .05s,background var(--t-base) ease-out .05s}.project-search__input{font-size:16px;padding:14px 44px}.project-search__icon{left:16px}.modal__header-scrim::before,.modal__header-scrim::after{height:calc(100% + var(--fade-tail))}.modal__header-scrim::before{background:linear-gradient(to bottom,color-mix(in srgb,var(--color-bg) 82%,transparent) 0%,color-mix(in srgb,var(--color-bg) 80%,transparent) 14%,color-mix(in srgb,var(--color-bg) 75%,transparent) 30%,color-mix(in srgb,var(--color-bg) 68%,transparent) 44%,color-mix(in srgb,var(--color-bg) 56%,transparent) 58%,color-mix(in srgb,var(--color-bg) 34%,transparent) 73%,color-mix(in srgb,var(--color-bg) 13%,transparent) 86%,color-mix(in srgb,var(--color-bg) 3.5%,transparent) 94%,color-mix(in srgb,var(--color-bg) .8%,transparent) 98%,transparent 100%)}.modal__header-scrim::after{backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);mask-image:linear-gradient(to bottom,#000 0%,rgba(0,0,0,.95) 18%,rgba(0,0,0,.83) 40%,rgba(0,0,0,.58) 59%,rgba(0,0,0,.28) 77%,rgba(0,0,0,.08) 92%,rgba(0,0,0,.014) 97%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,rgba(0,0,0,.95) 18%,rgba(0,0,0,.83) 40%,rgba(0,0,0,.58) 59%,rgba(0,0,0,.28) 77%,rgba(0,0,0,.08) 92%,rgba(0,0,0,.014) 97%,transparent 100%)}}@media(max-width:640px)and (prefers-color-scheme:light),(pointer:coarse)and (max-height:500px)and (prefers-color-scheme:light){.modal__header-scrim{--fade-tail:36px}.modal__header-scrim::before{background:linear-gradient(to bottom,color-mix(in srgb,var(--color-bg) 90%,transparent) 0%,color-mix(in srgb,var(--color-bg) 90%,transparent) 5%,color-mix(in srgb,var(--color-bg) 90%,transparent) 10%,color-mix(in srgb,var(--color-bg) 90%,transparent) 15%,color-mix(in srgb,var(--color-bg) 90%,transparent) 20%,color-mix(in srgb,var(--color-bg) 90%,transparent) 25%,color-mix(in srgb,var(--color-bg) 90%,transparent) 30%,color-mix(in srgb,var(--color-bg) 89.9%,transparent) 35%,color-mix(in srgb,var(--color-bg) 87.9%,transparent) 40%,color-mix(in srgb,var(--color-bg) 83.3%,transparent) 45%,color-mix(in srgb,var(--color-bg) 76.7%,transparent) 50%,color-mix(in srgb,var(--color-bg) 68.5%,transparent) 55%,color-mix(in srgb,var(--color-bg) 59.1%,transparent) 60%,color-mix(in srgb,var(--color-bg) 49.1%,transparent) 65%,color-mix(in srgb,var(--color-bg) 38.9%,transparent) 70%,color-mix(in srgb,var(--color-bg) 29%,transparent) 75%,color-mix(in srgb,var(--color-bg) 19.8%,transparent) 80%,color-mix(in srgb,var(--color-bg) 11.8%,transparent) 85%,color-mix(in srgb,var(--color-bg) 5.6%,transparent) 90%,color-mix(in srgb,var(--color-bg) 1.5%,transparent) 95%,color-mix(in srgb,var(--color-bg) 0%,transparent) 100%)}.modal__header-scrim::after{mask-image:linear-gradient(to bottom,rgb(0,0,0) 0%,rgb(0,0,0) 5%,rgb(0,0,0) 10%,rgb(0,0,0) 15%,rgb(0,0,0) 20%,rgb(0,0,0) 25%,rgb(0,0,0) 30%,rgba(0,0,0,.985) 35%,rgba(0,0,0,.945) 40%,rgba(0,0,0,.882) 45%,rgba(0,0,0,.802) 50%,rgba(0,0,0,.708) 55%,rgba(0,0,0,.606) 60%,rgba(0,0,0,.5) 65%,rgba(0,0,0,.394) 70%,rgba(0,0,0,.292) 75%,rgba(0,0,0,.198) 80%,rgba(0,0,0,.118) 85%,rgba(0,0,0,.055) 90%,rgba(0,0,0,.015) 95%,rgba(0,0,0,0) 100%);-webkit-mask-image:linear-gradient(to bottom,rgb(0,0,0) 0%,rgb(0,0,0) 5%,rgb(0,0,0) 10%,rgb(0,0,0) 15%,rgb(0,0,0) 20%,rgb(0,0,0) 25%,rgb(0,0,0) 30%,rgba(0,0,0,.985) 35%,rgba(0,0,0,.945) 40%,rgba(0,0,0,.882) 45%,rgba(0,0,0,.802) 50%,rgba(0,0,0,.708) 55%,rgba(0,0,0,.606) 60%,rgba(0,0,0,.5) 65%,rgba(0,0,0,.394) 70%,rgba(0,0,0,.292) 75%,rgba(0,0,0,.198) 80%,rgba(0,0,0,.118) 85%,rgba(0,0,0,.055) 90%,rgba(0,0,0,.015) 95%,rgba(0,0,0,0) 100%)}}@media(max-width:640px),(pointer:coarse)and (max-height:500px){.about-tabs__panels{max-height:none;flex:none}.about-tabs__panels .about-tabs__track{min-height:auto}.skill-detail{max-width:100%;padding-left:20px;padding-right:20px;padding-bottom:60px}.skill-detail-carousel{max-width:100%}.skill-detail-carousel__slide{width:100%}.skill-detail__heading{margin:0 0 12px}.skill-detail__title{font-size:24px}.skill-detail__effort-label{font-size:11px}.skill-detail__effort .skill-level{height:9px;gap:2px}.skill-detail__effort .skill-level__bar{width:2.5px;border-radius:1px}.skill-detail__effort .skill-level__bar:nth-child(1){height:4px}.skill-detail__effort .skill-level__bar:nth-child(2){height:6.5px}.skill-detail__effort .skill-level__bar:nth-child(3){height:9px}.skill-detail__body{font-size:14px;line-height:1.6}.project-detail__title{font-size:20px}.project-detail__photo-wrap{height:260px}.project-detail__title{font-size:24px}.carousel{width:calc(100% + 36px);margin:0 -18px}.project-search{margin-bottom:-4px}.modal__listview{inset-inline:-18px;padding-inline:18px}.carousel__viewport{padding:12px 0 30px;margin-bottom:-14px;-webkit-mask-image:none;mask-image:none}.carousel__track{gap:24px}.carousel__card{height:280px;--rest:.62}.carousel__card.is-active{box-shadow:var(--shadow-lg)}}@media(max-width:640px)and (prefers-color-scheme:light),(pointer:coarse)and (max-height:500px)and (prefers-color-scheme:light){.carousel__card.is-active{box-shadow:var(--shadow-sm)}}@media(max-width:640px),(pointer:coarse)and (max-height:500px){.carousel__btn{width:34px;height:34px}.carousel__btn--prev{left:28px}.carousel__btn--next{right:28px}.project-grid{grid-template-columns:1fr;gap:10px}.contact-grid{grid-template-columns:1fr}.contact-info,.contact-form-card{padding:18px}.about-cards{grid-template-columns:1fr;gap:16px}.about-photo-card{min-height:min(max(460px,55vh),70vh)}.about-info-card{--tab-gutter:16px;min-height:0}.about-tech-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;flex:none}.about-bio{font-size:15px;margin-top:calc(-.5em - 1px);margin-bottom:calc(-.375em - 2px)}.skill-related__grid{grid-template-columns:1fr}.about-tabs__bar{display:flex;width:100%;align-self:stretch;margin:0}.about-tabs__btn{flex:1 1 auto;text-align:center}.welcome{padding-left:18px;padding-right:18px}.context-pill__close{width:30px;height:30px}.context-pill__close svg{width:18px;height:18px}.prompt-bar__context-pill{font-size:14px;padding:12px 14px}.modal__close{font-size:14px}.about-tabs__btn{font-size:14px}.modal__title{font-size:20px}.carousel__title{font-size:24px}.carousel__subtitle{font-size:16px}.project-tile__title{font-size:20px}.project-tile__subtitle{font-size:16px}.about-fact__label{font-size:15px}.skill-detail__title{font-size:28px}.contact-detail__label{font-size:14px}.contact-detail__value{font-size:15px}.modal__body,.project-detail,.modal__listview,.skill-detail{scrollbar-width:none}.modal__body::-webkit-scrollbar,.project-detail::-webkit-scrollbar,.modal__listview::-webkit-scrollbar,.skill-detail::-webkit-scrollbar{display:none}}@media(max-width:380px){.message--user .message__bubble{max-width:92%}.prompt-bar__disclaimer{font-size:11px}}.contact-details{display:flex;flex-direction:column;gap:10px}.contact-detail{display:flex;align-items:center;gap:6px}.contact-detail__icon{flex-shrink:0;color:var(--color-text-muted)}.contact-detail__label{min-width:54px;font-size:13px;color:var(--color-text-muted)}.contact-detail__value{flex:1;min-width:0;word-break:break-word;font-weight:var(--fw-semi)}.contact-detail__copy{flex-shrink:0;display:grid;place-items:center;padding:8px;margin-right:-8px;border:0;border-radius:50%;background:rgba(0,0,0,0);color:var(--color-text-muted);cursor:pointer;transition:color var(--t-hover) ease,background var(--t-hover) ease;position:relative}.contact-detail__copy::before{content:"";position:absolute;inset:-3px}.contact-detail__copy .icon{grid-area:1/1;transition:opacity var(--t-base) ease,transform var(--t-base) var(--ease-sig)}.contact-detail__copy .icon--done{opacity:0;transform:scale(.5)}.contact-detail__copy:disabled{visibility:hidden}@media(hover:hover)and (pointer:fine){.contact-detail__copy:hover{color:var(--color-text)}}@media(hover:hover)and (pointer:fine){.contact-detail__copy:hover{background:color-mix(in srgb,var(--color-text) 10%,transparent)}}.contact-detail__copy:active{background:color-mix(in srgb,var(--color-text) 16%,transparent)}.contact-detail__copy:active{color:var(--color-text)}.contact-detail__copy.is-copied .icon--copy{opacity:0;transform:scale(.5)}.contact-detail__copy.is-copied .icon--done{opacity:1;transform:none}.contact-detail__value.is-loading{flex:0 0 120px;height:14px;border-radius:var(--r-sm);background:color-mix(in srgb,var(--color-text) 10%,transparent)}.artifact{border-top:1px solid color-mix(in srgb,var(--color-text) 12%,transparent);width:100%;max-width:100%;margin-top:14px;margin-bottom:14px;overflow:hidden;background:color-mix(in srgb,var(--color-bg) 45%,transparent);backdrop-filter:blur(var(--blur-lg)) saturate(160%);-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(160%);border:1px solid color-mix(in srgb,var(--color-text) 12%,transparent);border-radius:var(--r-xl);animation:artifact-in var(--t-slow) var(--ease-emph) both}.artifact .project-detail,.artifact .skill-detail{display:block;position:static;max-width:none;margin:0;padding:0;height:auto;max-height:none;overflow:visible;-ms-scroll-chaining:chained;overscroll-behavior:auto;opacity:1;pointer-events:auto}.artifact~.suggested-replies,.brand-card~.suggested-replies{margin-top:17px}.artifact .skill-detail__body>:last-child{margin-bottom:0}@keyframes artifact-in{0%{opacity:0;transform:scale(.97);-webkit-filter:blur(8px);filter:blur(8px)}100%{opacity:1;transform:scale(1);-webkit-filter:blur(0);filter:blur(0)}}.artifact.is-success{display:flex;flex-direction:column}.artifact.is-success .artifact__body{flex:1 1 auto;padding:0}.artifact-spinner{height:100%;min-height:80px;display:flex;align-items:center;justify-content:center}.artifact-spinner::after{content:"";width:24px;height:24px;border-radius:50%;border:2.5px solid var(--color-border);border-top-color:var(--color-text-muted);animation:spin .7s linear infinite}.artifact-success{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.artifact-success__icon-bg{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:color-mix(in srgb,var(--color-success) 15%,transparent)}.artifact-success__icon-bg svg{width:26px;height:26px;color:var(--color-success)}.artifact-success__title{font-size:14px;font-weight:var(--fw-bold);color:var(--color-text)}.artifact-success__copy{max-width:280px;font-size:13px;line-height:1.5;text-align:center;color:var(--color-text-muted)}.artifact.is-error .artifact-success__icon-bg{background:color-mix(in srgb,var(--color-danger) 15%,transparent)}.artifact.is-error .artifact-success__icon-bg svg{color:var(--color-danger)}.btn-retry-contact{font:inherit;font-size:13px;font-weight:var(--fw-semi);padding:6px 16px;border:none;border-radius:var(--r-pill);background:var(--color-border);color:var(--color-text);cursor:pointer;transition:background-color var(--t-fast) ease}@media(hover:hover)and (pointer:fine){.btn-retry-contact:hover{background:color-mix(in srgb,var(--color-border) 88%,black)}}.btn-retry-contact:active{background:color-mix(in srgb,var(--color-border) 80%,black)}.brand-card{--logo-h:clamp(16px,5.4vw,22px);--b-bg:var(--b-l);--b-fg:var(--b-fl);width:100%;max-width:100%;margin-top:14px;margin-bottom:14px;display:flex;align-items:center;flex-wrap:wrap;gap:14px;border-radius:var(--r-xl);padding:18px;background:var(--b-bg);color:var(--b-fg);animation:artifact-in var(--t-slow) var(--ease-emph) both}@media(prefers-color-scheme:dark){.brand-card{--b-bg:var(--b-d);--b-fg:var(--b-fd)}}.brand-card__text{flex:1;min-width:150px;display:flex;flex-direction:column;gap:6px}.brand-card__sub{margin:0;font-size:14px;line-height:1.35;opacity:.88}.brand-card__name{font-size:17px;font-weight:var(--fw-bold)}.brand-card__btn{margin-left:auto;flex-shrink:0;display:inline-flex;align-items:center;gap:6px;padding:9px 15px;border-radius:var(--r-pill);background:var(--color-accent);color:var(--color-on-accent);font-size:13px;font-weight:var(--fw-bold);text-decoration:none;max-width:100%;overflow-wrap:anywhere;transition:background-color var(--t-fast) ease,transform var(--t-fast) ease}.brand-card__btn svg{width:14px;height:14px;flex-shrink:0}@media(hover:hover)and (pointer:fine){.brand-card__btn:hover{background:var(--color-accent-hover)}}.brand-card__btn:active{background:var(--color-accent-hover)}.brand-card__btn:active{transform:scale(.96)}.artifact__headbar,.artifact__titlebar{border-bottom:1px solid color-mix(in srgb,var(--color-text) 12%,transparent);background:color-mix(in srgb,var(--color-text) 6%,transparent)}.artifact__titlebar{display:flex;align-items:center;gap:10px;padding:12px 16px}.artifact__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:color-mix(in srgb,var(--color-text) 70%,transparent)}.artifact__icon svg{width:22px;height:22px}.artifact__title{flex:1;margin:0;font-size:15px;font-weight:var(--fw-bold);color:var(--color-text)}.artifact__expand{flex-shrink:0;display:flex;align-items:center;height:28px;padding:0 12px;border:none;border-radius:var(--r-pill);background:var(--color-accent);color:var(--color-on-accent);font-size:13px;font-weight:var(--fw-bold);font-family:inherit;cursor:pointer;transition:background-color var(--t-fast) ease,transform var(--t-fast) ease}@media(hover:hover)and (pointer:fine){.artifact__expand:hover{background:var(--color-accent-hover)}}.artifact__expand:active{background:var(--color-accent-hover)}.artifact__expand:active{transform:scale(.96)}.artifact__expand.is-hidden{opacity:0;pointer-events:none}.artifact__body{padding:12px 16px}.artifact .project-grid{gap:10px}.artifact .project-tile{padding:10px 100px 10px 14px;border-radius:var(--r-lg);gap:4px}.artifact .project-tile__title{font-size:14px}.artifact .project-tile__subtitle{font-size:13px}.artifact .project-tile__date{right:38px;font-size:11px}.artifact .project-tile__arrow{right:13px}.artifact .project-tile__arrow svg{width:13px;height:13px}.artifact[data-artifact-type=project-view] .artifact__body,.artifact[data-artifact-type=skill-view] .artifact__body{padding:14px}.artifact .skill-detail__body{max-width:none;margin:0}.artifact__headbar{padding:10px 14px}.artifact__headrow{display:flex;align-items:center;justify-content:space-between;gap:10px}.artifact .artifact__headrow .project-detail__title,.artifact__headrow .project-detail__title{flex:0 1 auto;min-width:0;display:flex;align-items:center;gap:6px;margin:0;line-height:1.2;overflow-wrap:anywhere}.artifact__headrow .artifact__expand{flex-shrink:0}.artifact__headmain{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;flex:1;min-width:0}.artifact__headbar .skill-detail__effort,.artifact__headbar .project-detail__date{order:0;margin:0;flex-shrink:0}.artifact .skill-detail .project-detail__meta{margin-bottom:10px}.artifact .project-detail__photo-wrap{height:220px;margin-bottom:10px;border-radius:var(--r-lg)}.artifact .project-detail__title{font-size:17px;margin-bottom:2px}.artifact .project-detail__meta{gap:6px;margin-bottom:10px}.artifact .project-detail__date{font-size:11px}.artifact .project-detail__skills{gap:4px}.artifact .project-detail__skill{padding:2px 7px;font-size:11px}.artifact .project-detail__body{font-size:13px;line-height:1.55}.artifact .project-detail__body p{margin-bottom:10px}.artifact .skill-related-card{min-height:48px;padding:8px 11px;border-radius:var(--r-md)}.artifact .skill-related-card__text{gap:1px}.artifact .skill-related-card__title{font-size:13px}.artifact .skill-related-card__subtitle{font-size:11px}.artifact .skill-related-card__arrow svg{width:12px;height:12px}.artifact .skill-related__grid{gap:8px}.artifact .skill-detail__heading{gap:6px;margin-bottom:8px}.artifact .skill-detail__title{font-size:17px}.artifact .skill-detail__effort{padding:4px 7px}.artifact .skill-detail__effort-label{font-size:11px}.artifact .skill-detail__effort .skill-level__bar{width:3px}.artifact .skill-detail__body{font-size:13px;line-height:1.55}.artifact .skill-detail__body p{margin-bottom:10px}.artifact .skill-detail__related{margin-top:20px}.artifact .skill-related__title{margin-bottom:8px;font-size:11px}.artifact .contact-form__fields{gap:8px}.artifact .contact-form__footer{margin-top:8px}.artifact .contact-field{gap:5px}.artifact .contact-field__label{font-size:13px}.artifact .contact-field__error{font-size:11px;padding:1.5px 6px}.artifact .contact-field__error .icon{width:11px;height:11px}.artifact .contact-field__input{padding:9px 13px;font-size:16px;border-color:rgba(0,0,0,0);background:color-mix(in srgb,var(--color-text) 7%,transparent)}.artifact .contact-field__input--area{min-height:60px}.artifact .contact-form__submit{padding:11px 14px;font-size:14px}.artifact .project-tile,.artifact .skill-related-card{cursor:pointer}.suggested-replies{display:flex;flex-direction:column;margin-top:10px;overflow:hidden;transition:opacity var(--t-base) ease,max-height var(--t-base) ease,margin-top var(--t-base) ease;animation:suggested-replies-in var(--t-slow) ease backwards}.suggested-replies.is-collapsed{opacity:0;max-height:0;margin-top:0}.suggested-reply{display:flex;align-items:center;gap:12px;width:100%;border:none;border-bottom:1px solid var(--color-border);padding:10px 14px;background:rgba(0,0,0,0);color:var(--color-text);cursor:pointer;text-align:left;font-family:inherit;font-size:15px;transition:background-color var(--t-base) ease,border-bottom-color var(--t-base) ease,border-radius var(--t-base) ease}.suggested-reply:last-child{border-bottom:none}@media(hover:hover)and (pointer:fine){.suggested-reply:hover{background:color-mix(in srgb,var(--color-text) 8%,transparent)}}.suggested-reply:active{background:color-mix(in srgb,var(--color-text) 12%,transparent)}@media(hover:hover)and (pointer:fine){.suggested-reply:hover{border-bottom-color:rgba(0,0,0,0);border-radius:var(--r-lg)}}@media(hover:hover)and (pointer:fine){.suggested-reply:has(+.suggested-reply:hover){border-bottom-color:rgba(0,0,0,0)}}.suggested-reply--icon{justify-content:center;min-height:44px}.suggested-reply--icon .suggested-reply__icon{color:var(--color-text)}.suggested-reply__icon{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;color:var(--color-text-muted);flex-shrink:0}.suggested-reply__icon svg{width:16px;height:16px}@media(max-width:640px),(pointer:coarse)and (max-height:500px){.artifact{border-radius:var(--r-lg)}.artifact__titlebar{padding:9px 9px}.artifact__title{font-size:14px}.artifact__body{padding:10px 9px}.artifact .project-tile{padding:12px 108px 12px 14px}.artifact .project-tile__date{right:40px}.artifact .project-tile__arrow{right:15px}.artifact .project-detail__photo-wrap{height:260px}.artifact .skill-related-card{padding:9px 11px;min-height:50px}.suggested-reply{padding:8px 10px;font-size:14px}.suggested-reply__icon{width:18px;height:18px}}@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.modal--detail:not(.modal--transparent) .modal__content--about:has(.skill-detail.morph-in)::before,#projects-modal.modal--detail:not(.modal--transparent) .modal__body:has(.project-detail.morph-in)::before{animation:fade-in var(--t-fast) linear both}@keyframes detail-veil-in-blur{from{background:color-mix(in srgb,var(--color-bg) 0%,transparent);-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px)}to{background:color-mix(in srgb,var(--color-bg) var(--modal-veil-tint),transparent);-webkit-backdrop-filter:blur(var(--blur-lg));backdrop-filter:blur(var(--blur-lg))}}.has-expanded-artifact .modal-scrim{opacity:1;visibility:hidden;background:color-mix(in srgb,var(--color-bg) 0%,transparent);backdrop-filter:blur(0px) saturate(100%);-webkit-backdrop-filter:blur(0px) saturate(100%);transition:background var(--t-fast) ease-out,backdrop-filter var(--t-fast) ease-out,-webkit-backdrop-filter var(--t-fast) ease-out,visibility 0s linear .3s}.has-expanded-artifact .modal-scrim.is-active{visibility:visible;background:color-mix(in srgb,var(--color-bg) var(--modal-scrim-tint),transparent);backdrop-filter:blur(var(--blur-lg)) saturate(100%);-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(100%);transition:background var(--t-base) ease-out,backdrop-filter var(--t-base) ease-out,-webkit-backdrop-filter var(--t-base) ease-out,visibility 0s}.has-expanded-artifact .modal--detail:not(.modal--transparent) .modal__content--about:has(.skill-detail.morph-in)::before,.has-expanded-artifact #projects-modal.modal--detail:not(.modal--transparent) .modal__body:has(.project-detail.morph-in)::before{animation:detail-veil-in-blur var(--t-fast) var(--ease-emph) both}.modal--detail-closing .modal__content--about::before,#projects-modal.modal--detail-closing .modal__body::before{animation:fade-out var(--t-fast) ease-out both}.modal-overlay.is-open .modal:not(.modal--detail) .skill-detail,.modal-overlay.is-open .modal:not(.modal--detail) .project-detail{-webkit-filter:blur(6px);filter:blur(6px);transition:opacity var(--t-fast) ease-out,-webkit-filter var(--t-fast) ease-out;transition:opacity var(--t-fast) ease-out,filter var(--t-fast) ease-out;transition:opacity var(--t-fast) ease-out,filter var(--t-fast) ease-out,-webkit-filter var(--t-fast) ease-out}.modal-overlay .modal--detail:not(.modal--transparent) .modal__content--about,.modal-overlay .modal--detail-closing .modal__content--about,.modal-overlay .modal--backdrop-dim .modal__content--about{-webkit-filter:none;filter:none;transform:none;opacity:1;transition:none}.modal-overlay:not(.is-open) .modal--detail:not(.modal--transparent) .project-detail,.modal-overlay:not(.is-open) .modal--detail:not(.modal--transparent) .skill-detail{opacity:0;-webkit-filter:blur(8px);filter:blur(8px);transition:opacity var(--t-base) ease-out,-webkit-filter var(--t-base) ease-out;transition:opacity var(--t-base) ease-out,filter var(--t-base) ease-out;transition:opacity var(--t-base) ease-out,filter var(--t-base) ease-out,-webkit-filter var(--t-base) ease-out}.modal-overlay:not(.is-open) .modal--detail:not(.modal--transparent) .about-page,.modal-overlay:not(.is-open) .modal--detail:not(.modal--transparent) .modal__listview{opacity:0;-webkit-filter:blur(10px);filter:blur(10px);transform:scale(1.04);transition:opacity var(--t-base) ease-out,transform var(--t-base) ease-out,-webkit-filter var(--t-base) ease-out;transition:opacity var(--t-base) ease-out,filter var(--t-base) ease-out,transform var(--t-base) ease-out;transition:opacity var(--t-base) ease-out,filter var(--t-base) ease-out,transform var(--t-base) ease-out,-webkit-filter var(--t-base) ease-out}@media(max-width:640px){.project-detail.is-near-full-height,.skill-detail.is-near-full-height{padding-top:104px}}.detail-fly-title{display:none;position:absolute;left:50%;top:46px;translate:-50% -50%;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:52%;white-space:nowrap;pointer-events:auto;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);z-index:3;font-size:17px;font-weight:var(--fw-bold);line-height:1.2;color:var(--color-text);will-change:transform;transition:opacity var(--t-hover) ease}.detail-fly-title.is-on{display:block}@media(hover:hover)and (pointer:fine){.detail-fly-title:hover{opacity:.7}}.detail-fly-title:active{opacity:.55}.detail-fly-title::after{content:"";position:absolute;inset:-12px -16px}.project-detail__title.is-docked,.skill-detail__title.is-docked{opacity:0;transition:none}.detail-fly-veil{position:absolute;top:0;left:0;right:0;height:calc(100% + 14px);z-index:-1;pointer-events:none;opacity:0;background:linear-gradient(to bottom,color-mix(in srgb,var(--color-bg) 97%,transparent) 0%,color-mix(in srgb,var(--color-bg) 92%,transparent) 62%,transparent 100%);transition:opacity var(--t-base) ease}.detail-fly-veil.is-on{opacity:1}@supports(text-box:trim-both cap alphabetic){.modal__close-label,.modal__back-label{text-box:trim-both cap alphabetic}}.project-detail.morph-in,.skill-detail.morph-in{transition:none}:root{--a11y-ring:#1a56db}@media(prefers-color-scheme:dark){:root{--a11y-ring:#9bbcff}}.skip-link{position:absolute;top:0;left:8px;z-index:10000;padding:10px 16px;border-radius:var(--r-md);background:var(--color-text);color:var(--color-bg);font-weight:var(--fw-semi);text-decoration:none;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}html.kbd :is(a,button,summary,[role=button],[tabindex]:not([tabindex="-1"]),input,textarea,select):focus-visible:not(.prompt-bar__input):not(.contact-field__input){outline:var(--ring-w,3px) solid var(--a11y-ring)!important;outline-offset:var(--ring-off,2px)!important}@media(prefers-reduced-motion:reduce),(update:slow){html{scroll-behavior:auto!important}*,*::before,*::after{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}.modal-overlay,.modal__header,.modal__content,.modal__body,.modal__listview,.about-page,.project-detail,.skill-detail,.project-search{transition:opacity var(--t-fast) linear!important}.morph-in,.listview-morph-in{animation:fade-in var(--t-fast) linear both!important;animation-duration:.18s!important}.modal{transform:none!important}.hero__role-caret,.smooth-caret,.cursor-ball{display:none!important}.hero__avatar-spinner,.lightbox__spinner,.project-detail__spinner,.project-detail__loading-spinner,.modal-overlay.is-preloading .modal__preload-spinner::after,.contact-form__spinner::after,.artifact-spinner::after{animation:a11y-busy-pulse 1.6s ease-in-out infinite!important;animation-duration:1.6s!important;animation-iteration-count:infinite!important}.about-tech-card .about-fact__label .about-fact__label-text{white-space:normal;max-width:100%;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}}@keyframes a11y-busy-pulse{0%,100%{opacity:1}50%{opacity:.35}}@media(prefers-reduced-transparency:reduce),(prefers-contrast:more),(forced-colors:active){*,*::before,*::after{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.modal-scrim{background:var(--color-bg)!important}}@media(prefers-reduced-data:reduce){*,*::before,*::after{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}}@media(inverted-colors:inverted){img,video,picture,canvas,.hero__avatar-wrap,[style*=background-image]{-webkit-filter:invert(1) hue-rotate(180deg);filter:invert(1) hue-rotate(180deg)}}@media(prefers-contrast:more){:root{--color-bg:#fff;--color-page-bg:#fff;--color-surface:#fff;--color-border:#4a4a4f;--color-text:#000;--color-text-muted:#2e2e33;--color-accent:#000;--color-on-accent:#fff;--color-accent-bg:#0a3bb8;--a11y-ring:#000}}@media(prefers-contrast:more)and (prefers-color-scheme:dark){:root{--color-bg:#000;--color-page-bg:#000;--color-surface:#000;--color-border:#b5b5ba;--color-text:#fff;--color-text-muted:#dcdce0;--color-accent:#fff;--color-on-accent:#000;--color-accent-bg:#8fb2ff;--a11y-ring:#fff}}@media(prefers-contrast:more){a{text-decoration:underline;text-underline-offset:.18em}.welcome-card,.services,.prompt-bar__form,textarea:not(.prompt-bar__input),input:not([type=checkbox],[type=radio]){border:2px solid var(--color-text)!important}.about-tech-card,.project-tile,.about-info-card,.contact-form-card{border-color:var(--color-border)!important}.project-tile__subtitle,.project-tile__date,.prompt-bar__disclaimer,.skill-detail__effort-label,.context-pill__close{color:var(--color-text-muted)!important}.about-photo-card__name,.about-photo-card__subtitle{color:#fff!important;text-shadow:0 0 2px #000,0 0 8px #000!important}.contact-info__copy{color:inherit!important}.welcome-card--about{--wc:#0a5c20}.welcome-card--work{--wc:#8a3a00}.welcome-card--contact{--wc:#6d1a8f}.services{background:#00468f;color:#fff;--svc-fg:#fff}}@media(prefers-contrast:more)and (hover:hover)and (pointer:fine){.welcome-card:hover,.services:hover{outline:3px solid var(--color-text);outline-offset:-3px}}@media(prefers-contrast:more){.contact-form__submit{background:var(--color-text)!important;color:var(--color-bg)!important}html.kbd textarea:not(.prompt-bar__input):focus-visible,html.kbd input:focus-visible{outline:3px solid var(--a11y-ring)!important;outline-offset:2px!important}html.kbd .contact-field__input:focus-visible{border-color:var(--color-border)}.prompt-bar__form:focus-within{outline:3px solid var(--a11y-ring);outline-offset:3px}.prompt-bar__input:focus-visible{outline:none!important}::-webkit-input-placeholder{color:var(--color-text-muted)!important;opacity:1!important}::-ms-input-placeholder{color:var(--color-text-muted)!important;opacity:1!important}::placeholder{color:var(--color-text-muted)!important;opacity:1!important}button,[role=button],a.modal__back,input,select{min-height:44px;min-width:44px}}@media(forced-colors:active){.welcome-card,.services,.modal__close,.modal__back,.carousel__btn,.prompt-bar__send{border:1px solid ButtonText!important}button:disabled,.prompt-bar__send:disabled{border-color:GrayText!important}textarea:not(.prompt-bar__input),input,select{border:1px solid FieldText!important}.welcome-card,.services{color:ButtonText!important}.welcome-card svg,.services svg{stroke:ButtonText}.prompt-bar__form:focus-within{outline:3px solid Highlight;outline-offset:3px}.prompt-bar__input:focus-visible{outline:none!important}}@media(forced-colors:active)and (prefers-color-scheme:light){.hero__social img{-webkit-filter:brightness(0);filter:brightness(0)}}@media(forced-colors:active){html.kbd :is(a,button,summary,[role=button],[tabindex]:not([tabindex="-1"]),textarea,input):focus-visible{outline:3px solid Highlight!important;outline-offset:2px!important}a{text-decoration:underline}}[data-custom-scrollbar]{scrollbar-width:none}[data-custom-scrollbar]::-webkit-scrollbar{display:none}.modal-scrollbar{position:absolute;top:var(--sb-top,0);right:0;width:16px;height:var(--sb-h,0);z-index:6;opacity:0;pointer-events:none;transition:opacity var(--t-base) ease}.modal-scrollbar.is-scrollable{pointer-events:auto}.modal-scrollbar.is-visible,.modal-scrollbar.is-drag{opacity:1}@media(pointer:coarse){.modal-scrollbar{pointer-events:none!important}}.modal-scrollbar__thumb{position:absolute;top:0;right:5px;width:4px;height:var(--sb-thumb-h,0);border-radius:var(--r-sm);background:var(--scrollbar-thumb);transform:translateY(var(--sb-thumb-y,0));transition:width var(--t-base) var(--ease-emph),right var(--t-base) var(--ease-emph),background var(--t-fast) ease;cursor:default;touch-action:none}.modal-scrollbar.is-drag .modal-scrollbar__thumb{width:9px;right:3px;background:var(--scrollbar-thumb-hover)}@media(hover:hover)and (pointer:fine){.modal-scrollbar:hover .modal-scrollbar__thumb{width:9px;right:3px;background:var(--scrollbar-thumb-hover)}}@media(forced-colors:active){.modal-scrollbar__thumb{background:Highlight}}@media(prefers-reduced-motion:reduce){.modal-scrollbar,.modal-scrollbar__thumb{transition:none}}.project-tile{display:grid;grid-template-columns:minmax(0,1fr) auto 18px;column-gap:10px;row-gap:8px;padding:22px 22px 22px 24px}.project-tile__row{display:contents}.project-tile__title{grid-column:1;grid-row:1}.project-tile__subtitle{grid-column:1;grid-row:2}.project-tile__date{position:static;transform:none;grid-column:2;grid-row:1/3;align-self:center;white-space:nowrap}.project-tile__arrow{position:static;transform:none;grid-column:3;grid-row:1/3;align-self:center}@media(hover:hover)and (pointer:fine){.project-tile:hover .project-tile__arrow{transform:translateX(2px)}}.artifact .project-tile{padding:10px 22px 10px 14px;row-gap:4px}@media(max-width:640px),(pointer:coarse)and (max-height:500px){.artifact .project-tile{padding:12px 15px 12px 14px}}.welcome-card__label{min-width:0;overflow-wrap:anywhere}.modal__title{max-width:calc(100% - var(--close-width,90px) - 16px);overflow-wrap:anywhere}.hero__title{overflow-wrap:anywhere}.project-detail__title,.skill-detail__title{overflow-wrap:anywhere}@media(max-width:340px){.welcome-card__label{font-size:13px}}.welcome-card__row{height:auto;min-height:24px}.services__dashes{right:calc(var(--pad) + var(--arrow-size) + 12px)}.services__dash{min-width:0}.welcome-cards{justify-content:flex-start}.welcome-cards>.welcome-grid{margin-block:auto}@media(pointer:coarse){.modal__close::before,.modal__back::before{inset:-4px}.artifact__expand,.project-detail__skill,.context-pill__close,.contact-detail__copy,.prompt-bar__send,.btn-retry-chat,.contact-info__value[href]{position:relative}.artifact__expand::before,.project-detail__skill::before,.btn-retry-chat::before,.about-tabs__btn::before{content:"";position:absolute;inset:-8px 0}.about-tabs__btn::before{inset:-6px 0}.context-pill__close::before,.project-search__clear::before{content:"";position:absolute;inset:-9px}.contact-detail__copy::before{content:"";position:absolute;inset:-4px}.lightbox__close::before{content:"";position:absolute;inset:-7px}.prompt-bar__send::before{content:"";position:absolute;inset:-5px}.contact-info__value[href]::before{content:"";position:absolute;inset:-13px 0}.contact-info__list{gap:26px}.suggested-reply,.contact-email-suggest__item{min-height:44px}.services__dash{position:relative}.services__dash::before{content:"";position:absolute;inset:-10px -3px}.contact-field__input:not(textarea),.contact-form__submit,.project-search__input,.brand-card__btn{min-height:44px}.hero__social a::before{content:"";position:absolute;inset:-2px}.captcha-checkbox-label{padding-block:10px;margin-block:-10px}.project-detail__fab,.skill-detail__fab{border-block:6px solid rgba(0,0,0,0);margin-block:-6px;background-clip:padding-box}}@media(max-width:380px){.about-tabs__btn{padding-inline:6px;min-width:0}.welcome-card__row{gap:6px}.contact-detail{gap:6px}.contact-detail__label{min-width:0;font-size:12px}.contact-detail__value{font-size:14px}}html[data-perf=mid],html[data-perf=low],html[data-perf=min]{--t-fast:.1s;--t-base:.16s;--t-slow:.26s;--t-hover:.2s;--shadow-sm:0 2px 6px rgba(0,0,0,.2);--shadow-lg:0 4px 12px rgba(0,0,0,.28);--blur-lg:0px;--blur-sm:0px}html[data-perf=mid] *,html[data-perf=mid] *::before,html[data-perf=mid] *::after,html[data-perf=low] *,html[data-perf=low] *::before,html[data-perf=low] *::after,html[data-perf=min] *,html[data-perf=min] *::before,html[data-perf=min] *::after{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}html[data-perf=mid] .services__slide,html[data-perf=mid] .modal__header,html[data-perf=mid] .modal__content,html[data-perf=mid] .project-search,html[data-perf=mid] .modal__back,html[data-perf=mid] .modal__title,html[data-perf=mid] .modal__close-label,html[data-perf=mid] .modal__listview,html[data-perf=mid] .project-detail,html[data-perf=mid] .skill-detail,html[data-perf=mid] .contact-form,html[data-perf=mid] .contact-success,html[data-perf=mid] .about-page,html[data-perf=mid] .artifact,html[data-perf=mid] .morph-in,html[data-perf=mid] .listview-morph-in,html[data-perf=low] .services__slide,html[data-perf=low] .modal__header,html[data-perf=low] .modal__content,html[data-perf=low] .project-search,html[data-perf=low] .modal__back,html[data-perf=low] .modal__title,html[data-perf=low] .modal__close-label,html[data-perf=low] .modal__listview,html[data-perf=low] .project-detail,html[data-perf=low] .skill-detail,html[data-perf=low] .contact-form,html[data-perf=low] .contact-success,html[data-perf=low] .about-page,html[data-perf=low] .artifact,html[data-perf=low] .morph-in,html[data-perf=low] .listview-morph-in,html[data-perf=min] .services__slide,html[data-perf=min] .modal__header,html[data-perf=min] .modal__content,html[data-perf=min] .project-search,html[data-perf=min] .modal__back,html[data-perf=min] .modal__title,html[data-perf=min] .modal__close-label,html[data-perf=min] .modal__listview,html[data-perf=min] .project-detail,html[data-perf=min] .skill-detail,html[data-perf=min] .contact-form,html[data-perf=min] .contact-success,html[data-perf=min] .about-page,html[data-perf=min] .artifact,html[data-perf=min] .morph-in,html[data-perf=min] .listview-morph-in{-webkit-filter:none!important;filter:none!important}html[data-perf=mid] .modal--detail .modal__content--about::before,html[data-perf=mid] .modal--detail .modal__body::before,html[data-perf=mid] .modal--backdrop-dim .modal__content--about::before,html[data-perf=mid] .modal--backdrop-dim .modal__body::before,html[data-perf=low] .modal--detail .modal__content--about::before,html[data-perf=low] .modal--detail .modal__body::before,html[data-perf=low] .modal--backdrop-dim .modal__content--about::before,html[data-perf=low] .modal--backdrop-dim .modal__body::before,html[data-perf=min] .modal--detail .modal__content--about::before,html[data-perf=min] .modal--detail .modal__body::before,html[data-perf=min] .modal--backdrop-dim .modal__content--about::before,html[data-perf=min] .modal--backdrop-dim .modal__body::before{background:var(--color-bg)!important}html[data-perf=mid] .modal-scrim,html[data-perf=mid] .has-expanded-artifact .modal-scrim,html[data-perf=low] .modal-scrim,html[data-perf=low] .has-expanded-artifact .modal-scrim,html[data-perf=min] .modal-scrim,html[data-perf=min] .has-expanded-artifact .modal-scrim{background:color-mix(in srgb,var(--color-bg) 84%,transparent)}html[data-perf=mid] .artifact,html[data-perf=low] .artifact,html[data-perf=min] .artifact{background:var(--color-bg)}html[data-perf=mid] .carousel__viewport,html[data-perf=low] .carousel__viewport,html[data-perf=min] .carousel__viewport{-webkit-mask-image:none;mask-image:none}html[data-perf=mid] .modal__header-scrim::after,html[data-perf=mid] .about-photo-card__plate::after,html[data-perf=low] .modal__header-scrim::after,html[data-perf=low] .about-photo-card__plate::after,html[data-perf=min] .modal__header-scrim::after,html[data-perf=min] .about-photo-card__plate::after{display:none}html[data-perf=mid] .skill-detail__fab::after,html[data-perf=low] .skill-detail__fab::after,html[data-perf=min] .skill-detail__fab::after{display:none}html[data-perf=mid] .about-tabs__btn,html[data-perf=low] .about-tabs__btn,html[data-perf=min] .about-tabs__btn{mix-blend-mode:normal}html[data-perf=mid] .about-tabs__bar .about-tabs__indicator,html[data-perf=low] .about-tabs__bar .about-tabs__indicator,html[data-perf=min] .about-tabs__bar .about-tabs__indicator{background:var(--color-accent-bg)}html[data-perf=mid] .about-tabs__bar .about-tabs__indicator::after,html[data-perf=low] .about-tabs__bar .about-tabs__indicator::after,html[data-perf=min] .about-tabs__bar .about-tabs__indicator::after{display:none}html[data-perf=mid] .about-tabs__btn.is-active,html[data-perf=low] .about-tabs__btn.is-active,html[data-perf=min] .about-tabs__btn.is-active{color:#fff}html[data-perf=low] *,html[data-perf=low] *::before,html[data-perf=low] *::after,html[data-perf=min] *,html[data-perf=min] *::before,html[data-perf=min] *::after{transition-property:opacity,background-color,color,border-color,visibility!important;transition-duration:.12s!important}html[data-perf=low] .message--enter,html[data-perf=low] .activity__row--enter,html[data-perf=low] .artifact,html[data-perf=low] .morph-in,html[data-perf=low] .listview-morph-in,html[data-perf=min] .message--enter,html[data-perf=min] .activity__row--enter,html[data-perf=min] .artifact,html[data-perf=min] .morph-in,html[data-perf=min] .listview-morph-in{animation:fade-in var(--t-fast) linear both!important}html[data-perf=low] .ripple,html[data-perf=low] .cursor-ball,html[data-perf=low] .hero__role-caret,html[data-perf=low] .smooth-caret,html[data-perf=low] .skill-detail__fab::after,html[data-perf=min] .ripple,html[data-perf=min] .cursor-ball,html[data-perf=min] .hero__role-caret,html[data-perf=min] .smooth-caret,html[data-perf=min] .skill-detail__fab::after{display:none!important}html[data-perf=low] .has-smooth-caret,html[data-perf=min] .has-smooth-caret{caret-color:auto!important}html[data-perf=low] .hero__avatar-wrap.is-secret-active,html[data-perf=low] .shimmer,html[data-perf=low] .about-fact__label-text,html[data-perf=min] .hero__avatar-wrap.is-secret-active,html[data-perf=min] .shimmer,html[data-perf=min] .about-fact__label-text{animation:none!important}html[data-perf=low] .carousel__track,html[data-perf=low] .about-tabs__panels .about-tabs__track,html[data-perf=low] .detail-fly-title,html[data-perf=low] .smooth-caret,html[data-perf=min] .carousel__track,html[data-perf=min] .about-tabs__panels .about-tabs__track,html[data-perf=min] .detail-fly-title,html[data-perf=min] .smooth-caret{will-change:auto!important}html[data-perf=low] .carousel__card::after,html[data-perf=min] .carousel__card::after{transition:none!important;background-image:linear-gradient(to top,rgba(0,0,0,.86),rgba(0,0,0,.4) 55%,rgba(0,0,0,.08))!important}html[data-perf=low] .modal-scrim,html[data-perf=low] .has-expanded-artifact .modal-scrim,html[data-perf=min] .modal-scrim,html[data-perf=min] .has-expanded-artifact .modal-scrim{background:var(--color-bg)}html[data-perf=low] .modal__back,html[data-perf=min] .modal__back{box-shadow:none!important}html[data-perf=min] *,html[data-perf=min] *::before,html[data-perf=min] *::after{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important;scroll-behavior:auto!important}html[data-perf=min] .carousel__card::after,html[data-perf=min] .about-photo-card__plate::before{background-image:none!important;background:rgba(0,0,0,.5)!important}html[data-perf=min] .carousel__card--no-photo::after{background:none!important}html[data-perf=min] .modal__header-scrim::before{background:var(--color-bg)!important}html[data-perf=min] .carousel__viewport,html[data-perf=min] .modal__close-label{-webkit-mask-image:none!important;mask-image:none!important}html[data-perf=min] *,html[data-perf=min] *::before,html[data-perf=min] *::after{box-shadow:none!important;text-shadow:none!important}html[data-perf=min] .hero__avatar-spinner,html[data-perf=min] .lightbox__spinner,html[data-perf=min] .project-detail__spinner,html[data-perf=min] .project-detail__loading-spinner,html[data-perf=min] .modal-overlay.is-preloading .modal__preload-spinner::after,html[data-perf=min] .contact-form__spinner::after,html[data-perf=min] .artifact-spinner::after{animation-duration:.8s!important;animation-iteration-count:infinite!important;animation-timing-function:steps(8)!important}.welcome-cards{padding:6px;margin:-6px}.services{--a11y-ring:var(--svc-fg)}.services__slide{--ring-off:-4px;border-radius:var(--r-xl)}.services__dash{border-radius:var(--r-pill)}.lightbox{--a11y-ring:#9bbcff}.hero__avatar-expand:focus-visible,.project-detail__photo-expand:focus-visible{background:var(--scrim);opacity:1}.project-detail__photo-expand{--ring-off:-4px;--a11y-ring:#fff;border-radius:inherit}.suggested-reply{--ring-off:-3px}.chat__scroll{scroll-padding-block:96px 180px}html.kbd .prompt-bar__form:focus-within{outline:var(--ring-w,3px) solid var(--a11y-ring);outline-offset:3px}.contact-field__input:focus-visible{border-color:var(--color-accent-bg)}@media(forced-colors:active){html.kbd .prompt-bar__form:focus-within{outline-color:Highlight}}.contact-info{--a11y-ring:var(--color-on-accent)}.contact-info__value{border-radius:var(--r-sm)}@supports not (width:min(1px,2px)){.brand-card{--logo-h:20px}.services__logo{width:calc(var(--logo-h)*var(--ar,1))}.lightbox__img.is-rounded{width:88vmin;height:88vmin}}@media(max-width:640px),(pointer:coarse)and (max-height:500px){@supports not (width:min(1px,2px)){.about-photo-card{min-height:55vh}}}@media(min-width:641px)and (max-width:767px){@supports not (width:min(1px,2px)){.project-detail{padding-left:12px;padding-right:12px}}}@supports not (translate:1px){.detail-fly-title{left:0;right:0;top:36px;margin:0 auto;text-align:center}}@supports not (display:contents){.project-tile{display:block;position:relative}.project-tile__row,.project-tile__subtitle{display:block;padding-right:96px}.project-tile__date{position:absolute;top:50%;right:50px;transform:translateY(-50%)}.project-tile__arrow{position:absolute;top:50%;right:22px;transform:translateY(-50%)}@media(hover:hover)and (pointer:fine){.project-tile:hover .project-tile__arrow{transform:translate(2px,-50%)}}}.is-covered .chat .hero__role-caret,.is-covered .chat .shimmer,.is-covered .chat .cursor-ball,.is-covered .chat .hero__avatar-wrap.is-secret-active,.is-covered .prompt-bar .smooth-caret,.is-covered .smooth-caret{animation-play-state:paused}.hero__avatar-spinner.is-hidden,.project-detail__spinner.is-hidden,.lightbox__spinner{animation-play-state:paused}.lightbox.is-loading .lightbox__spinner{animation-play-state:running}.modal-overlay:not(.is-open) .project-detail__spinner,.modal-overlay:not(.is-open) .project-detail__loading-spinner{animation-play-state:paused}.ext{position:fixed;inset:0;z-index:10001;display:grid;place-items:center;padding:16px;visibility:hidden;pointer-events:none;color:var(--color-text);background:color-mix(in srgb,var(--color-bg) 0%,transparent);backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);transition:background-color var(--t-fast) ease,backdrop-filter var(--t-fast) ease,-webkit-backdrop-filter var(--t-fast) ease,visibility 0s linear var(--t-fast)}.ext.is-open{visibility:visible;pointer-events:auto;background:color-mix(in srgb,var(--color-bg) 88%,transparent);backdrop-filter:blur(var(--blur-lg));-webkit-backdrop-filter:blur(var(--blur-lg));transition:background-color var(--t-fast) ease,backdrop-filter var(--t-fast) ease,-webkit-backdrop-filter var(--t-fast) ease}.ext--instant,.ext--instant .ext__panel{transition:none}.ext__panel{visibility:hidden;width:min(440px,100%);display:grid;gap:16px;justify-items:center;text-align:center}.ext.is-open .ext__panel{visibility:visible}.ext__icon{width:56px;height:56px;color:var(--color-accent-bg)}.ext__icon .icon{width:100%;height:100%}.ext__title{margin:0;font-size:32px;font-weight:var(--fw-bold);letter-spacing:-.02em;line-height:1.1}.ext__text{margin:0;color:var(--color-text-muted)}.ext__text strong{color:var(--color-text);font-weight:var(--fw-semi)}.ext__chk{position:relative;display:inline-flex;align-items:center;gap:12px;min-height:44px;cursor:pointer;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.ext__chk input{position:absolute;left:0;width:28px;height:44px;margin:0;opacity:0;cursor:pointer}.ext__chk input:focus-visible~.ext__box{outline:2px solid var(--color-accent-bg);outline-offset:3px;border-radius:var(--r-pill)}.ext__box{width:28px;height:28px;flex:none}.ext__box svg{display:block;width:100%;height:100%;overflow:visible}.ext__frame{fill:rgba(0,0,0,0);stroke:color-mix(in srgb,var(--color-text) 42%,transparent);stroke-width:2;transition:fill .12s ease,stroke .12s ease}.ext__fill{fill:var(--color-accent);transform-box:fill-box;transform-origin:center;transform:scale(0);opacity:0;transition:transform .18s var(--ease-emph),opacity .1s ease}.ext__tick{fill:none;stroke:var(--color-on-accent);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:22;stroke-dashoffset:22;transition:stroke-dashoffset .18s var(--ease-emph) 0s}.ext__chk input:checked~.ext__box .ext__frame{stroke:var(--color-accent)}.ext__chk input:checked~.ext__box .ext__fill{transform:scale(1);opacity:1}.ext__chk input:checked~.ext__box .ext__tick{stroke-dashoffset:0;transition-delay:.06s}.ext__actions{display:flex;gap:12px;width:100%;margin-top:8px}@media(max-width:768px){.ext__actions{flex-direction:column-reverse}}.ext__btn{flex:1 1 0;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 24px;border:0;border-radius:var(--r-pill);background:var(--color-accent);color:var(--color-on-accent);font:inherit;font-weight:var(--fw-medium);cursor:pointer;transition:transform var(--t-fast) ease,background-color var(--t-hover) ease}@media(hover:hover)and (pointer:fine){.ext__btn:hover{background:var(--color-accent-hover)}}.ext__btn:active{background:var(--color-accent-hover)}.ext__btn:active{transform:scale(.96)}.ext__btn:focus-visible{outline:2px solid var(--color-accent-bg);outline-offset:2px}.ext__btn--ghost{background:color-mix(in srgb,var(--color-text) 8%,transparent);color:var(--color-text)}@media(hover:hover)and (pointer:fine){.ext__btn--ghost:hover{background:color-mix(in srgb,var(--color-text) 14%,transparent)}}.ext__btn--ghost:active{background:color-mix(in srgb,var(--color-text) 20%,transparent)}@media(prefers-reduced-motion:reduce){.ext,.ext.is-open{transition-duration:.01s}.ext__frame,.ext__fill,.ext__tick{transition-duration:.01s;transition-delay:0s!important}}