:root{color-scheme:light dark;--font-sans: system-ui, -apple-system, 'Segoe UI', sans-serif;--font-mono: ui-monospace, Consolas, monospace;--bg: #ffffff;--surface: #ffffff;--surface-subtle: #f9fafb;--surface-muted: #f3f4f6;--border: #e5e7eb;--border-subtle: #f3f4f6;--text: #111827;--text-body: #374151;--text-muted: #4b5563;--text-subtle: #596373;--accent: #4f46e5;--accent-hover: #4338ca;--accent-alt: #06b6d4;--on-accent: #ffffff;--accent-shadow: rgba(79, 70, 229, 0.3);--gradient: linear-gradient(135deg, var(--accent) 0%, var(--accent-alt) 100%);--shadow-sm: 0 4px 14px rgba(0, 0, 0, 0.04);--shadow-md: 0 8px 24px rgba(79, 70, 229, 0.12);--shadow-accent: 0 4px 12px var(--accent-shadow);--nav-bg: rgba(255, 255, 255, 0.85);--nav-border: rgba(0, 0, 0, 0.08);--nav-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);--nav-text: #374151;--code-bg: #0f172a;--code-text: #f8fafc;--code-inline-bg: #f1f5f9;--code-inline-text: #0f172a;--radius-xs: 4px;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 12px;--radius-pill: 9999px;--ease: cubic-bezier(0.4, 0, 0.2, 1);--speed-fast: 0.2s;--speed: 0.25s;--transition-interactive:
    background-color var(--speed) var(--ease), color var(--speed) var(--ease),
    border-color var(--speed) var(--ease), box-shadow var(--speed) var(--ease),
    transform var(--speed) var(--ease);--transition-card:
    border-color var(--speed) var(--ease), box-shadow var(--speed) var(--ease),
    transform var(--speed) var(--ease);--max-content-width: 640px}@media (prefers-color-scheme: dark){:root{--bg: #0b1120;--surface: #111827;--surface-subtle: #151e30;--surface-muted: #1f2937;--border: #263248;--border-subtle: #1c2739;--text: #f3f4f6;--text-body: #e5e7eb;--text-muted: #cbd5e1;--text-subtle: #94a3b8;--accent: #818cf8;--accent-hover: #a5b4fc;--accent-alt: #22d3ee;--on-accent: #0b1120;--accent-shadow: rgba(129, 140, 248, 0.35);--shadow-sm: 0 4px 14px rgba(0, 0, 0, 0.4);--shadow-md: 0 8px 24px rgba(0, 0, 0, 0.5);--nav-bg: rgba(17, 24, 39, 0.8);--nav-border: rgba(255, 255, 255, 0.1);--nav-shadow: 0 4px 20px rgba(0, 0, 0, 0.45);--nav-text: #d1d5db;--code-inline-bg: #1f2937;--code-inline-text: #e5e7eb}}html{box-sizing:border-box;height:100%;background-color:var(--bg)}*,*::before,*::after{box-sizing:inherit}body{font-family:var(--font-sans);font-size:1rem;line-height:1.6;margin:0;padding:0;background-color:var(--bg);color:var(--text);min-height:100%;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img,svg,video{max-width:100%;height:auto}a{color:var(--accent)}h1,h2,h3,h4{color:var(--text);text-wrap:balance}h2{font-size:1.35rem;font-weight:700;margin:1.2rem 0 0.6rem;text-align:left}code,kbd,samp,pre{font-family:var(--font-mono)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.page-content{position:relative;z-index:1}.w{max-width:var(--max-content-width);margin:0 auto;padding:2rem 1.5rem 4rem}.w-wide{--max-content-width: 880px}.page-heading h1{font-size:2rem;font-weight:800;margin:0 0 0.35rem}.page-heading .page-heading-description{color:var(--text-muted);font-size:0.95rem}.top-nav{position:sticky;top:1rem;z-index:1000;display:flex;justify-content:center;margin-bottom:2.5rem}.nav-container{display:inline-flex;gap:0.5rem;padding:0.4rem;border-radius:var(--radius-pill);background:var(--nav-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--nav-border);box-shadow:var(--nav-shadow)}.nav-button{padding:0.5rem 1.25rem;border-radius:var(--radius-pill);font-weight:600;font-size:0.95rem;text-decoration:none;color:var(--nav-text);display:inline-flex;align-items:center;justify-content:center;transition:var(--transition-interactive)}.nav-button:hover{background:var(--gradient);color:var(--on-accent);border-color:transparent;box-shadow:var(--shadow-accent);transform:translateY(-1px);text-decoration:none}.nav-button.active{background:var(--gradient);color:var(--on-accent);border-color:transparent;box-shadow:var(--shadow-accent)}.site-footer{margin-top:4rem;padding-top:2rem;border-top:1px solid var(--border);font-size:0.85rem;color:var(--text-subtle);text-align:center}.site-footer p{margin:0}.site-footer .footer-note{margin-top:0.4rem;max-width:46ch;margin-inline:auto;line-height:1.5}.hero{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:1.5rem}.hero .hero-avatar{width:120px;height:120px;border-radius:50%;overflow:hidden;margin-bottom:1.25rem;border:2px solid var(--border);background:var(--gradient)}.hero .profile-img{width:100%;height:100%;object-fit:cover;display:block}.hero .hero-content h1{font-size:2rem;font-weight:700;margin:0 0 0.5rem}.hero .hero-subtitle{font-size:1.05rem;color:var(--text-muted);line-height:1.5}.contacts-centered{display:flex;justify-content:center;margin:1.25rem 0 0.5rem}.contacts-buttons{display:flex;align-items:center;justify-content:center;gap:0.85rem}.contact-icon-button{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;border:1px solid var(--border);background:var(--surface-subtle);color:var(--text-body);text-decoration:none;transition:var(--transition-interactive)}.contact-icon-button:hover{background:var(--gradient);color:var(--on-accent);border-color:transparent;box-shadow:var(--shadow-accent);transform:translateY(-2px);text-decoration:none}.contact-icon-button svg{width:20px;height:20px}.about{text-align:left}.about .about-text{color:var(--text-muted);font-size:0.98rem;line-height:1.7}.about .about-text p{margin:0}.about .about-text a{color:var(--accent);text-decoration:none}.about .about-text a:hover{text-decoration:underline}.row-list{display:flex;flex-direction:column;gap:0.75rem}.row-item{display:flex;align-items:center;gap:1rem;padding:0.85rem 1rem;height:4.5rem;border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border-subtle);transition:var(--transition-card)}.row-item:hover{border-color:var(--border);box-shadow:var(--shadow-sm);transform:translateX(2px)}.row-item .row-logo{width:42px;height:42px;min-width:42px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);overflow:hidden}.row-item .row-logo.logo-bg-white{background-color:#ffffff;padding:4px}.row-item .row-logo.logo-bg-black{background-color:#000000;padding:4px}.row-item .row-logo.logo-bg-transparent{background-color:transparent;padding:0}.row-item .row-logo img{width:100%;height:100%;object-fit:contain}.row-item .logo-badge{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.1rem;color:var(--on-accent);background:var(--gradient)}.row-item .row-main{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}.row-item .row-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:0.98rem;font-weight:600;margin:0}.row-item .row-title a{color:var(--text);text-decoration:none}.row-item .row-title a:hover{color:var(--accent)}.row-item .row-description{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:0.85rem;color:var(--text-muted);margin:0.15rem 0 0}.row-item .row-period{margin-left:auto;font-size:0.82rem;color:var(--text-subtle);font-weight:500;text-align:right;white-space:nowrap}@media (max-width: 600px){.row-item{display:grid;grid-template-columns:42px 1fr;grid-template-areas:'logo main' 'logo period';column-gap:0.85rem;row-gap:0.2rem;align-items:start;height:auto;min-height:4.5rem}.row-item .row-logo{grid-area:logo;align-self:center}.row-item .row-main{grid-area:main}.row-item .row-period{grid-area:period;margin-left:0;text-align:left;white-space:normal}.row-item .row-title,.row-item .row-description{white-space:normal;overflow:visible;text-overflow:clip}}.skills{text-align:left}.skills-badges{display:flex;flex-wrap:wrap;gap:0.6rem}.skill-badge{padding:0.4rem 0.9rem;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface-subtle);font-size:0.85rem;font-weight:500;color:var(--text-body);transition:var(--transition-interactive)}.skill-badge:hover{border-color:var(--accent);color:var(--accent);background:var(--surface);transform:translateY(-1px)}.projects{text-align:left}.projects-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:1.25rem}@media (max-width: 600px){.projects-grid{grid-template-columns:1fr;gap:0.75rem}}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;text-decoration:none;overflow:hidden;transition:var(--transition-card)}.project-card:hover{text-decoration:none;transform:translate(0, -3px);box-shadow:var(--shadow-md)}.project-card .project-banner{width:100%;aspect-ratio:900 / 640;background:var(--surface-subtle);display:flex;align-items:center;justify-content:center;overflow:hidden}.project-card .project-banner img{width:100%;height:100%;object-fit:cover}.project-card .project-banner img.is-contained{object-fit:contain;padding:1.5rem}.project-card .project-banner-placeholder{color:var(--on-accent);font-weight:700;font-size:1.1rem;opacity:0.9}.project-card .project-body{padding:0.9rem 1rem;display:flex;flex-direction:column;flex:1;justify-content:space-between}.project-card .project-title{font-size:1rem;font-weight:700;margin:0 0 0.35rem}.project-card .project-description{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;line-clamp:4;overflow:hidden;font-size:0.84rem;color:var(--text-muted);margin:0;line-height:1.4}.project-card .project-tags{display:flex;flex-wrap:wrap;gap:0.35rem;margin-top:0.5rem}.project-card .project-tag{font-size:0.72rem;font-weight:600;padding:0.15rem 0.5rem;border-radius:var(--radius-xs);background:var(--surface-muted);color:var(--text-muted)}@media (max-width: 600px){.project-card{flex-direction:row;min-height:88px}.project-card .project-banner{width:88px;min-width:88px;aspect-ratio:auto;align-self:stretch;border-right:1px solid var(--border-subtle)}.project-card .project-banner img,.project-card .project-banner img.is-contained{object-fit:contain;padding:0.6rem}.project-card .project-body{padding:0.7rem 0.85rem;justify-content:center}.project-card .project-description{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}}.year-group-title{margin-top:2rem;color:var(--text-subtle)}.post-cards-list{display:flex;flex-direction:column;gap:0.85rem;margin-top:1.5rem}.post-card-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:1.25rem;padding:1rem 1.25rem;box-shadow:none;text-decoration:none;transition:var(--transition-card)}.post-card-item:hover{border-color:var(--accent);text-decoration:none;transform:translate(3px, 0);box-shadow:var(--shadow-md)}.post-card-item:hover .post-card-title{color:var(--accent)}.post-card-item .post-card-main{flex:1;min-width:0}.post-card-item .post-card-title{font-size:1.05rem;font-weight:700;margin:0 0 0.25rem;transition:color var(--speed-fast) var(--ease)}.post-card-item .post-card-summary{font-size:0.88rem;color:var(--text-muted);margin:0;line-height:1.45}.post-card-item .post-card-meta{margin-left:auto;font-size:0.82rem;color:var(--text-subtle);font-weight:600;white-space:nowrap;text-align:right}@media (max-width: 600px){.post-card-item{flex-direction:column;align-items:flex-start;gap:0.5rem}.post-card-item .post-card-meta{margin-left:0}}.single-post .post-header{margin-bottom:1.5rem}.single-post .single-post-title{font-size:2rem;font-weight:800;margin:0 0 0.35rem;line-height:1.3}.single-post .single-post-meta{display:flex;align-items:center;gap:0.5rem;font-size:0.88rem;color:var(--text-muted)}.single-post .post-toc{background:var(--surface-subtle);border:1px solid var(--border);border-radius:var(--radius-md);padding:0.85rem 1.25rem;margin-bottom:1.75rem}.single-post .post-toc summary{font-weight:700;font-size:0.95rem;color:var(--text);cursor:pointer}.single-post .post-toc ul{margin:0.5rem 0 0 1rem;padding:0}.single-post .post-toc li{margin:0.35rem 0;font-size:0.9rem}.single-post .post-toc a{color:var(--accent);text-decoration:none}.single-post .post-toc a:hover{text-decoration:underline}.post-content{font-size:1.02rem;line-height:1.75;color:var(--text-body)}.post-content p{margin:0 0 1.25rem}.post-content a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.post-content a:hover{color:var(--accent-hover)}.post-content h2{margin:2rem 0 0.75rem;font-size:1.45rem;line-height:1.35}.post-content h3{margin:1.6rem 0 0.6rem;font-size:1.2rem;line-height:1.4}.post-content h4{margin:1.35rem 0 0.5rem;font-size:1.05rem}.post-content ul,.post-content ol{margin:0.5rem 0 1.25rem 1.5rem;padding:0}.post-content ul li,.post-content ol li{margin-bottom:0.35rem;line-height:1.65}.post-content blockquote{margin:1.5rem 0;padding:0.75rem 1.15rem;border-left:4px solid var(--accent);background:var(--surface-subtle);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--text-muted);font-style:italic}.post-content blockquote p:last-child{margin-bottom:0}.post-content hr{margin:2.25rem 0;border:none;border-top:1px solid var(--border)}.post-content table{margin:1.5rem 0;border-collapse:collapse;width:100%;font-size:0.92rem}.post-content table th,.post-content table td{border:1px solid var(--border);padding:0.5rem 0.75rem;text-align:left}.post-content table th{background:var(--surface-subtle);font-weight:600;color:var(--text)}.post-content pre{background:var(--code-bg);color:var(--code-text);padding:1.25rem;border-radius:var(--radius-md);overflow-x:auto;font-size:0.9rem;margin:1.5rem 0;line-height:1.5;tab-size:4}.post-content code{font-size:0.9em;background:var(--code-inline-bg);color:var(--code-inline-text);padding:0.15rem 0.4rem;border-radius:var(--radius-xs)}.post-content pre code{background:transparent;color:inherit;padding:0}.post-content figure{margin:1.5rem 0}.post-content img{display:block;margin:1.5rem auto;border-radius:var(--radius-sm)}.post-content figure img{margin-bottom:0.5rem}.post-content figcaption{text-align:center;font-size:0.85rem;color:var(--text-subtle)}.post-content details{margin:1.25rem 0;padding:0.75rem 1rem;background:var(--surface-subtle);border:1px solid var(--border);border-radius:var(--radius-sm)}.post-content details summary{cursor:pointer;font-weight:600;color:var(--text)}.photo-feed{display:flex;flex-direction:column;gap:3.5rem;margin-top:2rem}.photo-item{margin:0}.photo-frame{display:block;border-radius:var(--radius-lg);overflow:hidden;background:var(--surface-muted);transition:var(--transition-card)}.photo-frame img{display:block;width:100%;height:auto}a.photo-frame:hover{transform:translate(0, -2px);box-shadow:var(--shadow-md)}a.photo-frame:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-xs);border-radius:var(--radius-lg)}.photo-meta{margin-top:0.75rem;font-size:0.85rem;color:var(--text-subtle);line-height:1.5}.photo-sep{margin:0 0.45rem}.photo-empty{margin-top:2rem;color:var(--text-muted)}@media (prefers-reduced-motion: reduce){.photo-frame{transition:none}a.photo-frame:hover{transform:none}}.error-404-container{display:flex;flex-direction:column;align-items:center;text-align:center;padding:3rem 1rem}.error-404-container .pixel-art-wrapper{width:280px;max-width:100%;margin-bottom:2rem}.error-404-container .pixel-art-img{width:100%;height:auto;display:block}.error-404-container .error-title{font-size:1.85rem;font-weight:800;margin:0 0 0.75rem}
