:root{--bg: #070809;--bg-soft: #0f1114;--surface: rgba(25, 28, 34, .9);--surface-alt: rgba(33, 37, 43, .88);--border: rgba(80, 86, 96, .3);--text: #e5e7eb;--muted: #9ca3af;--accent: #64748b;--accent-2: #78716c;--shadow: 0 18px 48px rgba(0, 0, 0, .52);--code-shell-bg: #020617;--code-shell-surface: rgba(15, 23, 42, .95);--code-shell-text: #e2e8f0;--code-shell-muted: #94a3b8;--code-shell-border: rgba(148, 163, 184, .24)}body[data-theme=light]{--bg: #ffffff;--bg-soft: #ffffff;--surface: #f4f6f9;--surface-alt: #edf1f6;--border: rgba(100, 116, 139, .24);--text: #1a1d23;--muted: #6b7280;--shadow: 0 18px 48px rgba(0, 0, 0, .08);--code-shell-bg: #f8fafc;--code-shell-surface: rgba(226, 232, 240, .8);--code-shell-text: #0f172a;--code-shell-muted: #64748b;--code-shell-border: rgba(100, 116, 139, .18);background:#fff}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--text)}body{background:radial-gradient(circle at 12% 12%,rgba(100,116,139,.08),transparent 36%),radial-gradient(circle at 84% 9%,rgba(120,113,108,.08),transparent 38%),linear-gradient(170deg,var(--bg) 0%,#050607 60%,var(--bg-soft) 100%)}a{color:inherit;text-decoration:none}button{font:inherit}svg{width:1rem;height:1rem;fill:currentColor}.ui-icon,.simple-icon{width:1rem;height:1rem;flex-shrink:0}body:not([data-theme=light]) .ui-icon,body:not([data-theme=light]) .simple-icon{filter:brightness(0) invert(1) opacity(.86)}.card{background:var(--surface);border:1px solid var(--border);border-radius:1.05rem;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.top-nav{position:fixed;top:.9rem;z-index:10;width:min(1120px,calc(100% - 3rem));margin:.9rem auto 0;padding:.75rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.8rem;left:50%;transform:translate(-50%)}.brand{font-weight:800;letter-spacing:.04em}.top-nav nav{display:flex;flex-wrap:wrap;gap:.35rem}.top-nav nav button{border:1px solid transparent;background:transparent;color:var(--muted);padding:.3rem .6rem;border-radius:.5rem;cursor:pointer}.top-nav nav button:hover{border-color:var(--border);color:var(--text)}.top-nav nav button.is-active{border-color:color-mix(in srgb,var(--accent),white 25%);color:var(--text);background:color-mix(in srgb,var(--surface-alt),var(--accent) 24%);box-shadow:0 0 16px color-mix(in srgb,var(--accent),transparent 58%)}.page{width:min(1120px,calc(100% - 3rem));margin:1.5rem auto 4rem;display:grid;gap:2.2rem}.landing-page{gap:10rem}.landing-page .hero{min-height:fit-content;max-height:550px;height:100vh;align-items:center}.page>h2{margin:1.8rem 0 .8rem;font-size:1.8rem}.page>h2:first-child{margin-top:0}.section{display:grid;gap:1.2rem}.section>h2{margin:.2rem 0}.hero-wrapper{display:flex;align-items:center;height:100vh;margin-bottom:-10rem;position:relative}.hero{display:grid;grid-template-columns:1.2fr .4fr;gap:5rem;padding:2rem}.hero h1{margin:.5rem 0;font-size:clamp(1.8rem,3.8vw,3.2rem);line-height:1.1}.hero p{color:var(--muted)}.hero-copy{display:grid;gap:2rem;align-content:center}.hero-visual{position:relative;height:20rem;min-height:0}.hero-visual img{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;width:100%;height:100%;object-fit:cover;border-radius:.9rem;border:1px solid var(--border)}.orb{position:absolute;border-radius:50%;filter:blur(8px);animation:float 6s ease-in-out infinite}.orb-a{width:130px;height:130px;background:#38bdf859;top:-22px;left:-20px}.orb-b{width:165px;height:165px;background:#a78bfa4d;bottom:-16px;right:-20px;animation-delay:1s}body[data-theme=light] .orb-a{background:#3b82f657}body[data-theme=light] .orb-b{background:#f9731652}.eyebrow{margin:0;text-transform:uppercase;letter-spacing:.08em;font-size:.74rem;color:var(--accent)}.hero-badges{display:flex;flex-wrap:wrap;gap:.62rem}.hero-badges span{display:inline-flex;align-items:center;gap:.45rem;font-size:.85rem;border:1px solid var(--border);background:var(--surface-alt);border-radius:999px;padding:.38rem .68rem}.button{display:inline-flex;align-items:center;gap:.42rem;border-radius:.62rem;border:1px solid var(--border);background:var(--surface-alt);color:var(--text);padding:.53rem .85rem;font-weight:600;font-size:.9rem;cursor:pointer;transition:all .24s ease}.button:hover{transform:translateY(-2px);border-color:var(--accent);background:var(--surface);box-shadow:0 6px 18px #0000003d}.button-ghost{color:var(--text);background:transparent}.button-ghost:hover{background:var(--surface-alt)}.theme-toggle-fab{position:fixed;right:1.25rem;bottom:1.25rem;z-index:30;width:3.1rem;height:3.1rem;border-radius:50%;border:1px solid var(--border);background:color-mix(in srgb,var(--surface),black 10%);color:var(--text);display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow);cursor:pointer;transition:transform .22s ease,border-color .22s ease}.theme-toggle-fab:hover{transform:translateY(-2px);border-color:var(--accent)}.theme-toggle-fab .ui-icon{width:1.15rem;height:1.15rem}.scroll-down-arrow{position:absolute;bottom:3rem;left:50%;transform:translate(-50%);width:2.5rem;height:2.5rem;border-radius:50%;border:1px solid var(--border);background:var(--surface-alt);color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:5;animation:bounce 2.5s ease-in-out infinite}.scroll-down-arrow:hover{border-color:var(--accent);background:var(--surface)}.scroll-down-arrow .ui-icon{width:1.4rem;height:1.4rem}@keyframes bounce{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(8px)}}.card-with-heading{padding:1rem}.card-with-heading h2{background:var(--surface-alt);padding:1rem;margin:0;border-bottom:1px solid var(--border);border-radius:1.05rem 1.05rem 0 0}.card-without-heading{padding:1rem}.card-content{padding:0rem}.timeline{display:grid;gap:3rem}.timeline-group{display:grid;gap:1rem}.timeline-group-title{margin:0;display:inline-flex;align-items:center;gap:.5rem}.timeline-track{position:relative;display:grid;gap:1.05rem;padding-left:4.9rem}.timeline-track:before{content:"";position:absolute;top:1.875rem;bottom:0;left:1.975rem;width:2px;background:var(--border)}.timeline-entry{position:relative}.timeline-entry:before{content:"";position:absolute;top:1.875rem;left:-2.925rem;width:2.925rem;height:1px;background:var(--border)}.timeline-entry.has-marker:before{display:none}.timeline-marker{position:absolute;top:.7rem;left:-4.1rem;display:flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;border-radius:50%;background:var(--surface-alt);border:2px solid var(--accent);color:var(--text)}.timeline-entry:not(.has-marker) .timeline-marker{display:none}.timeline-card{padding:1rem}.timeline-card h4{margin:.4rem 0}.skills-categories{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.9rem}@media(min-width:851px){.skills-categories{grid-template-columns:repeat(2,1fr)}}.skill-header{display:flex;align-items:center;gap:.6rem;margin-bottom:.8rem}.skill-header h3{margin:0;font-size:1rem}.skill-list{display:flex;flex-wrap:wrap;gap:.5rem}.skill-tag{display:inline-block;background:var(--surface-alt);border:1px solid var(--border);color:var(--text);padding:.35rem .65rem;border-radius:999px;font-size:.8rem;font-weight:500;display:inline-flex;align-items:center;gap:.35rem;transition:transform .2s ease,border-color .22s ease,box-shadow .22s ease}.skill-tag:hover{border-color:var(--skill-color, var(--accent));box-shadow:0 8px 24px color-mix(in srgb,var(--skill-color, var(--accent)),transparent 60%)}.skill-tag img.simple-icon-skill,.simple-icon-skill{width:1rem;height:1rem;flex-shrink:0}.skills-categories article{padding:1rem}.contact-card{padding:0}.muted{color:var(--muted)}.grid{columns:18rem;column-gap:.95rem}.project-card{display:block;width:100%;margin:0 0 .95rem;overflow:hidden;transition:transform .2s ease,border-color .22s ease;break-inside:avoid}.project-card:hover{border-color:var(--accent)}.card{transition:transform .2s ease,border-color .22s ease}.card:hover{border-color:var(--accent)}.project-card img{display:block;width:100%;height:auto;object-fit:initial;object-position:center center;background:var(--surface-alt);border-bottom:1px solid var(--border)}.project-card-body{padding:1rem;display:flex;flex-direction:column}.project-card p{color:var(--muted);margin-bottom:.8rem}.project-card .link-row{margin-top:auto}.tags{display:flex;flex-wrap:wrap;gap:.42rem;margin-bottom:.8rem}.tags span{border:1px solid var(--border);border-radius:999px;font-size:.8rem;padding:.2rem .58rem}.link-row{display:flex;flex-wrap:wrap;gap:.62rem}.footer{text-align:center;color:var(--muted);padding:0 0 1.5rem}.back-link{color:var(--muted);font-weight:600;margin-left:.4rem}.page-not-found{display:flex;align-items:center;justify-content:center;min-height:100vh}.not-found-card{text-align:center;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.not-found-heading{font-size:6rem;margin:0;font-weight:700;letter-spacing:-.05em}.not-found-text{font-size:1.25rem;color:var(--muted);margin:0}.project-page{padding:1.4rem;display:grid;gap:1.1rem;min-width:0}.project-page>header p{color:var(--muted)}.hero-image{width:100%;max-height:420px;object-fit:cover;border-radius:.9rem;border:1px solid var(--border)}.project-slider{overflow:hidden;padding:.8rem}.project-slider-viewport{position:relative;overflow:hidden;aspect-ratio:var(--project-slider-aspect-ratio, 16 / 9);border-radius:.9rem;border:1px solid var(--border);background:var(--surface-alt)}.slider-image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;transform:scale(1.03);object-fit:contain;object-position:center center;background:var(--surface-alt);transition:opacity .42s ease,transform .42s ease;pointer-events:none}.slider-image.is-active{opacity:1;transform:scale(1);pointer-events:auto}.project-slider-viewport .hero-image{max-height:none;border:none;border-radius:0}.slider-control{position:absolute;top:50%;transform:translateY(-50%);width:2.2rem;height:2.2rem;border:1px solid var(--border);border-radius:999px;background:color-mix(in srgb,var(--surface),black 12%);color:var(--text);cursor:pointer}.slider-prev{left:.8rem}.slider-next{right:.8rem}.slider-dots{display:flex;justify-content:center;flex-wrap:wrap;gap:.45rem;margin-top:.8rem}.slider-dot{width:.55rem;height:.55rem;border-radius:50%;border:1px solid var(--border);background:var(--surface-alt);cursor:pointer;padding:0}.slider-dot.is-active{background:var(--accent);border-color:var(--accent)}.markdown-content{line-height:1.7;color:color-mix(in srgb,var(--text),#8695ac 20%);min-width:0;overflow-wrap:anywhere}.markdown-content h2,.markdown-content h3{color:var(--text)}.markdown-content :not(pre)>code{background:var(--surface-alt);border:1px solid var(--border);border-radius:.3rem;padding:.14rem .3rem}.markdown-content pre code{background:transparent;border:none;padding:0}.markdown-content blockquote{margin:0;padding:.2rem 1.2rem;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--surface-alt),transparent 35%);color:var(--text);border-radius:.6rem}.markdown-block{margin:1.4rem 0;min-width:0}.markdown-media{display:grid;gap:.6rem;margin:1.4rem 0}.markdown-media img{width:100%;max-width:100%;border-radius:.9rem;border:1px solid var(--border);object-fit:cover}.markdown-media figcaption{font-size:.92rem;color:var(--muted)}.embed,.code-sample{padding:1rem;min-width:0}.embed iframe,.plotly-embed{width:100%;min-height:840px;border:0;border-radius:.8rem;display:block;background:#fff}.code-sample-shell{border:1px solid var(--code-shell-border);border-radius:.8rem;overflow-x:auto;background:var(--code-shell-bg)}.code-row{display:grid;grid-template-columns:3.2rem minmax(0,1fr);min-width:0}.code-line-number{padding:.35rem .6rem;text-align:right;font-family:Consolas,SF Mono,Menlo,Monaco,monospace;font-size:.78rem;color:var(--code-shell-muted);background:var(--code-shell-surface);border-right:1px solid var(--code-shell-border);-webkit-user-select:none;user-select:none}.code-line-content{display:block;padding:.35rem .9rem;white-space:pre;overflow-x:auto;min-width:0;font-family:Consolas,SF Mono,Menlo,Monaco,monospace;font-size:.82rem;color:var(--code-shell-text)}.code-line-content.hljs{background:transparent}.markdown-code-block{margin:0;border:1px solid var(--code-shell-border);border-radius:.8rem;background:var(--code-shell-bg);overflow:auto}.markdown-code-block code{display:block;padding:1rem;color:var(--code-shell-text);background:transparent}.markdown-code-block .hljs{background:transparent}body[data-theme=light] .hljs,body[data-theme=light] .markdown-code-block code{color:#0f172a}body[data-theme=light] .hljs-comment,body[data-theme=light] .hljs-quote{color:#64748b;font-style:italic}body[data-theme=light] .hljs-keyword,body[data-theme=light] .hljs-selector-tag,body[data-theme=light] .hljs-literal,body[data-theme=light] .hljs-title,body[data-theme=light] .hljs-section,body[data-theme=light] .hljs-doctag,body[data-theme=light] .hljs-type{color:#7c3aed}body[data-theme=light] .hljs-number,body[data-theme=light] .hljs-meta,body[data-theme=light] .hljs-built_in,body[data-theme=light] .hljs-builtin-name,body[data-theme=light] .hljs-attr,body[data-theme=light] .hljs-attribute,body[data-theme=light] .hljs-symbol{color:#0f766e}body[data-theme=light] .hljs-string,body[data-theme=light] .hljs-regexp,body[data-theme=light] .hljs-addition{color:#15803d}body[data-theme=light] .hljs-variable,body[data-theme=light] .hljs-template-variable,body[data-theme=light] .hljs-selector-id,body[data-theme=light] .hljs-selector-class,body[data-theme=light] .hljs-name{color:#b45309}model-viewer{width:100%;max-width:100%;min-height:340px;border-radius:.8rem;border:1px solid var(--border);background:radial-gradient(circle,#38bdf81f,#0f172acc)}pre{max-width:100%;margin:0;overflow:auto;border-radius:.8rem;border:1px solid var(--border);background:#020617;color:#e2e8f0;padding:1rem;line-height:1.45}.reveal{animation:reveal .66s ease forwards}@keyframes reveal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@media(max-width:850px){.landing-page{gap:6rem}.landing-page .hero{min-height:auto}.hero{grid-template-columns:1fr}.hero-visual{min-height:280px}.timeline-track{padding-left:4rem}.timeline-track:before{left:1.825rem}.timeline-entry:before{left:-2.175rem;width:2.175rem}.timeline-marker{left:-3.35rem}.skills-categories{grid-template-columns:1fr}}@media(max-width:700px){.landing-page{gap:4.5rem}.top-nav,.page{width:min(1120px,calc(100% - 1.4rem))}.top-nav{top:.6rem;margin-top:.6rem;flex-wrap:wrap}.top-nav nav{order:3}.timeline-track{padding-left:3.6rem}.timeline-track:before{left:1.775rem}.timeline-entry:before{left:-1.825rem;width:1.825rem}.timeline-marker{left:-3rem}.skill-header{gap:.4rem}.skill-header h3{font-size:.95rem}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
  Theme: GitHub Dark
  Description: Dark theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-dark
  Current colors taken from GitHub's CSS
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}
