:root{--bg-primary: #0d0d0d;--bg-secondary: #141414;--bg-card: #1a1a1a;--bg-hover: #1f1f1f;--border: #2a2a2a;--border-dim: #1a1a1a;--border-accent: #3d3d3d;--text-primary: #d1d1d6;--text-secondary: #888888;--text-muted: #555555;--accent: #FFC024;--accent-warm: #e8956d;--accent-green: #5db888;--accent-dim: #3d2e07;--link: #FFC024;--link-hover: #ffd15c;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--space-16: 64px;--space-24: 96px;--font-mono: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;--font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;--transition: all 0.2s ease;--transition-slow: all 0.35s ease;--radius: 4px;--radius-lg: 8px;--max-text: 760px;--max-layout: 1100px;--nav-height: 56px}[data-theme="light"]{--bg-primary: #f5f4f0;--bg-secondary: #eceae4;--bg-card: #ffffff;--bg-hover: #f0eee8;--border: #dddbd4;--border-dim: #e8e6e0;--border-accent: #c8c5bc;--text-primary: #1a1a1a;--text-secondary: #5a5a5a;--text-muted: #9a9a9a;--accent: #d99c00;--accent-warm: #c4622d;--accent-green: #2d8a5e;--accent-dim: #fcf4dc;--link: #d99c00;--link-hover: #b88100}[data-theme="dark"][data-accent="blue"]{--accent: #7c9ef5;--accent-dim: rgba(124, 158, 245, 0.12);--link: #7c9ef5;--link-hover: #a8bef8}[data-theme="dark"][data-accent="green"]{--accent: #5db888;--accent-dim: rgba(93, 184, 136, 0.12);--link: #5db888;--link-hover: #82ceaa}[data-theme="dark"][data-accent="red"]{--accent: #f87171;--accent-dim: rgba(248, 113, 113, 0.12);--link: #f87171;--link-hover: #fca5a5}[data-theme="light"][data-accent="blue"]{--accent: #3d5fc4;--accent-dim: #dce4f5;--link: #3d5fc4;--link-hover: #2a45a0}[data-theme="light"][data-accent="green"]{--accent: #2d8a5e;--accent-dim: #e1f0e8;--link: #2d8a5e;--link-hover: #1f6041}[data-theme="light"][data-accent="red"]{--accent: #c2410c;--accent-dim: #fcece6;--link: #c2410c;--link-hover: #9a3412}[data-theme-transitioning] *,[data-theme-transitioning] *::before,[data-theme-transitioning] *::after{transition:color 0.3s ease, border-color 0.3s ease !important}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:15px;-webkit-text-size-adjust:100%}body{font-family:var(--font-mono);font-size:1rem;line-height:1.65;background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh;display:flex;flex-direction:column;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#main-content{flex:1 0 auto;width:100%}.site-footer{flex-shrink:0}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}a{color:var(--link);text-decoration:none;transition:var(--transition)}a:hover{color:var(--link-hover)}ul,ol{list-style:none}button{cursor:pointer;border:none;background:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-accent);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius)}html.no-transition *,html.no-transition *::before,html.no-transition *::after{transition:none !important;animation:none !important}h1,h2,h3,h4,h5,h6{font-family:var(--font-mono);font-weight:600;letter-spacing:0.04em;line-height:1.3;color:var(--text-primary)}h1{font-size:2.4rem}h2{font-size:1.7rem}h3{font-size:1.3rem}h4{font-size:1.1rem}h5{font-size:0.95rem}h6{font-size:0.85rem}p{font-family:var(--font-body);font-size:0.95rem;line-height:1.6;color:var(--text-primary);margin-bottom:var(--space-3)}.meta,.label{font-size:0.8rem;color:var(--text-muted);letter-spacing:0.06em;text-transform:lowercase}.section-label{font-size:0.8rem;color:var(--text-muted);letter-spacing:0.1em;font-family:var(--font-mono);margin-bottom:var(--space-6)}.section-label::before{content:"[ ";color:var(--accent)}.section-label::after{content:" ]";color:var(--accent)}.post-content{font-family:var(--font-body);font-size:0.97rem;line-height:1.65;color:var(--text-primary);max-width:var(--max-text)}.post-content h1{font-size:1.8rem;margin-top:var(--space-8);margin-bottom:var(--space-4);color:var(--accent)}.post-content h2{font-size:1.4rem;margin-top:var(--space-8);margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--border);color:color-mix(in srgb, var(--accent) 80%, var(--text-primary))}.post-content h3{font-size:1.1rem;margin-top:var(--space-6);margin-bottom:var(--space-3);color:color-mix(in srgb, var(--accent) 60%, var(--text-primary))}.post-content h4{font-size:1rem;margin-top:var(--space-6);margin-bottom:var(--space-3);color:color-mix(in srgb, var(--accent) 40%, var(--text-primary))}.post-content h5{font-size:0.95rem;margin-top:var(--space-4);margin-bottom:var(--space-2);color:color-mix(in srgb, var(--accent) 25%, var(--text-primary))}.post-content h6{font-size:0.9rem;margin-top:var(--space-4);margin-bottom:var(--space-2);color:color-mix(in srgb, var(--accent) 15%, var(--text-primary))}.post-content p{margin-bottom:var(--space-3)}.post-content a{color:var(--link);text-decoration:underline;text-underline-offset:3px}.post-content a:hover{color:var(--link-hover)}.post-content ul,.post-content ol{list-style:disc;padding-left:var(--space-6);margin-bottom:var(--space-4)}.post-content ul li,.post-content ol li{margin-bottom:var(--space-2);font-family:var(--font-body);font-size:0.95rem;line-height:1.7}.post-content ol{list-style:decimal}.post-content blockquote{border-left:3px solid var(--accent);padding:var(--space-3) var(--space-6);margin:var(--space-6) 0;background:var(--bg-card);border-radius:0 var(--radius) var(--radius) 0}.post-content blockquote p{margin-bottom:0;font-style:italic;color:var(--text-secondary)}.post-content .alert{padding:var(--space-4) var(--space-6);margin:var(--space-6) 0;border-radius:var(--radius-lg);border-left:3px solid transparent;font-family:var(--font-body);font-size:0.95rem;line-height:1.6;background:var(--bg-card);border:1px solid var(--border)}.post-content .alert p{margin-bottom:var(--space-2)}.post-content .alert p:last-child{margin-bottom:0}.post-content .alert strong:first-child{display:block;margin-bottom:var(--space-2);font-family:var(--font-mono);font-size:0.85rem;letter-spacing:0.05em;text-transform:uppercase}.post-content .alert-info{border-left-color:var(--accent)}.post-content .alert-info strong:first-child{color:var(--accent)}.post-content .alert-warning{border-left-color:#f87171}.post-content .alert-warning strong:first-child{color:#f87171}[data-theme="light"] .post-content .alert-warning{border-left-color:#dc2626}[data-theme="light"] .post-content .alert-warning strong:first-child{color:#dc2626}.post-content .alert-tip{border-left-color:var(--accent-green)}.post-content .alert-tip strong:first-child{color:var(--accent-green)}.post-content code{font-family:var(--font-mono);font-size:0.85em;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1px 6px;color:var(--accent-warm)}.post-content code.language-plaintext{color:var(--text-primary)}.post-content .code-block-wrap{position:relative;margin:var(--space-6) 0}.post-content .code-block-wrap:hover .copy-code-btn,.post-content .code-block-wrap .copy-code-btn:focus{opacity:1}.post-content pre{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-6);overflow-x:auto;margin:0}.post-content pre code{background:none;border:none;padding:0;color:var(--text-primary);font-size:0.87rem;line-height:1.6}.post-content .copy-code-btn{position:absolute;top:50%;right:var(--space-2);transform:translateY(-50%);display:flex;align-items:center;gap:4px;padding:4px 10px;font-family:var(--font-mono);font-size:0.72rem;letter-spacing:0.04em;color:var(--text-muted);background:var(--bg-base, var(--bg-card));backdrop-filter:blur(4px);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;opacity:0;transition:opacity 0.2s ease, color 0.2s ease, border-color 0.2s ease, background 0.2s ease;z-index:2;user-select:none;white-space:nowrap}.post-content .copy-code-btn svg{width:13px;height:13px;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.post-content .copy-code-btn:hover{color:var(--accent);border-color:var(--accent);background:rgba(var(--accent-rgb, 100, 181, 246), 0.08)}.post-content .copy-code-btn.copied{color:var(--accent-green);border-color:var(--accent-green);background:rgba(93,184,136,0.08);opacity:1}.post-content hr{border:none;border-top:1px solid var(--border);margin:var(--space-8) 0}.post-content img{border-radius:var(--radius-lg);margin:var(--space-6) auto;cursor:zoom-in}.post-content table{width:100%;border-collapse:collapse;margin:var(--space-6) 0;font-size:0.9rem}.post-content table th{text-align:left;padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border-accent);color:var(--text-secondary);font-size:0.8rem;letter-spacing:0.06em}.post-content table td{padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border)}.post-content table tr:last-child td{border-bottom:none}.tag{display:inline-block;font-size:0.72rem;font-family:var(--font-mono);padding:2px 8px;border-radius:2px;border:1px solid var(--border);color:var(--text-secondary);background:var(--bg-card);letter-spacing:0.04em;transition:var(--transition)}.tag.tag-hardware{color:#f87171;border-color:rgba(248,113,113,0.3);background:rgba(248,113,113,0.08)}.tag.tag-firmware{color:var(--accent-green);border-color:rgba(93,184,136,0.3);background:rgba(93,184,136,0.08)}.tag.tag-software{color:#7c9ef5;border-color:rgba(124,158,245,0.3);background:rgba(124,158,245,0.08)}[data-theme="light"] .tag.tag-software{color:#3d5fc4;border-color:rgba(61,95,196,0.3);background:rgba(61,95,196,0.08)}.tag.tag-soft{color:#eab308;border-color:rgba(234,179,8,0.3);background:rgba(234,179,8,0.08)}.tag.tag-ai{color:#fb923c;border-color:rgba(251,146,60,0.3);background:rgba(251,146,60,0.08)}@keyframes fadeInUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes blink{0%, 100%{opacity:1}50%{opacity:0}}@keyframes loadingBar{0%{width:0%;opacity:1}70%{width:85%;opacity:1}100%{width:100%;opacity:0}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.reveal{opacity:0;transform:translateY(16px);transition:opacity 0.5s ease, transform 0.5s ease}.reveal.visible{opacity:1;transform:translateY(0)}.page-content{animation:fadeInUp 0.4s ease both}.anim-delay-1{animation-delay:0ms}.anim-delay-2{animation-delay:100ms}.anim-delay-3{animation-delay:200ms}.anim-delay-4{animation-delay:300ms}.anim-delay-5{animation-delay:400ms}.anim-delay-6{animation-delay:500ms}.anim-delay-7{animation-delay:600ms}.anim-delay-8{animation-delay:700ms}.anim-delay-9{animation-delay:800ms}.anim-delay-10{animation-delay:900ms}.cursor-blink{display:inline-block;color:var(--accent);animation:blink 1.1s step-end infinite;font-weight:400}#loading-bar{position:fixed;top:0;left:0;height:2px;width:0;background:var(--accent);z-index:9999;pointer-events:none;transition:opacity 0.3s ease}#loading-bar.loading{animation:loadingBar 1s ease forwards}.site-nav{position:sticky;top:0;z-index:100;height:var(--nav-height);display:flex;align-items:center;background-color:rgba(13,13,13,0.85);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:background-color 0.3s ease,border-color 0.3s ease,transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);will-change:transform}[data-theme="light"] .site-nav{background-color:rgba(245,244,240,0.88)}.site-nav.scrolled{background-color:rgba(13,13,13,0.95)}.site-nav.scrolled .nav-inner{border-bottom-color:var(--border-accent)}[data-theme="light"] .site-nav.scrolled{background-color:rgba(245,244,240,0.97)}.site-nav.nav-hidden{transform:translateY(-100%)}.nav-inner{max-width:var(--max-text);margin:0 auto;padding:0 var(--space-6);width:100%;height:100%;display:flex;align-items:center;gap:var(--space-6);border-bottom:1px solid var(--border);transition:border-color 0.3s ease}@media (max-width: 768px){.nav-inner{padding:0 var(--space-4);gap:var(--space-3)}}.nav-links{display:flex;align-items:center;gap:var(--space-1)}@media (max-width: 768px){.nav-links{display:none}}.nav-item{position:relative}.nav-link{display:block;padding:var(--space-2) var(--space-3);font-family:var(--font-mono);font-size:0.8rem;color:var(--text-secondary);letter-spacing:0.06em;text-decoration:none;border-radius:var(--radius);transition:color 0.25s ease;white-space:nowrap;position:relative}.nav-link::after{content:'';position:absolute;bottom:4px;left:var(--space-3);right:var(--space-3);height:1px;background:var(--accent);transform:scaleX(0);transform-origin:center;transition:transform 0.25s ease, opacity 0.25s ease;opacity:0}.nav-link:hover{color:var(--accent)}.nav-link:hover::after{transform:scaleX(1);opacity:1}.nav-link.active{color:var(--accent)}.nav-link.active::after{transform:scaleX(1);opacity:1}.nav-dropdown{position:absolute;top:calc(100% + 8px);left:0;min-width:160px;white-space:nowrap;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-2);opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity 0.2s ease, transform 0.2s ease;z-index:200}.nav-dropdown::before{content:'';position:absolute;top:-12px;left:0;right:0;height:12px}.nav-item:hover .nav-dropdown{opacity:1;pointer-events:auto;transform:translateY(0)}.nav-dropdown a{display:block;padding:var(--space-2) var(--space-3);font-family:var(--font-mono);font-size:0.78rem;color:var(--text-secondary);border-radius:var(--radius);transition:var(--transition);letter-spacing:0.04em}.nav-dropdown a:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-controls{display:flex;align-items:center;gap:var(--space-4);margin-left:auto;flex-shrink:0;min-width:0}@media (max-width: 768px){.nav-controls{gap:var(--space-3)}}.nav-slider{position:relative;display:inline-flex;align-items:center;justify-content:space-between;width:48px;height:24px;border-radius:12px;background-color:var(--bg-secondary);border:1px solid var(--border);cursor:pointer;padding:0 5px;transition:var(--transition);user-select:none}.nav-slider .slider-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;background-color:var(--bg-card);box-shadow:0 1px 3px rgba(0,0,0,0.15);border-radius:50%;transition:transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);z-index:0}[data-theme="dark"] .nav-slider .slider-knob{background-color:var(--text-muted)}.nav-slider svg{width:12px;height:12px;z-index:1;color:var(--text-primary);transition:color 0.4s}.nav-slider .lang-text{font-family:var(--font-mono);font-size:0.55rem;font-weight:700;z-index:1;color:var(--text-primary);transition:color 0.4s}[data-theme="dark"] .nav-slider.theme-slider .slider-knob{transform:translateX(24px)}[data-lang-pref="tr"] .nav-slider.lang-slider .slider-knob{transform:translateX(24px)}.nav-slider:hover{border-color:var(--border-accent)}.nav-hamburger{display:none;flex-direction:column;justify-content:center;gap:5px;width:32px;height:32px;cursor:pointer;background:none;border:none;padding:4px}.nav-hamburger span{display:block;width:100%;height:1px;background:var(--text-secondary);transition:var(--transition)}@media (max-width: 768px){.nav-hamburger{display:flex}}.nav-hamburger.open span:nth-child(1){transform:translateY(6px) rotate(45deg)}.nav-hamburger.open span:nth-child(2){opacity:0}.nav-hamburger.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.nav-mobile{display:none;position:fixed;top:var(--nav-height);left:0;right:0;background:var(--bg-secondary);border-bottom:1px solid var(--border);padding:var(--space-4) var(--space-6);z-index:99;flex-direction:column;gap:var(--space-1);transform:translateY(-8px);opacity:0;transition:transform 0.25s ease, opacity 0.25s ease}@media (max-width: 768px){.nav-mobile{display:flex;pointer-events:none}.nav-mobile.open{pointer-events:auto;transform:translateY(0);opacity:1}}.nav-mobile a{display:block;padding:var(--space-3) var(--space-4);font-family:var(--font-mono);font-size:0.85rem;color:var(--text-secondary);border-radius:var(--radius);transition:var(--transition);letter-spacing:0.04em;border:1px solid transparent}.nav-mobile a:hover,.nav-mobile a.active{color:var(--accent);background:var(--bg-hover);border-color:var(--border)}.nav-link,.nav-dropdown a{transition:color 0.25s ease}.nav-link:hover,.nav-dropdown a:hover{color:var(--accent) !important}.nav-palette-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-primary);cursor:pointer;padding:0;transition:var(--transition)}.nav-palette-btn svg{width:14px;height:14px;color:var(--accent);transition:color 0.3s ease, transform 0.3s ease}.nav-palette-btn:hover{border-color:var(--border-accent);transform:scale(1.08)}.nav-palette-btn:hover svg{transform:rotate(20deg)}.nav-palette-btn:active{transform:scale(0.95)}.site-footer{padding:0 var(--space-6);margin-top:0}.footer-inner{max-width:var(--max-text);margin:0 auto;padding:var(--space-8) 0;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);flex-wrap:nowrap}@media (max-width: 768px){.footer-inner{flex-direction:row;align-items:center;justify-content:space-between;gap:var(--space-3)}}.footer-links{display:flex;align-items:center;gap:var(--space-6);flex-wrap:nowrap}@media (max-width: 768px){.footer-links{gap:var(--space-3)}}.footer-links a{font-family:var(--font-mono);font-size:0.8rem;color:var(--text-secondary);letter-spacing:0.04em;text-decoration:none;transition:var(--transition);display:flex;align-items:center;gap:var(--space-2)}.footer-links a:hover{color:var(--accent)}.footer-copy{font-family:var(--font-mono);font-size:0.78rem;color:var(--text-muted);letter-spacing:0.04em;white-space:nowrap;margin:0}.post-card{display:flex;flex-direction:row;gap:var(--space-4);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-secondary);text-decoration:none;transition:transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),border-color 0.3s ease,box-shadow 0.3s ease;color:var(--text-primary);overflow:hidden;align-items:center}@media (max-width: 640px){.post-card{flex-direction:column}}.post-card:hover{border-color:var(--accent);box-shadow:0 4px 20px rgba(0,0,0,0.15);transform:translateY(-2px)}.post-card:hover .post-card-image img{transform:scale(1.05)}.post-card-image{flex-shrink:0;width:240px;aspect-ratio:16 / 9;height:auto;border-radius:var(--radius-lg);overflow:hidden;position:relative}@media (max-width: 640px){.post-card-image{width:100%;height:180px}}.post-card-image img{width:100%;height:100%;object-fit:cover;transition:transform 0.5s cubic-bezier(0.4, 0, 0.2, 1)}.post-card-divider{width:1px;background:var(--border);align-self:stretch;margin:var(--space-2) 0;opacity:0.6}@media (max-width: 640px){.post-card-divider{width:auto;height:1px;margin:0 var(--space-2)}}.post-card-content{display:flex;flex-direction:column;flex-grow:1;justify-content:center;padding:var(--space-1) 0}.post-card-header{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-4);margin-bottom:var(--space-2)}@media (max-width: 640px){.post-card-header{flex-direction:column;gap:var(--space-1)}}.post-card-title{font-family:var(--font-mono);font-size:1.15rem;font-weight:600;color:var(--text-primary);margin:0;letter-spacing:0.01em;line-height:1.3;transition:color 0.2s ease}.post-card:hover .post-card-title{color:var(--accent)}.post-card-date{font-family:var(--font-mono);font-size:0.8rem;color:var(--text-muted);letter-spacing:0.04em;flex-shrink:0}.post-card-excerpt{margin-bottom:var(--space-3);flex-grow:1}.post-card-excerpt-text{font-family:var(--font-body);font-size:0.9rem;color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5}.post-card-footer{display:flex;justify-content:space-between;align-items:center;margin-top:auto}.post-card-tags{display:flex;gap:var(--space-2);flex-wrap:wrap}.post-card-tags .tag{font-size:0.7rem;padding:3px 8px;border-radius:var(--radius-sm);background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-secondary);transition:color 0.2s ease, border-color 0.2s ease}.post-card:hover .post-card-tags .tag{border-color:var(--accent);color:var(--text-primary)}.post-card-readmore{font-family:var(--font-mono);font-size:0.8rem;color:var(--accent);font-weight:600;letter-spacing:0.04em;transition:var(--transition);white-space:nowrap}.post-card-readmore::after{content:" →";display:inline-block;transition:transform 0.2s ease}.post-card:hover .post-card-readmore::after{transform:translateX(4px)}.project-card{display:flex;flex-direction:column;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;text-decoration:none;color:var(--text-primary);transition:border-color 0.5s ease, box-shadow 0.5s ease;position:relative;aspect-ratio:16 / 9;width:90%;margin:0 auto}.project-card:hover{border-color:var(--accent);box-shadow:0 8px 24px rgba(0,0,0,0.25)}.project-card-thumb{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--bg-secondary);overflow:hidden;display:flex;align-items:center;justify-content:center;z-index:1}.project-card-thumb img{width:100%;height:100%;object-fit:cover;transition:transform 0.6s cubic-bezier(0.4, 0, 0.2, 1)}.project-card:hover .project-card-thumb img{transform:scale(1.05)}.project-card-placeholder-img{width:100%;height:100%;object-fit:cover;opacity:0.5;transition:transform 0.6s cubic-bezier(0.4, 0, 0.2, 1),opacity 0.5s ease}.project-card:hover .project-card-placeholder-img{opacity:0.8;transform:scale(1.05)}.project-card-body{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;padding:var(--space-4);background:linear-gradient(to top, rgba(0,0,0,0.82) 0%, rgba(0,0,0,0.55) 50%, transparent 100%);opacity:0;transition:opacity 0.35s ease}.project-card:hover .project-card-body{opacity:1}.project-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-1)}.project-card-title{font-family:var(--font-mono);font-size:0.97rem;font-weight:600;color:#ffffff;letter-spacing:0.02em;line-height:1.35}.project-card-year{font-family:var(--font-mono);font-size:0.72rem;color:rgba(255,255,255,0.6);flex-shrink:0;margin-top:2px}.project-card-types{display:flex;gap:var(--space-1);flex-wrap:wrap;margin-bottom:var(--space-2)}.project-card-body .project-card-types .tag{background:#2d2d2d !important;border-color:#404040 !important;color:#ffffff !important}.project-card-body .project-card-types .tag.tag-hardware{background:#ef4444 !important;border-color:#f87171 !important;color:#ffffff !important}.project-card-body .project-card-types .tag.tag-firmware{background:#10b981 !important;border-color:#34d399 !important;color:#ffffff !important}.project-card-body .project-card-types .tag.tag-software{background:#3b82f6 !important;border-color:#60a5fa !important;color:#ffffff !important}.project-card-body .project-card-types .tag.tag-soft{background:#eab308 !important;border-color:#facc15 !important;color:#000000 !important}.project-card-body .project-card-types .tag.tag-ai{background:#f97316 !important;border-color:#fb923c !important;color:#ffffff !important}.project-card-desc{font-family:var(--font-body);font-size:0.85rem;color:rgba(255,255,255,0.85);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.search-wrapper{margin-bottom:var(--space-8)}.search-input-row{display:flex;align-items:center;gap:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-card);padding:var(--space-2) var(--space-4);transition:border-color 0.2s ease}.search-input-row:focus-within{border-color:var(--accent)}.search-icon{color:var(--text-muted);flex-shrink:0;font-family:var(--font-mono);font-size:0.85rem}.search-input{flex:1;background:none;border:none;outline:none;font-family:var(--font-mono);font-size:0.87rem;color:var(--text-primary)}.search-input::placeholder{color:var(--text-muted)}.search-clear{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1rem;line-height:1;padding:0;transition:color 0.2s ease;display:none}.search-clear:hover{color:var(--text-primary)}.search-clear.visible{display:block}.search-count{font-family:var(--font-mono);font-size:0.78rem;color:var(--text-muted);margin-top:var(--space-3);display:none}.search-count.visible{display:block}.search-no-results{font-family:var(--font-mono);font-size:0.87rem;color:var(--text-muted);padding:var(--space-12) 0;text-align:center;display:none}.search-no-results.visible{display:block}.home-wrap{max-width:var(--max-text);margin:0 auto;padding:var(--space-4) var(--space-6) 0}@media (max-width: 768px){.home-wrap{padding:var(--space-4) var(--space-4) 0}}.hero{padding:var(--space-2) 0 var(--space-4);margin-bottom:0;animation:fadeInUp 0.5s ease both}.hero-label{font-family:var(--font-mono);font-size:0.75rem;color:var(--text-muted);letter-spacing:0.12em;text-transform:uppercase;margin-bottom:var(--space-4)}.hero-name{font-size:2.2rem;font-weight:700;letter-spacing:0.04em;color:var(--text-primary);line-height:1.1;margin-bottom:var(--space-2);position:relative;width:fit-content}@media (max-width: 768px){.hero-name{font-size:1.8rem}}.hero-title{font-size:1rem;color:var(--accent);font-weight:400;letter-spacing:0.06em;margin-bottom:var(--space-3);display:flex;align-items:center;gap:4px}.loop-text{display:inline-block}@keyframes blink{50%{opacity:0}}#search-results.fade-in{animation:fadeInSearch 0.4s ease forwards}@keyframes fadeInSearch{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hero-desc{font-family:var(--font-body);font-size:0.97rem;color:var(--text-secondary);line-height:1.75;max-width:100%}.home-section{margin-bottom:var(--space-4);padding-top:0}.home-section:last-of-type{margin-bottom:0}.home-section-label{font-family:var(--font-mono);font-size:0.8rem;color:var(--accent);letter-spacing:0.12em;text-transform:uppercase;margin-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-3)}.home-section-label::before{content:'';width:3px;height:14px;background:var(--accent);border-radius:1px}.home-about p{font-family:var(--font-body);font-size:0.95rem;color:var(--text-secondary);line-height:1.8;margin-bottom:var(--space-4)}.nav-guide{display:grid;grid-template-columns:repeat(2, 1fr);gap:var(--space-3)}@media (max-width: 768px){.nav-guide{grid-template-columns:1fr}}.nav-guide-card{display:flex;align-items:flex-start;gap:var(--space-4);padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-card);text-decoration:none;color:var(--text-primary);transition:var(--transition)}.nav-guide-card:hover{border-color:var(--accent);background:var(--accent-dim)}.nav-guide-path{font-family:var(--font-mono);font-size:0.85rem;color:var(--accent);font-weight:600;white-space:nowrap;padding-top:1px;min-width:100px}.nav-guide-desc{font-family:var(--font-body);font-size:0.87rem;color:var(--text-secondary);line-height:1.55}.recent-grid{display:flex;flex-direction:column;gap:var(--space-2)}.recent-grid .post-card{padding:var(--space-2) var(--space-3);gap:var(--space-2)}.recent-grid .post-card-image{width:144px;aspect-ratio:16 / 9;height:auto;border-radius:var(--radius-lg);overflow:hidden}.recent-grid .post-card-image img{border-radius:var(--radius-lg)}@media (max-width: 640px){.recent-grid .post-card-image{width:100px}}.recent-grid .post-card-header{margin-bottom:0}.recent-grid .post-card-title{font-size:0.88rem}.recent-grid .post-card-excerpt-text{font-size:0.78rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:unset}.recent-grid .post-card-readmore{font-size:0.72rem}.recent-grid .post-card-tags{display:none}.home-projects-gallery-wrap{position:relative;display:flex;align-items:center;width:100%;margin-top:var(--space-2)}.home-projects-gallery-wrap .projects-grid{display:flex;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:var(--space-2);gap:var(--space-3);scroll-snap-type:x mandatory;flex:1;min-width:0}.home-projects-gallery-wrap .projects-grid::-webkit-scrollbar{display:none}.home-projects-gallery-wrap .projects-grid .project-card{flex:0 0 calc(45% - var(--space-2));scroll-snap-align:start;min-width:255px}@media (max-width: 600px){.home-projects-gallery-wrap .projects-grid .project-card{flex:0 0 75%}}.home-projects-gallery-wrap .pt-gallery-btn-next.at-end{background:var(--accent);color:var(--bg-primary);border-color:var(--accent)}.home-projects-gallery-wrap .pt-gallery-btn-next.at-end:hover{background:var(--link-hover);border-color:var(--link-hover);color:var(--bg-primary)}.home-section .project-card-title{font-size:0.85rem}.home-section .project-card-year{font-size:0.65rem}.home-section .project-card-desc{font-size:0.78rem;-webkit-line-clamp:1;line-height:1.5}.home-section .project-card-types{margin-bottom:var(--space-1)}.recent-section-divider{display:flex;align-items:center;gap:var(--space-2);margin:var(--space-3) 0 var(--space-2);font-family:var(--font-mono);font-size:0.70rem;letter-spacing:0.08em}.recent-section-divider span{color:var(--accent);font-weight:600}.recent-section-divider::before{content:'';flex:1;height:1px;background:var(--border)}.recent-section-divider::after{content:'';flex:1;height:1px;background:var(--border)}.recent-footer{margin-top:var(--space-1);margin-bottom:var(--space-2);font-family:var(--font-mono);font-size:0.65rem;color:var(--text-muted);text-align:center;letter-spacing:0.02em}.recent-footer a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.recent-footer a:hover{color:var(--link-hover)}.blog-wrap{max-width:var(--max-text);margin:0 auto;padding:var(--space-8) var(--space-6) 0}@media (max-width: 768px){.blog-wrap{padding:var(--space-6) var(--space-4) 0}}.blog-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:var(--space-8)}.blog-tab{padding:var(--space-3) var(--space-6);font-family:var(--font-mono);font-size:0.82rem;color:var(--text-muted);letter-spacing:0.06em;cursor:pointer;border:none;background:none;border-bottom:2px solid transparent;margin-bottom:-1px;transition:var(--transition)}.blog-tab:hover{color:var(--text-secondary)}.blog-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.post-list{display:flex;flex-direction:column;gap:var(--space-3)}.post-panel{display:none}.post-panel.active{display:block}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-6);border:1px dashed var(--border);border-radius:var(--radius-lg);background:var(--bg-card);text-align:center;margin:var(--space-4) 0}.empty-state .empty-state-icon{font-size:2.5rem;margin-bottom:var(--space-4)}.empty-state .empty-state-text{font-family:var(--font-mono);font-size:0.9rem;color:var(--text-secondary);max-width:420px;line-height:1.6}.load-more-btn{display:block;width:100%;padding:var(--space-4);margin-top:var(--space-6);font-family:var(--font-mono);font-size:0.82rem;color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-card);cursor:pointer;letter-spacing:0.06em;transition:var(--transition);text-align:center}.load-more-btn:hover{color:var(--text-primary);border-color:var(--border-accent);background:var(--bg-hover)}.post-wrap{max-width:var(--max-text);margin:0 auto;padding:var(--space-8) var(--space-6) 0}@media (max-width: 768px){.post-wrap{padding:var(--space-6) var(--space-4) 0}}.post-header{margin-bottom:var(--space-8);animation:fadeInUp 0.4s ease both}.post-meta-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.post-date{font-family:var(--font-mono);font-size:0.78rem;color:var(--text-muted);letter-spacing:0.04em}.post-reading-time{font-family:var(--font-mono);font-size:0.75rem;color:var(--text-muted)}.post-title{font-size:1.9rem;font-weight:700;letter-spacing:0.02em;color:var(--text-primary);margin-bottom:var(--space-4);line-height:1.2}@media (max-width: 768px){.post-title{font-size:1.5rem}}.post-lang-switch{display:inline-flex;align-items:center;padding:var(--space-2) var(--space-4);font-family:var(--font-mono);font-size:0.78rem;color:var(--accent);border:1px solid rgba(124,158,245,0.3);border-radius:var(--radius);background:var(--accent-dim);text-decoration:none;letter-spacing:0.04em;transition:var(--transition);margin-bottom:var(--space-6)}.post-lang-switch:hover{border-color:var(--accent);color:var(--link-hover)}.post-tags-bottom{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--border);display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.post-tags-label{font-family:var(--font-mono);font-size:0.85rem;color:var(--text-muted);letter-spacing:0.06em}.post-back{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:0.8rem;color:var(--text-secondary);text-decoration:none;letter-spacing:0.04em;margin-top:var(--space-8);transition:var(--transition)}.post-back:hover{color:var(--accent)}.post-toc{position:sticky;top:calc(var(--nav-height) + var(--space-6));background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4)}@media (max-width: 1024px){.post-toc{display:none}}.toc-label{font-family:var(--font-mono);font-size:0.85rem;color:var(--text-muted);letter-spacing:0.1em;text-transform:uppercase;margin-bottom:var(--space-3)}.toc-label::before{content:"[ ";color:var(--accent)}.toc-label::after{content:" ]";color:var(--accent)}.toc-list{display:flex;flex-direction:column;gap:2px}.toc-list a{display:block;font-family:var(--font-mono);font-size:0.75rem;color:var(--text-muted);text-decoration:none;padding:3px var(--space-2);border-radius:var(--radius);border-left:2px solid transparent;line-height:1.4;transition:var(--transition)}.toc-list a:hover,.toc-list a.active{color:var(--accent);border-left-color:var(--accent);background:var(--accent-dim)}.toc-list a.toc-h3{padding-left:var(--space-4);font-size:0.72rem}.toc-mobile{margin-bottom:var(--space-6);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}@media (min-width: 1024px){.toc-mobile{display:none}}.toc-mobile-toggle{width:100%;padding:var(--space-3) var(--space-4);display:flex;align-items:center;justify-content:space-between;font-family:var(--font-mono);font-size:0.8rem;color:var(--text-secondary);background:var(--bg-card);border:none;cursor:pointer;letter-spacing:0.06em;transition:var(--transition)}.toc-mobile-toggle:hover{background:var(--bg-hover)}.toc-mobile-toggle span{transition:transform 0.2s ease}.toc-mobile-toggle.open span{transform:rotate(180deg)}.toc-mobile-content{display:none;padding:var(--space-4);background:var(--bg-card)}.toc-mobile-content.open{display:block}.resume-wrap{max-width:var(--max-text);margin:0 auto;padding:var(--space-8) var(--space-6) 0}@media (max-width: 768px){.resume-wrap{padding:var(--space-6) var(--space-4) 0}}.resume-header{margin-bottom:var(--space-6);animation:fadeInUp 0.4s ease both}.resume-page-title{font-size:2rem;font-weight:700;letter-spacing:0.04em;color:var(--text-primary);margin-bottom:var(--space-4)}.resume-bio{font-family:var(--font-body);font-size:0.95rem;color:var(--text-secondary);line-height:1.8;margin-bottom:var(--space-4)}.resume-bio-container{display:block;margin-bottom:var(--space-6);position:relative}.resume-bio-container::after{content:"";display:table;clear:both}@media (max-width: 768px){.resume-bio-container{display:flex;flex-direction:column-reverse;gap:var(--space-6);align-items:center;text-align:center}}.resume-bio-text .resume-bio{margin-bottom:0}.resume-bio-image{float:right;margin-left:var(--space-8);margin-bottom:var(--space-4);width:160px;height:160px;border-radius:var(--radius-lg);border:4px solid var(--bg-card);box-shadow:0 4px 12px rgba(0,0,0,0.15);object-fit:cover;transition:transform 0.3s ease, border-color 0.3s ease}.resume-bio-image:hover{transform:scale(1.05);border-color:var(--accent)}@media (max-width: 768px){.resume-bio-image{float:none;margin-left:0;margin-bottom:0;width:140px;height:140px}}[data-theme="dark"] .light-only{display:none !important}[data-theme="light"] .dark-only{display:none !important}.resume-cv-link{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-6);font-family:var(--font-mono);font-size:0.8rem;color:var(--accent);border:1px solid rgba(124,158,245,0.4);border-radius:var(--radius);background:var(--accent-dim);text-decoration:none;letter-spacing:0.06em;transition:var(--transition)}.resume-cv-link:hover{border-color:var(--accent);color:var(--link-hover)}.resume-cv-links{display:flex;gap:var(--space-4);flex-wrap:wrap;margin-top:var(--space-4)}.resume-cv-links .cv-tr{color:#f87171;border-color:rgba(248,113,113,0.4);background:rgba(248,113,113,0.08)}.resume-cv-links .cv-tr:hover{border-color:#f87171;color:#f87171}.resume-cv-links .cv-en{color:#7c9ef5;border-color:rgba(124,158,245,0.4);background:rgba(124,158,245,0.08);transition:var(--transition)}[data-theme="light"] .resume-cv-links .cv-en{color:#3d5fc4;border-color:rgba(61,95,196,0.4);background:rgba(61,95,196,0.08)}.resume-cv-links .cv-en:hover{border-color:#7c9ef5;color:#a8bef8}[data-theme="light"] .resume-cv-links .cv-en:hover{border-color:#3d5fc4;color:#2a45a0}.resume-cv-links .cv-certs{color:var(--accent-green);border-color:rgba(93,184,136,0.3);background:rgba(93,184,136,0.08)}.resume-cv-links .cv-certs:hover{border-color:var(--accent-green);color:var(--accent-green);background:rgba(93,184,136,0.16)}.resume-section{margin-bottom:var(--space-8);padding-top:var(--space-8);border-top:1px solid var(--border-dim);scroll-margin-top:120px}.resume-section:last-of-type{margin-bottom:0}.resume-section-title{font-family:var(--font-mono);font-size:0.95rem;color:var(--accent);letter-spacing:0.12em;text-transform:uppercase;margin-bottom:var(--space-6);display:flex;align-items:center;gap:var(--space-3)}.resume-section-title::before{content:'';width:3px;height:14px;background:var(--accent);border-radius:1px}.skills-grid{display:flex;flex-direction:column;gap:var(--space-4)}.skills-group{display:flex;gap:var(--space-4);align-items:flex-start}@media (max-width: 768px){.skills-group{flex-direction:column;gap:var(--space-2)}}.skills-group-label{font-family:var(--font-mono);font-size:0.85rem;color:var(--text-muted);letter-spacing:0.06em;min-width:100px;padding-top:3px;flex-shrink:0}.skills-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.timeline{display:flex;flex-direction:column;gap:0}.timeline-entry{display:flex;gap:var(--space-6);padding-bottom:var(--space-4);position:relative}.timeline-entry:last-child{padding-bottom:0}.timeline-entry:last-child .timeline-body{padding-bottom:0}.timeline-entry:not(:last-child)::before{content:'';position:absolute;left:3.5px;top:10px;bottom:-10px;width:1px;background:var(--border)}@media (max-width: 768px){.timeline-entry{flex-direction:column;gap:var(--space-2)}.timeline-entry::before{display:none}}.timeline-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0;margin-top:6px;position:absolute;left:0;z-index:2}@media (max-width: 768px){.timeline-dot{display:none}}.timeline-body{flex:1;padding-left:24px;padding-bottom:var(--space-4)}.timeline-role{font-family:var(--font-mono);font-size:0.97rem;font-weight:600;color:var(--text-primary);letter-spacing:0.02em;margin-bottom:2px}.timeline-company{font-family:var(--font-mono);font-size:0.85rem;color:var(--accent);margin-bottom:var(--space-1)}.timeline-date{font-family:var(--font-mono);font-size:0.75rem;color:var(--text-muted);letter-spacing:0.04em;margin-bottom:var(--space-3)}.timeline-bullets{list-style:none;display:flex;flex-direction:column;gap:var(--space-1)}.timeline-bullets li{font-family:var(--font-body);font-size:0.87rem;color:var(--text-secondary);line-height:1.6;padding-left:var(--space-4);position:relative}.timeline-bullets li::before{content:'';position:absolute;left:0;top:0.7em;width:4px;height:4px;background:var(--accent);border-radius:50%;opacity:0.5}.resume-quick-nav{display:flex;justify-content:center;align-items:flex-end;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4);padding-bottom:0;border-bottom:1px solid var(--border);position:sticky;top:var(--nav-height);background-color:var(--bg-primary);z-index:10;padding-top:var(--space-4);margin-bottom:var(--space-8);transition:top 0.3s cubic-bezier(0.4, 0, 0.2, 1);will-change:transform, top;margin-left:calc(-1 * var(--space-6));margin-right:calc(-1 * var(--space-6));padding-left:var(--space-6);padding-right:var(--space-6)}.resume-quick-nav.reveal{transition:opacity 0.5s ease,transform 0.5s ease,top 0.3s cubic-bezier(0.4, 0, 0.2, 1)}.resume-quick-nav::before{content:'';position:absolute;top:0;bottom:0;left:-200px;right:-200px;background-color:var(--bg-primary);z-index:-1;pointer-events:none}@media (max-width: 768px){.resume-quick-nav{margin-left:calc(-1 * var(--space-4));margin-right:calc(-1 * var(--space-4));padding-left:var(--space-4);padding-right:var(--space-4)}.resume-quick-nav::before{display:none}}.resume-quick-nav a{position:relative;font-family:var(--font-body);font-size:0.95rem;font-weight:600;color:var(--text-secondary);text-decoration:none;padding:var(--space-2) var(--space-6);background-color:var(--bg-secondary);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:inset 0 -3px 6px rgba(0,0,0,0.05);border:1px solid var(--border);margin-bottom:-1px;transition:var(--transition)}.resume-quick-nav a:hover{color:var(--text-primary);background-color:var(--bg-hover)}.resume-quick-nav a.active{color:var(--accent);background-color:var(--bg-primary);box-shadow:0 -4px 12px rgba(0,0,0,0.05);border-color:var(--border);border-bottom-color:var(--bg-primary)}.site-nav.nav-hidden ~ #main-content .resume-quick-nav{top:0}.photo-timeline{display:flex;flex-direction:column;gap:var(--space-12);position:relative;padding-left:160px;margin-top:var(--space-6)}.photo-timeline::before{content:'';position:absolute;top:8px;bottom:0;left:133px;width:2px;background:linear-gradient(to bottom, var(--accent) 0%, var(--border) 15%, var(--border) 100%)}@media (max-width: 768px){.photo-timeline{padding-left:32px}.photo-timeline::before{left:5px}}.pt-item{position:relative;display:flex;flex-direction:column;gap:var(--space-3)}.pt-item::before{content:'';position:absolute;top:4px;left:-32px;width:12px;height:12px;background:var(--bg-primary);border:2px solid var(--accent);border-radius:50%;z-index:2}.pt-header{display:flex;flex-direction:column;gap:2px}.pt-date{position:absolute;left:-40px;transform:translateX(-100%);top:2px;white-space:nowrap;text-align:right;font-family:var(--font-mono);font-size:0.8rem;color:var(--accent);letter-spacing:0.04em}@media (max-width: 768px){.pt-date{position:static;transform:none;width:auto;text-align:left;white-space:normal;margin-bottom:var(--space-1)}}.pt-title{font-family:var(--font-mono);font-size:1.1rem;font-weight:700;color:var(--text-primary)}.pt-desc{font-family:var(--font-body);font-size:0.95rem;color:var(--text-secondary);line-height:1.6}.pt-image{margin-top:var(--space-2);width:100%;max-width:400px;border-radius:var(--radius-lg);border:4px solid var(--bg-card);box-shadow:0 4px 12px rgba(0,0,0,0.15);transition:transform 0.3s ease, border-color 0.3s ease;object-fit:cover;cursor:zoom-in}.pt-image:hover{transform:scale(1.02);border-color:var(--accent)}.pt-gallery-wrap{position:relative;margin-top:var(--space-2);display:flex;align-items:center;width:100%}.pt-gallery{display:flex;gap:var(--space-3);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:var(--space-1);flex:1;min-width:0}.pt-gallery::-webkit-scrollbar{display:none}.pt-gallery .pt-image{margin-top:0;width:auto;max-width:none;height:220px;flex-shrink:0;border-radius:var(--radius-lg);border:2px solid var(--border);box-shadow:0 4px 12px rgba(0,0,0,0.15);object-fit:cover;transition:transform 0.3s ease, border-color 0.3s ease;cursor:zoom-in}.pt-gallery .pt-image:hover{transform:scale(1.02);border-color:var(--accent)}@media (max-width: 768px){.pt-gallery .pt-image{height:160px}}.pt-gallery-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:5;background:var(--bg-primary);color:var(--accent);border:1px solid var(--border);border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,0.15);transition:opacity 0.3s ease, transform 0.2s ease, background 0.2s ease}.pt-gallery-btn:hover{background:var(--bg-hover);transform:translateY(-50%) scale(1.1)}.pt-gallery-btn.hidden{opacity:0;pointer-events:none}.pt-gallery-btn-prev{left:-18px}.pt-gallery-btn-next{right:-18px}.projects-wrap{max-width:712px;margin:0 auto;padding:var(--space-8) var(--space-6) 0}@media (max-width: 768px){.projects-wrap{padding:var(--space-6) var(--space-4) 0}}.projects-header{margin-bottom:var(--space-8);animation:fadeInUp 0.4s ease both}.projects-page-title{font-size:2rem;font-weight:700;letter-spacing:0.04em;color:var(--text-primary);margin-bottom:var(--space-2)}.projects-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:var(--space-6)}@media (max-width: 768px){.projects-grid{grid-template-columns:1fr}}.project-detail-wrap{max-width:var(--max-text);margin:0 auto;padding:var(--space-8) var(--space-6) 0}@media (max-width: 768px){.project-detail-wrap{padding:var(--space-6) var(--space-4) 0}}.project-detail-header{margin-bottom:var(--space-8);animation:fadeInUp 0.4s ease both}.project-detail-title{font-size:2rem;font-weight:700;letter-spacing:0.03em;color:var(--text-primary);margin-bottom:var(--space-4);line-height:1.2}@media (max-width: 768px){.project-detail-title{font-size:1.6rem}}.project-detail-meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-4)}.project-detail-meta .project-card-types{margin-bottom:0;width:100%;margin-top:var(--space-1)}.project-detail-meta .project-card-year{margin-top:0}.project-status{font-family:var(--font-mono);font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;display:inline-flex;align-items:center;gap:6px}.project-status::before{content:'';display:block;width:6px;height:6px;border-radius:50%}.project-status.status-completed{color:var(--accent-green)}.project-status.status-completed::before{background-color:var(--accent-green)}.project-status.status-ongoing{color:var(--accent-warm)}.project-status.status-ongoing::before{background-color:var(--accent-warm);box-shadow:0 0 0 0 rgba(232,149,109,0.4);animation:pulse-status 2s infinite}.project-status.status-archived{color:var(--text-muted)}.project-status.status-archived::before{background-color:var(--text-muted)}@keyframes pulse-status{0%{box-shadow:0 0 0 0 rgba(232,149,109,0.4)}70%{box-shadow:0 0 0 4px rgba(232,149,109,0)}100%{box-shadow:0 0 0 0 rgba(232,149,109,0)}}.project-en-only{display:inline-block;font-family:var(--font-mono);font-size:0.72rem;color:var(--text-muted);border:1px solid var(--border);border-radius:2px;padding:2px 8px;letter-spacing:0.04em;display:none}.project-en-only.visible{display:inline-block}.project-gallery{margin-bottom:var(--space-8);overflow:hidden}.gallery-scroll{display:flex;gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-3);scrollbar-width:thin}.gallery-scroll img{height:240px;width:auto;border-radius:var(--radius-lg);border:1px solid var(--border);cursor:pointer;transition:var(--transition);flex-shrink:0}.gallery-scroll img:hover{border-color:var(--accent);transform:scale(1.01)}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));gap:var(--space-3)}.gallery-grid img{width:100%;height:200px;object-fit:cover;border-radius:var(--radius-lg);border:1px solid var(--border);cursor:pointer;transition:var(--transition)}.gallery-grid img:hover{border-color:var(--accent);transform:scale(1.01)}.lightbox{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.94);z-index:9000;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-8);animation:fadeIn 0.2s ease}.lightbox.open{display:flex}.lightbox-img{max-width:90vw;max-height:78vh;border-radius:var(--radius-lg);object-fit:contain}.lightbox-caption{font-family:var(--font-body);font-size:0.95rem;color:rgba(255,255,255,0.85);text-align:center;max-width:800px;line-height:1.5;margin:0;letter-spacing:0.02em;animation:fadeInUp 0.3s ease both}.lightbox-close{position:absolute;top:var(--space-4);right:var(--space-4);width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-size:1.2rem;cursor:pointer;transition:var(--transition)}.lightbox-close:hover{color:var(--text-primary);border-color:var(--accent)}.project-github-link{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);font-family:var(--font-mono);font-size:0.82rem;color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);text-decoration:none;letter-spacing:0.06em;transition:var(--transition);margin-top:var(--space-6)}.project-github-link:hover{color:var(--accent);border-color:var(--accent);background:var(--bg-hover)}.project-back{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:0.8rem;color:var(--text-secondary);text-decoration:none;letter-spacing:0.04em;margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--border);display:block;transition:var(--transition)}.project-back:hover{color:var(--accent)}.not-found-wrap{max-width:var(--max-text);margin:0 auto;padding:var(--space-8) var(--space-6);display:flex;align-items:center;justify-content:center;min-height:calc(100vh - var(--nav-height) - 120px)}.not-found-content{text-align:center;animation:fadeInUp 0.5s ease both}.not-found-code{font-family:var(--font-mono);font-size:8rem;font-weight:700;letter-spacing:-0.04em;color:var(--text-primary);line-height:1;opacity:0.12;user-select:none}@media (max-width: 768px){.not-found-code{font-size:5rem}}.not-found-divider{width:48px;height:2px;background:var(--accent);margin:var(--space-6) auto;border-radius:1px}.not-found-title{font-family:var(--font-mono);font-size:1.4rem;font-weight:600;color:var(--text-primary);letter-spacing:0.02em;margin-bottom:var(--space-3)}.not-found-desc{font-family:var(--font-body);font-size:0.95rem;color:var(--text-secondary);line-height:1.6;margin-bottom:var(--space-8)}.not-found-link{display:inline-block;font-family:var(--font-mono);font-size:0.82rem;color:var(--accent);letter-spacing:0.06em;text-decoration:none;padding:var(--space-2) var(--space-6);border:1px solid rgba(124,158,245,0.4);border-radius:var(--radius);background:var(--accent-dim);transition:var(--transition)}.not-found-link:hover{border-color:var(--accent);color:var(--link-hover);background:rgba(124,158,245,0.12)}.certificates-wrap{max-width:var(--max-layout);margin:0 auto;padding:var(--space-8) var(--space-6) 0}@media (max-width: 768px){.certificates-wrap{padding:var(--space-6) var(--space-4) 0}}.certificates-header{margin-bottom:var(--space-8);animation:fadeInUp 0.4s ease both}.certificates-page-title{font-size:2rem;font-weight:700;letter-spacing:0.04em;color:var(--text-primary);margin-bottom:var(--space-2)}.certificates-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:var(--space-8);margin-bottom:var(--space-16)}@media (max-width: 992px){.certificates-grid{gap:var(--space-6)}}@media (max-width: 768px){.certificates-grid{grid-template-columns:1fr;gap:var(--space-6)}}.certificate-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;height:490px;box-shadow:0 4px 12px rgba(0,0,0,0.05);transition:var(--transition)}.certificate-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,0.1)}.certificate-card:hover .certificate-title{white-space:normal;overflow:visible;text-overflow:initial;word-break:break-word}.certificate-preview-container{position:relative;width:100%;height:380px;background:var(--bg-secondary);border-bottom:1px solid var(--border);overflow:hidden}.certificate-pdf-preview{width:100%;height:100%;border:none}.certificate-meta{padding:var(--space-4) var(--space-6);display:flex;flex-direction:column;gap:var(--space-3);background:var(--bg-card);position:relative;z-index:2}.certificate-title{font-family:var(--font-body);font-size:1rem;font-weight:600;color:var(--text-primary);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.certificate-download-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-family:var(--font-mono);font-size:0.8rem;font-weight:600;color:var(--accent);border:1px solid rgba(124,158,245,0.3);border-radius:var(--radius);background:var(--accent-dim);text-decoration:none;letter-spacing:0.04em;transition:var(--transition);align-self:flex-start}.certificate-download-btn:hover{border-color:var(--accent);color:var(--link-hover);background:rgba(124,158,245,0.12)}.no-certificates{text-align:center;padding:var(--space-16) var(--space-6);border:1px dashed var(--border);border-radius:var(--radius-lg);background:var(--bg-card);margin-bottom:var(--space-16)}.no-certificates .no-certificates-icon{font-size:3rem;margin-bottom:var(--space-4)}.no-certificates p{font-family:var(--font-body);font-size:0.95rem;color:var(--text-secondary);max-width:460px;margin:0 auto;line-height:1.6}.container{max-width:var(--max-layout);margin:0 auto;padding:0 var(--space-6)}main{min-height:calc(100vh - var(--nav-height) - 120px)}.hr-label{display:flex;align-items:center;gap:var(--space-4);margin:var(--space-8) 0;color:var(--text-muted);font-family:var(--font-mono);font-size:0.85rem;letter-spacing:0.1em}.hr-label::before,.hr-label::after{content:'';flex:1;height:1px;background:var(--border)}.badge{display:inline-block;font-family:var(--font-mono);font-size:0.72rem;padding:2px 8px;border-radius:2px;border:1px solid var(--border);color:var(--text-muted);letter-spacing:0.04em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.hidden{display:none !important}[data-lang]{transition:opacity 0.2s ease}[data-lang].lang-hidden{display:none}.scroll-fab{position:fixed;bottom:var(--space-6);right:var(--space-6);width:48px;height:48px;border-radius:50%;background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border);box-shadow:0 4px 12px rgba(0,0,0,0.15);cursor:pointer;z-index:100;display:flex;align-items:center;justify-content:center;transition:background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease, opacity 0.3s ease, visibility 0.3s ease;opacity:0;visibility:hidden;backface-visibility:hidden;will-change:transform, opacity}.scroll-fab.visible{opacity:1;visibility:visible}.scroll-fab:hover{transform:translateY(-3px);background:var(--bg-hover);color:var(--text-primary);border-color:var(--accent);transition:transform 0.2s cubic-bezier(0.4, 0, 0.2, 1),background-color 0.3s ease,border-color 0.3s ease,color 0.3s ease}.scroll-fab svg{width:24px;height:24px;stroke:currentColor;stroke-width:2.5;fill:none;stroke-linecap:round;stroke-linejoin:round;transition:transform 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);will-change:transform}.scroll-fab.at-top svg{transform:rotate(180deg)}
