:root{--mono:'Space Mono',monospace;--sans:'Syne',sans-serif;--radius:4px;--nav-h:64px;--t:.22s ease}[data-theme=dark]{--bg:#141820;--surface:#1c2230;--surface2:#222b3a;--border:#2a3448;--text:#dde4ef;--muted:#6b7a96;--accent:#38d9f5;--accent2:#ff5f7e;--accent3:#a8f05c;--accent4:#ffc94d;--shadow:rgba(0,0,0,.45);--grid:rgba(56,217,245,.04)}[data-theme=light]{--bg:#f5f1e9;--surface:#faf7f2;--surface2:#ede8df;--border:#d6cfc3;--text:#2c3044;--muted:#7a7880;--accent:#3d8fa6;--accent2:#b85468;--accent3:#537d35;--accent4:#b87c25;--shadow:rgba(0,0,0,.1);--grid:rgba(61,143,166,.05)}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--mono);min-height:100vh;overflow-x:hidden;transition:background var(--t),color var(--t)}body::before{content:'';position:fixed;inset:0;z-index:0;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:40px 40px;pointer-events:none}.flex{display:flex}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-col{display:flex;flex-direction:column}.flex-wrap{flex-wrap:wrap}.ai-center{align-items:center}.gap-sm{gap:.5rem}.gap-md{gap:1rem}.gap-lg{gap:2rem}.z1{position:relative;z-index:1}.label{font-size:.62rem;letter-spacing:.14em;text-transform:uppercase}.fade-in{opacity:0;transform:translateY(22px);transition:opacity .6s ease,transform .6s ease}.fade-in.visible{opacity:1;transform:none}nav{position:fixed;top:0;left:0;right:0;height:var(--nav-h);z-index:100;padding:0 5vw;border-bottom:1px solid var(--border);transition:background var(--t),border-color var(--t)}[data-theme=dark] nav{background:rgba(20,24,32,.88);backdrop-filter:blur(18px)}[data-theme=light] nav{background:rgba(245,241,233,.92);backdrop-filter:blur(18px)}.nav-logo{font-family:var(--sans);font-weight:800;font-size:1.05rem;letter-spacing:.06em;color:var(--accent);text-decoration:none}.nav-logo span{color:var(--accent2)}.nav-links{list-style:none}.nav-links a{color:var(--muted);text-decoration:none;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;transition:color var(--t);position:relative;padding-bottom:3px}.nav-links a::after{content:'';position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--accent);transition:width .25s}.nav-links a:hover,.nav-links a.active{color:var(--accent)}.nav-links a:hover::after,.nav-links a.active::after{width:100%}.theme-btn{width:36px;height:36px;border-radius:50%;background:var(--surface2);border:1px solid var(--border);cursor:pointer;font-size:.88rem;transition:all var(--t);display:flex;align-items:center;justify-content:center}.theme-btn:hover{border-color:var(--accent4)}.lang-btn{background:0 0;border:1px solid var(--border);color:var(--muted);font-family:var(--mono);font-size:.65rem;letter-spacing:.1em;padding:.28rem .6rem;cursor:pointer;border-radius:var(--radius);transition:all var(--t)}.lang-btn.active,.lang-btn:hover{border-color:var(--accent);color:var(--accent);background:rgba(56,217,245,7%)}[data-theme=light] .lang-btn.active,[data-theme=light] .lang-btn:hover{background:rgba(61,143,166,.1)}.nav-ham{display:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:36px;height:36px;background:0 0;border:1px solid var(--border);border-radius:var(--radius);color:var(--muted);cursor:pointer;transition:border-color var(--t),color var(--t);flex-shrink:0}.nav-ham span{display:block;width:15px;height:1.5px;background:currentColor;transition:transform .25s,opacity .2s}.nav-ham:hover{border-color:var(--accent);color:var(--accent)}.nav-ham.open span:nth-child(1){transform:translateY(6.5px)rotate(45deg)}.nav-ham.open span:nth-child(2){opacity:0}.nav-ham.open span:nth-child(3){transform:translateY(-6.5px)rotate(-45deg)}.nav-drawer{display:none;position:fixed;top:var(--nav-h);left:0;right:0;z-index:99;flex-direction:column;padding:.75rem 6vw 1rem;border-bottom:1px solid var(--border)}[data-theme=dark] .nav-drawer{background:rgba(20,24,32,.97)}[data-theme=light] .nav-drawer{background:rgba(245,241,233,.98)}.nav-drawer.open{display:flex}.nav-drawer a{color:var(--muted);text-decoration:none;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;padding:.9rem 0;border-bottom:1px solid var(--border);transition:color var(--t)}.nav-drawer a:last-child{border-bottom:none}.nav-drawer a:hover{color:var(--accent)}#hero{min-height:100vh;padding:calc(var(--nav-h) + 60px)5vw 80px;display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}.hero-tag{color:var(--accent3);margin-bottom:1.25rem}.hero-tag::before{content:'';display:inline-block;width:22px;height:1px;background:var(--accent3);margin-right:.6rem;vertical-align:middle}h1{font-family:var(--sans);font-weight:800;font-size:clamp(2.6rem,5vw,4.2rem);line-height:1.06;margin-bottom:1rem}h1 em{font-style:normal;color:transparent;-webkit-text-stroke:1.5px var(--accent)}.hero-sub{color:var(--muted);font-size:.82rem;line-height:1.85;margin-bottom:2rem}.badge{font-size:.62rem;letter-spacing:.09em;text-transform:uppercase;padding:.28rem .72rem;border:1px solid var(--border);color:var(--muted);border-radius:var(--radius);transition:all var(--t)}.badge:hover{border-color:var(--accent2);color:var(--accent2)}.profile-frame{width:270px;height:270px;position:relative}.profile-frame::before,.profile-frame::after{content:'';position:absolute;border-radius:var(--radius);pointer-events:none;animation:framePulse 4s ease-in-out infinite}.profile-frame::before{inset:-10px;border:1px solid var(--accent);opacity:.35}.profile-frame::after{inset:-22px;border:1px solid var(--accent2);opacity:.15;animation-delay:.8s}@keyframes framePulse{0%,100%{opacity:.12;transform:scale(1)}50%{opacity:.38;transform:scale(1.01)}}.profile-corner{position:absolute;width:11px;height:11px;z-index:1}.profile-corner.tl{top:7px;left:7px;border-top:2px solid var(--accent);border-left:2px solid var(--accent)}.profile-corner.tr{top:7px;right:7px;border-top:2px solid var(--accent);border-right:2px solid var(--accent)}.profile-corner.bl{bottom:7px;left:7px;border-bottom:2px solid var(--accent);border-left:2px solid var(--accent)}.profile-corner.br{bottom:7px;right:7px;border-bottom:2px solid var(--accent);border-right:2px solid var(--accent)}.profile-placeholder{width:100%;height:100%;border-radius:var(--radius);background:var(--surface2);border:1px dashed var(--border);cursor:pointer;transition:all var(--t);color:var(--muted);gap:.6rem}.profile-placeholder:hover{border-color:var(--accent);color:var(--accent)}.profile-placeholder svg{width:36px;height:36px;opacity:.4}.profile-img{width:100%;height:100%;object-fit:cover;border-radius:var(--radius);display:block}#profile-upload{display:none}.section-wrap{padding:100px 5vw;position:relative;z-index:1}.section-wrap+.section-wrap{border-top:1px solid var(--border)}.section-header{align-items:baseline;gap:1.25rem;margin-bottom:2.75rem}.section-index{font-size:.62rem;color:var(--accent);letter-spacing:.14em}.section-header h2{font-family:var(--sans);font-weight:800;font-size:1.9rem}.section-line{flex:1;height:1px;background:linear-gradient(90deg,var(--border),transparent)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:start}.about-text p{font-size:.8rem;color:var(--muted);line-height:1.95;margin-bottom:1.1rem}.about-text p strong{color:var(--text)}.contact-links{gap:.5rem;margin-top:1.75rem}.contact-link{gap:.85rem;font-size:.72rem;color:var(--muted);text-decoration:none;transition:color var(--t);padding:.3rem 0}.contact-link svg{width:15px;height:15px;flex-shrink:0}.contact-link:hover{color:var(--accent)}.skills-block{margin-bottom:2.25rem}.skills-label{color:var(--accent);margin-bottom:.9rem}.skill-row{gap:1rem;margin-bottom:.72rem}.skill-name{font-size:.7rem;width:118px;flex-shrink:0;color:var(--muted)}.skill-bar{flex:1;height:2px;background:var(--border);border-radius:2px;overflow:hidden}.skill-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent3));border-radius:2px;transform:scaleX(0);transform-origin:left;transition:transform .85s cubic-bezier(.4,0,.2,1)}.skill-fill.animated{transform:scaleX(1)}.page-header{padding:calc(var(--nav-h) + 60px)5vw 0;position:relative;z-index:1}.page-header h1{font-family:var(--sans);font-weight:800;font-size:clamp(2rem,5vw,3.5rem);line-height:1.08;margin-bottom:.75rem}.page-header h1 em{font-style:normal;color:transparent;-webkit-text-stroke:1.5px var(--accent)}.page-header p{font-size:.82rem;color:var(--muted);line-height:1.8;max-width:520px}.filter-bar{padding:2rem 5vw 0;position:relative;z-index:1;border-bottom:1px solid var(--border)}.filter-tabs{display:flex;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.filter-tabs::-webkit-scrollbar{display:none}.filter-tab{font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);background:0 0;border:none;border-bottom:2px solid transparent;padding:.75rem 1.1rem;cursor:pointer;white-space:nowrap;min-height:44px;transition:color var(--t),border-color var(--t)}.filter-tab:hover{color:var(--text)}.filter-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.post-count{font-size:.55rem;color:var(--muted);margin-left:.35rem}.posts-section{padding:2.5rem 5vw 80px;position:relative;z-index:1}.posts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem}.post-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.6rem;text-decoration:none;color:inherit;display:block;transition:transform var(--t),box-shadow var(--t);position:relative;overflow:hidden}.post-card::before{content:'';position:absolute;top:0;left:0;width:3px;height:0;background:var(--accent);transition:height .3s ease}.post-card:hover{transform:translateY(-3px);box-shadow:0 10px 36px var(--shadow)}.post-card:hover::before{height:100%}.post-meta{gap:.7rem;margin-bottom:.9rem}.post-date{font-size:.62rem;color:var(--muted)}.cat-pill{font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;padding:.18rem .55rem;border-radius:2px}.cat-k8s{background:rgba(56,217,245,.1);color:var(--accent);border:1px solid rgba(56,217,245,.2)}.cat-ci{background:rgba(168,240,92,.1);color:var(--accent3);border:1px solid rgba(168,240,92,.2)}.cat-infra{background:rgba(255,95,126,.1);color:var(--accent2);border:1px solid rgba(255,95,126,.2)}.cat-monitoring{background:rgba(255,201,77,.1);color:var(--accent4);border:1px solid rgba(255,201,77,.2)}.post-card h2{font-family:var(--sans);font-size:1rem;font-weight:600;line-height:1.3;margin-bottom:.65rem}.post-card p{font-size:.73rem;color:var(--muted);line-height:1.75;margin-bottom:1.1rem}.post-tags{flex-wrap:wrap;gap:.35rem}.tag{font-size:.58rem;color:var(--muted);border:1px solid var(--border);padding:.12rem .45rem;border-radius:2px}.read-more{display:inline-flex;align-items:center;gap:.4rem;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-top:.5rem;transition:gap var(--t)}.post-card:hover .read-more{gap:.7rem}.read-more svg{width:12px;height:12px}.article-wrap{max-width:740px;margin:0 auto;padding:calc(var(--nav-h) + 60px)5vw 100px;position:relative;z-index:1}.back-link{display:inline-flex;align-items:center;gap:.5rem;font-size:.65rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-decoration:none;margin-bottom:2.5rem;transition:color var(--t);min-height:44px}.back-link svg{width:14px;height:14px;flex-shrink:0}.back-link:hover{color:var(--accent)}.post-header{margin-bottom:3rem}.post-meta-row{gap:.75rem;margin-bottom:1.25rem;flex-wrap:wrap}.post-date-full,.read-time{font-size:.62rem;color:var(--muted)}.read-time::before{content:'·';margin-right:.5rem}.post-header h1{font-family:var(--sans);font-weight:800;font-size:clamp(1.7rem,5vw,2.8rem);line-height:1.12;margin-bottom:1.1rem}.post-summary{font-size:.85rem;color:var(--muted);line-height:1.85;padding-bottom:2.5rem;border-bottom:1px solid var(--border)}.post-tags-row{flex-wrap:wrap;gap:.4rem;margin-top:1.5rem}.post-body{font-size:.82rem;line-height:1.95;color:var(--muted);margin-top:2.5rem}.post-body p{margin-bottom:1.4rem}.post-body strong{color:var(--text);font-weight:700}.post-body h2{font-family:var(--sans);font-weight:800;font-size:1.35rem;color:var(--text);margin:3rem 0 1rem;padding-bottom:.6rem;border-bottom:1px solid var(--border)}.post-body h3{font-family:var(--sans);font-weight:600;font-size:1.05rem;color:var(--text);margin:2rem 0 .75rem}.post-body ul,.post-body ol{margin:0 0 1.4rem 1.5rem}.post-body li{margin-bottom:.5rem}.post-body .highlight{margin:1.5rem 0;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.post-body .highlight pre{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);padding:1.1rem 1.25rem;font-size:.7rem;line-height:1.7;overflow-x:auto}.post-body :not(.highlight)>code{font-family:var(--mono);font-size:.75rem;color:var(--accent3);background:var(--surface2);padding:.1rem .4rem;border-radius:3px;word-break:break-all}.callout{border-left:3px solid var(--accent4);background:var(--surface);border-radius:0 var(--radius)var(--radius)0;padding:1rem 1.25rem;margin:1.5rem 0;font-size:.78rem;color:var(--text)}.callout.warn{border-left-color:var(--accent2)}.callout.ok{border-left-color:var(--accent3)}.callout-icon{margin-right:.5rem}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.5rem 0;border:1px solid var(--border);border-radius:var(--radius)}.post-body table{width:100%;border-collapse:collapse;font-size:.72rem;min-width:320px}.post-body th{text-align:left;color:var(--muted);font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;border-bottom:1px solid var(--border);padding:.5rem .75rem}.post-body td{padding:.6rem .75rem;border-bottom:1px solid var(--border);color:var(--text)}.post-body tr:last-child td{border-bottom:none}.post-body td code{color:var(--accent3)}.post-nav{display:flex;justify-content:space-between;align-items:center;margin-top:4rem;padding-top:2rem;border-top:1px solid var(--border)}.post-nav a{font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-decoration:none;display:inline-flex;align-items:center;gap:.4rem;transition:color var(--t);min-height:44px}.post-nav a:hover{color:var(--accent)}.post-nav svg{width:13px;height:13px}footer{border-top:1px solid var(--border);padding:1.75rem 5vw;position:relative;z-index:1}footer span{font-size:.62rem;color:var(--muted);letter-spacing:.1em}@media(max-width:768px){nav{padding:0 1.5rem}.nav-links{gap:1.25rem}#hero{grid-template-columns:1fr;padding-top:calc(var(--nav-h) + 48px);gap:2.5rem;text-align:center}.hero-visual{order:-1;justify-content:center}.profile-frame{width:210px;height:210px}.hero-badges{justify-content:center}.about-grid{grid-template-columns:1fr;gap:3rem}.posts-grid{grid-template-columns:1fr}}@media(max-width:480px){nav{padding:0 1rem}.nav-links{display:none}.nav-ham{display:flex}#hero{padding:calc(var(--nav-h) + 24px)5vw 48px;gap:1.75rem}.profile-frame{width:160px;height:160px}.profile-frame::before{inset:-7px}.profile-frame::after{inset:-14px}h1{font-size:clamp(1.9rem,9vw,2.6rem)}.hero-sub{font-size:.76rem}.section-wrap{padding:52px 5vw}.section-header h2{font-size:1.5rem}.skill-name{width:88px;font-size:.64rem}.page-header{padding-top:calc(var(--nav-h) + 28px)}.article-wrap{padding:calc(var(--nav-h) + 20px)4vw 70px}.post-header h1{font-size:clamp(1.45rem,7vw,1.9rem)}.post-body{font-size:.78rem}.post-body h2{font-size:1.1rem}.post-body .highlight pre{font-size:.64rem}footer{flex-direction:column;gap:.4rem;text-align:center}.theme-btn{width:40px;height:40px}.lang-btn{min-height:40px;padding:.3rem .7rem}.contact-link{padding:.55rem 0}}.highlight{position:relative}.highlight pre{tab-size:2}.chroma{background:var(--surface)!important;color:var(--text)}.chroma .err{color:var(--accent2)}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr{color:var(--accent)}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sa,.chroma .sb{color:var(--accent3)}.chroma .c,.chroma .c1,.chroma .cm,.chroma .cp,.chroma .cs{color:var(--muted);font-style:italic}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mi{color:var(--accent4)}.chroma .na,.chroma .nb,.chroma .nc,.chroma .nf{color:var(--accent2)}.chroma .o,.chroma .ow{color:var(--accent)}