@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap");body{background:radial-gradient(ellipse 100% 88% at -8% -8%,rgba(249,168,212,.82),transparent 58%),radial-gradient(ellipse 95% 85% at 108% 0,rgba(125,211,252,.78),transparent 56%),radial-gradient(ellipse 82% 72% at 100% 100%,rgba(244,114,182,.62),transparent 54%),radial-gradient(ellipse 88% 80% at 0 100%,rgba(147,197,253,.7),transparent 56%),radial-gradient(ellipse 62% 58% at 50% 46%,rgba(196,181,253,.52),transparent 62%),radial-gradient(ellipse 45% 40% at 78% 32%,rgba(52,211,153,.2),transparent 52%),radial-gradient(circle at 8% 18%,rgba(129,140,248,.42),transparent 36rem),radial-gradient(circle at 94% 8%,rgba(34,211,238,.36),transparent 30rem),linear-gradient(168deg,#ffe8f1,#dff0ff 38%,#efe6ff 72%,#f0f7ff);background-attachment:fixed}body.dark{background:radial-gradient(1px 1px at 4% 9%,rgba(240,244,255,.7),transparent),radial-gradient(1px 1px at 11% 3%,hsla(0,0%,100%,.55),transparent),radial-gradient(1px 1px at 17% 31%,rgba(199,210,254,.5),transparent),radial-gradient(1px 1px at 26% 8%,hsla(0,0%,100%,.65),transparent),radial-gradient(1px 1px at 35% 52%,rgba(224,231,255,.42),transparent),radial-gradient(1px 1px at 42% 19%,hsla(0,0%,100%,.48),transparent),radial-gradient(1px 1px at 51% 66%,rgba(216,180,254,.4),transparent),radial-gradient(1px 1px at 59% 41%,hsla(0,0%,100%,.52),transparent),radial-gradient(1px 1px at 68% 11%,rgba(191,219,254,.55),transparent),radial-gradient(1px 1px at 76% 56%,hsla(0,0%,100%,.45),transparent),radial-gradient(1px 1px at 82% 7%,rgba(237,233,254,.58),transparent),radial-gradient(1px 1px at 91% 44%,hsla(0,0%,100%,.5),transparent),radial-gradient(1px 1px at 97% 71%,rgba(199,210,254,.42),transparent),radial-gradient(1px 1px at 6% 63%,hsla(0,0%,100%,.44),transparent),radial-gradient(1px 1px at 15% 88%,rgba(224,231,255,.38),transparent),radial-gradient(1px 1px at 28% 96%,hsla(0,0%,100%,.4),transparent),radial-gradient(1px 1px at 45% 3%,rgba(196,181,253,.48),transparent),radial-gradient(1px 1px at 54% 81%,hsla(0,0%,100%,.46),transparent),radial-gradient(1px 1px at 72% 92%,rgba(191,219,254,.4),transparent),radial-gradient(1px 1px at 86% 61%,hsla(0,0%,100%,.42),transparent),radial-gradient(1.5px 1.5px at 23% 54%,hsla(0,0%,100%,.72),transparent),radial-gradient(1.5px 1.5px at 63% 17%,rgba(196,181,253,.65),transparent),radial-gradient(1px 1px at 9% 16%,rgba(230,232,255,.78),transparent),radial-gradient(1px 1px at 21% 42%,rgba(199,210,254,.45),transparent),radial-gradient(1px 1px at 33% 12%,hsla(0,0%,100%,.55),transparent),radial-gradient(1px 1px at 47% 58%,rgba(196,181,253,.38),transparent),radial-gradient(1px 1px at 58% 22%,hsla(0,0%,100%,.62),transparent),radial-gradient(1px 1px at 71% 48%,rgba(199,210,254,.42),transparent),radial-gradient(1px 1px at 84% 14%,rgba(237,233,254,.48),transparent),radial-gradient(1px 1px at 93% 38%,rgba(191,219,254,.4),transparent),radial-gradient(1px 1px at 14% 72%,hsla(0,0%,100%,.4),transparent),radial-gradient(1px 1px at 38% 86%,rgba(216,180,254,.35),transparent),radial-gradient(1px 1px at 62% 78%,rgba(224,231,255,.36),transparent),radial-gradient(1px 1px at 88% 82%,rgba(199,210,254,.38),transparent),radial-gradient(2px 2px at 44% 36%,rgba(196,181,253,.95),transparent),radial-gradient(2px 2px at 66% 28%,rgba(147,197,253,.88),transparent),radial-gradient(ellipse 150% 28% at 50% 14%,rgba(129,140,248,.38),transparent 72%),radial-gradient(ellipse 130% 32% at 18% 24%,rgba(99,102,241,.42),transparent 65%),radial-gradient(ellipse 110% 38% at 88% 26%,rgba(167,139,250,.42),transparent 62%),radial-gradient(ellipse 95% 24% at 55% 32%,rgba(56,189,248,.26),transparent 68%),radial-gradient(ellipse 140% 36% at 40% 8%,rgba(139,92,246,.26),transparent 75%),radial-gradient(ellipse 70% 45% at 0 55%,rgba(79,70,229,.22),transparent 55%),radial-gradient(ellipse 100% 50% at 100% 40%,rgba(192,132,252,.22),transparent 52%),radial-gradient(ellipse 200% 55% at 50% 118%,rgba(76,29,149,.52),transparent 58%),radial-gradient(ellipse 120% 42% at 50% 100%,rgba(30,27,75,.55),transparent 52%),linear-gradient(195deg,#020106,#07051c 32%,#0c0828 58%,#060410);background-attachment:fixed}body.dark:before{animation:shooting-star-drift 16s linear infinite;background:linear-gradient(102deg,transparent,hsla(0,0%,100%,0) 18%,hsla(0,0%,100%,.95) 44%,rgba(196,181,253,.45) 62%,rgba(147,197,253,.12) 82%,transparent);border-radius:999px;box-shadow:0 0 4px hsla(0,0%,100%,.4),0 0 10px rgba(167,139,250,.22);content:"";height:1px;opacity:0;pointer-events:none;position:fixed;right:14%;top:clamp(88px,20vh,180px);transform:rotate(-31deg);width:min(68px,13vw);z-index:0}@keyframes shooting-star-drift{0%,91.6%{opacity:0;transform:rotate(-31deg) translateZ(0) scaleX(.45)}91.75%{opacity:.9;transform:rotate(-31deg) translate3d(3px,1px,0) scaleX(.55)}92.85%{opacity:1;transform:rotate(-31deg) translate3d(-16px,-9px,0) scaleX(.62)}93.9%{opacity:.88;transform:rotate(-31deg) translate3d(-32px,-3px,0) scaleX(.52)}95%{opacity:.35;transform:rotate(-31deg) translate3d(-46px,8px,0) scaleX(.42)}95.75%,to{opacity:0;transform:rotate(-31deg) translate3d(-52px,13px,0) scaleX(.38)}}@media (prefers-reduced-motion:reduce){body.dark:before{animation:none;opacity:0}}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.static{position:static}.hidden{display:none}:root{--bg:#f7f7fb;--surface:#fff;--surface-strong:#111827;--text:#172033;--muted:#5f6b7a;--accent:#6d5dfc;--accent-strong:#4f46e5;--accent-soft:#ebe9ff;--border:rgba(17,24,39,.12);--shadow:0 24px 80px rgba(17,24,39,.12);--font:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--surface-glass:color-mix(in srgb,var(--surface) 88%,transparent);--ease:180ms ease;--radius-card:32px;--radius-panel:24px;--radius-media:16px;--pill:1px solid color-mix(in srgb,var(--accent) 18%,transparent)}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{color:var(--text);font-family:var(--font);line-height:1.6;min-height:100vh;transition:background .25s ease,color .25s ease}body.dark{--bg:#05040f;--surface:#12243d;--surface-strong:#f5f3ff;--text:#eef2ff;--muted:#a5a8d4;--accent:#a78bfa;--accent-strong:#c4b5fd;--accent-soft:rgba(167,139,250,.16);--border:rgba(129,140,248,.22);--shadow:0 24px 80px rgba(8,5,28,.58)}body.dark :is(.hero__card,.project-card,.contact,.report-panel,.lab-gallery__item,.large-asset-details){background:var(--surface)}a{color:inherit;text-decoration:none}button{border:0;cursor:pointer;font:inherit}.site-header{backdrop-filter:blur(18px);background:color-mix(in srgb,var(--bg) 82%,transparent);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}:is(.nav,.section,.footer){margin:0 auto;max-width:1120px;padding-inline:24px}.nav{align-items:center;display:flex;justify-content:space-between;min-height:78px;position:relative}.brand{font-weight:800;gap:12px}.brand,.brand__mark{align-items:center;display:inline-flex}.brand__mark{background:linear-gradient(135deg,var(--accent),#14b8a6);border-radius:16px;color:#fff;height:46px;justify-content:center;letter-spacing:-.06em;width:46px}.brand__text{font-size:1.05rem}.nav__links{align-items:center;display:flex;gap:24px}.nav__links a{color:var(--muted);font-weight:700;transition:color var(--ease)}.nav__links a:hover{color:var(--accent-strong)}:is(.theme-toggle,.nav__toggle){align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:999px;color:var(--text);display:inline-flex;justify-content:center}.theme-toggle{height:40px;width:40px}.theme-toggle--corner{height:34px;position:fixed;right:20px;top:16px;width:34px;z-index:11}.theme-toggle__svg{display:block;flex-shrink:0;height:18px;transition:color .2s ease,filter .2s ease,transform .2s ease;width:18px}body.dark .theme-toggle__svg--moon,body:not(.dark) .theme-toggle__svg--sun{display:none}body.dark .theme-toggle--corner{color:#fbbf24;filter:drop-shadow(0 0 8px rgba(251,191,36,.55))}body:not(.dark) .theme-toggle--corner{color:#4f46e5;filter:drop-shadow(0 0 6px rgba(79,70,229,.25))}.theme-toggle--corner:hover .theme-toggle__icon{transform:scale(1.08)}.nav__toggle{display:none;flex-direction:column;gap:4px;height:42px;width:42px}.nav__toggle span{background:var(--text);border-radius:999px;display:block;height:2px;width:18px}.section{padding-block:92px}.hero{align-items:center;display:grid;gap:48px;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);min-height:calc(100vh - 78px)}.eyebrow{color:var(--accent-strong);font-size:.78rem;font-weight:800;letter-spacing:.16em;margin-bottom:14px;text-transform:uppercase}:is(h1,h2,h3){color:var(--surface-strong);letter-spacing:-.05em;line-height:1.05}h1{font-size:clamp(3.25rem,8vw,6.6rem);max-width:980px}h1.hero__headline{font-size:1em;font-weight:800;letter-spacing:-.04em;line-height:1.2;max-width:920px}.hero__roles{display:block;font-size:clamp(1.2rem,2.6vw,1.85rem);font-weight:700;letter-spacing:-.03em;line-height:1.35}.hero__card-headline{color:var(--surface-strong);font-size:clamp(1.05rem,2vw,1.35rem);font-weight:700;letter-spacing:-.02em;line-height:1.45}h2{font-size:clamp(2rem,4vw,3.5rem)}h3{font-size:1.5rem}:is(.hero__intro,.section__body,.contact p,.subpage-hero .subpage-lead){color:var(--muted);font-size:1.1rem}.hero__intro{margin-top:24px;max-width:680px}.section__body{display:grid;gap:18px}.contact p{margin:18px auto 0;max-width:620px}.subpage-hero .subpage-lead{max-width:640px}:is(.hero__actions,.contact__links){display:flex;flex-wrap:wrap;gap:14px;margin-top:32px}.contact__links{justify-content:center}.contact__info{display:grid;gap:10px;justify-items:center;list-style:none;margin:22px auto 28px;max-width:320px}.contact__info a{align-items:center;color:var(--accent-strong);display:inline-flex;font-size:1rem;font-weight:600;gap:10px;text-decoration:none}.contact__info a:hover{text-decoration:underline}.button{align-items:center;border-radius:999px;display:inline-flex;font-weight:800;gap:10px;justify-content:center;min-height:48px;padding:0 22px;transition:transform var(--ease),box-shadow var(--ease),border-color var(--ease)}.button:hover{transform:translateY(-2px)}.button--primary{background:var(--accent);box-shadow:0 14px 30px rgba(109,93,252,.28);color:#fff}.button--secondary{background:var(--surface);border:1px solid var(--border);color:var(--text)}:is(.hero__card,.project-card,.contact,.report-panel){background:var(--surface-glass);border:1px solid var(--border);box-shadow:var(--shadow)}:is(.hero__card,.project-card,.contact){border-radius:var(--radius-card)}.contact{padding-block:56px;text-align:center}.report-panel{border-radius:var(--radius-panel);margin-top:32px;padding:28px 32px}.hero__card{overflow:hidden;padding:32px;position:relative}.hero__card:before{background:linear-gradient(135deg,rgba(109,93,252,.28),rgba(20,184,166,.16));content:"";height:8px;inset:0 0 auto;position:absolute}.status-dot{background:#22c55e;border-radius:999px;box-shadow:0 0 0 8px rgba(34,197,94,.14);height:12px;margin-bottom:28px;width:12px}.hero__card-label{color:var(--muted);font-weight:700;margin-bottom:10px}.hero__card ul{color:var(--muted);list-style:none;margin-top:24px}.hero__card li{border-top:1px solid var(--border);padding:14px 0}.section--split{display:grid;gap:48px;grid-template-columns:.8fr 1.2fr}.section__heading{margin-bottom:32px}.project-grid{display:grid;gap:22px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.project-card{display:flex;flex-direction:column;gap:18px;min-height:330px;padding:28px;transition:transform var(--ease),border-color var(--ease)}.project-card--link{color:inherit;text-align:left}.project-card--link:hover .project-card__cta{color:var(--accent-strong);gap:12px}.project-card__cta{align-items:center;color:var(--muted);display:inline-flex;font-size:.9rem;font-weight:800;gap:8px;margin-top:auto;padding-top:8px;transition:color var(--ease),gap var(--ease)}.project-card:hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--border));transform:translateY(-6px)}.project-card p{color:var(--muted)}.project-card__icon{align-items:center;background:var(--accent-soft);border-radius:20px;color:var(--accent-strong);display:inline-flex;font-size:1.4rem;height:56px;justify-content:center;overflow:hidden;width:56px}.project-card__icon-img{display:block;height:34px;-o-object-fit:contain;object-fit:contain;width:34px}.project-card__icon--chess .project-card__icon-img{height:32px;width:32px}.project-card__meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}:is(.project-card__meta span,.skill-list span){background:var(--accent-soft);border:var(--pill);border-radius:999px;color:var(--accent-strong);font-size:.82rem;font-weight:800;padding:8px 12px}.skill-groups{display:grid;gap:22px}.skill-group__label{color:var(--muted);font-size:.72rem;font-weight:800;letter-spacing:.1em;margin-bottom:10px;text-transform:uppercase}.skill-list{align-content:start;display:flex;flex-wrap:wrap;gap:12px}.skill-list span{cursor:default;display:inline-block;transition:transform var(--ease),box-shadow var(--ease),background var(--ease)}.skill-list span:hover{transform:scale(1.08)}.skill-list span.skill-list__pill--highlight{background:linear-gradient(135deg,var(--accent) 0,var(--accent-strong) 100%);border-color:transparent;box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 38%,transparent);color:#fff}body.dark .skill-list span.skill-list__pill--highlight{box-shadow:0 6px 22px rgba(167,139,250,.38)}.footer{color:var(--muted);padding-bottom:32px;text-align:center}.subpage-hero{padding-block:48px}.subpage-hero h1{font-size:clamp(2rem,5vw,3.25rem);margin-bottom:16px;max-width:720px}.subpage-back{color:var(--accent-strong);display:inline-flex;font-size:.9rem;font-weight:800;gap:8px;margin-bottom:24px}.subpage-back:hover{text-decoration:underline}.report-panel h2{font-size:1.35rem;margin-bottom:8px}.report-panel>p{color:var(--muted);font-size:.95rem;margin-bottom:24px}.deferred-pdf--center{align-items:center;display:flex;flex-direction:column}.deferred-pdf__actions.deferred-pdf--center{justify-content:center}.deferred-pdf--center .deferred-pdf__slot{align-self:stretch;width:100%}.report-list{list-style:none}.report-list li{align-items:baseline;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:8px 20px;justify-content:space-between;padding:16px 0}.report-list li:first-child{border-top:0;padding-top:0}.report-list a{color:var(--accent-strong);font-weight:800}.report-list a:hover{text-decoration:underline}.report-meta{color:var(--muted);font-size:.88rem}.report-list__empty{border-top:0;color:var(--muted);display:block;font-size:.95rem;padding:0}:is(.report-list__empty code,.pdf-showcase__fallback code){background:var(--accent-soft);border-radius:6px;font-size:.85em;padding:2px 8px}.lab-block{margin-top:28px}.lab-block:first-of-type{margin-top:32px}.report-subheading{color:var(--surface-strong);font-size:1rem;font-weight:800;letter-spacing:-.02em;margin-block:22px 12px}.pdf-showcase{border:1px solid var(--border);border-radius:var(--radius-media);margin-top:16px;overflow:hidden}.pdf-showcase__object{background:var(--surface);display:block;min-height:min(72vh,720px);width:100%}.pdf-showcase__fallback{color:var(--muted);line-height:1.65;padding:28px 24px}.pdf-showcase__fallback p+p{margin-top:12px}.deferred-pdf{margin-top:16px}.deferred-pdf__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}.deferred-pdf__hint{color:var(--muted);font-size:.9rem;margin-top:12px;max-width:52rem}.deferred-pdf__slot{margin-top:16px}.deferred-pdf__slot.pdf-showcase{display:flex;flex-direction:column;gap:12px}.large-asset-details{border:1px dashed var(--border);border-radius:var(--radius-media);margin-top:24px;padding:16px 20px}.large-asset-details summary{color:var(--surface-strong);cursor:pointer;font-weight:800}.large-asset-details__note{color:var(--muted);font-size:.92rem;margin:14px 0}.report-spread{margin-top:16px}.report-spread__img{border:1px solid var(--border);border-radius:var(--radius-media);display:block;height:auto;max-height:min(85vh,900px);-o-object-fit:contain;object-fit:contain;width:100%}.report-spread__caption{color:var(--muted);font-size:.9rem;margin-top:12px}.filmstrip{display:flex;gap:14px;margin-top:16px;overflow-x:auto;padding-bottom:8px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.filmstrip__item{border:1px solid var(--border);border-radius:14px;flex:0 0 min(360px,78vw);margin:0;overflow:hidden;scroll-snap-align:start}.filmstrip__item img{display:block;height:auto;width:100%}.lab-gallery{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));margin-top:16px}.lab-gallery__item{background:color-mix(in srgb,var(--surface) 70%,transparent);border:1px solid var(--border);border-radius:var(--radius-media);margin:0;overflow:hidden}.lab-gallery__item img{aspect-ratio:4/3;display:block;height:auto;-o-object-fit:cover;object-fit:cover;width:100%}:is(.section__body a,.report-panel p a){color:var(--accent-strong);font-weight:600;text-decoration:underline}:is(.section__body a:hover,.report-panel p a:hover){text-decoration:none}.resume-panel{margin-inline:auto;max-width:720px}.resume-panel+.resume-panel{margin-top:32px}.subpage-hero .tutoring-rates{--tutor-green:#1a7d4e;--tutor-green-border:rgba(26,125,78,.45);display:flex;flex-wrap:wrap;gap:8px 12px;list-style:none;margin-top:12px}.subpage-hero .tutoring-rates__item{align-items:center;background:transparent;border:1px solid var(--tutor-green-border);border-radius:999px;display:inline-flex;font-size:.78rem;gap:6px;line-height:1.2;padding:5px 11px}.subpage-hero .tutoring-rates__label{color:var(--muted);font-weight:600}.subpage-hero .tutoring-rates__price{color:var(--tutor-green);font-weight:800}body.dark .subpage-hero .tutoring-rates{--tutor-green:#4ade80;--tutor-green-border:rgba(74,222,128,.4)}.tutoring-experience{display:grid;gap:20px;list-style:none;margin-top:20px}@media (min-width:900px){.tutoring-experience{grid-template-columns:repeat(3,1fr)}}.tutoring-experience__item{background:color-mix(in srgb,var(--accent-soft) 55%,var(--surface));border:1px solid var(--border);border-radius:var(--radius-media);padding:20px 22px}.tutoring-experience__title{font-size:1.05rem;font-weight:800;letter-spacing:-.02em;margin-bottom:6px}.tutoring-experience__meta{color:var(--muted);font-size:.88rem;margin-bottom:12px}.tutoring-experience__item p:last-child{color:var(--muted);font-size:.95rem;line-height:1.6}.tutoring-classes-list{display:grid;gap:14px;list-style:none;margin-top:20px}.tutoring-classes-list li{align-items:baseline;color:var(--text);display:flex;font-size:1.05rem;gap:14px;line-height:1.5}.tutoring-classes-list li:before{background:linear-gradient(135deg,var(--accent) 0,var(--accent-strong) 100%);border-radius:50%;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent);content:"";flex-shrink:0;height:9px;margin-top:.42em;width:9px}.tutoring-strengths{display:grid;gap:14px;list-style:none;margin-top:16px}.tutoring-strengths li{border-left:3px solid var(--accent);color:var(--muted);line-height:1.65;padding-left:16px}.tutoring-strengths strong{color:var(--text)}.tutoring-subjects{color:var(--muted);font-size:.98rem;line-height:1.65;margin-top:22px}.testimonial-grid{display:grid;gap:20px;list-style:none;margin-top:24px}@media (min-width:768px){.testimonial-grid{grid-template-columns:repeat(3,1fr)}}.testimonial{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-media);display:flex;flex-direction:column;gap:14px;height:100%;margin:0;padding:22px 20px}.testimonial blockquote{flex:1;margin:0}.testimonial blockquote p{color:var(--text);font-size:.98rem;font-style:italic;line-height:1.65}.testimonial figcaption{color:var(--muted);font-size:.85rem;font-style:normal;font-weight:600}.tutoring-cta .hero__actions{margin-top:20px}.lab-gallery.life-gallery{margin-top:8px}main :is(.filmstrip img,.lab-gallery img){cursor:zoom-in}body.ce-lab{--accent:#2ea573;--accent-strong:#1a7d4e;--accent-soft:#d4f0e4}body.ce-lab .site-header{--accent:#6d5dfc;--accent-strong:#4f46e5;--accent-soft:#ebe9ff}body.ce-lab.dark{--accent:#818cf8;--accent-strong:#a5b4fc;--accent-soft:rgba(129,140,248,.18)}body.ce-lab.dark .site-header{--accent:#a5b4fc;--accent-strong:#c4b5fd;--accent-soft:rgba(165,180,252,.16)}.media-lightbox{box-sizing:border-box;display:none;inset:0;padding:0;position:fixed;z-index:10000}.media-lightbox.is-open{display:grid;grid-template-columns:1fr;grid-template-rows:1fr}.media-lightbox__backdrop{background:rgba(0,0,0,.88);border:0;cursor:zoom-out;grid-column:1;grid-row:1;margin:0;padding:0}.media-lightbox__content{align-items:center;box-sizing:border-box;display:flex;grid-column:1;grid-row:1;justify-content:center;min-height:100%;min-width:100%;padding:48px 44px 28px 28px;pointer-events:none;position:relative;z-index:1}:is(.media-lightbox__close,.pdf-expand-icon){align-items:center;background:transparent;border:0;color:#9ca3af;cursor:pointer;display:inline-flex;justify-content:center}.media-lightbox__close{border-radius:999px;font-size:1.05rem;font-weight:500;height:32px;line-height:1;opacity:.78;pointer-events:auto;position:absolute;right:12px;top:10px;width:32px;z-index:2}.pdf-expand-icon{align-self:center;line-height:0;margin-top:2px;opacity:.85;padding:6px 8px}:is(.media-lightbox__close:hover,.pdf-expand-icon:hover){color:#cbd5e1;opacity:1}.media-lightbox__frame{align-items:center;box-sizing:border-box;display:flex;flex:0 1 auto;justify-content:center;max-height:min(88vh,calc(100vh - 48px));max-width:min(94vw,calc(100vw - 48px));min-height:0;pointer-events:none;width:100%}.media-lightbox__img{cursor:zoom-out;max-height:min(82vh,calc(100vh - 56px));max-width:min(92vw,calc(100vw - 56px));-o-object-fit:contain;object-fit:contain;width:auto}.media-lightbox__img,.media-lightbox__pdf{box-sizing:border-box;display:block;pointer-events:auto}.media-lightbox__pdf{background:var(--surface,#fff);border:0;border-radius:12px;height:min(82vh,calc(100vh - 56px));max-width:min(94vw,calc(100vw - 56px));width:100%}body.media-lightbox-open,html.media-lightbox-open{overflow:hidden}.pdf-expand-icon__arrows{display:inline-flex}.pdf-expand-icon__arrows svg{display:block}@media (max-width:860px){.nav__toggle{display:inline-flex}.nav__links{align-items:stretch;background:var(--surface);border:1px solid var(--border);border-radius:24px;box-shadow:var(--shadow);display:none;flex-direction:column;gap:10px;padding:18px;position:absolute;right:24px;top:68px;width:min(260px,calc(100vw - 48px))}.nav.nav--open .nav__links{display:flex}.theme-toggle--corner{display:none}:is(.hero,.section--split,.project-grid){grid-template-columns:1fr}.hero{min-height:auto;padding-top:72px}.pdf-showcase__object{min-height:55vh}}.portfolio-flips{display:grid;gap:28px;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));margin-top:8px}.flip-card{aspect-ratio:1;max-width:560px;perspective:1200px;width:100%}.flip-card[role=button]{cursor:pointer;outline:none}.flip-card[role=button]:focus-visible{outline:2px solid var(--accent-strong);outline-offset:4px}.flip-card__inner{height:100%;position:relative;transform-style:preserve-3d;transition:transform .65s cubic-bezier(.4,.2,.2,1);width:100%}.flip-card.is-flipped .flip-card__inner{transform:rotateY(180deg)}.flip-card__face{backface-visibility:hidden;border-radius:var(--radius-card);box-shadow:var(--shadow);height:100%;inset:0;overflow:hidden;position:absolute;width:100%}.flip-card__front{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:space-between;padding:22px 20px 20px;text-align:center}.flip-card--cyan .flip-card__front{background:linear-gradient(155deg,#d2ecf4,#a8d4e6 48%,#8ec4db);color:#1a5f7a}.flip-card__title{align-items:center;display:flex;flex:1;flex-direction:column;gap:.35em;justify-content:center;margin:0;padding:16px 12px;width:100%}.flip-card__bubble{color:#2a8fb8;display:block;font-family:Sniglet,var(--font);letter-spacing:.02em;line-height:1.08;margin-inline:auto;text-align:center;-webkit-text-stroke:1.5px #6baecc;paint-order:stroke fill;text-shadow:1px 2px 0 rgba(107,174,204,.28),0 1px 0 hsla(0,0%,100%,.5);width:100%}.flip-card__bubble--brand{font-size:clamp(1.5rem,5.2vw,2.1rem);font-weight:800;max-width:100%}.flip-card__bubble--main{font-size:clamp(1.35rem,4.6vw,2rem);font-weight:400;max-width:14ch}.flip-card__tap{color:#3d6d82;flex:0 0 auto;font-family:var(--font);font-size:.78rem;font-weight:600;letter-spacing:.14em;margin-top:0;opacity:.8;padding-bottom:4px;text-transform:lowercase}.flip-card__back{background:var(--surface);border:1px solid var(--border);display:flex;flex-direction:column;transform:rotateY(180deg)}.flip-card__back-split{display:grid;flex:1;grid-template-columns:1fr;grid-template-rows:1fr 1fr;min-height:0}.flip-card__shot{background:#0b1a2e;border-bottom:1px solid var(--border);min-height:0;overflow:hidden}.flip-card__shot img{display:block;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:top center;object-position:top center;width:100%}.flip-card__blurb{color:var(--muted);display:flex;flex-direction:column;font-size:.82rem;justify-content:space-between;line-height:1.55;min-height:0;padding:20px}.flip-card__blurb p{flex:1}.flip-card__site{border-top:1px solid var(--border);color:var(--accent-strong);display:block;flex-shrink:0;font-size:.88rem;font-weight:800;margin-top:16px;padding-top:12px;text-align:left;transition:background var(--ease),color var(--ease)}.flip-card__site:hover{background:var(--accent-soft);color:var(--accent-strong)}@media (prefers-reduced-motion:reduce){.flip-card__inner{transition:none}.flip-card__back,.flip-card__front{backface-visibility:visible;position:relative;transform:none}.flip-card.is-flipped .flip-card__front,.flip-card__back{display:none}.flip-card.is-flipped .flip-card__back{display:flex}.flip-card.is-flipped .flip-card__inner{transform:none}}.stars-page{min-height:100vh;overflow:hidden}.stars-page__main{min-height:100vh;position:relative}.stars-page__back{color:#9ca3af;font-size:.65rem;font-weight:500;left:18px;letter-spacing:.02em;position:fixed;text-decoration:underline;text-decoration-thickness:1px;text-transform:lowercase;text-underline-offset:3px;top:14px;transition:color var(--ease);z-index:10}.stars-page__back:hover{color:#d1d5db}@media (max-width:540px){:is(.nav,.section,.footer){padding-inline:18px}.section{padding-block:64px}.brand__text{display:none}.hero__actions .button{width:100%}.contact__links{align-items:center;flex-direction:column}.contact__links .button{justify-content:center;width:min(16rem,100%)}}