@font-face{font-family:PP Neue Montreal;src:url(/reframer/pp-neue-montreal-medium.woff2)format("woff2");font-display:swap;font-style:normal;font-weight:500}@font-face{font-family:Reframer Inter;src:url(/reframer/inter-regular.woff2)format("woff2");font-display:swap;font-style:normal;font-weight:400}@font-face{font-family:Reframer Inter;src:url(/reframer/inter-medium.woff2)format("woff2");font-display:swap;font-style:normal;font-weight:500}:root{--bg:#fafafa;--surface:#fff;--surface-strong:#f5f5f5;--text:#111;--muted:#666;--muted-strong:#4f4f4f;--border:#ececec;--border-strong:#111;--blue:#2b4bf2;--green:#111;--amber:#777;--accent:#111;--accent-2:#2b4bf2;--accent-3:#9a9a9a;--accent-soft:#f5f5f5;--shadow:0 24px 80px #11111112;--radius:24px;--max:1392px;--gutter:clamp(24px, 3vw, 56px)}html[data-theme=ocean]{--surface:#f2fbfb;--surface-strong:#dff4f2;--blue:#118ab2;--green:#006d77;--amber:#ad7c00;--accent:#006d77;--accent-2:#118ab2;--accent-3:#83c5be;--accent-soft:#e0f7f5}html[data-theme=forest]{--surface:#f4fbf6;--surface-strong:#e0f0e7;--blue:#386fa4;--green:#2d6a4f;--amber:#9a6a3a;--accent:#2d6a4f;--accent-2:#40916c;--accent-3:#b08968;--accent-soft:#e5f4ea}html[data-theme=sunset]{--surface:#fff7ed;--surface-strong:#ffe8cc;--blue:#2563eb;--green:#15803d;--amber:#b45309;--accent:#b45309;--accent-2:#db2777;--accent-3:#2563eb;--accent-soft:#fff1e6}html[data-contrast=more]{--bg:#fff;--surface:#fff;--surface-strong:#eee;--text:#000;--muted:#202020;--border:#000;--blue:#003cff;--green:#005f18;--amber:#8a4200;--accent:#000;--accent-2:#000;--accent-3:#000;--accent-soft:#fff;--shadow:none}html[data-text=large]{font-size:112.5%}html[data-font=readable] body{font-family:Verdana,Segoe UI,Arial,sans-serif}html[data-spacing=increased] body{word-spacing:.08em}html[data-spacing=increased] p,html[data-spacing=increased] li{line-height:1.85}html[data-color=grayscale]{--blue:#333;--green:#555;--amber:#777;--accent:#222;--accent-2:#555;--accent-3:#777;--accent-soft:#eee}html[data-color=grayscale] img{filter:grayscale()}html[data-comfort=soft]{--bg:#fbfbf8;--text:#1f2933;--muted:#4d5660;--border:#d5d9d0;--accent-soft:#f2f6ee}html[data-comfort=soft] img{filter:saturate(.72)contrast(.92)}html[data-color=grayscale][data-comfort=soft] img{filter:grayscale()saturate(.45)contrast(.92)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{background:var(--bg);color:var(--text);letter-spacing:0;margin:0;font-family:Reframer Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow-x:clip}body::selection{background:color-mix(in srgb, var(--accent) 22%, #fff)}a{color:inherit;text-decoration:none}html[data-links=underlined] a:not(.primary-button):not(.secondary-button):not(.contact-button):not(.access-tab){text-underline-offset:.22em;text-decoration:underline;text-decoration-thickness:2px}button,a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.skip-link{z-index:30;border:1px solid var(--border-strong);background:var(--bg);border-radius:6px;padding:10px 14px;font-weight:700;position:fixed;top:12px;left:18px;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.site-header{z-index:20;border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);position:sticky;top:0}.nav-shell{width:min(var(--max), calc(100% - (var(--gutter) * 2)));grid-template-columns:220px minmax(0,1fr) auto;align-items:center;gap:24px;min-height:92px;margin:0 auto;display:grid}.brand{align-items:center;width:fit-content;display:inline-flex}.brand-text{color:var(--text);letter-spacing:-.04em;font-family:PP Neue Montreal,Reframer Inter,sans-serif;font-size:clamp(1.05rem,1.35vw,1.25rem);font-weight:500}.brand-banner{width:200px;height:auto;display:block}.brand-square{object-fit:contain;width:42px;height:42px;display:none}.nav-links{color:var(--muted);justify-content:center;gap:clamp(22px,3vw,42px);font-size:.95rem;display:flex}.nav-links a{padding:8px 0;position:relative}.nav-links a:after{content:"";transform-origin:0;background:currentColor;height:1px;transition:transform .18s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.nav-links a:hover:after,.nav-links a:focus-visible:after,.nav-links a[aria-current=page]:after{transform:scaleX(1)}.nav-links a[aria-current=page]{color:var(--accent);font-weight:500}.header-actions{justify-content:flex-end;align-items:center;gap:10px;display:flex}.tool-button,.menu-button,.contact-button,.primary-button,.secondary-button{min-height:44px;font:inherit;border-radius:999px;justify-content:center;align-items:center;font-size:.92rem;font-weight:500;display:inline-flex}.tool-button{border:1px solid var(--border);min-width:0;color:var(--text);cursor:pointer;text-align:left;background:0 0;gap:10px;padding:0 12px}.tool-button svg,.menu-button svg{flex:none}.tool-button[aria-pressed=true]{background:var(--text);color:var(--bg)}.menu-button{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;gap:8px;padding:0 14px;display:none}.contact-button,.secondary-button{border:1px solid var(--border);background:var(--bg);gap:10px;padding:0 20px}.contact-button{background:var(--accent);min-height:52px;color:var(--bg);padding:0 26px}.primary-button{border:1px solid var(--accent);background:var(--accent);color:var(--bg);gap:14px;padding:0 26px}.secondary-button:hover,.secondary-button:focus-visible{border-color:var(--accent);background:var(--surface)}.primary-button svg,.secondary-button svg,.text-link svg{transition:transform .18s}.primary-button:hover svg,.secondary-button:hover svg,.text-link:hover svg{transform:translate(3px)}.access-dock{z-index:25;position:fixed;bottom:20px;left:20px}.access-tab{border:1px solid var(--border-strong);background:var(--accent);width:52px;min-height:48px;color:var(--bg);font:inherit;cursor:pointer;box-shadow:var(--shadow);border-radius:999px;justify-content:center;align-items:center;gap:0;padding:0 14px;font-size:.92rem;font-weight:800;display:inline-flex}.access-tab span{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.access-panel{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);width:min(400px,100vw - 86px);color:var(--text);padding:18px;position:absolute;bottom:62px;left:0;box-shadow:0 24px 80px #0000002e}.access-panel-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:14px;display:flex}.access-panel h2{font-size:1.2rem;line-height:1.1}.access-panel p{color:var(--muted);margin-top:6px;font-size:.9rem;line-height:1.4}.panel-close{border:1px solid var(--border);background:var(--bg);min-height:36px;color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:0 10px;font-size:.82rem;font-weight:760}.tool-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px;display:grid}.tool-grid .tool-button{justify-content:flex-start;width:100%;min-height:48px}.theme-picker{border:0;margin:14px 0 0;padding:0}.theme-picker legend{color:var(--muted);margin-bottom:10px;font-size:.84rem;font-weight:780}.theme-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.theme-button{border:1px solid var(--border);background:var(--bg);min-height:44px;color:var(--text);font:inherit;cursor:pointer;border-radius:6px;justify-content:flex-start;align-items:center;gap:10px;padding:0 10px;font-size:.88rem;font-weight:740;display:flex}.theme-button[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}.swatches{border:1px solid var(--border);border-radius:999px;flex:none;display:inline-flex;overflow:hidden}.swatches span{width:12px;height:20px}.reset-button{border:1px solid var(--border-strong);background:var(--bg);width:100%;min-height:44px;color:var(--text);font:inherit;cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:10px;margin-top:12px;font-size:.92rem;font-weight:760;display:inline-flex}main{width:min(var(--max), calc(100% - (var(--gutter) * 2)));margin:0 auto}.hero{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1.08fr) minmax(320px,.72fr);align-items:center;gap:clamp(44px,8vw,128px);min-height:calc(100svh - 92px);padding:clamp(72px,9vw,132px) 0 clamp(56px,8vw,96px);display:grid}.hero-copy{max-width:760px}h1,h2,h3,p{margin:0}h1{letter-spacing:-.06em;font-family:PP Neue Montreal,Reframer Inter,sans-serif;font-size:clamp(3.6rem,7.1vw,6.6rem);font-weight:500;line-height:1.02}.hero p{max-width:600px;color:var(--muted);margin-top:32px;font-size:clamp(1.03rem,1.35vw,1.18rem);line-height:1.55}.hero-actions{flex-wrap:wrap;gap:14px;margin-top:34px;display:flex}.section-kicker{color:var(--muted-strong);letter-spacing:.16em;text-transform:uppercase;align-items:center;gap:12px;margin:0 0 28px;font-size:.75rem;font-weight:500;line-height:1.1;display:flex}.section-kicker>span{background:var(--accent-2);border-radius:999px;width:7px;height:7px}.focus-list{color:var(--muted);flex-wrap:wrap;gap:12px;margin:24px 0 0;padding:0;font-size:.88rem;list-style:none;display:flex}.focus-list li{align-items:center;gap:7px;min-height:28px;display:inline-flex}.focus-list svg{width:17px;height:17px}.focus-list li:first-child svg{color:var(--accent)}.focus-list li:nth-child(2) svg{color:var(--accent-2)}.focus-list li:nth-child(3) svg{color:var(--accent-3)}.hero-media{border:1px solid var(--border);background:var(--surface);box-shadow:none;border-radius:28px;position:sticky;top:116px;overflow:hidden;transform:translateZ(0)}.hero-media img{aspect-ratio:4/5;object-fit:cover;width:100%;height:auto;animation:.9s ease-in-out both media-appear;display:block}.about,.accessibility{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,.9fr) minmax(320px,1.1fr);align-items:center;gap:clamp(28px,6vw,96px);padding:clamp(48px,7vw,86px) 0;display:grid}.about{align-items:start;padding-top:clamp(72px,9vw,118px)}h2{letter-spacing:-.055em;font-family:PP Neue Montreal,Reframer Inter,sans-serif;font-size:clamp(2.6rem,5.2vw,5rem);font-weight:500;line-height:1.02}h3{font-family:PP Neue Montreal,Reframer Inter,sans-serif;font-size:1.08rem;font-weight:500;line-height:1.2}.about p,.section-heading p,.accessibility p,.contact p{color:var(--muted);margin-top:18px;font-size:1.02rem;line-height:1.6}.doc-panel,.project-card,.skill-group,.accessibility,.contact-card,.timeline-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.doc-panel{box-shadow:none;overflow:hidden}.doc-row{border-bottom:1px solid var(--border);background:var(--surface-strong);color:var(--muted);justify-content:space-between;gap:16px;padding:14px 16px;font-size:.9rem;display:flex}pre{white-space:pre;margin:0;overflow-x:auto}code{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace}.doc-panel pre{padding:22px;font-size:clamp(.9rem,1.2vw,1rem);line-height:1.8}.timeline-section,.projects,.skills,.certifications,.contact{border-bottom:1px solid var(--border);padding:clamp(72px,9vw,124px) 0}.section-heading{max-width:700px;margin-bottom:clamp(34px,5vw,64px)}.section-heading.wide{justify-content:space-between;gap:24px;max-width:none;display:flex}.timeline{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;margin:0;padding:32px 0 0;list-style:none;display:grid;position:relative}.timeline:before{display:none}.timeline-card{min-height:220px;padding:24px;transition:border-color .22s,transform .22s,background .22s;position:relative}.timeline-card:hover{border-color:color-mix(in srgb, var(--accent) 24%, var(--border));transform:translateY(-4px)}.timeline-dot{display:none}.tone-blue{color:var(--blue)}.tone-green{color:var(--green)}.tone-amber{color:var(--amber)}.timeline-card time,.timeline-card h3,.timeline-card p{color:var(--text)}.timeline-card time{color:var(--muted);margin-bottom:14px;font-size:.88rem;display:block}.timeline-card p,.project-copy p{color:var(--muted);margin-top:9px;font-size:.95rem;line-height:1.5}.tag,.tag.neutral{border:1px solid var(--border);background:var(--surface-strong);width:fit-content;min-height:34px;color:var(--muted-strong);border-radius:999px;align-items:center;padding:6px 13px;font-size:.86rem;font-weight:500;display:inline-flex}.timeline-card .tag{margin-top:14px}.tag.neutral{color:var(--muted)}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.project-card{border-top:0;grid-template-rows:auto 1fr;min-height:520px;transition:border-color .22s,transform .22s;display:grid;overflow:hidden}.project-card:hover{border-color:color-mix(in srgb, var(--accent) 24%, var(--border));transform:translateY(-5px)}.project-card:nth-child(2){border-top-color:var(--accent-2)}.project-card:nth-child(3){border-top-color:var(--accent-3)}.terminal-card{min-height:230px;color:var(--surface);background:radial-gradient(circle at 20% 0,#2b4bf22e,#0000 38%),#111}.terminal-top{color:#9fb4c8;border-bottom:1px solid #26313d;align-items:center;gap:9px;padding:12px 14px;font-size:.85rem;font-weight:700;display:flex}.terminal-card pre{padding:18px;font-size:.9rem;line-height:1.65}.project-copy{flex-direction:column;padding:24px;display:flex}.tag-row{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.text-link{width:fit-content;min-height:36px;color:var(--accent);align-items:center;gap:9px;margin-top:auto;font-size:.94rem;font-weight:500;display:inline-flex}.skills-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;display:grid}.skill-group{padding:24px;transition:border-color .22s,transform .22s}.skill-group:hover{border-color:color-mix(in srgb, var(--accent) 24%, var(--border));transform:translateY(-4px)}.skill-title{align-items:center;gap:10px;display:flex}.skill-title svg{color:var(--accent)}.skill-group:nth-child(2) .skill-title svg{color:var(--accent-2)}.skill-group:nth-child(3) .skill-title svg{color:var(--accent-3)}.skill-group:nth-child(4) .skill-title svg{color:var(--accent-2)}.certification-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.certification-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);grid-template-rows:auto 1fr auto;min-height:250px;padding:24px;transition:border-color .22s,transform .22s;display:grid}.certification-card:hover{border-color:color-mix(in srgb, var(--accent) 24%, var(--border));transform:translateY(-4px)}.certification-issuer{align-items:center;display:flex}.issuer-logo{align-items:center;width:124px;height:54px;display:flex}.issuer-logo img{object-fit:contain;object-position:left center;width:auto;max-width:124px;height:auto;max-height:54px;display:block}.certification-copy{padding:26px 0 24px}.certification-copy h3{max-width:410px;font-size:clamp(1.25rem,2.2vw,1.65rem);line-height:1.2}.certification-copy p{color:var(--muted);margin-top:10px;font-size:.92rem;line-height:1.5}.certification-skills{flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0;list-style:none;display:flex}.certification-skills li{border:1px solid var(--border);background:var(--surface-strong);width:fit-content;min-height:26px;color:var(--muted-strong);border-radius:999px;padding:5px 10px;font-size:.78rem;font-weight:500}.certifications-profile-link{align-self:flex-end}.credential-link,.credential-recorded{width:fit-content;min-height:44px;color:var(--accent);align-items:center;gap:9px;font-size:.92rem;font-weight:760;display:inline-flex}.credential-link svg{width:16px;height:16px}.credential-link:hover,.credential-link:focus-visible{text-underline-offset:.22em;text-decoration:underline}.credential-recorded{color:var(--muted)}.credential-recorded svg{width:18px;height:18px}.accessibility{background:var(--surface);grid-template-columns:52px minmax(0,.95fr) minmax(300px,1fr);gap:clamp(18px,3vw,34px);padding:clamp(20px,3vw,28px)}.access-mark{background:var(--accent);width:44px;height:44px;color:var(--bg);border-radius:999px;place-items:center;font-size:1.8rem;font-weight:700;display:grid}.accessibility h2{letter-spacing:-.04em;font-size:clamp(1.55rem,2.4vw,2.15rem)}.accessibility p{max-width:640px;margin-top:10px;font-size:.96rem;line-height:1.55}.check-list{color:var(--muted);grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.check-list li{border:1px solid var(--border);background:var(--surface-strong);border-radius:999px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;min-height:36px;padding:6px 12px;font-size:.86rem;display:grid}.check-list span{color:var(--accent-2);letter-spacing:.08em;font-size:.72rem;font-weight:700}.contact{position:relative}.contact-heading{justify-content:space-between;align-items:end;gap:32px;max-width:none;display:flex}.contact-heading>div{max-width:560px}.contact-heading .contact-availability{color:var(--muted);white-space:nowrap;align-items:center;gap:9px;margin:0 0 4px;font-size:.84rem;display:flex}.contact-availability>span{background:var(--accent-2);border-radius:999px;flex:none;width:8px;height:8px}.contact-home-panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);justify-content:space-between;align-items:center;gap:clamp(22px,5vw,68px);padding:clamp(24px,4vw,38px);display:flex}.contact-home-panel h3{letter-spacing:-.04em;font-size:clamp(1.6rem,3vw,2.6rem);line-height:1.16}.contact-home-panel p{max-width:560px}.contact-home-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;gap:12px;display:flex}.contact-page-header{z-index:20;border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);position:sticky;top:0}.contact-page-nav{width:min(var(--max), calc(100% - (var(--gutter) * 2)));grid-template-columns:220px minmax(0,1fr) auto;align-items:center;gap:24px;min-height:92px;margin:0 auto;display:grid}.contact-page-nav-links{color:var(--muted);justify-content:center;gap:clamp(22px,3vw,42px);font-size:.95rem;display:flex}.contact-page-nav-links a{padding:8px 0;position:relative}.contact-page-nav-links a:after{content:"";transform-origin:0;background:currentColor;height:1px;transition:transform .18s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.contact-page-nav-links a:hover:after,.contact-page-nav-links a:focus-visible:after,.contact-page-nav-links a[aria-current=page]:after{transform:scaleX(1)}.contact-page{padding-bottom:clamp(54px,8vw,96px)}.contact-page-hero{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,.95fr) minmax(420px,.78fr);align-items:center;gap:clamp(42px,7vw,112px);min-height:calc(100svh - 92px);padding:clamp(64px,8vw,110px) 0;display:grid}.contact-page-copy{max-width:760px}.contact-page-copy h1{margin-top:0}.contact-page-copy>p{max-width:680px;color:var(--muted);margin-top:28px;font-size:clamp(1.04rem,1.4vw,1.2rem);line-height:1.55}.contact-page-back{width:fit-content;color:var(--muted);align-items:center;gap:9px;font-size:.9rem;font-weight:740;display:inline-flex}.contact-page-back svg{width:17px;height:17px;transition:transform .18s}.contact-page-back:hover svg,.contact-page-back:focus-visible svg{transform:translate(-3px)}.contact-page-email{color:var(--text);margin-top:30px;font-size:1rem;font-weight:500}.contact-page-availability{color:var(--muted);margin-top:24px;font-size:1rem;line-height:1.5}.contact-page-workspace{grid-template-columns:minmax(0,1fr);align-items:start;gap:clamp(34px,6vw,86px);padding-top:clamp(56px,8vw,96px);display:grid}.contact-page-form-panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-width:0;padding:clamp(24px,4vw,36px)}.contact-page-rail{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;min-width:0;display:grid}.contact-page-rail-section{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:24px}.contact-page-rail-section h2{margin:0 0 16px;font-size:1rem;line-height:1.2}.contact-page-notes{color:var(--muted);gap:13px;margin:0;padding:0;font-size:.94rem;line-height:1.55;list-style:none;display:grid}.contact-page-notes li{padding-left:18px;position:relative}.contact-page-notes li:before{background:var(--accent-3);content:"";border-radius:999px;width:6px;height:6px;position:absolute;top:.68em;left:0}.contact-layout{grid-template-columns:minmax(0,1.45fr) minmax(260px,.55fr);align-items:start;gap:clamp(28px,4.5vw,56px);display:grid}.contact-options h3{margin:0 0 16px;font-size:.95rem}.contact-options>p{color:var(--muted);margin:18px 0 0;font-size:.8rem;line-height:1.55}.contact-links{border-top:1px solid var(--border)}.contact-links a{border-bottom:1px solid var(--border);min-height:54px;color:var(--muted);grid-template-columns:24px minmax(60px,.55fr) minmax(0,1fr) auto;align-items:center;gap:9px;transition:color .18s,padding-left .18s;display:grid}.contact-links a:hover{color:var(--accent);padding-left:4px}.contact-links svg{width:17px;height:17px}.contact-links span{color:var(--muted);font-size:.8rem}.contact-links strong{min-width:0;color:var(--text);overflow-wrap:anywhere;font-size:.82rem;font-weight:700}.contact-form{min-width:0;padding:6px 0 0;position:relative}.contact-form-header{justify-content:space-between;align-items:baseline;gap:24px;margin:0 0 32px;padding:0;display:flex}.contact-form-header h3{margin:0;font-size:1.12rem;line-height:1.16}.contact-form-header>p{color:var(--muted);white-space:nowrap;margin:0;font-size:.78rem;font-weight:680}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px clamp(22px,4vw,36px);padding:0;display:grid}.form-field{gap:8px;display:grid}.form-field-wide{grid-column:1/-1}.form-field label,.consent-fields legend{color:var(--muted-strong);letter-spacing:.14em;text-transform:uppercase;font-size:.72rem;font-weight:500}.form-field label span{color:var(--accent-2)}.form-field input,.form-field textarea{border:1px solid var(--border);background:var(--surface-strong);width:100%;color:var(--text);font:inherit;border-radius:14px;font-size:.98rem;line-height:1.5;transition:background .18s,border-color .18s,box-shadow .18s}.form-field input{min-height:54px;padding:14px 16px}.form-field textarea{resize:vertical;min-height:152px;padding:14px 16px}.form-field input::placeholder,.form-field textarea::placeholder{color:color-mix(in srgb, var(--muted) 68%, transparent)}.form-field input:focus-visible,.form-field textarea:focus-visible{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 8%, transparent);outline:0}.field-hint{color:var(--muted);margin:0;font-size:.8rem;line-height:1.5}.spam-field{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.form-verification{grid-template-columns:minmax(0,1.1fr) minmax(230px,.9fr);gap:16px;margin-top:30px;padding:0;display:grid}.consent-fields{border:1px solid var(--border);background:var(--surface-strong);border-radius:18px;gap:10px;margin:0;padding:18px;display:grid}.consent-fields legend{margin:0 0 14px;padding:0}.checkbox-field{color:var(--muted);grid-template-columns:20px minmax(0,1fr);align-items:start;gap:10px;font-size:.86rem;line-height:1.55;display:grid}.checkbox-field input{width:18px;height:18px;accent-color:var(--accent);margin-top:2px}.checkbox-field a{color:var(--accent);text-underline-offset:.2em;font-weight:750;text-decoration:underline}.turnstile-field{border:1px solid var(--border);background:var(--surface-strong);border-radius:18px;align-content:start;gap:12px;min-height:100%;padding:18px;display:grid}.turnstile-heading{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.turnstile-heading>span{color:var(--muted);font-size:.7rem}.turnstile-label{color:var(--text);margin:0;font-size:.82rem;font-weight:780}.turnstile-field iframe{max-width:100%}.turnstile-unavailable{border-left:3px solid var(--accent-3);color:var(--muted);background:0 0;margin:0;padding:2px 0 2px 12px;font-size:.86rem;line-height:1.5}.form-actions{align-items:center;gap:18px;margin-top:28px;padding:0;display:flex}.form-actions .primary-button:disabled{cursor:not-allowed;opacity:.58}.form-actions .primary-button{flex:none;min-width:164px}.contact-page-form-panel .form-actions{gap:12px;display:grid}.contact-page-form-panel .form-actions .primary-button{width:100%}.contact-page-form-panel .form-verification{grid-template-columns:1fr}.form-status{min-height:0;color:var(--accent-2);margin:0;font-size:.88rem;font-weight:700}.form-status.is-error{color:#a32f2f}.form-action-copy{min-width:0}.form-action-copy>p:last-child{color:var(--muted);margin:4px 0 0;font-size:.76rem;line-height:1.4}.contact-confirmation{border-top:4px solid var(--accent-2);grid-template-columns:64px minmax(0,1fr);align-items:start;gap:22px;min-width:0;padding:clamp(24px,4vw,34px) 0 0;display:grid}.confirmation-mark{border:1px solid color-mix(in srgb, var(--accent-2) 34%, var(--border));background:color-mix(in srgb, var(--accent-soft) 76%, var(--bg));width:58px;height:58px;color:var(--accent-2);border-radius:999px;place-items:center;display:grid}.confirmation-copy{min-width:0}.confirmation-eyebrow{color:var(--accent-2);letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px;font-size:.78rem;font-weight:820}.confirmation-copy h3{max-width:620px;color:var(--text);margin:0;font-size:clamp(1.6rem,3vw,2.2rem);line-height:1.08}.confirmation-copy p:last-child{max-width:610px;color:var(--muted);margin-top:14px;font-size:1rem;line-height:1.65}.confirmation-next{border-top:1px solid var(--border);grid-column:2;align-items:center;gap:16px;margin-top:6px;padding-top:20px;display:flex}.confirmation-next p{color:var(--muted);margin:0;font-size:.88rem}.site-footer{color:#9a9a9a;background:#111;margin-top:0}.footer-shell,.footer-bottom{width:min(1200px, calc(100% - (var(--gutter) * 2)));margin:0 auto}.footer-shell{padding:clamp(74px,8vw,98px) 0 68px}.footer-top{grid-template-columns:minmax(280px,1fr) minmax(320px,.55fr);align-items:start;gap:clamp(64px,17vw,320px);display:grid}.footer-name{color:#fafafa;letter-spacing:-.04em;width:fit-content;font-family:PP Neue Montreal,Reframer Inter,sans-serif;font-size:1.5rem;font-weight:500;line-height:1;display:inline-flex}.footer-brand p{color:#9a9a9a;max-width:330px;margin-top:24px;font-size:.94rem;line-height:1.6}.footer-email{color:#9a9a9a;width:fit-content;margin-top:26px;font-size:.94rem;line-height:1.4;display:inline-flex}.footer-location{color:#9a9a9a;letter-spacing:.12em;text-transform:uppercase;margin-top:24px;font-size:.82rem;line-height:1.4}.footer-link-groups{grid-template-columns:repeat(2,minmax(120px,1fr));gap:clamp(48px,8vw,92px);display:grid}.footer-column{flex-direction:column;align-items:flex-start;gap:20px;display:flex}.footer-column h2{color:#9a9a9a;letter-spacing:.14em;text-transform:uppercase;margin:0 0 2px;font-size:.74rem;font-weight:500;line-height:1.2}.footer-column a{color:#9a9a9a;font-size:.94rem;line-height:1.5}.footer-name:hover,.footer-name:focus-visible,.footer-email:hover,.footer-email:focus-visible,.footer-column a:hover,.footer-column a:focus-visible{color:#fafafa;text-underline-offset:.22em;text-decoration:underline}.footer-bottom{color:#9a9a9a;border-top:1px solid #2a2a2a;justify-content:space-between;align-items:center;gap:24px;min-height:88px;font-size:.82rem;line-height:1.4;display:flex}.footer-bottom-links{flex-wrap:wrap;justify-content:flex-end;gap:18px;display:flex}.footer-bottom-links a{color:#9a9a9a}.footer-bottom-links a:hover,.footer-bottom-links a:focus-visible{color:#fafafa;text-underline-offset:.22em;text-decoration:underline}.legal-header{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 94%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.legal-header-shell{width:min(var(--max), calc(100% - (var(--gutter) * 2)));justify-content:space-between;align-items:center;gap:24px;min-height:78px;margin:0 auto;display:flex}.legal-header-shell img{width:200px;height:auto;display:block}.legal-home-link{border:1px solid var(--border-strong);min-height:44px;color:var(--text);border-radius:6px;padding:11px 16px;font-size:.9rem;font-weight:740}.legal-main{width:min(1120px, calc(100% - (var(--gutter) * 2)));margin:0 auto;padding:clamp(54px,8vw,88px) 0}.legal-intro{border-bottom:1px solid var(--border);max-width:780px;padding-bottom:42px}.legal-updated{color:var(--muted);margin-top:18px;font-size:.88rem}.legal-intro h1{font-size:clamp(2.8rem,6vw,4.6rem);line-height:1}.legal-intro>p:last-child{max-width:690px;color:var(--muted);margin-top:18px;font-size:1.02rem;line-height:1.65}.legal-layout{grid-template-columns:220px minmax(0,720px);align-items:start;gap:clamp(48px,7vw,92px);padding-top:42px;display:grid}.legal-toc{max-height:calc(100vh - 64px);padding-right:16px;position:sticky;top:32px;overflow-y:auto}.legal-toc>p,.legal-toc-mobile summary{color:var(--text);text-transform:uppercase;letter-spacing:.08em;font-size:.82rem;font-weight:760}.legal-toc ol,.legal-toc-mobile ol{margin:16px 0 0;padding:0;list-style:none}.legal-toc li+li,.legal-toc-mobile li+li{margin-top:9px}.legal-toc a,.legal-toc-mobile a{color:var(--muted);font-size:.86rem;line-height:1.4;display:block}.legal-toc a:hover,.legal-toc a:focus-visible,.legal-toc-mobile a:hover,.legal-toc-mobile a:focus-visible{color:var(--accent)}.legal-toc-mobile{display:none}.legal-content{min-width:0}.legal-content section{border-bottom:1px solid var(--border);padding:0 0 40px;scroll-margin-top:28px}.legal-content section+section{padding-top:40px}.legal-content h2{font-size:clamp(1.3rem,2.5vw,1.65rem);line-height:1.2}.legal-content p,.legal-content li{color:var(--muted);font-size:1rem;line-height:1.75}.legal-content p{margin-top:14px}.legal-content ul{margin:14px 0 0;padding-left:24px}.legal-content li+li{margin-top:7px}.legal-content strong{color:var(--text)}.legal-content a{color:var(--accent);text-underline-offset:.2em;font-weight:700;text-decoration:underline}.writing-main{width:min(920px, calc(100% - (var(--gutter) * 2)));min-height:70vh;margin:0 auto;padding:clamp(54px,8vw,88px) 0}.writing-intro{border-bottom:1px solid var(--border);max-width:760px;padding-bottom:40px}.eyebrow{color:var(--accent);text-transform:uppercase;letter-spacing:.11em;margin:0 0 14px;font-size:.78rem;font-weight:800}.writing-intro h1,.article-header h1{letter-spacing:-.045em;font-size:clamp(2.8rem,7vw,4.8rem);line-height:1.02}.writing-intro>p:last-child{max-width:680px;color:var(--muted);margin-top:18px;font-size:1.04rem;line-height:1.7}.writing-list{gap:20px;padding-top:42px;display:grid}.writing-card{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:8px;padding:clamp(24px,4vw,34px)}.writing-card-meta,.article-meta{color:var(--muted);flex-wrap:wrap;gap:10px 18px;font-size:.83rem;display:flex}.writing-card h2{margin-top:14px;font-size:clamp(1.45rem,3vw,2rem)}.writing-card h2 a:hover,.writing-card h2 a:focus-visible{color:var(--accent)}.writing-card>p{max-width:710px;color:var(--muted);margin-top:12px;line-height:1.7}.writing-topics{flex-wrap:wrap;gap:8px;margin:18px 0 22px;padding:0;list-style:none;display:flex}.writing-topics li{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:5px 10px;font-size:.76rem;font-weight:700}.writing-article{max-width:760px;margin:0 auto}.writing-back{color:var(--accent);margin-bottom:38px;font-size:.9rem;font-weight:750;display:inline-flex}.article-header{border-bottom:1px solid var(--border);padding-bottom:36px}.article-meta{margin-top:18px}.article-summary{color:var(--muted);margin-top:24px;font-size:1.08rem;line-height:1.75}.writing-article>h2{margin-top:48px;font-size:clamp(1.55rem,3vw,2rem)}.writing-article>p,.writing-article>ol,.writing-article>ul{color:var(--muted);margin-top:18px;line-height:1.8}.writing-article>ol,.writing-article>ul{padding-left:24px}.writing-article li+li{margin-top:8px}.writing-article strong{color:var(--text)}.writing-article pre{border:1px solid var(--border);color:#f5f2fa;background:#17131f;border-radius:8px;margin-top:22px;padding:20px;font-size:.86rem;line-height:1.7;overflow-x:auto}.writing-article code{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace}.reading-progress{z-index:50;background:0 0;height:4px;position:fixed;top:0;left:0;right:0}.reading-progress span{background:var(--accent);height:100%;transition:width .1s linear;display:block}.article-toc{border:1px solid var(--border);background:var(--surface);border-radius:8px;max-width:760px;margin:0 auto 36px;padding:22px 24px}.article-toc>p{color:var(--text);text-transform:uppercase;letter-spacing:.09em;margin:0;font-size:.8rem;font-weight:800}.article-toc ol{color:var(--muted);gap:8px;margin:14px 0 0;padding-left:20px;font-size:.9rem;line-height:1.5;display:grid}.article-toc a:hover,.article-toc a:focus-visible{color:var(--accent);text-underline-offset:.2em;text-decoration:underline}.code-block{margin-top:22px;position:relative}.code-block .writing-article pre,.writing-article .code-block pre{margin-top:0;padding-top:52px}.code-copy-button{color:#fff;min-height:32px;font:inherit;background:#2c2340;border:1px solid #6e667b;border-radius:5px;padding:5px 10px;font-size:.76rem;font-weight:750;position:absolute;top:12px;right:12px}.related-articles{border-top:1px solid var(--border);max-width:760px;margin:52px auto 0;padding-top:36px}.related-articles h2{font-size:clamp(1.45rem,3vw,1.9rem)}.related-articles>div{gap:14px;margin-top:18px;display:grid}.related-articles a{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:6px;padding:20px;display:grid}.related-articles a:hover,.related-articles a:focus-visible{border-color:var(--accent)}.related-articles strong{color:var(--text)}.related-articles span{color:var(--muted);font-size:.9rem;line-height:1.6}.error-header{width:min(var(--max), calc(100% - (var(--gutter) * 2)));border-bottom:1px solid var(--border);align-items:center;min-height:82px;margin:0 auto;display:flex}.error-header img{width:200px;height:auto;display:block}.error-main{width:min(1080px, calc(100% - (var(--gutter) * 2)));grid-template-columns:minmax(320px,.95fr) minmax(320px,.75fr);align-items:center;gap:clamp(40px,7vw,90px);min-height:calc(100vh - 390px);margin:0 auto;padding:clamp(54px,8vw,96px) 0;display:grid}.error-visual{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.error-visual img{width:100%;height:auto;display:block}.error-copy{text-align:left;align-self:center}.error-label{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin:0 0 12px;font-size:.8rem;font-weight:800}.error-copy h1{margin:0;font-size:clamp(2.5rem,6vw,4.5rem);line-height:1.02}.error-copy>p:not(.error-label){max-width:520px;color:var(--muted);margin-top:20px;font-size:1.05rem;line-height:1.65}.error-actions{flex-wrap:wrap;gap:14px;margin-top:30px;display:flex}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.section-reveal{animation:.7s ease-in-out both reveal;animation-timeline:view();animation-range:entry cover 28%}@keyframes reveal{0%{opacity:.001;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}@keyframes media-appear{0%{opacity:.001;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}@media (max-width:1100px){.nav-shell,.contact-page-nav{grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:14px 0}.menu-button{display:inline-flex}.nav-links{border-top:1px solid var(--border);flex-wrap:wrap;grid-column:1/-1;justify-content:flex-start;gap:10px 18px;padding-top:12px;display:none}.nav-links[data-open=true]{display:flex}.nav-links a{min-height:40px}.header-actions{flex-wrap:wrap;grid-column:1/-1;justify-content:flex-start;padding-bottom:4px}.contact-page-nav-links{border-top:1px solid var(--border);flex-wrap:wrap;grid-area:2/1/auto/-1;justify-content:flex-start;gap:10px 18px;padding-top:12px}.hero,.about,.accessibility{grid-template-columns:1fr}.hero{min-height:auto}.hero-media{position:relative;top:auto}.timeline,.project-grid,.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-layout,.contact-page-hero,.contact-page-workspace{grid-template-columns:1fr}.contact-page-hero{min-height:auto}.contact-page-summary{max-width:620px}.contact-page-rail{grid-template-columns:1fr}.contact-home-panel{flex-direction:column;align-items:flex-start}.contact-home-actions{justify-content:flex-start}.timeline:before{display:none}.timeline-card{min-height:0}.timeline-dot{top:18px;left:auto;right:18px}.footer-top{gap:clamp(48px,10vw,96px)}.legal-layout{grid-template-columns:190px minmax(0,1fr);gap:44px}.error-main{width:min(680px, calc(100% - (var(--gutter) * 2)));grid-template-columns:1fr}.error-visual{width:min(100%,560px);margin:0 auto}.error-copy{text-align:center}.error-copy>p:not(.error-label){margin-left:auto;margin-right:auto}.error-actions{justify-content:center}}@media (max-width:720px){:root{--gutter:18px}html{scroll-padding-top:148px}.contact-button{min-width:100px}.brand-banner{display:none}.brand-square{display:block}.contact-page-nav{grid-template-columns:minmax(0,1fr) auto}.contact-page-nav>.contact-button{width:auto;min-width:96px}.contact-page-nav-links{display:none}.access-dock{bottom:18px}.access-tab{justify-content:center;width:52px;min-height:48px;padding:0}.access-tab span{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.access-panel{width:calc(100vw - 36px);max-height:min(520px,100vh - 120px);bottom:62px;left:0;overflow-y:auto}.tool-grid,.theme-grid{grid-template-columns:1fr}.hero{padding-top:34px}h1{font-size:clamp(2.65rem,12vw,3rem);line-height:1.04}.primary-button,.secondary-button{width:100%}.timeline,.project-grid,.skills-grid,.certification-grid,.check-list,.form-grid{grid-template-columns:1fr}.form-field-wide{grid-column:auto}.form-verification{grid-template-columns:1fr}.turnstile-field{padding:18px}.form-actions{gap:12px;display:grid}.contact-confirmation{grid-template-columns:1fr}.confirmation-next{grid-column:auto;display:grid}.form-actions .primary-button{width:100%}.section-heading.wide{display:block}.project-card{min-height:0}.accessibility{padding:24px}.contact-form-header{display:block}.contact-form-header>p{margin-top:10px}.contact-page{padding-bottom:48px}.contact-page-hero{padding-top:36px}.contact-page-copy h1{margin-top:0}.contact-page-workspace{gap:34px;padding-top:34px}.contact-home-actions{width:100%}.contact-heading{display:block}.contact-heading .contact-availability{white-space:normal;margin-top:18px}.site-footer{margin-top:0}.footer-shell{padding:58px 0 42px}.footer-top{grid-template-columns:1fr;gap:44px}.footer-brand p{max-width:340px}.footer-link-groups{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}.footer-column{gap:14px}.footer-bottom{justify-content:stretch;gap:16px;min-height:0;padding:24px 0;display:grid}.footer-bottom-links{justify-content:flex-start;gap:14px;padding-left:54px}.legal-header-shell{min-height:70px}.legal-header-shell img{width:150px}.legal-home-link{padding-inline:12px;font-size:.82rem}.legal-intro{padding-bottom:30px}.legal-layout{padding-top:30px;display:block}.legal-toc{display:none}.legal-toc-mobile{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-top:24px;padding:15px 16px;display:block}.legal-toc-mobile summary{cursor:pointer}.legal-toc-mobile[open] summary{border-bottom:1px solid var(--border);padding-bottom:14px}.legal-toc-mobile ol{padding-bottom:4px}.legal-content section{padding-bottom:32px}.legal-content section+section{padding-top:32px}.error-header{min-height:70px}.error-header img{width:150px}.error-main{gap:30px;min-height:auto;padding:40px 0 64px}.error-copy h1{font-size:clamp(2.3rem,12vw,3.2rem)}.error-copy>p:not(.error-label){margin-top:16px;font-size:.98rem}.error-actions .primary-button,.error-actions .secondary-button{width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.section-reveal{opacity:1;transform:none;animation:none!important}}html[data-motion=reduced]{scroll-behavior:auto}html[data-motion=reduced] *,html[data-motion=reduced] :before,html[data-motion=reduced] :after{transition:none!important;animation:none!important}
