@font-face{font-family: "Poppins";src: url("../fonts/Poppins-Regular.woff2") format("woff2");font-weight: 400;font-style: normal;font-display: swap;}@font-face{font-family: "Poppins";src: url("../fonts/Poppins-Medium.woff2") format("woff2");font-weight: 500;font-style: normal;font-display: swap;}@font-face{font-family: "Poppins";src: url("../fonts/Poppins-SemiBold.woff2") format("woff2");font-weight: 600;font-style: normal;font-display: swap;}@font-face{font-family: "Poppins";src: url("../fonts/Poppins-Bold.woff2") format("woff2");font-weight: 700;font-style: normal;font-display: swap;}:root{color-scheme: light;--bg: #E5E9F0;--bg-rail: #ECEFF4;--surface: #ECEFF4;--surface-2: #ECEFF4;--surface-sunken: #D8DEE9;--surface-glass: rgba(229, 233, 240, 0.78);--text: #2E3440;--text-2: #3B4252;--text-3: #4C566A;--accent: #5E81AC;--accent-hover: #4A6890;--accent-text: #4A6890;--on-accent: #ECEFF4;--accent-soft: rgba(94, 129, 172, 0.14);--accent-softer: rgba(94, 129, 172, 0.07);--accent-wash: linear-gradient(135deg, rgba(136, 192, 208, 0.24) 0%, rgba(236, 239, 244, 0) 65%);--fill: #4A6890;--fill-hover: #415C80;--on-fill: #ECEFF4;--brand: #2E3440;--role: #4C566A;--tagline: #2E3440;--hairline: rgba(46, 52, 64, 0.10);--hairline-strong: rgba(46, 52, 64, 0.18);--focus: #5E81AC;--danger: #B3302A;--shadow-sm: 0 1px 2px rgba(46, 52, 64, 0.06), 0 1px 1px rgba(46, 52, 64, 0.03);--shadow-card: 0 1px 1px rgba(46, 52, 64, 0.03), 0 4px 12px rgba(46, 52, 64, 0.05), 0 18px 40px -16px rgba(46, 52, 64, 0.14);--shadow-card-hover: 0 2px 4px rgba(46, 52, 64, 0.04), 0 14px 28px rgba(46, 52, 64, 0.08), 0 36px 72px -20px rgba(46, 52, 64, 0.24);--shadow-media: 0 1px 2px rgba(46, 52, 64, 0.08), 0 10px 30px -8px rgba(46, 52, 64, 0.20);--shadow-pop: 0 10px 40px -10px rgba(46, 52, 64, 0.30);--inner-highlight: inset 0 0 0 1px rgba(46, 52, 64, 0.04);--font: "Poppins", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--fs-xs: 0.8125rem;--fs-sm: 0.9375rem;--fs-base: 1.0625rem;--fs-md: 1.125rem;--fs-lg: 1.375rem;--fs-xl: 1.75rem;--fs-2xl: clamp(1.75rem, 1.2rem + 1.6vw, 2.25rem);--fs-display: clamp(2.25rem, 1.4rem + 2.8vw, 3.5rem);--fs-stat: clamp(3rem, 2rem + 3.6vw, 5rem);--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--s-9: 96px;--s-10: 128px;--r-sm: 10px;--r-md: 16px;--r-lg: 24px;--r-xl: 32px;--r-pill: 999px;--rail-w: clamp(300px, 25vw, 364px);--content-max: 1040px;--prose-max: 68ch;--gutter: clamp(20px, 4vw, 56px);--topbar-h: 56px;--ease-out: cubic-bezier(0.22, 1, 0.36, 1);--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);--t-fast: 160ms;--t-base: 240ms;--t-moderate: 420ms;--t-slow: 700ms;}:root[data-theme="dark"]{color-scheme: dark;--bg: #2E3440;--bg-rail: #3B4252;--surface: #3B4252;--surface-2: #434C5E;--surface-sunken: #2E3440;--surface-glass: rgba(46, 52, 64, 0.78);--text: #ECEFF4;--text-2: #D8DEE9;--text-3: #B6BFCE;--accent: #88C0D0;--accent-hover: #9FCCD9;--accent-text: #88C0D0;--on-accent: #2E3440;--accent-soft: rgba(136, 192, 208, 0.14);--accent-softer: rgba(136, 192, 208, 0.07);--accent-wash: linear-gradient(135deg, rgba(136, 192, 208, 0.16) 0%, rgba(136, 192, 208, 0.03) 70%);--fill: #88C0D0;--fill-hover: #9FCCD9;--on-fill: #2E3440;--brand: #88C0D0;--role: #88C0D0;--tagline: #D8DEE9;--hairline: rgba(216, 222, 233, 0.10);--hairline-strong: rgba(216, 222, 233, 0.18);--focus: #88C0D0;--danger: #FF9A8F;--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.25);--shadow-card: 0 1px 1px rgba(0, 0, 0, 0.16), 0 8px 24px rgba(0, 0, 0, 0.18), 0 24px 48px -20px rgba(0, 0, 0, 0.40);--shadow-card-hover: 0 2px 4px rgba(0, 0, 0, 0.20), 0 16px 32px rgba(0, 0, 0, 0.26), 0 40px 80px -24px rgba(0, 0, 0, 0.55);--shadow-media: 0 1px 2px rgba(0, 0, 0, 0.30), 0 14px 36px -10px rgba(0, 0, 0, 0.50);--shadow-pop: 0 16px 48px -12px rgba(0, 0, 0, 0.60);--inner-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.04), inset 0 0 0 1px rgba(216, 222, 233, 0.06);}@media (prefers-color-scheme: dark){:root:not([data-theme]){color-scheme: dark;--bg: #2E3440;--bg-rail: #3B4252;--surface: #3B4252;--surface-2: #434C5E;--surface-sunken: #2E3440;--surface-glass: rgba(46, 52, 64, 0.78);--text: #ECEFF4;--text-2: #D8DEE9;--text-3: #B6BFCE;--accent: #88C0D0;--accent-hover: #9FCCD9;--accent-text: #88C0D0;--on-accent: #2E3440;--accent-soft: rgba(136, 192, 208, 0.14);--accent-softer: rgba(136, 192, 208, 0.07);--accent-wash: linear-gradient(135deg, rgba(136, 192, 208, 0.16) 0%, rgba(136, 192, 208, 0.03) 70%);--fill: #88C0D0;--fill-hover: #9FCCD9;--on-fill: #2E3440;--brand: #88C0D0;--role: #88C0D0;--tagline: #D8DEE9;--hairline: rgba(216, 222, 233, 0.10);--hairline-strong: rgba(216, 222, 233, 0.18);--focus: #88C0D0;--danger: #FF9A8F;}}*, *::before, *::after{box-sizing: border-box;}html{-webkit-text-size-adjust: 100%;text-size-adjust: 100%;scroll-padding-top: 24px;}body{margin: 0;}h1, h2, h3, h4, p, ul, ol, figure, blockquote, dl, dd{margin: 0;}ul[class], ol[class]{list-style: none;padding: 0;}img, svg, video{display: block;max-width: 100%;}img{height: auto;}button, input, textarea, select{font: inherit;color: inherit;}button{cursor: pointer;}a{color: inherit;}html{background: var(--bg);color: var(--text);font-family: var(--font);font-size: 100%;line-height: 1.55;font-feature-settings: "ss01", "tnum" 0;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-rendering: optimizeLegibility;}body{background: var(--bg);font-size: var(--fs-base);min-height: 100vh;}::selection{background: var(--fill);color: var(--on-fill);}h1, h2, h3, h4{font-weight: 600;letter-spacing: -0.015em;line-height: 1.2;color: var(--text);text-wrap: balance;}p, li{text-wrap: pretty;}strong{font-weight: 600;color: var(--text);}a:not([class]){color: var(--accent-text);text-decoration: underline;text-decoration-thickness: 1px;text-underline-offset: 3px;text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);transition: text-decoration-color var(--t-fast) var(--ease-out);}a:not([class]):hover{text-decoration-color: currentColor;}:focus-visible{outline: 2px solid var(--focus);outline-offset: 3px;border-radius: 6px;}.visually-hidden{position: absolute !important;width: 1px;height: 1px;padding: 0;margin: -1px;overflow: hidden;clip: rect(0 0 0 0);white-space: nowrap;border: 0;}.skip-link{position: fixed;top: 12px;left: 12px;z-index: 100;padding: 10px 16px;border-radius: var(--r-pill);background: var(--fill);color: var(--on-fill);font-weight: 600;text-decoration: none;transform: translateY(-150%);transition: transform var(--t-base) var(--ease-out);}.skip-link:focus{transform: none;}.icon{width: 20px;height: 20px;flex: none;stroke: currentColor;fill: none;stroke-width: 1.75;stroke-linecap: round;stroke-linejoin: round;}.icon-sm{width: 16px;height: 16px;}.icon-lg{width: 24px;height: 24px;}.site{display: grid;grid-template-columns: var(--rail-w) minmax(0, 1fr);min-height: 100vh;}.rail{position: sticky;top: 0;height: 100vh;height: 100dvh;overflow-y: auto;scrollbar-width: none;display: flex;flex-direction: column;gap: var(--s-6);padding: 40px 36px 32px;background: var(--bg-rail);border-right: 1px solid var(--hairline);view-transition-name: rail;}.rail::-webkit-scrollbar{display: none;}.brand{display: inline-flex;align-items: center;gap: 10px;font-weight: 700;font-size: 1rem;letter-spacing: -0.005em;color: var(--brand);text-decoration: none;border-radius: 8px;}.brand-mark{width: 32px;height: 32px;border-radius: 10px;display: grid;place-items: center;background: var(--fill);color: var(--on-fill);font-size: 0.8125rem;font-weight: 700;letter-spacing: 0.02em;box-shadow: var(--shadow-sm);transition: transform var(--t-base) var(--ease-spring);}.brand:hover .brand-mark{transform: rotate(-6deg) scale(1.05);}.rail-intro{display: grid;gap: var(--s-5);}.role{color: var(--role);font-size: 1.125rem;line-height: 1.4;}.tagline{color: var(--tagline);font-size: var(--fs-xl);font-weight: 500;line-height: 1.28;letter-spacing: -0.02em;}.intro{color: var(--text-2);font-size: var(--fs-sm);line-height: 1.6;}.rail-intro--compact .tagline{font-size: 1.25rem;}.toc{display: grid;gap: var(--s-3);}.toc-label{font-size: var(--fs-xs);font-weight: 600;letter-spacing: 0.08em;text-transform: uppercase;color: var(--text-3);}.toc-list{position: relative;display: grid;gap: 2px;padding-left: 14px;}.toc-list::before{content: "";position: absolute;left: 0;top: 6px;bottom: 6px;width: 2px;background: var(--hairline-strong);border-radius: 2px;}.toc-list::after{content: "";position: absolute;left: 0;top: 6px;width: 2px;border-radius: 2px;height: calc((100% - 12px) * var(--progress, 0));background: var(--accent);transition: height 120ms linear;}.toc-list a{display: block;padding: 6px 10px;border-radius: 8px;font-size: var(--fs-sm);color: var(--text-3);text-decoration: none;transition: color var(--t-fast) var(--ease-out), background-color var(--t-fast) var(--ease-out);}.toc-list a:hover{color: var(--text);background: var(--accent-softer);}.toc-list a[aria-current="true"]{color: var(--text);font-weight: 600;background: var(--accent-soft);}.rail-nav{margin-top: auto;display: grid;gap: var(--s-5);}.nav-list{display: grid;gap: 2px;}.nav-link{position: relative;display: flex;align-items: center;justify-content: space-between;padding: 10px 14px;border-radius: 12px;color: var(--text-2);font-weight: 500;text-decoration: none;transition: background-color var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out);}.nav-link:hover{background: var(--accent-softer);color: var(--text);}.nav-link[aria-current="page"]{background: var(--accent-soft);color: var(--text);font-weight: 600;}.nav-link[aria-current="page"]::before{content: "";position: absolute;left: -6px;top: 50%;width: 4px;height: 18px;border-radius: 4px;background: var(--accent);transform: translateY(-50%);}.rail-tools{display: flex;align-items: center;gap: var(--s-2);padding-top: var(--s-4);border-top: 1px solid var(--hairline);}.rail-tools .copyright{margin-left: auto;font-size: var(--fs-xs);color: var(--text-3);}.icon-btn{display: inline-grid;place-items: center;width: 44px;height: 44px;border-radius: var(--r-pill);border: 1px solid var(--hairline-strong);background: var(--surface);color: var(--text-2);text-decoration: none;box-shadow: var(--shadow-sm);transition: transform var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out), border-color var(--t-fast) var(--ease-out), background-color var(--t-fast) var(--ease-out);}.icon-btn:hover{color: var(--text);border-color: var(--accent);transform: translateY(-1px);}.icon-btn:active{transform: scale(0.94);}.theme-toggle{position: relative;overflow: hidden;}.theme-toggle .icon{position: absolute;transition: transform var(--t-moderate) var(--ease-spring), opacity var(--t-base) var(--ease-out);}.theme-toggle .i-sun{transform: rotate(0) scale(1);opacity: 1;}.theme-toggle .i-moon{transform: rotate(-90deg) scale(0.4);opacity: 0;}:root[data-theme="dark"] .theme-toggle .i-sun{transform: rotate(90deg) scale(0.4);opacity: 0;}:root[data-theme="dark"] .theme-toggle .i-moon{transform: rotate(0) scale(1);opacity: 1;}.topbar{display: none;}.home-intro{display: none;}.main{min-width: 0;padding: 48px var(--gutter) 0;}.container{max-width: var(--content-max);margin-inline: auto;}.btn{--btn-bg: var(--fill);--btn-fg: var(--on-fill);display: inline-flex;align-items: center;justify-content: center;gap: 8px;min-height: 44px;padding: 10px 22px;border-radius: var(--r-pill);border: 1px solid transparent;background: var(--btn-bg);color: var(--btn-fg);font-size: var(--fs-sm);font-weight: 600;letter-spacing: 0.005em;text-decoration: none;white-space: nowrap;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08), 0 6px 16px -6px color-mix(in srgb, var(--accent) 55%, transparent);transition: transform var(--t-fast) var(--ease-out), background-color var(--t-fast) var(--ease-out), border-color var(--t-fast) var(--ease-out);}.btn:hover{--btn-bg: var(--fill-hover);transform: translateY(-1px);}.btn:active{transform: scale(0.97);}.btn .icon{width: 18px;height: 18px;transition: transform var(--t-base) var(--ease-out);}.btn:hover .i-arrow-up-right{transform: translate(2px, -2px);}.btn:hover .i-arrow-right{transform: translateX(3px);}.btn-secondary{--btn-bg: transparent;--btn-fg: var(--text);border-color: var(--hairline-strong);box-shadow: none;}.btn-secondary:hover{--btn-bg: var(--accent-softer);border-color: var(--accent);}.btn[disabled]{opacity: 0.6;pointer-events: none;}.eyebrow{display: inline-flex;align-items: center;gap: 8px;font-size: var(--fs-xs);font-weight: 600;letter-spacing: 0.08em;text-transform: uppercase;color: var(--text-3);}.meta-line{display: flex;flex-wrap: wrap;align-items: center;gap: 6px 10px;font-size: var(--fs-sm);color: var(--text-3);margin-left: -13px;clip-path: inset(-0.5em -0.5em -0.5em 13px);}.meta-line > :first-child{margin-left: 13px;}.meta-line > .dot{display: none;}.meta-line > .dot + *::before{content: "";display: inline-block;vertical-align: middle;width: 3px;height: 3px;margin-right: 10px;border-radius: 50%;background: currentColor;opacity: 0.6;}.card{position: relative;background: var(--surface);border: 1px solid var(--hairline);border-radius: var(--r-lg);box-shadow: var(--shadow-card), var(--inner-highlight);}.lift{transition: translate var(--t-moderate) var(--ease-out);}.lift::after{content: "";position: absolute;inset: -1px;border-radius: inherit;pointer-events: none;box-shadow: var(--shadow-card-hover);opacity: 0;transition: opacity var(--t-moderate) var(--ease-out);}@media (hover: hover){.lift:hover{translate: 0 -4px;}.lift:hover::after{opacity: 1;}}.stretched::after{content: "";position: absolute;inset: 0;border-radius: var(--r-lg);z-index: 1;}.card:has(.stretched:focus-visible){outline: 2px solid var(--focus);outline-offset: 4px;}.stretched:focus-visible{outline: none;}.section-head{display: flex;align-items: baseline;justify-content: space-between;gap: var(--s-4);margin-bottom: var(--s-5);}.section-head h2{font-size: var(--fs-lg);}.section-head .count{font-size: var(--fs-sm);color: var(--text-3);}.home-work + .home-work{margin-top: var(--s-9);}.projects{display: grid;gap: var(--s-6);}.project{display: grid;grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);align-items: center;gap: clamp(24px, 3vw, 44px);padding: 24px;min-height: 420px;}.project-media{position: relative;border-radius: var(--r-md);overflow: hidden;background: var(--surface-sunken);box-shadow: var(--shadow-media);aspect-ratio: 16 / 10;}.project-media img{width: 100%;height: 100%;object-fit: cover;transition: transform var(--t-slow) var(--ease-out);}@media (hover: hover){.project:hover .project-media img{transform: scale(1.04);}}.project-body{display: grid;gap: var(--s-3);padding: 8px 52px 8px 0;}.project-title{font-size: var(--fs-lg);line-height: 1.25;}.project-title a{text-decoration: none;color: inherit;}.project-sub{color: var(--text);font-size: var(--fs-md);line-height: 1.4;font-weight: 400;letter-spacing: -0.01em;}.project-desc{color: var(--text-2);font-size: var(--fs-sm);line-height: 1.6;}.project-more{display: inline-flex;align-items: center;gap: 6px;margin-top: var(--s-2);font-size: var(--fs-sm);font-weight: 600;color: var(--accent-text);}.project-more .icon{transition: transform var(--t-base) var(--ease-out);}.project:hover .project-more .icon{transform: translateX(4px);}.arrow-chip{position: absolute;top: 20px;right: 20px;z-index: 2;pointer-events: none;width: 44px;height: 44px;border-radius: 50%;display: grid;place-items: center;border: 1px solid var(--hairline-strong);background: var(--surface);color: var(--text-2);transition: background-color var(--t-base) var(--ease-out), color var(--t-base) var(--ease-out), border-color var(--t-base) var(--ease-out), transform var(--t-moderate) var(--ease-spring);}.project:hover .arrow-chip, .project:has(.stretched:focus-visible) .arrow-chip{background: var(--accent);border-color: var(--accent);color: var(--on-accent);transform: scale(1.06);}.arrow-chip .ms{grid-area: 1 / 1;width: 22px;height: 22px;fill: currentColor;transition: opacity var(--t-base) var(--ease-out);}.arrow-chip .ms-line{opacity: 0;}.project:hover .arrow-chip .ms-fill, .project:has(.stretched:focus-visible) .arrow-chip .ms-fill, .mini:hover .arrow-chip .ms-fill, .mini:has(.stretched:focus-visible) .arrow-chip .ms-fill{opacity: 0;}.project:hover .arrow-chip .ms-line, .project:has(.stretched:focus-visible) .arrow-chip .ms-line, .mini:hover .arrow-chip .ms-line, .mini:has(.stretched:focus-visible) .arrow-chip .ms-line{opacity: 1;}.more-grid{display: grid;grid-template-columns: repeat(3, minmax(0, 1fr));gap: var(--s-5);}.mini{display: grid;gap: var(--s-4);padding: 14px 14px 22px;}.mini .project-media{aspect-ratio: 16 / 10;box-shadow: none;border-radius: 14px;}.mini h3{font-size: 1.0625rem;line-height: 1.3;padding: 0 6px;}.mini h3 a{text-decoration: none;color: inherit;}.mini p{font-size: var(--fs-sm);color: var(--text-3);padding: 0 6px;line-height: 1.5;}.mini .arrow-chip{top: 24px;right: 24px;width: 36px;height: 36px;}.mini .arrow-chip .ms{width: 18px;height: 18px;}@media (hover: hover){.mini:hover .project-media img{transform: scale(1.04);}}.mini:hover .arrow-chip, .mini:has(.stretched:focus-visible) .arrow-chip{background: var(--accent);border-color: var(--accent);color: var(--on-accent);}.cs{display: grid;gap: var(--s-9);padding-bottom: var(--s-9);}.back-link{display: inline-flex;align-items: center;gap: 6px;font-size: var(--fs-sm);font-weight: 500;color: var(--text-3);text-decoration: none;padding: 6px 12px 6px 8px;margin-left: -8px;border-radius: var(--r-pill);transition: color var(--t-fast) var(--ease-out), background-color var(--t-fast) var(--ease-out);}.back-link:hover{color: var(--text);background: var(--accent-softer);}.back-link .icon{transition: transform var(--t-base) var(--ease-out);}.back-link:hover .icon{transform: translateX(-3px);}.cs-header{display: grid;gap: var(--s-5);max-width: 880px;}.cs-title{font-size: var(--fs-display);line-height: 1.06;letter-spacing: -0.03em;font-weight: 600;}.cs-titles{display: grid;}.cs-sub, .cs-title .sub{display: block;margin-top: 0.45em;font-size: clamp(1.25rem, 0.95rem + 1vw, 1.75rem);line-height: 1.3;letter-spacing: -0.015em;font-weight: 500;color: var(--text-2);}.lede{display: grid;gap: var(--s-4);max-width: var(--prose-max);font-size: var(--fs-md);line-height: 1.65;color: var(--text-2);}.lede p:first-child{color: var(--text);}.frame{position: relative;border-radius: var(--r-lg);overflow: hidden;background: var(--surface-sunken);box-shadow: var(--shadow-media), var(--inner-highlight);}.frame img{width: 100%;}.frame--hero{border-radius: var(--r-xl);}figure{display: grid;gap: var(--s-3);}figcaption{font-size: var(--fs-sm);color: var(--text-3);line-height: 1.5;}figcaption strong{display: block;color: var(--text);font-size: var(--fs-base);margin-bottom: 4px;}.zoom{all: unset;display: block;position: relative;cursor: zoom-in;width: 100%;border-radius: inherit;}.zoom:focus-visible{outline: 2px solid var(--focus);outline-offset: 4px;}.frame:has(> .zoom:focus-visible){outline: 2px solid var(--focus);outline-offset: 4px;}.zoom-hint{position: absolute;right: 14px;bottom: 14px;z-index: 2;display: inline-flex;align-items: center;gap: 6px;padding: 7px 12px;border-radius: var(--r-pill);background: var(--surface-glass);-webkit-backdrop-filter: saturate(180%) blur(16px);backdrop-filter: saturate(180%) blur(16px);border: 1px solid var(--hairline);color: var(--text);font-size: var(--fs-xs);font-weight: 600;opacity: 0;transform: translateY(6px);transition: opacity var(--t-base) var(--ease-out), transform var(--t-base) var(--ease-out);}.zoom:hover .zoom-hint, .zoom:focus-visible .zoom-hint{opacity: 1;transform: none;}@media (hover: none){.zoom-hint{opacity: 1;transform: none;}}.scroll-shot{--shot-h: 520px;height: var(--shot-h);}.scroll-shot img{transition: transform 7s var(--ease-in-out);}@media (hover: hover){.scroll-shot:hover img, .scroll-shot .zoom:focus-visible img{transform: translateY(calc(-100% + var(--shot-h)));}}.scroll-shot::after{content: "";position: absolute;left: 0;right: 0;bottom: 0;height: 90px;pointer-events: none;background: linear-gradient(to top, color-mix(in srgb, var(--surface-sunken) 85%, transparent), transparent);transition: opacity var(--t-base) var(--ease-out);}.scroll-shot:hover::after{opacity: 0;}.cs-section{display: grid;gap: var(--s-7);scroll-margin-top: 24px;}.cs-section > .head{display: grid;gap: var(--s-3);padding-top: var(--s-6);border-top: 1px solid var(--hairline);}.cs-section > .head h2{font-size: var(--fs-2xl);letter-spacing: -0.025em;}.cs-section > .head h3{font-size: var(--fs-xl);letter-spacing: -0.02em;}.prose{display: grid;gap: var(--s-4);max-width: var(--prose-max);color: var(--text-2);font-size: var(--fs-md);line-height: 1.7;}.prose h3{font-size: var(--fs-lg);margin-top: var(--s-3);}.prose h4{font-size: var(--fs-base);margin-top: var(--s-3);}.prose .lead-strong{color: var(--text);font-weight: 600;margin-top: var(--s-2);}.prose--center{margin-inline: auto;text-align: left;}.list{display: grid;gap: 10px;padding: 0;list-style: none;}.list > li{position: relative;padding-left: 22px;}.list > li::before{content: "";position: absolute;left: 2px;top: 0.72em;width: 7px;height: 7px;border-radius: 50%;background: var(--accent);transform: translateY(-50%);}.list .list{margin-top: 10px;}.list .list > li::before{background: transparent;border: 1.5px solid var(--accent);}ol.list{counter-reset: n;}ol.list > li{padding-left: 40px;counter-increment: n;}ol.list > li::before{content: counter(n);top: 0.15em;transform: none;width: 26px;height: 26px;border-radius: 8px;display: grid;place-items: center;background: var(--fill);color: var(--on-fill);font-size: var(--fs-xs);font-weight: 700;}ol.list > li > .list > li::before{content: "";}.spec{display: grid;grid-template-columns: 0.8fr 1fr 1.2fr;}.spec > .column{display: grid;align-content: start;gap: var(--s-5);padding: 28px;}.spec > .column + .column{border-left: 1px solid var(--hairline);}.spec dt{font-size: var(--fs-xs);font-weight: 600;letter-spacing: 0.08em;text-transform: uppercase;color: var(--text-3);margin-bottom: 6px;}.spec dd{color: var(--text);font-size: var(--fs-base);line-height: 1.55;}.pair{display: grid;grid-template-columns: repeat(2, minmax(0, 1fr));gap: var(--s-5);align-items: start;}.panel{display: grid;gap: var(--s-4);padding: clamp(24px, 3vw, 36px);color: var(--text-2);font-size: var(--fs-base);line-height: 1.65;}.panel h3{font-size: var(--fs-lg);line-height: 1.3;}.panel .lead-strong{color: var(--text);font-weight: 600;margin-top: var(--s-2);}.panel--accent{background: var(--accent-wash), var(--surface);border-color: color-mix(in srgb, var(--accent) 28%, transparent);}.panel-tag{justify-self: start;display: inline-flex;align-items: center;gap: 6px;padding: 5px 11px;border-radius: var(--r-pill);font-size: var(--fs-xs);font-weight: 600;letter-spacing: 0.04em;background: var(--surface-sunken);color: var(--text-2);}.panel--accent .panel-tag{background: var(--fill);color: var(--on-fill);}.cta{display: grid;grid-template-columns: minmax(0, 1fr) auto;align-items: center;gap: var(--s-6);padding: clamp(28px, 4vw, 44px);background: var(--accent-wash), var(--surface);overflow: hidden;}.cta h3{font-size: var(--fs-xl);letter-spacing: -0.02em;}.cta p{margin-top: var(--s-2);color: var(--text-2);max-width: 56ch;}.cta::before{content: "";position: absolute;right: -80px;top: -120px;width: 320px;height: 320px;border-radius: 50%;background: radial-gradient(circle, color-mix(in srgb, var(--accent) 22%, transparent), transparent 70%);pointer-events: none;}.cards-2{display: grid;grid-template-columns: repeat(2, minmax(0, 1fr));gap: var(--s-5);}.step{display: grid;align-content: start;gap: var(--s-4);padding: clamp(24px, 3vw, 32px);color: var(--text-2);line-height: 1.65;}.step h3{font-size: var(--fs-lg);display: flex;align-items: flex-start;gap: 14px;line-height: 1.3;}.step-num{flex: none;width: 34px;height: 34px;border-radius: 11px;margin-top: -2px;display: grid;place-items: center;background: var(--fill);color: var(--on-fill);font-size: var(--fs-sm);font-weight: 700;box-shadow: 0 6px 14px -6px color-mix(in srgb, var(--accent) 70%, transparent);}.step .lead-strong{color: var(--text);font-weight: 600;}.carousel{display: grid;gap: var(--s-4);container-type: inline-size;--slide-w: 86cqi;}.carousel-track{--room-top: 16px;--room-bottom: 48px;--pad-top: 6px;--pad-bottom: 28px;--bleed: var(--gutter);--fade-mask: linear-gradient(to right, transparent max(0px, calc(var(--bleed) - 32px)), #000 calc(var(--bleed) - 8px), #000 calc(100% - var(--bleed) + 8px), transparent min(100%, calc(100% - var(--bleed) + 32px)));display: grid;grid-auto-flow: column;grid-auto-columns: max-content;gap: var(--s-5);overflow-x: auto;overscroll-behavior-x: contain;scroll-snap-type: x mandatory;scroll-padding-inline: var(--bleed);padding: var(--room-top) var(--bleed) var(--room-bottom);margin: calc(var(--pad-top) - var(--room-top)) calc(-1 * var(--bleed)) calc(var(--pad-bottom) - var(--room-bottom));-webkit-mask-image: var(--fade-mask);mask-image: var(--fade-mask);scrollbar-width: none;}.carousel-track::-webkit-scrollbar{display: none;}.carousel-track:focus-visible{outline: none;}.carousel:has(> .carousel-track:focus-visible){outline: 2px solid var(--focus);outline-offset: 8px;border-radius: var(--r-lg);}.carousel-track > *{scroll-snap-align: start;}.carousel-track .frame{border-radius: var(--r-md);}.carousel-track .frame img{width: auto;max-width: none;height: calc(var(--slide-w) / 1.6);}.carousel-controls{position: relative;z-index: 1;display: flex;align-items: center;justify-content: space-between;gap: var(--s-4);}.carousel-dots{display: flex;gap: 6px;}.carousel-dots button{width: 8px;height: 8px;padding: 0;border: 0;border-radius: var(--r-pill);background: var(--hairline-strong);transition: width var(--t-base) var(--ease-out), background-color var(--t-base) var(--ease-out);position: relative;}.carousel-dots button::before{content: "";position: absolute;inset: -10px -4px;}.carousel-dots button[aria-current="true"]{width: 26px;background: var(--accent);}.carousel-btns{display: flex;gap: var(--s-2);}.carousel-btns .icon-btn[disabled]{opacity: 0.4;pointer-events: none;}.carousel-count{font-size: var(--fs-sm);color: var(--text-3);font-variant-numeric: tabular-nums;min-width: 4ch;}.carousel--cards .carousel-track{--per-view: 3;--room-top: 24px;--room-bottom: 96px;--pad-top: 10px;grid-auto-columns: calc((100cqi - (var(--per-view) - 1) * var(--s-5)) / var(--per-view));}.carousel--cards .frame img{width: 100%;max-width: 100%;height: 100%;}.carousel--cards .carousel-controls{justify-content: flex-end;}@container (max-width: 820px){.carousel--cards .carousel-track{--per-view: 2;}}@container (max-width: 540px){.carousel--cards .carousel-track{--per-view: 1.16;}}.phones{display: grid;grid-template-columns: repeat(4, minmax(0, 1fr));gap: clamp(14px, 2vw, 28px);padding: clamp(24px, 4vw, 48px);background: var(--accent-wash), var(--surface);}.phone{border-radius: 28px;padding: 6px;background: #1D1D1F;box-shadow: var(--shadow-media), inset 0 0 0 1px rgba(255, 255, 255, 0.08);}.phone .zoom, .phone img{border-radius: 22px;overflow: hidden;}.phone:nth-child(even){translate: 0 24px;}.phones{padding-bottom: calc(clamp(24px, 4vw, 48px) + 24px);}.mode-demo{--night: #0D1522;--night-top: #1A2742;isolation: isolate;overflow: hidden;background: var(--accent-wash), var(--surface);}.mode-demo::before{content: "";position: absolute;inset: 0;z-index: -1;pointer-events: none;background: radial-gradient(120% 70% at 50% 0%, var(--night-top), transparent 72%), var(--night);opacity: 0;transition: opacity var(--t-slow) var(--ease-out);}.mode-demo[data-mode="night"]::before{opacity: 1;}.mode-demo .phones{background: none;padding-bottom: calc(clamp(24px, 4vw, 48px) + 12px);}.mode-shots{display: grid;}.mode-shots > img{grid-area: 1 / 1;}.mode-night{transition: opacity 560ms var(--ease-out);}.mode-demo .phone:nth-child(2) .mode-night{transition-delay: 70ms;}.mode-demo .phone:nth-child(3) .mode-night{transition-delay: 140ms;}.mode-demo .phone:nth-child(4) .mode-night{transition-delay: 210ms;}.mode-demo[data-mode="day"] .mode-night{opacity: 0;}.mode-switch-row{display: none;align-items: center;justify-content: center;gap: 14px;padding: 0 20px clamp(22px, 3vw, 34px);}.js .mode-switch-row{display: flex;}.mode-word{min-width: 3.2em;cursor: pointer;user-select: none;font-size: var(--fs-sm);font-weight: 600;color: var(--text-3);transition: color var(--t-base) var(--ease-out);}.mode-word[data-set="day"]{text-align: right;}.mode-demo[data-mode="day"] .mode-word[data-set="day"]{color: var(--text);}.mode-demo[data-mode="night"] .mode-word{color: #A9B6C9;}.mode-demo[data-mode="night"] .mode-word[data-set="night"]{color: #ECEFF4;}.mode-switch{all: unset;box-sizing: border-box;position: relative;flex: none;cursor: pointer;display: inline-flex;align-items: center;justify-content: space-between;width: 92px;height: 44px;padding: 0 12px;border-radius: var(--r-pill);background: linear-gradient(180deg, #CFE2F3 0%, #F4E9D2 100%);box-shadow: inset 0 0 0 1px rgba(46, 52, 64, 0.28), inset 0 1px 3px rgba(46, 52, 64, 0.14);}.mode-switch::before{content: "";position: absolute;inset: 0;border-radius: inherit;background: radial-gradient(1.2px 1.2px at 22% 30%, #fff 98%, transparent), radial-gradient(1px 1px at 36% 68%, rgba(255, 255, 255, 0.8) 98%, transparent), radial-gradient(1.4px 1.4px at 14% 62%, rgba(255, 255, 255, 0.9) 98%, transparent), radial-gradient(1px 1px at 44% 24%, rgba(255, 255, 255, 0.7) 98%, transparent), linear-gradient(180deg, #24324F 0%, #0D1522 100%);box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14);opacity: 0;transition: opacity 420ms var(--ease-out);}.mode-switch[aria-checked="true"]::before{opacity: 1;}.mode-switch-thumb{position: absolute;top: 4px;left: 4px;width: 36px;height: 36px;border-radius: 50%;background: #FFFFFF;box-shadow: 0 1px 2px rgba(20, 26, 38, 0.24), 0 3px 8px rgba(20, 26, 38, 0.16);transition: translate 460ms var(--ease-out), background-color 420ms var(--ease-out);}.mode-switch[aria-checked="true"] .mode-switch-thumb{translate: 48px 0;background: #E3EAF4;}.mode-switch .icon{position: relative;z-index: 1;transition: color 420ms var(--ease-out), rotate 460ms var(--ease-out);}.mode-switch .i-sun{color: #95560A;}.mode-switch .i-moon{color: #4F5D73;}.mode-switch[aria-checked="true"] .i-sun{color: #A9B6C9;rotate: 90deg;}.mode-switch[aria-checked="true"] .i-moon{color: #1A2742;}.mode-switch:focus-visible{outline: 2px solid var(--focus);outline-offset: 3px;}@media (hover: hover){.mode-switch:hover .mode-switch-thumb{box-shadow: 0 1px 2px rgba(20, 26, 38, 0.26), 0 6px 14px rgba(20, 26, 38, 0.22);}}.duo{display: grid;grid-template-columns: repeat(2, minmax(0, 1fr));gap: var(--s-5);}.trio{display: grid;grid-template-columns: repeat(3, minmax(0, 1fr));gap: var(--s-5);}.feature{display: grid;align-content: start;gap: var(--s-4);padding: 12px 12px 24px;}.feature .frame{border-radius: 14px;box-shadow: none;}.feature .text{display: grid;gap: 6px;padding: 0 8px;font-size: var(--fs-sm);color: var(--text-2);line-height: 1.6;}.feature .text strong{font-size: var(--fs-base);}.split{display: grid;grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);gap: clamp(28px, 4vw, 56px);align-items: start;}.split--flip{grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);}.split .sticky{position: sticky;top: 32px;}.ba-title{display: flex;align-items: center;gap: 10px;flex-wrap: wrap;font-size: var(--fs-lg);}.tag{display: inline-flex;align-items: center;padding: 4px 10px;border-radius: var(--r-pill);font-size: var(--fs-xs);font-weight: 700;letter-spacing: 0.06em;text-transform: uppercase;background: var(--surface-sunken);color: var(--text-2);}.tag--after{background: var(--fill);color: var(--on-fill);}.quote{position: relative;padding: 28px 28px 28px 72px;border-radius: var(--r-lg);background: var(--accent-wash), var(--surface);border: 1px solid color-mix(in srgb, var(--accent) 22%, transparent);color: var(--text);font-size: clamp(1.125rem, 1rem + 0.5vw, 1.375rem);line-height: 1.45;font-weight: 500;letter-spacing: -0.01em;}.quote::before{content: "\201C";position: absolute;left: 22px;top: 10px;font-size: 4rem;line-height: 1;font-weight: 600;color: var(--accent);}.quote p + p{margin-top: 0.4em;}.roles{display: grid;grid-template-columns: repeat(2, minmax(0, 1fr));gap: var(--s-3);padding: 0;list-style: none;}.roles > li{padding: 20px 22px;border-radius: var(--r-md);color: var(--text-2);font-size: var(--fs-base);line-height: 1.5;}.roles > li strong{display: block;margin-bottom: 6px;font-size: var(--fs-xs);font-weight: 700;letter-spacing: 0.08em;text-transform: uppercase;color: var(--accent-text);}.split > .sticky > .roles{grid-template-columns: 1fr;}@media (min-width: 961px){.pair .panel--accent{position: sticky;top: 32px;}}.principles{display: grid;gap: var(--s-3);margin-block: var(--s-2);}.principle{display: grid;gap: 6px;padding: 20px 22px;border-radius: var(--r-md);font-size: var(--fs-base);line-height: 1.6;}.principle strong{font-size: var(--fs-md);}.metrics{display: grid;gap: var(--s-5);}.metrics .prose h3{margin-top: 0;}.lens{display: grid;grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);gap: clamp(24px, 4vw, 48px);align-items: center;padding: 16px;}.lens .frame{border-radius: var(--r-md);box-shadow: none;}.lens-text{display: grid;gap: var(--s-4);padding: 8px 24px 8px 0;}.lens-text h3{font-size: var(--fs-xl);letter-spacing: -0.02em;}.lens-text p{color: var(--text-2);font-size: var(--fs-md);line-height: 1.65;}.lens--flip{grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);}.lens--flip .frame{order: 2;}.lens--flip .lens-text{padding: 8px 0 8px 24px;}.more-grid--4{grid-template-columns: repeat(4, minmax(0, 1fr));}.slide{margin: 0;}.stats{display: grid;grid-template-columns: repeat(3, minmax(0, 1fr));}.stat{display: grid;align-content: start;gap: 8px;padding: 32px 28px;}.stat + .stat{border-left: 1px solid var(--hairline);}.stat-num{font-size: var(--fs-stat);line-height: 1;font-weight: 500;letter-spacing: -0.04em;font-variant-numeric: tabular-nums;background: linear-gradient(180deg, var(--text) 30%, color-mix(in srgb, var(--text) 55%, var(--accent)));-webkit-background-clip: text;background-clip: text;color: transparent;}.stat-label{color: var(--text-2);font-size: var(--fs-base);line-height: 1.35;}.page{display: grid;gap: var(--s-9);padding-bottom: var(--s-9);}.page-title{font-size: var(--fs-display);line-height: 1.06;letter-spacing: -0.03em;}.about-hero{display: grid;grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);gap: clamp(28px, 5vw, 72px);align-items: center;}.about-hero .prose{font-size: var(--fs-md);}.about-hero .prose .page-title{margin-bottom: var(--s-3);}.about-hero .prose .page-title + p{color: var(--text);font-size: var(--fs-lg);line-height: 1.5;letter-spacing: -0.01em;}.portrait{position: relative;isolation: isolate;}.portrait .frame{border-radius: var(--r-xl);aspect-ratio: 1;}.portrait .frame img{height: 100%;object-fit: cover;}.portrait::before{content: "";position: absolute;inset: 8% -6% -6% 8%;z-index: -1;border-radius: var(--r-xl);background: var(--accent-soft);}.actions{display: flex;flex-wrap: wrap;gap: var(--s-3);margin-top: var(--s-3);}.cert{display: grid;align-content: start;gap: var(--s-3);padding: 12px 12px 24px;}.cert .frame{border-radius: 14px;box-shadow: none;aspect-ratio: 4 / 3;background: #fff;}.cert .frame img{height: 100%;object-fit: contain;}.cert h3{font-size: var(--fs-base);line-height: 1.35;padding: 4px 8px 0;}.cert h3 a{color: inherit;text-decoration: none;display: inline-flex;gap: 6px;align-items: baseline;}.cert h3 a .icon{width: 14px;height: 14px;color: var(--text-3);transform: translateY(2px);transition: transform var(--t-base) var(--ease-out), color var(--t-base) var(--ease-out);}.cert:hover h3 a .icon{color: var(--accent-text);transform: translate(2px, 0);}.cert p{font-size: var(--fs-sm);color: var(--text-2);padding: 0 8px;line-height: 1.6;}.resume{display: grid;gap: var(--s-8);padding-bottom: var(--s-9);}.resume-head{display: grid;grid-template-columns: minmax(0, 1fr) auto;gap: var(--s-5);align-items: end;padding-bottom: var(--s-6);border-bottom: 1px solid var(--hairline);}.resume-head .page-title{font-size: clamp(2.25rem, 1.6rem + 2vw, 3rem);}.resume-head .headline{font-size: var(--fs-lg);color: var(--text-2);margin-top: 6px;}.contact-row{display: flex;flex-wrap: wrap;gap: 8px 18px;margin-top: var(--s-4);font-size: var(--fs-sm);color: var(--text-2);}.contact-row a, .contact-row span{display: inline-flex;align-items: center;gap: 7px;text-decoration: none;color: inherit;}.contact-row a:hover{color: var(--accent-text);}.contact-row .icon{width: 16px;height: 16px;color: var(--text-3);}.resume-grid{display: grid;grid-template-columns: minmax(0, 1fr) 300px;gap: clamp(28px, 4vw, 56px);align-items: start;}.resume-block{display: grid;gap: var(--s-5);}.resume-block > h2{font-size: var(--fs-xs);font-weight: 600;letter-spacing: 0.1em;text-transform: uppercase;color: var(--text-3);}.resume-aside{display: grid;gap: var(--s-7);position: sticky;top: 32px;}.chips{display: flex;flex-wrap: wrap;gap: 8px;}.chip{padding: 8px 14px;border-radius: var(--r-pill);background: var(--surface);border: 1px solid var(--hairline-strong);font-size: var(--fs-sm);color: var(--text);font-weight: 500;box-shadow: var(--shadow-sm);}.timeline{position: relative;display: grid;gap: var(--s-4);}.timeline::before{content: "";position: absolute;left: 11px;top: 14px;bottom: 14px;width: 2px;background: var(--hairline-strong);border-radius: 2px;}.job{position: relative;display: grid;gap: var(--s-3);margin-left: 40px;padding: 24px 28px;}.job::before{content: "";position: absolute;left: -36px;top: 30px;width: 14px;height: 14px;border-radius: 50%;background: var(--bg);border: 3px solid var(--accent);}.job:first-child::before{background: var(--accent);box-shadow: 0 0 0 5px var(--accent-soft);}.job-head{display: flex;flex-wrap: wrap;justify-content: space-between;gap: 4px 16px;align-items: baseline;}.job-title{font-size: var(--fs-lg);line-height: 1.3;}.job-company{color: var(--accent-text);font-weight: 600;font-size: var(--fs-base);}.job-dates{font-size: var(--fs-sm);color: var(--text-3);font-variant-numeric: tabular-nums;white-space: nowrap;}.job .list{color: var(--text-2);font-size: var(--fs-base);}.edu{display: grid;gap: 6px;padding: 20px 22px;}.edu h3{font-size: var(--fs-base);line-height: 1.35;}.edu .where{font-size: var(--fs-sm);color: var(--text-3);}.edu p{font-size: var(--fs-sm);color: var(--text-2);}.summary{font-size: var(--fs-md);line-height: 1.7;color: var(--text-2);display: grid;gap: var(--s-4);max-width: 72ch;}.summary p:first-child{color: var(--text);}.contact{display: grid;grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);gap: clamp(28px, 5vw, 72px);align-items: start;padding-bottom: var(--s-9);}.contact-intro{display: grid;gap: var(--s-5);position: sticky;top: 48px;}.contact-intro p{font-size: var(--fs-md);line-height: 1.65;color: var(--text-2);max-width: 46ch;}.contact-alt{display: grid;gap: var(--s-3);padding-top: var(--s-5);border-top: 1px solid var(--hairline);font-size: var(--fs-sm);color: var(--text-3);}.contact-alt a{display: inline-flex;align-items: center;gap: 8px;color: var(--text);font-weight: 500;text-decoration: none;}.contact-alt a:hover{color: var(--accent-text);}.form-card{padding: clamp(24px, 4vw, 40px);overflow: hidden;}.form{display: grid;gap: var(--s-5);}.field{display: grid;gap: 8px;}.field label{font-size: var(--fs-sm);font-weight: 600;color: var(--text);}.field .hint{font-size: var(--fs-xs);color: var(--text-3);font-weight: 400;}.input{width: 100%;min-height: 52px;padding: 14px 16px;border-radius: 14px;border: 1px solid var(--hairline-strong);background: var(--surface-2);color: var(--text);font-size: var(--fs-base);line-height: 1.4;transition: border-color var(--t-fast) var(--ease-out), background-color var(--t-fast) var(--ease-out), box-shadow var(--t-fast) var(--ease-out);}.input::placeholder{color: var(--text-3);opacity: 1;}.input:hover{border-color: color-mix(in srgb, var(--accent) 45%, var(--hairline-strong));}.input:focus{outline: none;border-color: var(--accent);background: var(--surface);box-shadow: 0 0 0 4px var(--accent-soft);}textarea.input{min-height: 180px;resize: vertical;}.field-error{display: none;align-items: center;gap: 6px;font-size: var(--fs-sm);color: var(--danger);font-weight: 500;}.field.is-invalid .input{border-color: var(--danger);box-shadow: 0 0 0 4px color-mix(in srgb, var(--danger) 14%, transparent);}.field.is-invalid .field-error{display: flex;}.hp{position: absolute !important;left: -10000px;width: 1px;height: 1px;overflow: hidden;}.form-foot{display: flex;flex-wrap: wrap;align-items: center;justify-content: space-between;gap: var(--s-4);}.form-note{font-size: var(--fs-xs);color: var(--text-3);}.form-status{display: none;align-items: flex-start;gap: 10px;padding: 14px 16px;border-radius: 14px;font-size: var(--fs-sm);line-height: 1.5;}.form-status.is-error{display: flex;background: rgba(201, 55, 44, 0.08);color: #9E2B22;border: 1px solid rgba(201, 55, 44, 0.24);}:root[data-theme="dark"] .form-status.is-error{background: rgba(255, 154, 143, 0.10);color: #FFC2BB;border-color: rgba(255, 154, 143, 0.28);}.btn .spinner{display: none;width: 16px;height: 16px;border-radius: 50%;border: 2px solid currentColor;border-right-color: transparent;animation: spin 700ms linear infinite;}.btn.is-loading .spinner{display: inline-block;}.btn.is-loading .i-send{display: none;}@keyframes spin{to{transform: rotate(360deg);}}.form-success{display: none;text-align: center;justify-items: center;gap: var(--s-4);padding: var(--s-7) var(--s-4);}.form-card.is-sent .form{display: none;}.form-card.is-sent .form-success{display: grid;animation: rise var(--t-moderate) var(--ease-out) both;}.check{width: 72px;height: 72px;border-radius: 50%;display: grid;place-items: center;background: var(--fill);color: var(--on-fill);box-shadow: 0 12px 30px -10px color-mix(in srgb, var(--accent) 80%, transparent);}.check svg{width: 34px;height: 34px;stroke-width: 2.5;}.form-success .check path{stroke-dasharray: 30;stroke-dashoffset: 30;}.form-card.is-sent .check path{animation: draw 520ms 180ms var(--ease-out) forwards;}.form-success h2{font-size: var(--fs-xl);}.form-success p{color: var(--text-2);max-width: 40ch;}@keyframes draw{to{stroke-dashoffset: 0;}}@keyframes rise{from{opacity: 0;transform: translateY(12px) scale(0.98);}to{opacity: 1;transform: none;}}.footer{display: flex;flex-wrap: wrap;align-items: center;justify-content: space-between;gap: var(--s-4);padding: var(--s-6) 0 var(--s-9);border-top: 1px solid var(--hairline);font-size: var(--fs-sm);color: var(--text-3);}.footer nav ul{display: flex;flex-wrap: wrap;gap: 4px;}.footer nav a{display: inline-flex;align-items: center;gap: 6px;padding: 8px 12px;border-radius: var(--r-pill);color: var(--text-2);text-decoration: none;transition: background-color var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out);}.footer nav a:hover{background: var(--accent-softer);color: var(--text);}.to-top{position: fixed;right: 24px;bottom: 24px;z-index: 40;opacity: 0;transform: translateY(12px) scale(0.9);pointer-events: none;transition: opacity var(--t-base) var(--ease-out), transform var(--t-base) var(--ease-out);box-shadow: var(--shadow-pop);}.to-top.is-visible{opacity: 1;transform: none;pointer-events: auto;}.lightbox{width: min(1400px, 94vw);max-width: none;max-height: 92vh;max-height: 92dvh;padding: 0;border: 0;border-radius: var(--r-lg);background: var(--surface);color: var(--text);box-shadow: var(--shadow-pop);overflow: hidden;opacity: 0;transform: scale(0.96);transition: opacity var(--t-base) var(--ease-out), transform var(--t-moderate) var(--ease-out), overlay var(--t-base) allow-discrete, display var(--t-base) allow-discrete;}.lightbox[open]{opacity: 1;transform: none;display: grid;grid-template-rows: auto minmax(0, 1fr);grid-template-columns: minmax(0, 1fr);}:root:has(.lightbox[open]){overflow: hidden;scrollbar-gutter: stable;}@starting-style{.lightbox[open]{opacity: 0;transform: scale(0.96);}}.lightbox::backdrop{background: rgba(10, 14, 20, 0);-webkit-backdrop-filter: blur(0);backdrop-filter: blur(0);transition: background-color var(--t-base) var(--ease-out), backdrop-filter var(--t-base) var(--ease-out), overlay var(--t-base) allow-discrete, display var(--t-base) allow-discrete;}.lightbox[open]::backdrop{background: rgba(10, 14, 20, 0.62);-webkit-backdrop-filter: blur(8px);backdrop-filter: blur(8px);}@starting-style{.lightbox[open]::backdrop{background: rgba(10, 14, 20, 0);backdrop-filter: blur(0);}}.lightbox-bar{display: flex;align-items: center;justify-content: space-between;gap: var(--s-4);padding: 10px 10px 10px 22px;border-bottom: 1px solid var(--hairline);}.lightbox-bar .icon-btn{flex: none;}.lightbox-bar p{flex: 1;min-width: 0;font-size: var(--fs-sm);color: var(--text-2);display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;line-clamp: 2;overflow: hidden;}.lightbox-body{overflow: auto;overscroll-behavior: contain;background: var(--surface-sunken);display: grid;grid-template-columns: minmax(0, 1fr);place-items: start center;}.lightbox-body img{width: auto;max-width: 100%;height: auto;}.lightbox:not(.is-tall) .lightbox-body{place-items: center;}.lightbox:not(.is-tall) .lightbox-body img{max-height: calc(92dvh - var(--bar-h, 66px));}.lightbox.is-phone{width: min(94vw, max(360px, calc((92dvh - var(--bar-h, 66px)) * var(--ar, 0.46))));}.js .reveal, .js [data-stagger] > *{opacity: 0;transform: translateY(14px);transition: opacity 560ms var(--ease-out), transform 560ms var(--ease-out), translate var(--t-moderate) var(--ease-out);transition-delay: var(--d, 0ms), var(--d, 0ms), 0ms;}.js .reveal.is-in, .js [data-stagger] > .is-in{opacity: 1;transform: none;}:root.vt-arrival .reveal, :root.vt-arrival [data-stagger] > *{opacity: 1;transform: none;transition: none;}.progress{position: absolute;left: 0;bottom: -1px;height: 2px;width: 100%;transform-origin: 0 50%;transform: scaleX(var(--progress, 0));background: var(--accent);}@view-transition{navigation: auto;}.vt-hero{view-transition-name: var(--vt);}@keyframes vt-fade-out{to{opacity: 0;}}@keyframes vt-fade-in{from{opacity: 0;}}::view-transition-old(root){animation: 180ms var(--ease-out) both vt-fade-out;}::view-transition-new(root){animation: 300ms var(--ease-out) 90ms both vt-fade-in;}::view-transition-group(*){animation-duration: 520ms;animation-timing-function: cubic-bezier(0.32, 0.72, 0, 1);}::view-transition-group(rail){animation-duration: 320ms;animation-timing-function: var(--ease-out);}.rail-intro{view-transition-name: rail-intro;}.toc{view-transition-name: rail-toc;}::view-transition-group(rail-intro), ::view-transition-group(rail-toc){animation-duration: 0s;}::view-transition-old(rail-intro), ::view-transition-old(rail-toc){animation: 140ms var(--ease-out) both vt-fade-out;}::view-transition-new(rail-intro), ::view-transition-new(rail-toc){animation: 260ms var(--ease-out) 120ms both vt-fade-in;}.theme-vt::view-transition-old(root), .theme-vt::view-transition-new(root){animation: none;mix-blend-mode: normal;}.theme-vt .vt-hero, .theme-vt .rail, .theme-vt .rail-intro, .theme-vt .toc{view-transition-name: none;}@media (max-width: 1180px){.project{grid-template-columns: 1fr;min-height: 0;padding: 18px;}.project-body{padding: 4px 8px 12px;}.project .arrow-chip{top: 30px;right: 30px;}.spec{grid-template-columns: 1fr 1fr;}.spec > .column:nth-child(3){grid-column: 1 / -1;border-left: 0;border-top: 1px solid var(--hairline);}.resume-grid{grid-template-columns: 1fr;}.resume-aside{position: static;grid-template-columns: repeat(2, minmax(0, 1fr));}}@media (max-width: 960px){.site{display: block;}.topbar{display: flex;align-items: center;justify-content: space-between;gap: var(--s-3);position: sticky;top: 0;z-index: 60;height: var(--topbar-h);padding: 0 12px 0 20px;background: var(--surface-glass);-webkit-backdrop-filter: saturate(180%) blur(20px);backdrop-filter: saturate(180%) blur(20px);border-bottom: 1px solid var(--hairline);}.topbar-tools{display: flex;align-items: center;gap: 6px;}.topbar .icon-btn{width: 40px;height: 40px;box-shadow: none;background: transparent;border-color: transparent;}.topbar .brand-mark{width: 28px;height: 28px;border-radius: 9px;font-size: 0.75rem;}.menu-btn .i-x{display: none;}.menu-open .menu-btn .i-x{display: block;}.menu-open .menu-btn .i-menu{display: none;}.rail{position: fixed;z-index: 55;top: var(--topbar-h);left: 0;right: 0;bottom: auto;height: auto;max-height: calc(100dvh - var(--topbar-h));padding: 12px 16px 20px;gap: var(--s-4);border-right: 0;border-bottom: 1px solid var(--hairline);background: var(--surface-glass);-webkit-backdrop-filter: saturate(180%) blur(20px);backdrop-filter: saturate(180%) blur(20px);box-shadow: var(--shadow-pop);visibility: hidden;opacity: 0;transform: translateY(-8px);transition: opacity var(--t-base) var(--ease-out), transform var(--t-base) var(--ease-out), visibility 0s linear var(--t-base);view-transition-name: none;}.menu-open .rail{visibility: visible;opacity: 1;transform: none;transition-delay: 0s;}.rail .brand, .rail-intro, .toc, .rail-tools .theme-toggle{display: none;}.rail-nav{margin-top: 0;}.nav-link{font-size: 1.375rem;font-weight: 600;padding: 12px 14px;color: var(--text);}.nav-link[aria-current="page"]::before{display: none;}.menu-scrim{position: fixed;inset: var(--topbar-h) 0 0 0;z-index: 50;background: rgba(0, 0, 0, 0.18);opacity: 0;visibility: hidden;transition: opacity var(--t-base) var(--ease-out), visibility 0s linear var(--t-base);}.menu-open .menu-scrim{opacity: 1;visibility: visible;transition-delay: 0s;}.home-intro{display: grid;gap: var(--s-4);padding: 28px 0 8px;}.home-intro .role{font-size: 1.0625rem;}.home-intro .tagline{font-size: clamp(1.625rem, 1.2rem + 2vw, 2rem);}.home-intro .intro{font-size: var(--fs-base);}.main{padding-top: 24px;}.cs, .page{gap: var(--s-8);}.split, .split--flip, .about-hero, .contact{grid-template-columns: 1fr;}.split .sticky, .contact-intro{position: static;}.more-grid, .more-grid--4{grid-template-columns: 1fr 1fr;}.lens, .lens--flip{grid-template-columns: 1fr;}.lens--flip .frame{order: 0;}.lens-text, .lens--flip .lens-text{padding: 4px 8px 12px;}}@media (max-width: 720px){:root{--fs-base: 1rem;--fs-md: 1.0625rem;}.pair, .cards-2, .duo, .trio, .stats, .spec, .more-grid, .more-grid--4, .roles, .split > .sticky > .roles{grid-template-columns: 1fr;}.spec > .column + .column, .stat + .stat{border-left: 0;border-top: 1px solid var(--hairline);}.spec > .column:nth-child(3){grid-column: auto;}.cta{grid-template-columns: 1fr;}.phones{grid-template-columns: repeat(4, 62%);overflow-x: auto;scroll-snap-type: x mandatory;padding: 20px;}.phones > *{scroll-snap-align: center;}.phone:nth-child(even){translate: none;}.mode-demo .phones{padding-bottom: 16px;}.carousel{--slide-w: 92cqi;}.resume-head{grid-template-columns: 1fr;}.resume-aside{grid-template-columns: 1fr;}.job{margin-left: 32px;padding: 20px;}.job::before{left: -29px;}.timeline::before{left: 8px;}.quote{padding: 56px 22px 24px;}.quote::before{left: 18px;top: 4px;}.scroll-shot{--shot-h: 420px;}.project-title{font-size: 1.25rem;}.to-top{right: 16px;bottom: 16px;}}@media (max-width: 359px){.topbar .brand{font-size: 0.9375rem;gap: 8px;}}@media (prefers-reduced-motion: reduce){@view-transition{navigation: none;}*, *::before, *::after{animation-duration: 1ms !important;animation-iteration-count: 1 !important;scroll-behavior: auto !important;}.js .reveal, .js [data-stagger] > *{transform: none;transition: opacity var(--t-fast) linear;}.lift:hover{translate: none;}.btn:hover, .icon-btn:hover, .project:hover .project-media img, .mini:hover .project-media img{transform: none;}.scroll-shot img{transition: none;}.scroll-shot:hover img{transform: none;}.theme-toggle .icon, .arrow-chip, .arrow-chip .ms{transition-duration: 1ms;}.mode-switch-thumb, .mode-switch .icon{transition-duration: 1ms;}.mode-switch[aria-checked="true"] .i-sun{rotate: none;}.mode-night{transition-delay: 0s !important;transition-duration: var(--t-fast);}}@media print{:root, :root[data-theme="dark"], :root:not([data-theme]){--bg: #fff;--surface: #fff;--surface-2: #fff;--surface-sunken: #fff;--text: #1F232B;--text-2: #3B4252;--text-3: #5A6375;--accent: #4A6890;--accent-text: #4A6890;--accent-soft: transparent;--hairline: #D8DEE9;--hairline-strong: #C5CDDA;color-scheme: light;}@page{margin: 12mm 14mm;}body{font-size: 10pt;background: #fff;}.site{display: block;}.rail, .topbar, .footer, .to-top, .no-print, .skip-link, .menu-scrim{display: none !important;}.main{padding: 0;}.card, .chip, .icon-btn{box-shadow: none !important;}.carousel-track{--bleed: 0px;-webkit-mask-image: none;mask-image: none;}.card{border-color: var(--hairline);}.js .reveal, .js [data-stagger] > *{opacity: 1 !important;transform: none !important;}a{color: inherit !important;text-decoration: none !important;}.resume, .resume-grid, .resume-aside, .resume-block, .timeline{display: block;position: static;padding: 0;}.resume > * + *, .resume-grid > * + *, .resume-aside > * + *{margin-top: 13pt;}.resume-head{grid-template-columns: 1fr;gap: 0;padding-bottom: 9pt;border-bottom: 1pt solid var(--hairline-strong);}.resume-head .page-title{font-size: 24pt;line-height: 1.1;letter-spacing: -0.02em;}.resume-head .headline{font-size: 12pt;margin-top: 2pt;}.contact-row{gap: 3pt 14pt;margin-top: 7pt;font-size: 9pt;}.contact-row a, .contact-row span{gap: 4pt;}.contact-row .icon{width: 10pt;height: 10pt;}.resume-block > h2{margin-bottom: 7pt;padding-bottom: 3pt;border-bottom: 0.75pt solid var(--hairline);font-size: 8pt;letter-spacing: 0.12em;color: var(--accent-text);break-after: avoid;}.summary{gap: 5pt;max-width: none;font-size: 10pt;line-height: 1.5;}.list{gap: 2pt;}.list > li{padding-left: 11pt;}.list > li::before{left: 1pt;width: 4pt;height: 4pt;}.job + .job{margin-top: 9pt;}.timeline::before, .job::before{display: none;}.job{gap: 3pt;margin: 0;padding: 0;border: 0;border-radius: 0;background: none;break-inside: avoid;}.job-head{flex-wrap: nowrap;gap: 12pt;break-after: avoid;}.job-title{font-size: 11pt;line-height: 1.25;}.job-company{font-size: 9.5pt;}.job-dates{font-size: 9pt;}.job .list{font-size: 9.5pt;line-height: 1.4;}.chips{gap: 4pt;}.chip{padding: 1.5pt 7pt;border: 0.75pt solid var(--hairline-strong);background: none;font-size: 8.5pt;}.resume-block:has(> .edu){display: grid;grid-template-columns: repeat(3, minmax(0, 1fr));gap: 7pt 14pt;}.resume-block:has(> .edu) > h2{grid-column: 1 / -1;margin-bottom: 0;}.edu{gap: 2pt;align-content: start;padding: 0;border: 0;border-radius: 0;background: none;break-inside: avoid;}.edu h3{font-size: 9.5pt;}.edu .where, .edu p{font-size: 8.5pt;line-height: 1.4;}#cert-h + .list{display: flex;flex-wrap: wrap;gap: 3pt 18pt;font-size: 9.5pt;}#cert-h + .list > li:has(a[href^="about"]){display: none;}}
