@font-face{font-family:Montserrat;src:url(/assets/fonts/Montserrat-VariableFont_wght.ttf) format("truetype");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Montserrat;src:url(/assets/fonts/Montserrat-Italic-VariableFont_wght.ttf) format("truetype");font-weight:100 900;font-style:italic;font-display:swap}:root{--bg-color: #f4f4f2;--surface-color: #ffffff;--surface-hover: #ebebea;--text-primary: #1a1a1a;--text-secondary: #525252;--text-muted: #737373;--accent-color: #008f5a;--border-color: #d4d4d0;--border-subtle: #e8e8e5;--font-main: "Montserrat", sans-serif;--font-mono: "SF Mono", "Fira Code", "Roboto Mono", monospace;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 2rem;--spacing-xl: 4rem;--max-width: 900px;--header-height: 3.5rem;--radius-sm: 4px;--radius-md: 6px;--shadow-card: 0 1px 2px rgba(0, 0, 0, .04), 0 2px 8px rgba(0, 0, 0, .03);--shadow-card-hover: 0 4px 16px rgba(0, 0, 0, .06);--transition-fast: .15s ease;--transition-medium: .3s ease}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background-color:var(--bg-color);color:var(--text-primary);font-family:var(--font-main);font-weight:500;line-height:1.6;-webkit-font-smoothing:antialiased;background-image:linear-gradient(rgba(0,0,0,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.025) 1px,transparent 1px);background-size:48px 48px}::selection{background:#008f5a2e;color:var(--text-primary)}:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}h1,h2,h3{font-family:var(--font-mono);font-weight:500;color:var(--text-primary);margin-bottom:var(--spacing-md)}h1{font-size:clamp(2.5rem,7vw,3.75rem);font-weight:700;letter-spacing:-.04em;line-height:1.05}h2{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--text-muted);margin-bottom:var(--spacing-lg)}h2:before{content:"// ";color:var(--accent-color)}h3{font-size:1.05rem;color:var(--text-primary)}p{color:var(--text-secondary);margin-bottom:var(--spacing-md)}a{color:var(--text-primary);text-decoration:none;border-bottom:1px solid var(--accent-color);transition:color var(--transition-fast),border-color var(--transition-fast),opacity var(--transition-fast)}a:hover{opacity:.85}.container{max-width:var(--max-width);margin:0 auto;padding:calc(var(--header-height) + var(--spacing-lg)) var(--spacing-lg) var(--spacing-xl)}section{margin-bottom:5rem}.site-header{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--header-height);display:flex;align-items:center;justify-content:center;background:#f4f4f2d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border-subtle)}.site-header__inner{width:100%;max-width:var(--max-width);padding:0 var(--spacing-lg);display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md)}.site-logo{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:.9rem;font-weight:600;color:var(--text-primary);border-bottom:none;letter-spacing:.08em;text-transform:uppercase;overflow:hidden}.site-logo__monogram,.site-logo__full{white-space:nowrap;overflow:hidden;transition:max-width var(--transition-medium),opacity var(--transition-medium),letter-spacing var(--transition-medium)}.site-logo__monogram{max-width:3ch;opacity:1;letter-spacing:.12em}.site-logo__full{max-width:0;opacity:0;letter-spacing:.14em}.site-header--expanded .site-logo__monogram{max-width:0;opacity:0;letter-spacing:.08em}.site-header--expanded .site-logo__full{max-width:20ch;opacity:1;letter-spacing:.08em}.site-logo:hover{color:var(--accent-color);opacity:1}@media(prefers-reduced-motion:reduce){.site-logo__monogram,.site-logo__full{transition:none}}.site-nav{display:flex;align-items:center;gap:var(--spacing-lg)}.site-nav a{font-family:var(--font-mono);font-size:.8rem;color:var(--text-secondary);border-bottom:none;transition:color var(--transition-fast)}.site-nav a:hover{color:var(--accent-color);opacity:1}.site-nav__lang{font-family:var(--font-mono);font-size:.75rem;color:var(--text-secondary);border:1px solid var(--border-color);padding:.25rem .5rem;text-decoration:none;border-bottom:1px solid var(--border-color);transition:color var(--transition-fast),border-color var(--transition-fast)}.site-nav__lang:hover{color:var(--accent-color);border-color:var(--accent-color);opacity:1}.hero{padding-top:var(--spacing-lg);padding-bottom:var(--spacing-md);min-height:min(62vh,520px);display:flex;flex-direction:column;justify-content:center}.hero-tagline{font-family:var(--font-mono);color:var(--accent-color);font-size:.78rem;font-weight:500;text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--spacing-md);display:block}.hero-description{max-width:34rem;font-size:1.1rem;line-height:1.75;color:var(--text-secondary);margin-bottom:var(--spacing-lg)}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--spacing-md);margin-top:var(--spacing-sm)}.reveal{opacity:0;transform:translateY(18px);transition:opacity .55s ease,transform .55s ease}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-stagger>*{opacity:0;transform:translateY(14px);transition:opacity .45s ease,transform .45s ease}.reveal.visible .reveal-stagger>*{opacity:1;transform:translateY(0)}.reveal.visible .reveal-stagger>*:nth-child(1){transition-delay:.04s}.reveal.visible .reveal-stagger>*:nth-child(2){transition-delay:.1s}.reveal.visible .reveal-stagger>*:nth-child(3){transition-delay:.16s}.reveal.visible .reveal-stagger>*:nth-child(4){transition-delay:.22s}@media(prefers-reduced-motion:reduce){.reveal,.reveal-stagger>*{opacity:1;transform:none;transition:none}}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-lg)}.filter-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-lg)}.filter-btn{appearance:none;font-family:var(--font-mono);font-size:.85rem;font-weight:500;line-height:1.3;cursor:pointer;padding:.45rem .95rem;background:var(--surface-color);color:var(--text-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);transition:background-color .2s ease,border-color .2s ease,color .2s ease}.filter-btn:hover{background:var(--surface-hover);color:var(--text-primary);border-color:var(--accent-color)}.filter-btn.active{background:var(--surface-hover);color:var(--accent-color);border-color:var(--accent-color)}.filter-btn:focus{outline:none}.filter-btn:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.card-wrapper.is-hidden{display:none}.card{background:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:var(--spacing-lg);box-shadow:var(--shadow-card);transition:transform var(--transition-fast),background-color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-medium);height:100%;display:flex;flex-direction:column;position:relative;overflow:hidden}.card .card-header,.card p,.card .card-tech{position:relative;z-index:2}.card:hover{background:var(--surface-color);transform:translateY(-3px);border-color:var(--accent-color);box-shadow:var(--shadow-card-hover)}.card:before{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,rgba(255,255,255,.92) 0%,transparent 40%,transparent 60%,rgba(255,255,255,.92) 100%);opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:1}.card:hover:before{opacity:1}.card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-sm)}.card h3{font-weight:600;transition:color var(--transition-fast)}.card:hover h3{color:var(--accent-color)}.card p{font-size:.95rem;line-height:1.65;flex:1}.card-tech{font-family:var(--font-mono);font-size:.72rem;color:var(--text-muted);margin-top:auto;padding-top:var(--spacing-md);letter-spacing:.02em}.card-link{text-decoration:none;border:none;display:block;height:100%}.card-link:hover{opacity:1}.skills-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:var(--spacing-md);list-style:none;align-items:start}.skill-item{font-family:var(--font-mono);font-size:.85rem;background:var(--surface-color);border:1px solid var(--border-color);color:var(--text-primary);transition:background-color var(--transition-fast),border-color var(--transition-fast),box-shadow .35s ease,grid-column .35s ease;user-select:none;min-width:0}.skill-item--static{padding:.4rem .9rem;cursor:default;display:flex;align-items:center}.skill-item--static:hover{background:var(--surface-hover);border-color:var(--accent-color);color:var(--accent-color)}.skill-name{flex:1;min-width:0}.back-link{font-family:var(--font-mono);font-size:.9rem;display:inline-block;margin-bottom:var(--spacing-lg)}.project-header{margin-bottom:var(--spacing-xl)}.sketchfab-container{width:100%;aspect-ratio:16 / 9;background:var(--surface-color);border:1px solid var(--border-color);margin-bottom:var(--spacing-lg)}.sketchfab-container iframe{width:100%;height:100%;border:none}.sketchfab-attribution{font-size:.8125rem;font-weight:400;margin:var(--spacing-sm) 0 0;color:var(--text-muted)}.sketchfab-attribution a{font-weight:600;color:var(--accent-color)}.project-details{max-width:700px}.project-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--spacing-lg)}.gallery-item{background:var(--surface-color);border:1px solid var(--border-color);overflow:hidden}.gallery-item img{width:100%;height:auto;display:block;transition:transform .3s ease}.gallery-item:hover img{transform:scale(1.02)}.gallery-item figcaption{font-family:var(--font-mono);font-size:.85rem;color:var(--text-secondary);padding:var(--spacing-md);border-top:1px solid var(--border-color)}.gallery-image{cursor:pointer}.gallery-link{display:block;border:none}.gallery-link:hover{opacity:1}.lightbox{position:fixed;inset:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;cursor:pointer}.lightbox.active{opacity:1;visibility:visible}.lightbox-image{max-width:90vw;max-height:90vh;object-fit:contain;transform:scale(.9);transition:transform .3s ease}.lightbox.active .lightbox-image{transform:scale(1)}.btn-primary,.btn-primary--filled{display:inline-flex;align-items:center;font-family:var(--font-main);font-size:.85rem;font-weight:600;padding:.7rem 1.35rem;border-radius:var(--radius-sm);border-style:solid;border-width:1px;text-decoration:none;opacity:1;transition:background-color var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-medium)}.btn-primary{background:var(--surface-color);color:var(--accent-color);border-color:var(--accent-color);box-shadow:var(--shadow-card)}.btn-primary:hover{background:var(--accent-color);color:var(--surface-color);border-color:var(--accent-color);box-shadow:var(--shadow-card-hover)}.btn-primary:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.btn-primary--filled{background-color:var(--text-primary);color:var(--surface-color);border-color:var(--text-primary)}.btn-primary--filled:hover{background-color:var(--accent-color);border-color:var(--accent-color)}.btn-primary--filled:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.gallery-link-button{font-family:var(--font-mono);font-size:.85rem;color:var(--text-secondary);border-bottom:1px solid var(--border-color);text-decoration:none;transition:color var(--transition-fast),border-color var(--transition-fast)}.gallery-link-button:hover{color:var(--accent-color);border-color:var(--accent-color)}.section-footer{margin-top:var(--spacing-lg);text-align:right}.terminal-body .prompt{color:#27c93f}.terminal-body .cmd{color:#fff;font-weight:700}.terminal-body .dim{color:#666}.terminal-body .file{color:#4ec9b0}.terminal-body .highlight,.terminal-body .string{color:#ce9178}.terminal-body .success{color:#27c93f}.terminal-body .xml-tag{color:#569cd6}.terminal-body .xml-attr{color:#9cdcfe}.currently-strip{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .65rem;font-size:.92rem;color:var(--text-secondary);padding:var(--spacing-md) var(--spacing-lg);background:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-card);margin-bottom:var(--spacing-xl)}.currently-label{color:var(--text-primary);font-weight:600}.currently-segment{display:contents}.currently-org,.currently-org-link{color:var(--text-secondary)}.currently-org-link{border-bottom:1px solid var(--border-subtle);transition:color var(--transition-fast),border-color var(--transition-fast)}.currently-org-link:hover{color:var(--accent-color);border-color:var(--accent-color);opacity:1}.currently-sep{font-family:var(--font-mono);color:var(--border-color);user-select:none}@media(max-width:600px){h1{font-size:2.15rem}.container{padding:calc(var(--header-height) + var(--spacing-md)) var(--spacing-md) var(--spacing-lg)}section{margin-bottom:3.5rem}.hero{min-height:auto;padding-top:var(--spacing-md)}.hero-description{font-size:1rem}.site-nav{gap:var(--spacing-md)}.site-nav a:not(.site-nav__lang){display:none}.project-gallery{grid-template-columns:1fr}.gallery-image{cursor:default}.lightbox{display:none}.currently-strip{flex-direction:column;align-items:flex-start}.currently-sep{display:none}}footer[data-astro-cid-sz7xmlte]{border-top:1px solid var(--border-color);padding-top:var(--spacing-lg);margin-top:var(--spacing-xl);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--spacing-md);font-family:var(--font-mono);font-size:.8rem;color:var(--text-secondary)}.footer-legal[data-astro-cid-sz7xmlte]{display:flex;gap:var(--spacing-md)}.footer-legal-link[data-astro-cid-sz7xmlte]{color:var(--text-secondary);text-decoration:none;border-bottom:none;transition:color var(--transition-fast)}.footer-legal-link[data-astro-cid-sz7xmlte]:hover{color:var(--text-primary)}.contact-links[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;gap:var(--spacing-md);align-items:center}.contact-link[data-astro-cid-sz7xmlte]{display:inline-flex;align-items:center;gap:.35rem;color:var(--text-secondary);text-decoration:none;border-bottom:none;transition:color var(--transition-fast)}.contact-link[data-astro-cid-sz7xmlte]:focus-visible{color:var(--accent-color);outline:2px solid var(--accent-color);outline-offset:2px}.contact-link-icon[data-astro-cid-sz7xmlte]{display:inline-flex;align-items:center}.contact-link[data-astro-cid-sz7xmlte] svg{flex-shrink:0}
