:root{--header-height: 60px;--color-bg: #f5f8f4;--color-text: #17211b;--color-muted: #5f6d63;--color-accent: #1f5137;--color-accent-rgb: 31, 81, 55;--color-accent-hover: #173f2b;--color-accent-social-hover: #2f6b4a;--color-accent-soft: #dfe9e1;--color-secondary: #e8f1e8;--color-warm: #c25d3b;--color-header: #122419;--color-focus: #2f6b4a;--nav-pill-bg: #dfe9e1;--nav-pill-text: #122419;--social-icon: #1f5137;--social-icon-hover: #2f6b4a;--color-success: #1f6b43;--color-success-bg: rgba(31, 107, 67, .12);--color-error: #a83f32;--color-error-bg: rgba(168, 63, 50, .12);--color-overlay: rgba(6, 16, 10, .9);--overlay-control-bg: rgba(6, 16, 10, .68);--overlay-control-hover: rgba(31, 81, 55, .86);--surface-card: rgba(255, 255, 252, .88);--surface-card-strong: rgba(255, 255, 252, .96);--surface-elevated: rgba(232, 241, 232, .86);--border-soft: rgba(23, 33, 27, .12);--card-stroke: linear-gradient( 135deg, color-mix(in srgb, var(--color-accent) 52%, transparent), var(--border-soft) 42%, color-mix(in srgb, var(--color-warm) 34%, transparent) );--divider-line: linear-gradient( 90deg, transparent, var(--color-accent), transparent );--shadow-soft: 0 18px 45px rgba(18, 36, 25, .12);--shadow-interactive: 0 8px 18px rgba(31, 81, 55, .22);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 10px;--on-surface: var(--color-text);--button-text: #ffffff;--page-card-gutter: 20px;--card-block-gap: 20px;--collapsed-card-width: 800px;--expanded-card-width: 1000px;--motion-duration-fast: .2s;--motion-duration-normal: .3s;--motion-duration-slow: .42s;--motion-ease-standard: cubic-bezier(.22, 1, .36, 1);--motion-ease-press: cubic-bezier(.34, 1.56, .64, 1)}[data-theme=dark]{--color-bg: #0f1711;--color-text: #eff7f0;--color-muted: #b3c1b6;--color-accent: #2f6b4a;--color-accent-rgb: 47, 107, 74;--color-accent-hover: #3f805d;--color-accent-social-hover: #b6dec0;--color-accent-soft: #1b3425;--color-secondary: #17261c;--color-warm: #ee8b62;--color-header: #07110b;--color-focus: #b6dec0;--nav-pill-bg: #2f6b4a;--nav-pill-text: #f5fbf6;--social-icon: #8fc89d;--social-icon-hover: #b6dec0;--color-success: #98d7aa;--color-success-bg: rgba(132, 201, 154, .14);--color-error: #f0987d;--color-error-bg: rgba(240, 152, 125, .15);--color-overlay: rgba(4, 10, 6, .92);--overlay-control-bg: rgba(4, 10, 6, .72);--overlay-control-hover: rgba(132, 201, 154, .28);--surface-card: rgba(23, 38, 28, .86);--surface-card-strong: rgba(29, 48, 35, .96);--surface-elevated: rgba(20, 52, 31, .72);--border-soft: rgba(239, 246, 243, .15);--card-stroke: linear-gradient( 135deg, color-mix(in srgb, var(--color-focus) 42%, transparent), var(--border-soft) 46%, color-mix(in srgb, var(--color-warm) 36%, transparent) );--divider-line: linear-gradient( 90deg, transparent, var(--color-focus), transparent );--shadow-soft: 0 18px 45px rgba(0, 0, 0, .36);--shadow-interactive: 0 8px 18px rgba(132, 201, 154, .18);--on-surface: var(--color-text);--button-text: #ffffff}.particles-layer{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:0;transition:opacity .8s ease-in-out}.particles-layer.is-visible{opacity:1}*,*:before,*:after{font-family:Mulish,sans-serif;box-sizing:border-box}main{min-height:100dvh;position:relative;z-index:1;overflow-x:hidden}html{background-color:var(--color-bg);height:100%;overscroll-behavior-y:none;scrollbar-gutter:stable}html,body{font-weight:400;min-height:100%;width:100%;margin:0;overflow-x:hidden;overscroll-behavior-y:none;scroll-behavior:smooth}html.manual-wheel-scroll,html.manual-wheel-scroll body{scroll-behavior:auto!important}body{background-color:var(--color-bg);min-height:100dvh}#root,.App{min-height:100dvh;overflow-x:hidden}body.no-scroll{overflow:hidden;height:100%;width:100%;overscroll-behavior:none}html.modal-scroll-lock{overflow:hidden;overscroll-behavior:none;touch-action:none}body.gallery-overlay-open .site-header,body.gallery-lock-open .site-header{pointer-events:none;transform:translateY(-100%)}button{font-weight:700;border-radius:var(--radius-md);touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background-color var(--motion-duration-fast) var(--motion-ease-standard),color var(--motion-duration-fast) var(--motion-ease-standard),border-color var(--motion-duration-fast) var(--motion-ease-standard),transform var(--motion-duration-fast) var(--motion-ease-press),box-shadow var(--motion-duration-fast) var(--motion-ease-standard)}@media(hover:hover)and (pointer:fine){button:hover{background-color:var(--color-accent-hover)}}button:not(.carousel-arrow):not(.theme-toggle):not(.fullscreen-image-button):active{transform:scale(.98)}@media(hover:none),(pointer:coarse){.home-action-link.is-touch-active,.learn-more-btn.is-touch-active,.expanded-top-button.is-touch-active,.contact-submit-row button.is-touch-active,.gallery-lock-submit-row button.is-touch-active,.gallery-lock-toggle.is-touch-active{background-color:var(--color-accent-hover);box-shadow:var(--shadow-interactive);transform:scale(.97)}.stack-more-toggle.is-touch-active{background:var(--color-accent);border-color:var(--color-accent);color:var(--button-text);transform:scale(.97)}.theme-toggle.is-touch-active{transform:translateY(-50%) scale(.94)}.close-button-icon-button.is-touch-active .close-button-icon{transform:scale(.9)}}.button-icon{display:inline-block;width:24px;height:24px;flex:0 0 auto;color:currentColor}a{color:var(--color-accent)}a:focus-visible,button:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.ui-action,.home-action-link,.learn-more-btn,.expanded-top-button,.contact-submit-row button,.gallery-lock-submit-row button,.gallery-lock-toggle{background-color:var(--color-accent);color:var(--button-text);border:1px solid transparent;border-radius:var(--radius-md);box-shadow:none}@media(hover:hover)and (pointer:fine){.ui-action:hover,.home-action-link:hover,.learn-more-btn:hover,.expanded-top-button:hover,.contact-submit-row button:hover,.gallery-lock-submit-row button:hover,.gallery-lock-toggle:hover{background-color:var(--color-accent-hover);color:var(--button-text)}}.ui-chip,.tag,.tech-tag,.gallery-lock-pill{border-radius:var(--radius-md)}h1,h2,h3{font-weight:700}.project-header-wrapper{width:100%;display:flex;justify-content:center}.project-header-card{background:linear-gradient(var(--surface-card-strong),var(--surface-card-strong)) padding-box,var(--card-stroke) border-box;box-shadow:var(--shadow-soft);border:1px solid transparent;border-radius:var(--radius-md);padding:10px 18px}.project-header-card h2{margin:0}.container{max-width:800px;margin:auto;padding:var(--page-card-gutter)}.projects .container,#experience.projects .container{max-width:none;width:100%}.projects .container,#experience.projects .container{display:flex;flex-direction:column;align-items:center}.about .container{max-width:none;width:100%;display:flex;flex-direction:column;align-items:center}section{color:var(--color-text);background:transparent;min-height:100lvh;padding-top:var(--header-height);display:flex;justify-content:center;align-items:center;scroll-snap-align:start}section::selection{background:var(--color-accent);color:#fff}section.home{background:transparent!important;position:relative;overflow:visible;min-height:auto;padding-top:var(--header-height);display:block}@media(min-width:601px){section.home{display:flex;align-items:center;justify-content:center;min-height:100lvh;min-height:100dvh;padding-top:var(--header-height);padding-bottom:0}section.home .home-card{margin:0 auto}}section.about,section.experience,section.projects{min-height:0;padding-top:0;scroll-margin-top:var( --header-height )}@media(min-width:601px){html,body{scrollbar-width:none}html::-webkit-scrollbar,body::-webkit-scrollbar{width:0;height:0}.desktop-scrollbar{position:fixed;top:calc(var(--header-height, 60px) + 12px);right:0;bottom:12px;z-index:1200;display:block;width:10px;border-radius:0;background:transparent;opacity:0;pointer-events:auto;touch-action:none;transition:opacity var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease)}.desktop-scrollbar:before{content:"";position:absolute;top:0;right:2px;bottom:0;width:3px;border-radius:999px;background:color-mix(in srgb,var(--color-accent) 10%,transparent)}.desktop-scrollbar.is-visible{opacity:1}.desktop-scrollbar-thumb{position:relative;z-index:1;width:3px;margin-left:auto;margin-right:2px;min-height:44px;border-radius:999px;background:linear-gradient(180deg,color-mix(in srgb,var(--color-focus) 82%,var(--color-accent)),color-mix(in srgb,var(--color-accent) 86%,var(--color-warm)));box-shadow:0 4px 10px rgba(var(--color-accent-rgb),.16);transition:transform .12s linear,height var(--motion-duration-fast, .2s) var(--motion-ease-standard, ease)}}@media(max-width:600px){html,body{scrollbar-width:none}html::-webkit-scrollbar,body::-webkit-scrollbar{width:0;height:0}:root{--page-card-gutter: 16px;--card-block-gap: 16px}section{min-height:100svh}section.home{min-height:100svh;padding-top:calc(var(--header-height) + var(--page-card-gutter));align-items:flex-start}section.about{align-items:center;justify-content:center}section.projects{padding-bottom:0}}@media(orientation:landscape)and (max-height:700px)and (max-width:1100px){:root{--header-height: 52px;--page-card-gutter: 16px;--card-block-gap: 16px;--collapsed-card-width: calc( 100vw - (var(--page-card-gutter, 16px) * 2) );--landscape-title-text: 1.12rem;--landscape-subtitle-text: .78rem;--landscape-body-text: .78rem;--landscape-card-body-text: .74rem;--landscape-chip-text: .68rem;--landscape-button-text: .78rem}section{min-height:auto;align-items:flex-start}section.home{min-height:auto;align-items:flex-start;padding-top:calc(var(--header-height) + var(--page-card-gutter))}.container{padding:var(--page-card-gutter)}.project-header-card{padding:8px 14px}.project-header-card h2{font-size:var(--landscape-title-text);line-height:1.1}}html.theme-ready body,html.theme-ready section,html.theme-ready .project-header-card,html.theme-ready .project-card,html.theme-ready .about-card,html.theme-ready .contact-card,html.theme-ready .home-card{transition:background-color .3s ease,color .3s ease,border-color .3s ease}@media(prefers-reduced-motion:reduce)and (max-width:600px){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}.particles-layer{display:none}}.about-card{border-radius:8px;max-width:800px;margin:var(--card-block-gap, 20px) auto;padding:20px;background:linear-gradient(var(--surface-card),var(--surface-card)) padding-box,var(--card-stroke) border-box;box-shadow:var(--shadow-soft);border:1px solid transparent}.about h2{margin:0;text-align:center}.about .project-header-wrapper{width:100%;display:flex;justify-content:center}.about .description{line-height:1.5;margin:0}@media(orientation:landscape)and (max-height:700px)and (max-width:1100px){.about-card{max-width:calc(100vw - (var(--page-card-gutter, 16px) * 2));margin:var(--card-block-gap, 16px) auto;padding:14px}.about h2{font-size:var(--landscape-title-text, 1.12rem);line-height:1.1}.about .description{font-size:var(--landscape-body-text, .78rem);line-height:1.38}}.contact-section{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--card-block-gap, 20px);min-height:0;padding:60px var(--page-card-gutter, 20px) max(var(--card-block-gap, 20px),env(safe-area-inset-bottom,0px));scroll-margin-top:var(--header-height)}section#contact.contact-section{min-height:auto!important;height:auto!important;align-items:center;justify-content:flex-start;overflow:visible}.contact-card{border-radius:var(--radius-md);max-width:800px;width:100%;padding:20px;display:flex;flex-wrap:wrap;position:relative;background:linear-gradient(var(--surface-card),var(--surface-card)) padding-box,var(--card-stroke) border-box;box-shadow:var(--shadow-soft);border:1px solid transparent}.contact-left,.contact-right{flex:1;min-width:300px}.contact-left p{margin-top:0;line-height:1.5rem}.contact-right{flex:1;min-width:300px;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-end;text-align:right}.contact-section form label{display:block;font-weight:700;margin-top:10px}.contact-section input,.contact-section textarea{appearance:none;display:block;width:100%;min-height:44px;padding:10px 12px;margin-top:5px;border:1px solid var(--border-soft);background-color:var(--surface-card-strong)!important;box-shadow:none;color:var(--color-text);-webkit-text-fill-color:var(--color-text);caret-color:var(--color-text);border-radius:var(--radius-md);font:inherit;font-size:1rem;line-height:1.25}.contact-section textarea{display:block;height:120px;min-height:120px;resize:none;overflow:auto}.contact-section input:focus,.contact-section textarea:focus{outline:2px solid var(--color-focus);outline-offset:2px}[data-theme=dark] .contact-section input,[data-theme=dark] .contact-section textarea{background-color:var(--color-bg)!important;color:var(--color-text);-webkit-text-fill-color:var(--color-text)}.contact-section input:-webkit-autofill,.contact-section input:-webkit-autofill:focus,.contact-section input:-webkit-autofill:valid{background-color:var(--surface-card-strong)!important;-webkit-box-shadow:0 0 0px 1000px var(--surface-card-strong) inset!important;-webkit-text-fill-color:var(--color-text)!important;transition:background-color 9999s ease-out,color 9999s ease-out}[data-theme=dark] .contact-section input:-webkit-autofill,[data-theme=dark] .contact-section input:-webkit-autofill:focus,[data-theme=dark] .contact-section input:-webkit-autofill:valid{background-color:var(--color-bg)!important;-webkit-box-shadow:0 0 0px 1000px var(--color-bg) inset!important;-webkit-text-fill-color:var(--color-text)!important}.error{color:var(--color-warm);font-size:.85rem;margin-top:4px}.recaptcha-wrapper{width:243px;height:62px;overflow:hidden;align-self:flex-start}.recaptcha{transform:scale(.8);transform-origin:top left}.contact-submit-row{display:flex;flex-direction:column;width:100%;margin:10px 0 0}.contact-submit-row button{background-color:var(--color-accent);color:var(--button-text);font-size:1rem;min-width:148.65px;min-height:44px;padding:12px 20px;border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),border-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease);width:auto;margin-top:10px;align-self:flex-start}@media(hover:hover)and (pointer:fine){.contact-submit-row button:hover{background-color:var(--color-accent-hover)}}.contact-submit-row button:active{transform:scale(.98)}.loading-spinner{width:16px;height:16px;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.contact-submit-row button:disabled{opacity:.6;cursor:not-allowed}.form-feedback{margin-top:16px;padding:12px 16px;border-radius:8px;font-weight:500;text-align:center;transition:opacity .3s ease}.form-feedback.success{background-color:var(--color-success-bg);color:var(--color-success);border:1px solid color-mix(in srgb,var(--color-success) 35%,transparent)}.form-feedback.error{background-color:var(--color-error-bg);color:var(--color-error);border:1px solid color-mix(in srgb,var(--color-error) 35%,transparent)}.contact-right p{margin-top:20px;margin-bottom:20px}.contact-email a{color:var(--color-text);text-decoration:none;font-weight:500}.contact-email a:hover{text-decoration:underline;color:var(--color-warm)}.contact-links-row{display:flex;flex-direction:column;align-items:flex-end;gap:0px}.contact-links-row p{margin:16px 0 0;font-weight:700;text-align:right}.contact-social-links{display:flex;gap:10px}.contact-social-links a{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.contact-icon-wrapper{position:relative;display:inline-block;width:34px;height:34px;color:var(--social-icon);transition:color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease)}[data-theme=dark] .contact-social-links img.default,[data-theme=dark] .contact-social-links img.hover{filter:brightness(1.35) saturate(.95)}.contact-icon-wrapper img{position:absolute;top:0;left:0;transition:opacity var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease);width:100%;height:auto;pointer-events:none}.contact-icon-wrapper img.hover{opacity:0}@media(hover:hover)and (pointer:fine){.contact-icon-wrapper:hover img.hover{opacity:1;transform:scale(1.1)}.contact-icon-wrapper:hover img.default{opacity:0}}.contact-social-links a:active .contact-icon-wrapper img.hover{opacity:1;transform:scale(1.08)}.contact-social-links a:active .contact-icon-wrapper img.default{opacity:0}@media(min-width:601px){.contact-section,section#contact.contact-section{min-height:100dvh!important;height:100dvh!important;justify-content:center;padding:calc(var(--header-height) + var(--card-block-gap, 20px)) var(--page-card-gutter, 20px) var(--card-block-gap, 20px);scroll-margin-top:0}}@media(hover:none),(pointer:coarse){.contact-social-links a.is-touch-active .contact-icon-wrapper img.hover{opacity:1;transform:scale(1.12)}.contact-social-links a.is-touch-active .contact-icon-wrapper img.default{opacity:0;transform:scale(.96)}}@media(max-width:600px){section#contact.contact-section{min-height:auto!important;height:auto!important;justify-content:flex-start;padding-top:var(--page-card-gutter, 16px);padding-bottom:max(var(--page-card-gutter, 16px),env(safe-area-inset-bottom,0px))}.contact-section{min-height:auto!important}.contact-card{flex-direction:column;padding:16px 12px 20px}.contact-left p{text-align:center}.contact-submit-row{flex-direction:column;align-items:flex-end}.recaptcha-wrapper{align-self:flex-end}.contact-submit-row button{align-self:flex-end;margin:10px 0}}@media(orientation:landscape)and (max-height:500px)and (max-width:950px){.contact-section{align-items:flex-start;gap:var(--card-block-gap, 16px);padding:calc(var(--header-height) + var(--card-block-gap, 16px)) var(--page-card-gutter, 16px) var(--card-block-gap, 16px)}.contact-card{max-width:calc(100vw - (var(--page-card-gutter, 16px) * 2));padding:16px 12px 18px}}.project-card{padding:20px;border-radius:var(--radius-md);scroll-margin-top:var(--header-height);width:100%;max-width:800px;margin:var(--card-block-gap, 20px) auto;background:linear-gradient(var(--surface-card),var(--surface-card)) padding-box,var(--card-stroke) border-box;box-shadow:var(--shadow-soft);border:1px solid transparent;transition:box-shadow var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease),border-radius var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease);min-height:0}.project-card.expanded-card{max-width:1000px;border-radius:var(--radius-md)}.expanded-block{width:100%;max-width:100%;margin-bottom:0}.expanded-scroll-top-button{display:none}.project-actions{display:flex;justify-content:center;align-items:center;gap:20px;margin-top:20px;margin-bottom:0}.project-section{margin-bottom:0}@media(max-width:600px){.project-card{max-width:100%;padding:15px}.project-card.expanded-card{max-width:100%}.project-actions{display:grid;grid-template-columns:repeat(2,max-content);justify-content:center;gap:12px 16px}.project-actions>.learn-more-btn:nth-child(3){grid-column:1 / -1;justify-self:center}.expanded-scroll-top-button{position:fixed;top:calc(var(--header-height, 60px) + 6px);left:calc(50% - 21px);z-index:1101;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;padding:0;border:1px solid color-mix(in srgb,var(--color-accent) 42%,transparent);border-radius:999px;background:var(--color-accent);color:var(--button-text);box-shadow:var(--shadow-soft);pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;transform:translateZ(0);transition:top .3s ease,background-color var(--motion-duration-fast, .2s) var(--motion-ease-standard, ease),color var(--motion-duration-fast, .2s) var(--motion-ease-standard, ease),border-color var(--motion-duration-fast, .2s) var(--motion-ease-standard, ease);will-change:top,opacity,transform}[data-theme=dark] .expanded-scroll-top-button{background:var(--color-text);color:var(--color-bg);border-color:color-mix(in srgb,var(--color-text) 46%,transparent)}:root.header-hidden .expanded-scroll-top-button{top:calc(env(safe-area-inset-top,0px) + 10px)}.expanded-scroll-top-icon{width:30px;height:30px}}.project-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;min-height:48px;margin-bottom:20px}.project-title-block,.expanded-title-block{display:flex;align-items:center;gap:12px;min-width:0}.project-title-copy,.expanded-title-copy{min-width:0}.project-header .title{margin:0;font-size:1.4rem;line-height:1}.project-subtitle,.expanded-subtitle{margin:4px 0 0;font-size:1rem;font-style:italic;line-height:1.2}.experience-logo-frame{width:48px;height:48px;flex:0 0 48px;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;padding:5px;background:#fff;border:1px solid var(--border-soft);border-radius:var(--radius-sm);box-shadow:0 2px 8px #06100a1f}.experience-logo{width:100%;height:100%;display:block;object-fit:contain}.experience-logo-frame--insurity .experience-logo{transform:scale(1.26);transform-origin:center}@media(max-width:600px){.experience-logo-frame{width:42px;height:42px;flex-basis:42px;padding:4px}.project-title-block,.expanded-title-block{gap:10px}}.githubIcon{display:flex;align-items:center;justify-content:center;width:30px;height:30px;transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease);cursor:pointer}@media(hover:hover)and (pointer:fine){.githubIcon:hover{transform:scale(1.1)}}.github-icon-wrapper{position:relative;display:inline-block;width:30px;height:30px;line-height:0;overflow:visible}.github-icon-wrapper img{position:absolute;top:0;left:0;width:100%;height:100%;transition:opacity .3s ease;transform:scale(1.27);transform-origin:center center}.github-icon-wrapper img.hover{opacity:0}.githubIcon:hover .github-icon-wrapper img.hover{opacity:1}.githubIcon:hover .github-icon-wrapper img.default{opacity:0}.expanded-header{margin-bottom:1rem}.expanded-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;position:relative;min-height:48px;z-index:1}.expanded-title-row h3{margin:0;font-size:1.4rem}.expanded-buttons-row{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:flex-start;gap:20px;margin:12px 0 0}.expanded-top-button,.learn-more-btn{display:flex;align-items:center;justify-content:center;gap:6px;color:var(--button-text);text-decoration:none;height:40px;padding:10px 14px;border:none;border-radius:var(--radius-md);font-size:1rem;cursor:pointer;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease),box-shadow var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease)}@media(hover:hover)and (pointer:fine){.expanded-top-button:hover,.learn-more-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-interactive)}}.expanded-top-button:active,.learn-more-btn:active{transform:scale(.98)}.button-icon{width:24px;height:24px;flex:0 0 auto;display:inline-block;color:currentColor}.lock-state-icon{width:20px;height:20px;margin-left:6px;opacity:.95;flex:0 0 auto;color:currentColor}.close-button-icon-button{appearance:none;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:4px;border:0;background:transparent;color:var(--color-text);cursor:pointer}@media(hover:hover)and (pointer:fine){.close-button-icon-button:hover{background:transparent}}.close-button-icon{width:28px;height:28px;transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease)}@media(hover:hover)and (pointer:fine){.close-button-icon-button:hover .close-button-icon{transform:scale(1.3)}}.close-button-icon-button:active .close-button-icon{transform:scale(.9)}.project-stack{display:flex;flex-direction:column;gap:10px;margin:10px 0 18px}.stack-expanded-groups{display:flex;flex-direction:column;gap:10px;overflow:hidden}.tech-timeline{display:flex;flex-direction:column;gap:8px;margin-top:1rem}.tech-stack-row{width:100%}.tech-stack-item{display:grid;grid-template-columns:190px 1fr;align-items:center;gap:1.5rem;margin-left:auto;margin-right:auto}.tech-tag-wrapper{width:190px;display:flex;justify-content:flex-start}.tech-tag{display:inline-flex;align-items:center;height:36px;gap:8px;background-color:var(--color-accent);padding:6px 12px;border-radius:var(--radius-md);white-space:nowrap;cursor:default}.tech-icon{width:24px;height:24px;object-fit:contain}.tech-name{font-weight:700;font-size:1rem;color:var(--button-text)}.tech-purpose{font-size:.95rem;color:var(--color-text);line-height:1.5;margin:0!important}.tech-purpose-wrapper{display:flex;align-items:center;gap:.5rem}.tech-arrow{font-weight:700;color:var(--color-text);flex-shrink:0}@media(max-width:600px){.tech-stack-item{grid-template-columns:1fr;gap:.8rem;text-align:left}.tech-tag-wrapper{width:100%;justify-content:flex-start}.tech-purpose-wrapper{flex-direction:row;align-items:flex-start;gap:.4rem}.tech-arrow{margin-top:4px}}.stack-featured-row{display:flex;flex-wrap:wrap;gap:6px;min-width:0}.stack-group{display:grid;grid-template-columns:80px minmax(0,1fr);align-items:start;gap:8px 12px}.stack-group-label{color:var(--color-muted);font-size:.68rem;font-weight:800;letter-spacing:0;line-height:1;padding-top:8px;text-transform:uppercase}.stack-tag-row{display:flex;flex-wrap:wrap;gap:6px;min-width:0}.tag{display:inline-flex;align-items:center;background:color-mix(in srgb,var(--color-accent) 86%,var(--surface-card));color:var(--button-text);margin:0;border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--color-accent) 64%,transparent);box-shadow:0 1px #ffffff1a inset;font-size:.82rem;font-weight:700;min-height:24px;padding:4px 9px 4px 28px;position:relative;cursor:default}.tag-icon-container{width:18px;height:18px;position:absolute;left:6px;top:50%;transform:translateY(-50%)}.tag-icon{width:18px;height:18px}.tag.no-icon{padding-left:12px}.stack-more-toggle{align-self:flex-start;appearance:none;background:color-mix(in srgb,var(--surface-elevated) 70%,transparent);border:1px solid color-mix(in srgb,var(--color-accent) 52%,transparent);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;font:inherit;font-size:.78rem;font-weight:800;line-height:1;margin-left:92px;padding:7px 10px;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),border-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease)}.stack-more-toggle--inline{align-self:center;margin-left:0;min-height:24px;padding:4px 9px}@media(hover:hover)and (pointer:fine){.stack-more-toggle:hover,.stack-more-toggle:focus-visible{background:var(--color-accent);border-color:var(--color-accent);color:var(--button-text)}}.stack-more-toggle:active{transform:scale(.97)}@media(max-width:600px){.stack-group{display:flex;flex-direction:column;gap:5px}.stack-group-label{padding-top:0}.stack-more-toggle{margin-left:0}}.section-divider{height:1px;border:none;background:var(--divider-line);margin:2.5rem 0 1.5rem}[data-theme=dark] .section-divider{background:var(--divider-line)}.project-description{font-size:1rem;line-height:1.5;margin:20px 0 0}.project-section h4{font-size:1.1rem;font-weight:600;margin-bottom:.5rem}.project-section p{line-height:1.5;margin:0 0 .7rem}.custom-bullet-list{padding-left:1.2rem;margin-top:0;list-style-type:disc}.custom-bullet-list li{margin-bottom:.5rem;line-height:1.5}.embedded-video{position:relative;width:100%;padding-bottom:56.25%;margin-top:1.5rem;border-radius:var(--radius-md);overflow:hidden;background:#000}.embedded-video iframe{position:absolute;inset:0;width:100%;height:100%;border:none}.project-divider{background:var(--divider-line);display:flex;justify-content:center;align-items:center;border:none;height:1px;margin:0}[data-theme=dark] .project-divider{background:var(--divider-line)}@media(orientation:landscape)and (max-height:700px)and (max-width:1100px){.project-card{max-width:calc(100vw - (var(--page-card-gutter, 16px) * 2));margin:var(--card-block-gap, 16px) auto;padding:14px}.project-header,.expanded-title-row{min-height:40px;gap:12px;margin-bottom:12px}.project-title-block,.expanded-title-block{gap:10px}.project-header .title,.expanded-title-row h3{font-size:var(--landscape-title-text, 1.12rem);line-height:1.08}.project-subtitle,.expanded-subtitle{font-size:var(--landscape-subtitle-text, .78rem)}.experience-logo-frame{width:40px;height:40px;flex-basis:40px;padding:4px}.project-stack{gap:7px;margin:8px 0 12px}.stack-group{grid-template-columns:58px minmax(0,1fr);gap:6px 8px}.stack-group-label{font-size:.58rem;padding-top:7px}.stack-tag-row{gap:4px}.tag{min-height:22px;padding-top:3px;padding-bottom:3px;padding-right:7px;font-size:var(--landscape-chip-text, .68rem)}.stack-more-toggle{font-size:var(--landscape-chip-text, .68rem);margin-left:66px;padding:6px 8px}.project-section p,.custom-bullet-list li,.tech-purpose{font-size:var(--landscape-body-text, .78rem);line-height:1.35}.project-description{font-size:var(--landscape-card-body-text, .74rem);line-height:1.32;margin-top:12px}.project-section h4{font-size:.92rem}.project-actions{gap:12px;margin-top:14px}.expanded-top-button,.learn-more-btn{height:34px;padding:6px 10px;font-size:var(--landscape-button-text, .78rem)}.button-icon{width:20px;height:20px}.section-divider{margin:1.5rem 0 1rem}}@media(orientation:landscape)and (max-height:700px)and (max-width:1400px)and (pointer:coarse){.project-card{padding:12px}.project-description{font-size:var(--landscape-card-body-text, .74rem);line-height:1.32;margin-top:12px}.project-section p,.custom-bullet-list li,.tech-purpose{font-size:.82rem;line-height:1.35}}.block-group{display:flex;position:relative;flex-direction:row;align-items:flex-start;background:transparent;overflow:visible}.block-image{display:flex;flex-direction:column;align-items:center;width:100px;text-align:center;margin:0;padding:0}.block-image img{width:100%;height:auto;display:block;filter:none;box-shadow:none;margin-bottom:.5rem}.block-image figcaption{font-size:.9rem;color:var(--color-muted)}.desc-group{display:flex}.desc-text{width:65%;margin:0 0 -20px}.desc-bookiebot-hero-img{position:absolute;width:140px;height:auto;left:74%;bottom:-10%}.goal-block{display:flex;align-items:flex-start;justify-content:center;gap:150px;margin-bottom:80px}.goal-intro{font-size:1rem;color:var(--color-text);line-height:1.5;margin-bottom:.7rem}.goal-img{display:flex;flex-direction:column;align-items:center;width:100px;text-align:center}.understanding-cmds-img{width:20%;margin-top:12px;height:auto}.auto-logging-img{width:22%;height:auto}.bookiebot-inside-img{width:15%;height:auto}.goal-img figcaption{position:absolute;width:25%;top:100%;font-size:.9rem;color:var(--color-muted)}.research-img-block{display:flex;justify-content:center;align-items:center;flex-direction:column;margin:2rem 0}.research-img-block img{position:static;display:block;max-width:100%;height:auto;transform:none}.research-text{text-align:left;width:100%}.gpt-powered-img{width:30%!important;margin:0 auto}.natural-lang-img{width:50%!important;margin:0 auto 22px}.prompt-structure-img{width:50%!important;margin:0 auto}.techstack-block{position:relative}.techstack-bookiebot-img{position:absolute;width:240px;height:auto;left:65%;transform:translateY(-102%)}.features-block{display:grid;grid-template-columns:repeat(4,1fr);justify-items:center;gap:40px;margin:6px 0 0}.feature-text{width:100%;text-align:left;margin:0}.feature-img{display:flex;flex-direction:column;align-items:center;text-align:center;position:relative;width:auto}.feature-img figcaption{margin-top:.5rem;font-size:.9rem;color:var(--color-muted);text-align:center;max-width:100%;width:auto}.natural-lang2-img figcaption{width:220px;max-width:220px;margin-top:34px}.llm-translator-img figcaption{width:200px;max-width:200px;margin-top:39px}.sheets-sync-img figcaption{width:220px;max-width:220px;margin-top:8px}.fast-async-img figcaption{width:190px;max-width:190px;margin-top:13px}.natural-lang2-img{width:85%;transform:translateY(40px)}.llm-translator-img{width:80%;transform:translateY(50px)}.sheets-sync-img{width:70%;transform:translateY(0)}.fast-async-img{width:90%;transform:translateY(35px)}.impact-block{display:flex;align-items:flex-start;justify-content:center;gap:150px;margin-top:30px;margin-bottom:90px}.impact-img{display:flex;flex-direction:column;align-items:center;width:110px;text-align:center}.impact-img figcaption{position:absolute;width:25%;top:100%;font-size:.9rem;color:var(--color-muted)}.one-step-img{width:20%;height:auto}.analytics-img{width:18%;height:auto}.reflection-block{display:flex;flex-wrap:wrap;justify-content:center;gap:100px;margin-top:30px;margin-bottom:70px}.reflection-img{display:flex;flex-direction:column;align-items:center;width:110px;text-align:center}.reflection-img figcaption{position:absolute;width:25%;top:100%;font-size:.9rem;color:var(--color-muted)}.prompt-reliability-img{width:30%;height:auto}.llm-vs-parser-img{width:18%;height:auto}.async-design-img{margin-top:35px;width:18%;height:auto}.future-block{display:grid;grid-template-columns:repeat(4,1fr);justify-items:center;gap:20px;margin-bottom:60px}.future-img{display:flex;flex-direction:column;align-items:center;text-align:center;position:relative;width:auto}.future-img figcaption{margin-top:.5rem;font-size:.9rem;color:var(--color-muted);text-align:center;width:auto;max-width:100%}[data-theme=dark] .expanded-block{color:var(--color-text)}[data-theme=dark] .expanded-block p,[data-theme=dark] .expanded-block h3,[data-theme=dark] .expanded-block h4,[data-theme=dark] .expanded-block li,[data-theme=dark] .expanded-block figcaption,[data-theme=dark] .expanded-block .goal-intro,[data-theme=dark] .expanded-block .goal-img figcaption,[data-theme=dark] .expanded-block .reflection-img figcaption,[data-theme=dark] .expanded-block .future-img figcaption{color:var(--color-text)}.expanded-block img{filter:none!important;box-shadow:none!important}.mobile-dashboard-img{width:80%;transform:translateY(30px)}.mobile-dashboard-img figcaption{width:160px;max-width:160px;margin-top:20px}.multi-user-img{width:90%;transform:translateY(25px)}.multi-user-img figcaption{width:190px;max-width:190px;margin-top:40px}.visual-insights-img{width:60%;transform:translateY(40px)}.visual-insights-img figcaption{width:175px;max-width:175px;margin-top:10px}.error-handling-img{width:100%;transform:translateY(45px)}.error-handling-img figcaption{width:185px;max-width:185px;margin-top:37px}@media(max-width:600px){.block-group,.desc-group,.goal-block,.impact-block,.reflection-block{flex-direction:column;align-items:center;gap:2rem;width:100%;margin:0 auto}.block-image,.goal-img,.impact-img,.reflection-img{width:80%!important;position:relative}.block-image img,.goal-img img,.impact-img img,.reflection-img img{width:70%;height:auto;margin:0 auto}.block-image figcaption,.goal-img figcaption,.impact-img figcaption,.reflection-img figcaption{position:static;width:100%;text-align:center;margin-top:.5rem}.desc-block{display:flex;flex-direction:column}.desc-text{width:100%;margin:0}.desc-bookiebot-hero-img{width:60%!important;height:auto;position:static}.understanding-cmds-img{width:90%!important}.auto-logging-img{width:85%!important}.bookiebot-inside-img{width:72%!important}.research-img-block{display:flex;justify-content:center;align-items:center;margin:2rem 0;flex-direction:column}.research-img-block img{position:static!important;display:block;margin:0 auto;width:90%!important;max-width:100%;transform:none!important}.gpt-powered-img,.natural-lang-img,.prompt-structure-img{width:90%!important;max-width:100%!important;margin:0 auto}.gpt-powered-img{width:70%!important;margin:0 auto}.natural-lang-img{width:100%!important;margin:10px auto 5px}.prompt-structure-img{width:100%!important;margin:10px auto 0}.techstack-bookiebot-img{position:static;width:90%;margin:1rem auto;transform:none}.features-block{display:block;margin-top:12px}.feature-img{margin-bottom:3rem;width:80%}.feature-img figcaption{max-width:100%!important;width:100%!important;margin-top:1rem!important}.natural-lang2-img,.llm-translator-img,.sheets-sync-img,.fast-async-img{width:100%!important;transform:none!important}.natural-lang2-img{width:95%!important;margin:0 auto 30px}.llm-translator-img{width:75%!important;margin:0 auto 30px}.sheets-sync-img,.fast-async-img{width:80%!important;margin:0 auto 30px}.one-step-img{width:90%!important;height:auto;margin:20px auto}.analytics-img{width:78%!important;height:auto;margin:0 auto 20px}.prompt-reliability-img{width:90%!important;height:auto;margin:20px auto}.llm-vs-parser-img{width:75%!important;height:auto;margin:0 auto 20px}.async-design-img{width:80%!important;height:auto;margin:0 auto 20px}.future-block{display:flex;flex-direction:column}.mobile-dashboard-img{width:75%!important;height:auto;margin:20px auto}.multi-user-img{width:95%!important;height:auto;margin:0 auto 20px}.visual-insights-img{width:63%!important;height:auto;margin:0 auto 20px}.error-handling-img{width:92%!important;height:auto;margin:0 auto 70px}}.gallery-lock-overlay{--modal-offset-y: calc(var(--header-height) * .5);position:fixed;inset:0;background:color-mix(in srgb,var(--color-overlay) 78%,transparent);display:grid;place-items:center;padding:24px;padding-top:max(24px,env(safe-area-inset-top));padding-bottom:max(24px,env(safe-area-inset-bottom));height:100dvh;min-height:100svh;z-index:9998}:root.header-hidden .gallery-lock-overlay{--modal-offset-y: 0px}.gallery-lock-modal{width:min(800px,calc(100vw - 40px));position:fixed;top:50%;left:50%;background:linear-gradient(var(--surface-card),var(--surface-card)) padding-box,var(--card-stroke) border-box;border:1px solid transparent;border-radius:var(--radius-md);box-shadow:var(--shadow-soft);padding:20px;color:var(--color-text);transform:translate(-50%,-50%) translateY(var(--modal-offset-y));transition:transform var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease)}.gallery-lock-modal--compact,.gallery-lock-modal--request{width:min(420px,calc(100vw - 40px))}.gallery-lock-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.gallery-lock-header h3{margin:0;font-size:1.3rem}.gallery-lock-close{background:transparent;color:var(--color-text);border:none;padding:6px;border-radius:var(--radius-md);cursor:pointer;transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease)}@media(hover:hover)and (pointer:fine){.gallery-lock-close:hover{background-color:transparent;transform:scale(1.3)}}.gallery-lock-close:active{transform:scale(.9)}.gallery-lock-close-icon{width:28px;height:28px;display:block;color:currentColor}.gallery-lock-hint{margin:12px 0 18px;font-size:.95rem;opacity:.85}.gallery-lock-hint.secondary{margin-top:4px}.gallery-lock-form{display:flex;flex-direction:column;gap:10px}.gallery-lock-actions-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px}.gallery-lock-actions-row .learn-more-btn{width:100%}.gallery-lock-label{font-size:.9rem;font-weight:600}.gallery-lock-input-row{position:relative;width:100%}.gallery-lock-input{width:100%;height:40px;padding:10px 12px;border-radius:var(--radius-md);border:1px solid var(--border-soft);background:var(--surface-card-strong);color:var(--color-text)}.gallery-lock-input-row .gallery-lock-input{padding-right:76px}.gallery-lock-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);height:28px;padding:0 10px;border-radius:var(--radius-sm);border:1px solid var(--border-soft);background:var(--color-accent);color:var(--button-text);font-size:.75rem;font-weight:700;cursor:pointer;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease)}@media(hover:hover)and (pointer:fine){.gallery-lock-toggle:hover{background:var(--color-accent-hover);color:var(--button-text)}}.gallery-lock-input:focus{outline:2px solid var(--color-focus);outline-offset:2px}[data-theme=dark] .gallery-lock-input:-webkit-autofill,[data-theme=dark] .gallery-lock-input:-webkit-autofill:hover,[data-theme=dark] .gallery-lock-input:-webkit-autofill:focus,[data-theme=dark] .gallery-lock-input:-webkit-autofill:active{-webkit-box-shadow:0 0 0px 1000px var(--color-bg) inset!important;-webkit-text-fill-color:var(--color-text)!important;caret-color:var(--color-text)}.gallery-lock-error{margin:0;color:var(--color-warm);font-size:.9rem}.gallery-lock-pill{font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border:1px solid var(--border-soft);color:var(--color-accent-hover);background:var(--color-accent-soft)}.gallery-lock-divider{height:1px;background:var(--divider-line);margin:20px 0}.gallery-access-request h4{margin:0;font-size:1.1rem}.gallery-access-request form{display:flex;flex-direction:column;gap:12px}.gallery-access-request label{display:flex;flex-direction:column;gap:6px;font-size:.9rem;font-weight:600}.gallery-access-request input,.gallery-access-request textarea{width:100%;height:40px;padding:10px 12px;border-radius:8px;border:1px solid var(--border-soft);background:var(--surface-card-strong);color:var(--color-text)!important;caret-color:var(--color-text);-webkit-text-fill-color:var(--color-text);-webkit-text-security:none;font-size:.95rem}[data-theme=dark] .gallery-access-request input:-webkit-autofill,[data-theme=dark] .gallery-access-request input:-webkit-autofill:hover,[data-theme=dark] .gallery-access-request input:-webkit-autofill:focus,[data-theme=dark] .gallery-access-request input:-webkit-autofill:active{-webkit-box-shadow:0 0 0px 1000px var(--color-bg) inset!important;-webkit-text-fill-color:var(--color-text)!important;caret-color:var(--color-text)}.gallery-access-request textarea{resize:vertical;height:auto;min-height:120px}.gallery-access-request input::placeholder,.gallery-access-request textarea::placeholder{color:var(--color-text);opacity:.6}.gallery-access-request input:focus,.gallery-access-request textarea:focus{outline:2px solid var(--color-focus);outline-offset:2px}.gallery-lock-submit-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.gallery-lock-submit-row button{min-width:160px}.error{font-size:.82rem;color:var(--color-warm)}.input-error{border-color:var(--color-warm)}.form-feedback{margin-top:10px;padding:10px 12px;border-radius:var(--radius-md);font-size:.9rem}.form-feedback.success{background:var(--color-success-bg);color:var(--color-success);border:1px solid color-mix(in srgb,var(--color-success) 35%,transparent)}.form-feedback.error{background:var(--color-error-bg);color:var(--color-error);border:1px solid color-mix(in srgb,var(--color-error) 35%,transparent)}@media(max-width:600px){.gallery-lock-modal{padding:20px}.gallery-lock-modal--request{padding:16px}.gallery-lock-modal--request .gallery-lock-header h3{font-size:1.15rem}.gallery-lock-modal--request .gallery-lock-hint{margin:8px 0 12px;font-size:.9rem}.gallery-lock-modal--request .gallery-access-request form{gap:10px}.gallery-lock-modal--request .gallery-access-request label{gap:4px;font-size:.85rem}.gallery-lock-modal--request .gallery-access-request textarea{height:80px;min-height:80px}.gallery-lock-actions{flex-direction:column}.gallery-lock-submit-row{flex-direction:column;align-items:stretch}.gallery-lock-submit-row .recaptcha-wrapper{align-self:flex-start}.gallery-lock-modal--request .gallery-lock-submit-row{gap:12px}.gallery-lock-modal--request .gallery-lock-submit-row .recaptcha-wrapper{width:219px;height:56px;overflow:hidden}.gallery-lock-modal--request .gallery-lock-submit-row .recaptcha{transform:scale(.72);transform-origin:top left}.gallery-lock-modal--request .gallery-lock-submit-row button{min-width:0}}.gallery-lock-submit-inline{width:auto;display:inline-flex;align-items:center;gap:8px}.gallery-lock-button-icon{width:24px;height:24px;color:currentColor}.gallery-lock-button-icon--small{width:20px;height:20px}.button-text-short{display:none}@media(max-width:600px){.gallery-lock-modal--compact .button-text-full{display:none}.gallery-lock-modal--compact .button-text-short{display:inline}}.video-overlay{position:fixed;top:var(--video-viewport-top, 0);left:var(--video-viewport-left, 0);width:var(--video-viewport-width, 100dvw);height:var(--video-viewport-height, 100dvh);background-color:var(--color-overlay);display:flex;align-items:center;justify-content:center;--video-overlay-gap: clamp(24px, 8vh, 160px);--video-effective-height: var(--video-viewport-height, 100dvh);--video-effective-width: var(--video-viewport-width, 100dvw);padding:var(--video-overlay-gap);transition:padding var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease);z-index:12000}body.video-overlay-open .site-header{pointer-events:none;transform:translateY(-100%)}.video-overlay-card{position:relative;width:min(calc(var(--video-effective-width) - var(--video-overlay-gap) - var(--video-overlay-gap)),1800px,calc((var(--video-effective-height) - var(--video-overlay-gap) - var(--video-overlay-gap)) * 16 / 9));max-height:calc(var(--video-effective-height) - var(--video-overlay-gap) - var(--video-overlay-gap));background:linear-gradient(color-mix(in srgb,var(--color-header) 64%,transparent),color-mix(in srgb,var(--color-header) 64%,transparent)) padding-box,var(--card-stroke) border-box;border:1px solid transparent;border-radius:var(--radius-md);padding:18px;box-shadow:0 20px 40px #00000059;transition:padding var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease),width var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease),max-height var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease)}.video-overlay-close{position:absolute;top:12px;right:12px;background:var(--overlay-control-bg);color:#fff;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-md);padding:8px 10px;cursor:pointer;display:flex;align-items:center;justify-content:center}.video-overlay-close-icon{width:24px;height:24px;color:currentColor}@media(hover:hover)and (pointer:fine){.video-overlay-close:hover{background:var(--overlay-control-hover)}}.video-overlay-close:active{transform:scale(.96)}.video-embed{width:100%;aspect-ratio:16 / 9;border-radius:var(--radius-lg);overflow:hidden;max-height:calc(var(--video-effective-height) - var(--video-overlay-gap) - var(--video-overlay-gap) - 36px)}.video-embed iframe{width:100%;height:100%;border:0}@media(max-width:1100px),(max-height:700px){.video-overlay{--video-overlay-gap: 15px;padding:15px}.video-overlay-card{padding:15px}}@media(max-width:700px){.video-overlay-close-icon{width:22px;height:22px}}@media(orientation:landscape)and (max-height:500px){.video-overlay{--video-overlay-gap: max(6px, env(safe-area-inset-bottom));padding:var(--video-overlay-gap);align-items:stretch}.video-overlay-card{width:min(calc(var(--video-effective-width) - var(--video-overlay-gap) - var(--video-overlay-gap)),calc((var(--video-effective-height) - var(--video-overlay-gap) - var(--video-overlay-gap)) * 16 / 9));max-height:calc(var(--video-effective-height) - var(--video-overlay-gap) - var(--video-overlay-gap));align-self:center;margin:auto;padding:6px;border-radius:var(--radius-sm)}.video-embed{max-height:calc(var(--video-effective-height) - var(--video-overlay-gap) - var(--video-overlay-gap) - 12px);border-radius:var(--radius-sm)}.video-overlay-close{top:6px;right:6px;padding:6px;z-index:1;background:#090f13d1}.video-overlay-close-icon{width:20px;height:20px}}.projects h2{margin:0}.swipe-hint{display:none}.fullscreen-overlay{position:fixed;top:0;left:0;width:100dvw;height:100dvh;background-color:var(--color-overlay);display:flex;flex-direction:column;justify-content:space-between;align-items:center;z-index:9999;overflow:hidden}.fullscreen-center-area{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;touch-action:pan-y}.fullscreen-image-wrapper{display:flex;justify-content:center;align-items:center;width:100dvw;height:72vh;max-height:72vh;max-width:none;margin-bottom:20px}.fullscreen-swipe-stage{width:100%;height:100%;overflow:hidden;touch-action:pan-y}.fullscreen-swipe-track{display:flex;width:100%;height:100%;transform:translate3d(calc(-100% + var(--swipe-offset, 0px)),0,0);will-change:transform}.fullscreen-swipe-track.is-animating{transition:transform .42s var(--motion-ease-standard, ease)}.fullscreen-slide{flex:0 0 100%;min-width:0;height:100%;display:flex;align-items:center;justify-content:center;padding:0 18px}.fullscreen-slide.is-empty{pointer-events:none}.fullscreen-image{max-height:100%;max-width:min(50vw,100%);object-fit:contain;border-radius:8px;cursor:zoom-in;transition:transform var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease);border:1px solid rgba(255,255,255,.1)}.superzoomed.fullscreen-image{box-shadow:none;border:none}.fullscreen-caption{margin-top:0;font-size:1rem;color:#fff;background:var(--overlay-control-bg);border:1px solid rgba(255,255,255,.1);padding:8px 14px;border-radius:8px;max-width:100%;text-align:center;z-index:10000}.fullscreen-caption.hidden{display:none}.fullscreen-image-wrapper.superzoom-mode{max-height:none;max-width:none;margin-bottom:0;width:100dvw;height:100dvh;position:fixed;top:0;left:0}.superzoomed{max-width:none!important;max-height:none!important;width:100dvw;height:100dvh;cursor:zoom-out;border-radius:0;transform:scale(.7)}.superzoomed:active{cursor:grabbing}.fullscreen-close-btn{position:fixed;right:15dvw;top:10dvh;background:var(--overlay-control-bg);color:#fff;border:none;padding:10px 10px 7px;cursor:pointer;z-index:10060}.fullscreen-close-icon{width:32px;height:32px;color:currentColor}.carousel-arrow{position:absolute;top:47%;transform:translateY(-50%);background:var(--overlay-control-bg);color:#fff;border:none;padding:10px 16px;cursor:pointer;z-index:10000;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;opacity:1;transition:opacity var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease),background-color var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease);pointer-events:auto}.fullscreen-close-btn,.carousel-arrow{transition:background-color var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease),opacity var(--motion-duration-normal, .26s) var(--motion-ease-standard, ease);border:1px solid rgba(255,255,255,.1);border-radius:8px}@media(hover:hover)and (pointer:fine){.fullscreen-close-btn:hover,.carousel-arrow:hover{background-color:var(--overlay-control-hover)}}.carousel-arrow.hidden{opacity:0;pointer-events:none}.carousel-arrow:disabled{cursor:default}.fullscreen-image-button{appearance:none;display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:zoom-in;line-height:0}@media(hover:hover)and (pointer:fine){.fullscreen-image-button:hover{background:transparent}}.carousel-arrow.left{left:15dvw}.carousel-arrow.right{right:15dvw}.arrow-inner{font-size:2.5rem;color:#fff;transform:translateY(25px);transform:translateY(-4px)}.fade-loader{opacity:.8;padding:16px;text-align:center}.thumbnail-strip{position:absolute;bottom:16px;left:50%;transform:translate(-50%);display:flex;justify-content:center;align-items:center;gap:10px;padding:10px 20px;overflow-x:auto;overflow-y:hidden;max-width:100vw;scroll-behavior:smooth;opacity:1;transition:opacity .3s ease;pointer-events:auto;scrollbar-width:none;touch-action:pan-x;-webkit-overflow-scrolling:touch}.thumbnail-strip.hidden{opacity:0;pointer-events:none}.thumbnail-strip::-webkit-scrollbar{display:none}.thumbnail-strip::-webkit-scrollbar-thumb{background:#0006;border-radius:4px}.thumbnail-container{flex:0 0 auto;border-radius:6px;overflow:hidden;cursor:pointer;transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease);border:0;padding:0;background:transparent}@media(hover:hover)and (pointer:fine){.thumbnail-container:hover{transform:scale(1.1)}}.thumbnail-container.active{transform:scale(1.2);box-shadow:0 0 0 2px var(--color-accent-social-hover)}.thumbnail-image{height:60px;width:auto;border-radius:6px;object-fit:contain;display:block}.project-expanded-outside{position:absolute;width:100%;z-index:999;pointer-events:none}.project-expanded-outside .expanded-card-wrapper{pointer-events:auto;width:1000px;margin:0 auto}@media(max-width:600px){.project-expanded-outside .expanded-card-wrapper{width:100%;padding:0 20px}.clickable-gallery-image{cursor:zoom-in;transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease)}@media(hover:hover)and (pointer:fine){.clickable-gallery-image:hover{transform:scale(1.03)}}@keyframes swipeWave{0%{transform:translate(-40vw) translateY(0) rotate(-45deg);opacity:0}10%{opacity:1}25%{transform:translate(40vw) translateY(0) rotate(45deg)}50%{transform:translate(-40vw) translateY(0) rotate(-45deg)}75%{transform:translate(40vw) translateY(0) rotate(45deg)}90%{opacity:1}to{transform:translate(-40vw) translateY(0) rotate(-45deg);opacity:0}}.fullscreen-image-wrapper{width:100dvw;height:55vh;max-height:55vh;max-width:none}.fullscreen-slide{padding:0 14px}.fullscreen-image{max-width:min(90vw,100%)}.swipe-hint{display:flex;position:absolute;bottom:40%;transform:translateX(-50%,0);width:80px;height:auto;z-index:10;pointer-events:none;animation:swipeWave 2s ease-in-out 1;animation-fill-mode:forwards}.superzoomed{transform:scale(.9)}.fullscreen-close-btn{top:20px;right:20px;padding:6px 6px 4px}.fullscreen-close-icon{width:24px;height:24px}.fullscreen-caption{bottom:0}.thumbnail-strip{left:0;right:0;margin:0 auto;transform:none;justify-content:flex-start}.carousel-arrow{display:none}.carousel-arrow.left{left:5px}.carousel-arrow.right{right:5px}.arrow-inner{font-size:2rem}}.site-header{height:var(--header-height, 60px);background:color-mix(in srgb,var(--color-header) 94%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);position:fixed;top:0;left:0;width:100%;z-index:1000;display:flex;align-items:center;justify-content:space-between;box-shadow:0 10px 28px #0000002e;border-bottom:1px solid rgba(255,255,255,.08)}.site-header .logo{font-size:1.3rem;font-weight:700;position:absolute;left:20px;top:25%;transform:translateY(-50%)}.site-header .logo a{color:#fff;text-decoration:none}.site-header nav{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);transition:left var(--motion-duration-normal, .24s) var(--motion-ease-standard, ease),transform var(--motion-duration-normal, .24s) var(--motion-ease-standard, ease)}.site-header nav.hidden-on-load{display:none}.site-header nav a{margin:0 var(--nav-margin, 30px);text-decoration:none;color:#ffffffdb;font-weight:600;font-size:var(--nav-font-size, 1rem);position:relative;z-index:1;transition:color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),font-size var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),margin var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease)}@media(hover:hover)and (pointer:fine){.site-header nav a:hover{color:#fff}}.site-header nav a.active{color:var(--nav-pill-text)}.bubble-indicator{position:absolute;top:50%;transform:translateY(-50%);height:32px;border-radius:var(--radius-md);background-color:var(--nav-pill-bg);width:0;left:0;transition:left var(--motion-duration-normal, .24s) var(--motion-ease-standard, ease),width var(--motion-duration-normal, .24s) var(--motion-ease-standard, ease),opacity var(--motion-duration-normal, .24s) var(--motion-ease-standard, ease);z-index:0;pointer-events:none}.menu-button{display:none;position:absolute;right:20px;cursor:pointer;z-index:1100;border:0;background:transparent;color:#fff;width:40px;height:40px;padding:3px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.theme-toggle{position:absolute;top:50%;transform:translateY(-50%);right:64px;height:34px;width:34px;border-radius:var(--radius-md);border:1px solid rgba(255,255,255,.24);background:#ffffffeb;color:var(--color-header);cursor:pointer;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),border-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),transform var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease)}@media(hover:hover)and (pointer:fine){.theme-toggle:hover{transform:translateY(-50%) scale(1.08);background-color:#fff;color:var(--color-accent-hover);border-color:#ffffff70}}.theme-toggle:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;background-color:#fff;color:var(--color-accent-hover)}.theme-toggle-icon{display:block;width:20px;height:20px}.theme-toggle:active{transform:translateY(-50%) scale(.95)}.menu-button-icon{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:34px;height:34px;color:currentColor;transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease)}.menu-button-line{display:block;width:30px;height:3px;border-radius:999px;background:currentColor;transform-origin:center;transition:opacity var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),transform var(--motion-duration-normal, .24s) var(--motion-ease-standard, ease)}.menu-button.is-open .menu-button-line:nth-child(1){transform:translateY(9px) rotate(45deg)}.menu-button.is-open .menu-button-line:nth-child(2){opacity:0;transform:scaleX(.3)}.menu-button.is-open .menu-button-line:nth-child(3){transform:translateY(-9px) rotate(-45deg)}.menu-button:active .menu-button-icon{transform:scale(.94)}@media(max-width:1100px)and (min-width:601px){.site-header{--nav-margin: 22px;--nav-font-size: .95rem}.site-header nav{left:56%}}@media(max-width:920px)and (min-width:601px){.site-header{--nav-margin: 16px;--nav-font-size: .9rem}.site-header nav{left:58%}}@media(max-width:780px)and (min-width:601px){.site-header{--nav-margin: 12px;--nav-font-size: .85rem}.site-header nav{left:60%}}@media(max-width:600px){.site-header{transition:transform .3s ease}.site-header.hidden{transform:translateY(-100%)}.site-header .logo{left:50%;top:30%;transform:translate(-50%,-50%);font-size:1.2rem}.menu-button{display:block;top:20%}.menu-button:hover{background:transparent}.theme-toggle{top:50%;transform:translateY(-50%);left:20px;right:auto}.site-header nav{display:flex;flex-direction:column;background:color-mix(in srgb,var(--color-header) 94%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);position:fixed;top:var(--header-height);right:0;left:auto;width:min(48vw,220px);transform:translate(100%);transition:transform var(--motion-duration-normal, .24s) var(--motion-ease-standard, ease);box-shadow:var(--shadow-soft)}.site-header nav.active{transform:translate(0)}.site-header nav.no-animate{transition:none!important}.site-header nav a{margin:0;padding:10px;text-align:center;border-top:1px solid rgba(255,255,255,.18);color:#ffffffe6;text-decoration:none}.site-header nav a.active{color:var(--nav-pill-text)}.bubble-indicator{display:block;border-radius:0;background-color:var(--nav-pill-bg);opacity:0;transition:width var(--motion-duration-normal, .24s) var(--motion-ease-standard, ease),height var(--motion-duration-normal, .24s) var(--motion-ease-standard, ease),left var(--motion-duration-normal, .24s) var(--motion-ease-standard, ease),opacity var(--motion-duration-normal, .24s) var(--motion-ease-standard, ease);pointer-events:none}.site-header nav.active .bubble-indicator{display:block;opacity:1;position:absolute;bottom:0;transform:translateY(50%);z-index:0}.site-header nav:not(.active) .bubble-indicator{display:none}}.home-content{display:flex;align-items:center}.home-card{border-radius:var(--radius-md);max-width:800px;width:calc(100% - (var(--page-card-gutter, 20px) * 2));margin:0;animation:home-card-enter var(--motion-duration-slow, .42s) var(--motion-ease-standard, ease) both;background:linear-gradient(var(--surface-card),var(--surface-card)) padding-box,var(--card-stroke) border-box;box-shadow:var(--shadow-soft);border:1px solid transparent}@keyframes home-card-enter{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.home-left{flex:1;display:flex;justify-content:center;align-items:center}.home-left picture{display:block;line-height:0}.home-left .avatar{width:250px;height:auto;vertical-align:bottom;filter:drop-shadow(-10px 0px 14px rgba(31,81,55,.22))}.home-right{flex:2;padding-left:20px;padding-bottom:50px}.home-right .greeting,.home-right .subtitle{font-size:1.1rem;margin:0}.home-right .name{font-size:2.5rem;margin:0}.home-right .subtitle{font-style:italic;color:var(--color-text)}.home-right .description{min-width:278px;padding-top:50px;margin:0;font-size:1rem;color:var(--color-text);line-height:1.5}.home-divider{display:flex;justify-content:center;align-items:center;border:none;height:1px;background:var(--divider-line);margin:0;width:100%}.home-under-line{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:20px;margin-top:10px}.home-action-buttons{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.home-action-buttons a{text-decoration:none}.home-action-link{display:flex;align-items:center;justify-content:center;gap:6px;min-height:40px;color:var(--button-text);background:var(--color-accent);font-weight:700;border:1px solid transparent;padding:8px 14px;margin:0;border-radius:var(--radius-md);cursor:pointer;font-size:1rem;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease),box-shadow var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease)}.home-action-link img{width:24px;height:24px}@media(hover:hover)and (pointer:fine){.home-action-link:hover{background-color:var(--color-accent-hover);box-shadow:var(--shadow-interactive);transform:translateY(-1px)}}.home-action-link:active{transform:scale(.98)}.home-resume-button a,.home-social-links a{display:flex;align-items:center;justify-content:center;width:48px;height:48px;text-decoration:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.home-resume-button img,.home-social-links img{width:40px;height:40px;transition:transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease)}.icon-wrapper{position:relative;display:inline-block;width:40px;height:40px;color:var(--social-icon);cursor:pointer;touch-action:manipulation;transition:color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease)}[data-theme=dark] .home-social-links img.default,[data-theme=dark] .home-social-links img.hover{filter:brightness(1.35) saturate(.95)}.icon-wrapper img{position:absolute;inset:0;width:100%;height:100%;transition:opacity var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease);pointer-events:none}.icon-wrapper img.hover{opacity:0}@media(hover:hover)and (pointer:fine){.home-social-links a:hover .icon-wrapper img.hover{opacity:1;transform:scale(1.1)}.home-social-links a:hover .icon-wrapper img.default{opacity:0}}@media(hover:none),(pointer:coarse){.home-social-links a.is-touch-active .icon-wrapper img.hover{opacity:1;transform:scale(1.12)}.home-social-links a.is-touch-active .icon-wrapper img.default{opacity:0;transform:scale(.96)}}.home-social-links{flex:1;display:flex;justify-content:flex-end;gap:15px;flex-wrap:wrap}@media(max-width:600px){section.home{align-items:center;justify-content:center}.home-card{justify-content:center;align-items:center;min-height:100svh;margin-top:0;padding:12px 10px 0;scroll-margin-top:0px;background:linear-gradient(var(--surface-card),var(--surface-card)) padding-box,var(--card-stroke) border-box;box-shadow:none;border:1px solid transparent}.home-content{flex-direction:column-reverse;text-align:center}.home-right{transform-origin:top;padding:0}.home-right .greeting{font-size:1rem}.home-right .name{font-size:2rem}.home-right .subtitle{font-size:1rem}.home-right .description{margin:0;font-size:.9rem;padding:20px 0;transform-origin:top center}.home-left{transform-origin:top;padding:0;margin:0}.home-left .avatar{width:200px;height:auto;transform-origin:top}.avatar-wrapper{position:relative;width:250px;height:auto;display:flex;justify-content:center;align-items:center}.avatar-glow{position:absolute;top:0%;width:250px;height:600px;border-radius:50%;transform:translate(-50%,-50%);z-index:0;pointer-events:none}.avatar-clipper{position:relative;overflow:hidden;height:260px;width:100%;z-index:1}.home-divider{width:calc(100% - 10px);margin-inline:auto}.home-under-line{flex-direction:column}.home-action-buttons{width:100%;justify-content:center;font-size:1rem}.home-action-link{font-weight:500;padding:10px 14px;border-radius:8px;cursor:pointer;font-size:1rem;transition:background-color var(--motion-duration-fast, .16s) var(--motion-ease-standard, ease),transform var(--motion-duration-fast, .16s) var(--motion-ease-press, ease)}.home-action-link img{width:20px;height:20px}.home-social-links{position:relative;justify-content:center;gap:30px;margin-top:15px;margin-bottom:18px}.home-social-links a:active .icon-wrapper img.hover{opacity:1;transform:scale(1.1)}.home-social-links a:active .icon-wrapper img.default{opacity:0}}[data-theme=dark] .home-action-link{background-color:var(--color-accent);color:var(--button-text)}@media(hover:hover)and (pointer:fine){[data-theme=dark] .home-action-link:hover{background-color:var(--color-accent-hover)}}[data-theme=dark] .home-card,[data-theme=light] .home-card{min-height:auto;height:auto;background:var(--surface-card);background:linear-gradient(var(--surface-card),var(--surface-card)) padding-box,var(--card-stroke) border-box;box-shadow:var(--shadow-soft);border:1px solid transparent;margin:0 auto var(--card-block-gap, 20px) auto}@media(orientation:landscape)and (max-height:700px)and (max-width:1100px){.home-card,[data-theme=dark] .home-card,[data-theme=light] .home-card{max-width:calc(100vw - (var(--page-card-gutter, 16px) * 2));padding:10px 12px 8px;margin:0 auto var(--card-block-gap, 16px)}.home-content{align-items:center}.home-left{flex:0 0 150px}.home-left .avatar{width:132px}.home-right{padding-left:12px;padding-bottom:10px}.home-right .greeting,.home-right .subtitle{font-size:.84rem}.home-right .name{font-size:1.65rem}.home-right .description{min-width:0;padding-top:12px;font-size:.82rem;line-height:1.35}.home-under-line{gap:12px;margin-top:8px}.home-action-link{min-height:34px;padding:6px 10px;font-size:var(--landscape-button-text, .78rem)}.home-action-link img,.home-action-link .button-icon{width:20px;height:20px}.home-social-links{gap:10px;margin-bottom:0}.icon-wrapper{width:32px;height:32px}}
