:root{color-scheme:dark;--font-body:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--font-display:"Fraunces",ui-serif,Georgia,serif;--font-mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;--bg:#0b0c0e;--surface:#16181c;--surface-2:#1c1f24;--line:rgba(255,255,255,0.1);--line-strong:rgba(255,255,255,0.2);--text:#eceef0;--muted:#9ba1a8;--accent:#4fc7b8;--accent-soft:rgba(79,199,184,0.14);--accent-2:#d9a354;--accent-2-soft:rgba(217,163,84,0.14);font-family:var(--font-body);font-size:16px;background-color:var(--bg);color:var(--text);line-height:1.6}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}body{margin:0;min-height:100vh;background:linear-gradient(180deg,rgba(79,199,184,.05),transparent 12%),var(--bg)}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}.button:focus-visible,a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button,input,select,textarea{font:inherit}.site-header{position:-webkit-sticky;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem 1.5rem;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:rgba(11,12,14,.86);border-bottom:1px solid var(--line)}.site-brand{font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text)}.site-brand,.site-nav{font-family:var(--font-mono)}.site-nav{display:flex;flex-wrap:wrap;gap:1.3rem}.site-nav a{color:var(--muted);font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;transition:color .16s ease}.site-nav a:hover{color:var(--accent)}main{max-width:1170px;margin:0 auto;padding:2.5rem 1.5rem 4rem}.spec-card{position:relative;padding:1.75rem;background:var(--surface);border:1px solid var(--line)}.spec-card:after,.spec-card:before{content:"";position:absolute;width:14px;height:14px;border:1px solid var(--accent);opacity:.7;pointer-events:none}.spec-card:before{top:-1px;left:-1px;border-right:none;border-bottom:none}.spec-card:after{bottom:-1px;right:-1px;border-left:none;border-top:none}.hero-section{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.9fr);grid-gap:3rem;gap:3rem;align-items:start;padding:3.5rem 0 3rem}.hero-copy{max-width:640px}.eyebrow{margin:0 0 1.1rem;font-family:var(--font-mono);font-size:.82rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.hero-section h1{margin:0;font-family:var(--font-display);font-weight:500;font-size:clamp(2.4rem,4vw,3.6rem);line-height:1.1;letter-spacing:-.01em}.hero-section h1 em{font-style:italic;font-weight:500;color:var(--accent)}.hero-description{margin:1.5rem 0 0;max-width:620px;color:var(--muted);font-size:1.05rem}.hero-actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:2.25rem}.button{display:inline-flex;align-items:center;justify-content:center;padding:.85rem 1.5rem;border-radius:2px;border:1px solid var(--line-strong);font-family:var(--font-mono);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;transition:border-color .16s ease,color .16s ease,background-color .16s ease}.button.primary{background:var(--accent);border-color:var(--accent);color:#06110f}.button.primary:hover{background:transparent;color:var(--accent)}.button.secondary{background:transparent;color:var(--text)}.button.secondary:hover{border-color:var(--accent);color:var(--accent)}.hero-dossier{display:grid;grid-gap:1.5rem;gap:1.5rem}.dossier-photo-frame{border:1px solid var(--line);padding:.5rem}.hero-image{width:100%;height:auto;object-fit:cover;filter:grayscale(.15)}.dossier-rows{display:grid}.dossier-row{display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0;border-bottom:1px solid var(--line);font-size:.85rem}.dossier-row:last-child{border-bottom:none}.dossier-label{font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.08em;flex-shrink:0}.dossier-value{text-align:right;color:var(--text)}.section-block{margin-top:4.5rem;padding:3rem 0}.alt-background{background:var(--surface-2);padding:3rem 2rem}.section-heading{max-width:640px;display:flex;align-items:baseline;gap:1rem}.section-label{display:inline-block;font-family:var(--font-mono);color:var(--accent);text-transform:uppercase;letter-spacing:.14em;font-size:.78rem;white-space:nowrap}.section-heading h2{margin:0;font-family:var(--font-display);font-weight:500;font-size:clamp(1.7rem,2.2vw,2.4rem);line-height:1.15;padding-bottom:.35rem;border-bottom:1px solid var(--line);flex:1 1}.content-grid,.project-grid,.skills-grid{display:grid;grid-gap:1.5rem;gap:1.5rem}.project-grid{margin-top:2rem}.ai-grid,.project-grid{grid-template-columns:repeat(3,minmax(220px,1fr))}.project-card{display:flex;flex-direction:column}.project-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.9rem}.project-card h3{margin:0;font-family:var(--font-display);font-weight:500;font-size:1.2rem}.project-card p{margin:0 0 1.25rem;color:var(--muted)}.status-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .55rem;border:1px solid var(--accent-2);color:var(--accent-2);font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--accent-2);animation:pulse 1.8s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.tag-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:auto}.tag{font-size:.72rem;letter-spacing:.03em;padding:.4rem .6rem;border:1px solid var(--line);color:var(--muted)}.project-link,.tag{font-family:var(--font-mono);text-transform:uppercase}.project-link{display:inline-flex;align-items:center;gap:.4rem;margin-top:1.1rem;font-size:.78rem;letter-spacing:.04em;color:var(--accent)}.project-link:hover{text-decoration:underline}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.6rem;margin-top:2rem}.skill-pill{padding:.85rem 1rem;border:1px solid var(--line);background:var(--surface);color:var(--text);font-family:var(--font-mono);font-size:.78rem;letter-spacing:.03em;text-transform:uppercase;text-align:center}.timeline-list{margin-top:2rem;border-top:1px solid var(--line)}.timeline-card{display:grid;grid-template-columns:150px 1fr;grid-gap:1.75rem;gap:1.75rem;padding:1.9rem 0;border-bottom:1px solid var(--line)}.timeline-date{font-family:var(--font-mono);font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}.timeline-head h3{margin:0 0 1rem;font-family:var(--font-display);font-weight:500;font-size:1.3rem}.timeline-card ul{margin:0;padding-left:1.1rem;display:grid;grid-gap:.65rem;gap:.65rem}.timeline-card li{color:var(--muted)}.content-grid{grid-template-columns:1.3fr .9fr;gap:2rem;margin-top:2rem;align-items:start}.content-grid p{margin:0 0 1.5rem;color:var(--muted)}.about-panel strong{display:block;margin-bottom:1.1rem;font-family:var(--font-mono);font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.about-panel ul{list-style:none;margin:0;padding:0;display:grid;grid-gap:1rem;gap:1rem}.about-panel li{position:relative;padding-left:1.3rem;color:var(--text);font-size:.95rem}.about-panel li:before{content:"›";position:absolute;left:0;color:var(--accent)}.about-field{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--line)}.contact-block{margin-top:4.5rem}.contact-card{display:grid;grid-gap:1.5rem;gap:1.5rem;padding:2.5rem;background:var(--surface);border-top:2px solid var(--accent)}.contact-card h2{margin:0;font-family:var(--font-display);font-weight:500;font-size:clamp(1.8rem,2.4vw,2.6rem)}.contact-actions{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}.social-links{display:flex;gap:.75rem;flex-wrap:wrap}.social-link{padding:.85rem 1rem;border:1px solid var(--line);color:var(--text);font-family:var(--font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;transition:border-color .16s ease,color .16s ease}.social-link:hover{border-color:var(--accent);color:var(--accent)}.contact-card p{margin:0;color:var(--muted)}@media (max-width:980px){.ai-grid,.content-grid,.hero-section,.project-grid,.skills-grid{grid-template-columns:1fr}.hero-section{padding-top:2.5rem}.timeline-card{grid-template-columns:1fr;gap:.75rem}}@media (max-width:680px){.site-header{flex-direction:column;align-items:flex-start;gap:.75rem}.site-nav{width:100%;gap:.75rem 1rem}main{padding:1.75rem 1.25rem 3rem}.section-heading{flex-direction:column;align-items:flex-start;gap:.5rem}.section-heading h2{border-bottom:none;padding-bottom:0}.project-grid,.skills-grid{grid-template-columns:1fr}.boss-grid,.ffxiv-details{grid-template-columns:repeat(2,minmax(0,1fr))}.ffxiv-zone-image{display:none}.boss-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.section-block{padding:2.25rem 0}.button{width:100%}}.ffxiv-intro{max-width:640px;margin-bottom:2rem}.ffxiv-intro p{color:var(--muted);margin:0 0 .75rem}.ffxiv-card{width:100%;padding:1.75rem}.ffxiv-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1.5rem;margin-bottom:.25rem}.ffxiv-card-header h3{margin:.25rem 0 .5rem;font-family:var(--font-display);font-weight:500}.ffxiv-character-label{margin:0;font-family:var(--font-mono);font-size:.85rem;color:var(--accent)}.ffxiv-zone-image{height:72px;width:auto;object-fit:cover;opacity:.85;flex-shrink:0;border:1px solid var(--line)}.ffxiv-details{margin-top:2rem;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:1rem;gap:1rem}.ffxiv-stat{padding:1.1rem 1rem;border:1px solid var(--line);background:var(--surface)}.ffxiv-stat-label{display:block;font-family:var(--font-mono);color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.7rem}.ffxiv-stat-value{display:block;font-family:var(--font-display);font-size:1.5rem;font-weight:500;color:var(--text)}.ffxiv-error,.ffxiv-message,.ffxiv-note{margin-top:1.6rem;color:var(--muted);font-size:.9rem}.ffxiv-error{color:#ff9c9c}.boss-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:1rem;gap:1rem;margin-top:2rem}.boss-card{padding:1.1rem;border:1px solid var(--line);background:var(--surface);transition:border-color .16s ease;display:flex;flex-direction:column;gap:.75rem}.boss-card:hover{border-color:var(--line-strong)}.boss-badge{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--accent);font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.02em;color:var(--accent);flex-shrink:0}.boss-name{margin:0;font-size:.88rem;font-weight:600;color:var(--text);line-height:1.3}.boss-stats{display:grid;grid-gap:.5rem;gap:.5rem;margin-top:auto;font-family:var(--font-mono)}.boss-stat{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.boss-stat-label{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.boss-stat-value{font-size:.85rem}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/287637279c44650d-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/b387097da7407747-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/cb9f64d62d112b41-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_ae2eaa{font-family:Fraunces,Fraunces Fallback;font-style:normal}.__variable_ae2eaa{--font-display:"Fraunces","Fraunces 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"}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-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:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_f367f3{font-family:Inter,Inter Fallback;font-style:normal}.__variable_f367f3{--font-body:"Inter","Inter Fallback"}