:root{--site-nav-height:72px}.site-nav{position:relative;z-index:1;flex-shrink:0;background:var(--bg,#0b0d10);border-bottom:1px solid rgba(45,212,191,.16)}.site-nav__menu{display:flex;align-items:center;list-style:none;margin:0;padding:.75rem 1.5rem;gap:1rem}.site-nav__item--logo{margin-right:auto}.site-nav__logo{max-height:48px;display:block}.site-nav__item a{color:#9aa4ab;text-decoration:none;font-family:var(--font-mono,"IBM Plex Mono","Courier New",monospace);font-size:.85rem;transition:color .15s ease}.site-nav__item a:hover{color:#2dd4bf}@media (max-width:480px){:root{--site-nav-height:56px}.site-nav__menu{padding:.5rem 1rem;gap:.75rem}.site-nav__logo{max-height:40px}}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/fb526027db1fc1ae-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/4da3161b738b07dd-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/af4bf8399d1aacdf-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Fraunces Fallback;src:local("Times New Roman");ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.00%;size-adjust:115.45%}.__className_eb41fe{font-family:Fraunces,Fraunces Fallback;font-style:normal}.__variable_eb41fe{--font-fraunces:"Fraunces","Fraunces Fallback"}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans Fallback;src:local("Arial");ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.00%;size-adjust:101.17%}.__className_1bc20f{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.__variable_1bc20f{--font-sans:"IBM Plex Sans","IBM Plex Sans Fallback"}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/58f386aa6b1a2a92-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/011e180705008d6f-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7ba5fb2a8c88521c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/92eeb95d069020cc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/d3ebbfd689654d3a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ef4d5661765d0e49-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/d29838c109ef09b4-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e40af3453d7c920a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/99dcf268bda04fe5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/98e207f02528a563-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono Fallback;src:local("Arial");ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.00%;size-adjust:134.59%}.__className_46fe82{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.__variable_46fe82{--font-mono:"IBM Plex Mono","IBM Plex Mono Fallback"}.home-page{--bg:#0b0d10;--surface:#14181c;--surface-border:rgba(45,212,191,0.16);--surface-border-hover:rgba(45,212,191,0.4);--text:#f2f4f5;--text-muted:#9aa4ab;--accent:#2dd4bf;--accent-soft:rgba(45,212,191,0.12);--warm:#e8b366;--color-bg:var(--bg);--color-surface:rgba(20,24,28,0.55);--color-border:var(--surface-border);--color-accent:var(--warm);--font-display:var(--font-fraunces),Georgia,serif;--font-body:var(--font-sans),-apple-system,sans-serif;--font-mono:var(--font-mono),"Courier New",monospace;--space-1:8px;--space-2:16px;--space-3:24px;--space-4:40px;--space-5:64px;--space-6:96px;background:var(--bg);color:var(--text);font-family:var(--font-body);min-height:100vh}.home-page *{box-sizing:border-box}.home-page--error{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);position:relative;z-index:1;background:var(--bg)}.home-page--error button{font-family:var(--font-mono);background:transparent;border:1px solid var(--surface-border-hover);color:var(--accent);padding:var(--space-1) var(--space-2);border-radius:4px;cursor:pointer}.home-page--error button:hover{background:var(--accent-soft)}.eyebrow{font-family:var(--font-mono);font-size:.8rem;color:var(--accent);letter-spacing:.02em;margin:0 0 var(--space-1)}.section{max-width:1080px;margin:0 auto;padding:var(--space-6) var(--space-3) 0;position:relative;z-index:1}.section:last-of-type{padding-bottom:var(--space-6)}.section__title{font-family:var(--font-display);font-weight:600;font-size:clamp(1.75rem,3vw,2.5rem);margin:0 0 var(--space-4)}.hero{position:relative;min-height:calc(100svh - var(--site-nav-height, 72px));display:flex;align-items:center;justify-content:center;overflow:hidden}.hero__backdrop{position:absolute;inset:0}.hero__backdrop--gradient{background:radial-gradient(ellipse at 70% 20%,rgba(45,212,191,.14),transparent 55%),radial-gradient(ellipse at 20% 80%,rgba(232,179,102,.1),transparent 55%)}.hero__backdrop--photo{background-image:linear-gradient(180deg,rgba(11,13,16,.55) 0,rgba(11,13,16,.85) 100%),var(--hero-image);background-size:cover;background-position:50%}.hero__content{position:relative;z-index:1;text-align:center;padding:var(--space-3);animation:hero-in .7s ease-out}@keyframes hero-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.hero__headline{font-family:var(--font-display);font-weight:600;font-style:italic;font-size:clamp(2.5rem,7vw,5rem);margin:var(--space-1) 0;min-height:1.2em}.hero__scroll{font-family:var(--font-mono);background:transparent;border:1px solid var(--surface-border-hover);color:var(--text);padding:var(--space-1) var(--space-3);border-radius:999px;cursor:pointer;font-size:.85rem;transition:background .15s ease,border-color .15s ease}.hero__scroll:hover{background:var(--accent-soft);border-color:var(--accent)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:var(--space-3);gap:var(--space-3)}.project-card{background:var(--color-surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--surface-border);border-radius:8px;overflow:hidden;transition:transform .18s ease,border-color .18s ease}.project-card:hover{transform:translateY(-4px);border-color:var(--surface-border-hover)}.project-card__media{aspect-ratio:16/10;background:#0e1114;overflow:hidden}.project-card__media img,.project-card__media video{width:100%;height:100%;object-fit:cover;display:block}.project-card__media-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:2.5rem;color:var(--surface-border-hover);background:linear-gradient(135deg,var(--accent-soft),transparent)}.project-card__body{padding:var(--space-3)}.project-card__body h3{font-family:var(--font-display);font-size:1.15rem;margin:0 0 var(--space-1)}.project-card__body p{color:var(--text-muted);font-size:.92rem;line-height:1.5;margin:0 0 var(--space-2)}.tag-list{list-style:none;display:flex;flex-wrap:wrap;gap:6px;padding:0;margin:0 0 var(--space-1)}.tag-list li{font-size:.72rem;background:var(--accent-soft);padding:2px 8px;border-radius:999px}.project-card__link,.tag-list li{font-family:var(--font-mono);color:var(--accent)}.project-card__link{display:inline-flex;align-items:center;gap:4px;font-size:.82rem;text-decoration:none}.project-card__link:hover{text-decoration:underline}.skill-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:var(--space-2);gap:var(--space-2)}.skill-card{background:var(--color-surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--surface-border);border-radius:8px;padding:var(--space-3)}.skill-card h3{font-family:var(--font-display);font-size:1.05rem;margin:0 0 var(--space-1)}.skill-card__list{color:var(--text-muted);font-size:.92rem;line-height:1.6;margin:0}.skill-card__note{color:var(--accent);font-family:var(--font-mono);font-size:.8rem}.experience-list{display:flex;flex-direction:column;gap:var(--space-3);border-left:1px solid var(--surface-border);padding-left:var(--space-3)}.experience-item{display:grid;grid-template-columns:140px 1fr;grid-gap:var(--space-3);gap:var(--space-3);position:relative}.experience-item:before{content:"";position:absolute;left:calc(-1 * var(--space-3) - 5px);top:6px;width:9px;height:9px;border-radius:50%;background:var(--accent)}.experience-item__dates{font-family:var(--font-mono);font-size:.8rem;color:var(--text-muted)}.experience-item__content h3{font-family:var(--font-display);font-size:1.15rem;margin:0 0 4px}.experience-item__org{color:var(--accent);font-size:.88rem;margin:0 0 var(--space-1)}.experience-item__content ul{margin:0;padding-left:1.1em;color:var(--text-muted);font-size:.92rem;line-height:1.6}.cert-list{display:flex;flex-direction:column}.cert-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px solid var(--surface-border);color:var(--text);text-decoration:none}.cert-row--link:hover{color:var(--accent)}.cert-row__title{font-weight:500}.cert-row__meta{font-family:var(--font-mono);font-size:.82rem;color:var(--text-muted)}.contact-grid{display:grid;grid-template-columns:1fr 1.2fr;grid-gap:var(--space-4);gap:var(--space-4);align-items:start}.contact-info__socials{display:flex;gap:var(--space-2);margin-bottom:var(--space-3)}.contact-info__socials a{color:var(--text-muted);transition:color .15s ease}.contact-info__socials a:hover{color:var(--accent)}.contact-info h3{font-family:var(--font-display);font-size:1rem;margin:0 0 4px}.contact-info__email{color:var(--accent);text-decoration:none;font-family:var(--font-mono);font-size:.92rem}.contact-info__footer{margin-top:var(--space-4);color:var(--text-muted);font-size:.8rem}.contact-form{background:var(--color-surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--surface-border);border-radius:8px;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.contact-form__intro{color:var(--text-muted);font-size:.92rem;margin:0 0 var(--space-1)}.contact-form input,.contact-form textarea{background:var(--bg);border:1px solid var(--surface-border);border-radius:6px;color:var(--text);font-family:var(--font-body);font-size:.92rem;padding:var(--space-1) var(--space-2);resize:vertical}.contact-form input:focus,.contact-form textarea:focus{outline:none;border-color:var(--accent)}.contact-form button{align-self:flex-start;background:var(--accent);color:#06231f;border:none;font-weight:600;padding:var(--space-1) var(--space-3);border-radius:6px;cursor:pointer;transition:opacity .15s ease}.contact-form button:hover{opacity:.88}.contact-form button:disabled{opacity:.5;cursor:default}.contact-form__status{font-size:.85rem;margin:0}.contact-form__status--ok{color:var(--accent)}.contact-form__status--err{color:#e77}.chat-widget__toggle{width:52px;height:52px;border-radius:50%;border:none;background:var(--accent);color:#06231f;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 20px rgba(45,212,191,.35);transition:transform .15s ease}.chat-widget__toggle:hover{transform:scale(1.05)}.chat-panel{width:min(340px,calc(100vw - 32px));height:min(460px,calc(100vh - 140px));background:var(--surface);border:1px solid var(--surface-border-hover);border-radius:12px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 12px 40px rgba(0,0,0,.5)}.chat-panel__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2);border-bottom:1px solid var(--surface-border);font-family:var(--font-mono);font-size:.85rem}.chat-panel__header button{background:none;border:none;color:var(--text-muted);cursor:pointer;display:flex}.chat-panel__header button:hover{color:var(--text)}.chat-panel__messages{flex:1 1;overflow-y:auto;padding:var(--space-2);display:flex;flex-direction:column;gap:var(--space-1);scrollbar-width:thin;scrollbar-color:rgba(45,212,191,.35) transparent}.chat-panel__messages::-webkit-scrollbar{width:6px}.chat-panel__messages::-webkit-scrollbar-track{background:transparent}.chat-panel__messages::-webkit-scrollbar-thumb{background:rgba(45,212,191,.28);border-radius:999px}.chat-panel__messages::-webkit-scrollbar-thumb:hover{background:rgba(45,212,191,.5)}.chat-bubble{max-width:85%;padding:8px 12px;border-radius:12px;font-size:.88rem;line-height:1.45}.chat-bubble--user{align-self:flex-end;background:var(--accent);color:#06231f;white-space:pre-wrap}.chat-bubble--assistant{align-self:flex-start;background:var(--bg);border:1px solid var(--surface-border);color:var(--text)}.chat-markdown>:first-child{margin-top:0}.chat-markdown>:last-child{margin-bottom:0}.chat-markdown p{margin:0 0 .55em}.chat-markdown ol,.chat-markdown ul{margin:.35em 0 .55em;padding-left:1.35em}.chat-markdown li{margin-bottom:.3em}.chat-markdown li:last-child{margin-bottom:0}.chat-markdown strong{font-weight:600;color:var(--text)}.chat-markdown em{font-style:italic}.chat-markdown code{font-family:var(--font-mono);font-size:.84em;padding:.1em .35em;border-radius:4px;background:var(--accent-soft)}.chat-markdown a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.chat-markdown a:hover{color:var(--warm)}.chat-bubble--typing{display:flex;gap:4px;align-items:center}.chat-bubble--typing span{width:5px;height:5px;border-radius:50%;background:var(--text-muted);animation:typing-bounce 1.1s ease-in-out infinite}.chat-bubble--typing span:nth-child(2){animation-delay:.15s}.chat-bubble--typing span:nth-child(3){animation-delay:.3s}@keyframes typing-bounce{0%,60%,to{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}.chat-bubble--settled{animation:chatSettle .15s ease forwards}@keyframes chatSettle{0%{opacity:.92}to{opacity:1}}.chat-word{display:inline;opacity:0;transform:translateY(3px);animation:chatWordIn .22s ease forwards}@keyframes chatWordIn{to{opacity:1;transform:translateY(0)}}.chat-section-links{display:flex;flex-wrap:wrap;gap:6px;align-self:flex-start;max-width:95%;margin-top:2px}.chat-section-link{background:transparent;border:1px solid var(--surface-border-hover);border-radius:999px;color:var(--accent);font-family:var(--font-body);font-size:.78rem;line-height:1.2;padding:5px 10px;text-decoration:none;transition:border-color .15s ease,color .15s ease,background .15s ease}.chat-section-link:hover{border-color:var(--accent);color:var(--text);background:var(--accent-soft)}.chat-panel__error{margin:0;padding:0 var(--space-2) var(--space-1);font-size:.82rem;line-height:1.4;color:#e77}.chat-panel__input{display:flex;gap:var(--space-1);padding:var(--space-2);border-top:1px solid var(--surface-border)}.chat-panel__input textarea{flex:1 1;resize:none;background:var(--bg);border:1px solid var(--surface-border);border-radius:6px;color:var(--text);font-family:var(--font-body);font-size:.88rem;padding:8px 10px;max-height:100px;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.chat-panel__input textarea::-webkit-scrollbar{display:none}.chat-panel__input textarea:focus{outline:none;border-color:var(--accent)}.chat-panel__input button{background:var(--accent);color:#06231f;border:none;border-radius:6px;width:38px;display:flex;align-items:center;justify-content:center;cursor:pointer}.chat-panel__input button:disabled{opacity:.4;cursor:default}@media (max-width:860px){.contact-grid,.experience-item,.skill-grid{grid-template-columns:1fr}.experience-item{gap:4px}}@media (max-width:480px){.chat-panel{width:calc(100vw - 24px)}}@media (prefers-reduced-motion:reduce){.chat-bubble--settled,.chat-bubble--typing span,.chat-word,.hero__content{animation:none!important}.chat-word{opacity:1;transform:none}.chat-section-link,.chat-widget__toggle,.hero__scroll,.project-card{transition:none!important}}.home-page a:focus-visible,.home-page button:focus-visible,.home-page input:focus-visible,.home-page textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.hero__grid{position:relative;z-index:2;display:grid;grid-template-columns:1.1fr .9fr;grid-gap:clamp(2rem,5vw,4rem);gap:clamp(2rem,5vw,4rem);align-items:center;max-width:1200px;margin:0 auto;padding:clamp(2rem,6vw,5rem) clamp(1.25rem,4vw,3rem);min-height:calc(100svh - var(--site-nav-height, 72px))}.hero__roles{font-family:var(--font-mono);font-size:clamp(.95rem,1.4vw,1.15rem);color:var(--color-accent,#e0a458);margin:.75rem 0 2rem;letter-spacing:.02em}.hero__chat{display:flex;align-items:stretch}@media (max-width:860px){.hero__grid{grid-template-columns:1fr;padding-top:4rem;min-height:auto}.hero__chat{min-height:420px}}.chat-panel--inline,.chat-widget--inline{width:100%;height:100%}.chat-panel--inline{position:static;min-height:420px;max-height:560px;display:flex;flex-direction:column;border-radius:18px;border:1px solid var(--color-border,rgba(224,164,88,.25));background:var(--color-surface,rgba(255,255,255,.03));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 30px 60px -30px rgba(0,0,0,.6);overflow:hidden}.chat-panel--inline .chat-panel__header{font-family:var(--font-mono);font-size:.85rem;letter-spacing:.03em;text-transform:lowercase;opacity:.85}.scroll-scene{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;perspective:1200px}.scroll-scene__stage{position:absolute;inset:0;transform-style:preserve-3d}.scroll-scene__plane{position:absolute;opacity:.32;color:var(--color-accent);will-change:transform}.scroll-scene__plane--grid{inset:-20% -20%;background-image:linear-gradient(rgba(232,179,102,.18) 1px,transparent 0),linear-gradient(90deg,rgba(232,179,102,.18) 1px,transparent 0);background-size:64px 64px;transform:rotateX(62deg) translateZ(calc(-200px + var(--scroll, 0) * 600px)) translateY(calc(var(--scroll, 0) * -700px));opacity:.22}.scroll-scene__plane--ring{top:8%;right:6%;width:min(46vw,460px);height:min(46vw,460px);fill:none;stroke:currentColor;stroke-width:1;transform:rotateY(calc(var(--scroll, 0) * 320deg)) rotateX(20deg) translateZ(calc(var(--scroll, 0) * -400px)) translateY(calc(var(--scroll, 0) * 260px))}.scroll-scene__plane--tri{bottom:4%;left:4%;width:min(28vw,260px);height:min(28vw,260px);fill:none;stroke:currentColor;stroke-width:1.4;transform:rotate(calc(var(--scroll, 0) * -260deg)) translateZ(calc(var(--scroll, 0) * 220px)) translateY(calc(var(--scroll, 0) * -320px))}.scroll-scene__plane--dots{top:40%;left:55%;width:min(30vw,300px);height:min(30vw,300px);fill:currentColor;transform:translateX(calc(var(--scroll, 0) * -220px)) translateY(calc(var(--scroll, 0) * 360px)) rotate(calc(var(--scroll, 0) * 90deg))}.scroll-top{position:fixed;left:1.25rem;bottom:1.25rem;z-index:40;width:38px;height:38px;border-radius:999px;border:1px solid var(--color-border,rgba(224,164,88,.3));background:rgba(12,12,14,.7);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--color-accent);display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;pointer-events:none;transition:box-shadow .25s ease}.scroll-top:hover{box-shadow:0 0 0 1px var(--color-accent),0 8px 20px -8px rgba(232,179,102,.5)}@media (max-width:860px){.scroll-top{left:.85rem;bottom:.85rem;width:34px;height:34px}}