.theme-switch[data-astro-cid-g6q3pnbr]{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}.theme-btn[data-astro-cid-g6q3pnbr]{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;background:transparent;border:none;border-left:1px solid var(--border);color:var(--text-3);cursor:pointer;padding:0;transition:color .15s,background .15s}.theme-btn[data-astro-cid-g6q3pnbr]:first-child{border-left:none}.theme-btn[data-astro-cid-g6q3pnbr]:hover,.theme-btn[data-astro-cid-g6q3pnbr].active{color:var(--text);background:var(--nav-hover-bg)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #000000;--bg-1: #0a0a0a;--bg-2: #111111;--bg-3: #161616;--border: rgba(255, 255, 255, .08);--border-hover: rgba(255, 255, 255, .16);--line: var(--border);--text: #ffffff;--text-2: rgba(255, 255, 255, .6);--text-3: rgba(255, 255, 255, .35);--text-soft: var(--text-2);--text-light: var(--text-3);--blue: #3b82f6;--blue-dim: rgba(59, 130, 246, .12);--brand: var(--blue);--brand-strong: var(--blue);--accent: var(--blue);--amber: #f59e0b;--green: #22c55e;--font: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans SC", sans-serif;--mono: "Geist Mono", "SF Mono", "Fira Code", monospace;--max: 1120px;--max-width: var(--max);--radius: 8px;--header-bg: rgba(0, 0, 0, .8);--nav-hover-bg: rgba(255, 255, 255, .06);--card-glow: rgba(255, 255, 255, .03);--scrollbar-thumb: rgba(255, 255, 255, .08);--scrollbar-hover: rgba(255, 255, 255, .16);--glass-surface: var(--bg-1);--glass-border: var(--border);--glass-shadow: none;--glass-blur: blur(16px);--gradient-primary: linear-gradient(135deg, #3b82f6 0%, #60a5fa 100%);--gradient-hover: linear-gradient(135deg, #2563eb 0%, #3b82f6 100%);--gradient-bg: none;color-scheme:dark}html[data-theme=light]{--bg: #ffffff;--bg-1: #fafafa;--bg-2: #f4f4f4;--bg-3: #eeeeee;--border: rgba(0, 0, 0, .08);--border-hover: rgba(0, 0, 0, .16);--text: #0a0a0a;--text-2: rgba(0, 0, 0, .6);--text-3: rgba(0, 0, 0, .35);--text-soft: var(--text-2);--text-light: var(--text-3);--header-bg: rgba(255, 255, 255, .88);--nav-hover-bg: rgba(0, 0, 0, .04);--card-glow: rgba(0, 0, 0, .02);--scrollbar-thumb: rgba(0, 0, 0, .1);--scrollbar-hover: rgba(0, 0, 0, .2);color-scheme:light}html[data-transitioning],html[data-transitioning] *,html[data-transitioning] *:before,html[data-transitioning] *:after{transition:background-color .25s ease,border-color .25s ease,color .25s ease!important}html{scroll-behavior:smooth}body{color:var(--text);background:var(--bg);font-family:var(--font);line-height:1.6;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none;transition:color .15s ease}img{max-width:100%;height:auto;display:block}.container{width:min(100% - 3rem,var(--max));margin-inline:auto}.site-shell{min-height:100vh;display:flex;flex-direction:column}.site-main{flex:1;padding-top:5rem;padding-bottom:4rem}.site-main.no-top-pad{padding-top:0}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;clip:rect(0 0 0 0);overflow:hidden}.site-header{position:fixed;top:0;left:0;right:0;z-index:100;border-bottom:1px solid var(--border);background:var(--header-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:background .3s}.header-inner{max-width:var(--max);margin:0 auto;padding:0 1.5rem;height:60px;display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand{font-size:1rem;font-weight:700;letter-spacing:-.02em;color:var(--text);display:inline-flex;align-items:center;gap:.5rem;white-space:nowrap;flex-shrink:0;-webkit-text-fill-color:currentColor;background:none}.brand:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--blue);display:inline-block}.nav{display:flex;align-items:center;gap:.25rem}.nav a{font-size:.85rem;color:var(--text-2);padding:.4rem .75rem;border-radius:6px;font-weight:500;transition:color .15s,background .15s}.nav a:hover,.nav a.active,.nav a:focus-visible{color:var(--text);background:var(--nav-hover-bg)}.nav-right{display:flex;align-items:center;gap:.75rem}.lang-switch{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;padding:0;background:transparent}.lang-switch a{font-size:.75rem;font-weight:600;font-family:var(--mono);color:var(--text-3);padding:.3rem .6rem;width:auto;height:auto;border-radius:0;display:inline-flex;align-items:center;justify-content:center;transition:color .15s,background .15s}.lang-switch a.active,.lang-switch a:hover,.lang-switch a:focus-visible{color:var(--text);background:var(--border);box-shadow:none}.btn-nav{font-size:.85rem;font-weight:600;color:var(--bg);background:var(--text);border:none;border-radius:6px;padding:.45rem 1rem;transition:opacity .15s;white-space:nowrap}.btn-nav:hover,.btn-nav:focus-visible{opacity:.85}.section-label{font-size:.72rem;font-family:var(--mono);color:var(--text-3);letter-spacing:.08em;text-transform:uppercase;margin-bottom:1rem;display:flex;align-items:center;gap:.6rem}.section-label:before{content:"";display:inline-block;width:20px;height:1px;background:var(--border-hover)}.section-title{font-size:clamp(1.6rem,3vw,2.4rem);font-weight:700;letter-spacing:-.03em;line-height:1.2;margin-bottom:.75rem}.section-lead{color:var(--text-2);font-size:1rem;max-width:60ch;line-height:1.65;margin-bottom:3rem}hr.divider{border:none;border-top:1px solid var(--border);margin:0}.grid{display:grid;gap:1px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:1.75rem;transition:background .2s,border-color .2s;position:relative;overflow:hidden}.card:hover{background:var(--bg-2);border-color:var(--border-hover)}.card h2,.card h3{font-weight:700;letter-spacing:-.02em;color:var(--text)}.card h3 a{color:inherit}.card h3 a:hover{color:var(--blue)}.card ul{padding-left:1.2rem;color:var(--text-2)}.card li{margin-bottom:.35rem;font-size:.9rem}.card li::marker{color:var(--blue)}.grid-2>.card,.grid-3>.card,.grid-4>.card{border:none;border-radius:0}.badge{display:inline-flex;align-items:center;font-size:.7rem;font-family:var(--mono);padding:.2rem .55rem;border-radius:4px;border:1px solid var(--border);color:var(--text-3);letter-spacing:.02em;background:transparent;text-transform:none}.badge.type{color:var(--blue);border-color:#3b82f64d;background:var(--blue-dim)}.badge.status{color:var(--green);border-color:#22c55e4d;background:#22c55e14}.badge.domain{color:var(--text-2);border-color:var(--border);background:transparent}.btn,.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;background:var(--text);color:var(--bg);font-family:var(--font);font-size:.9rem;font-weight:600;padding:.65rem 1.4rem;border:none;border-radius:var(--radius);cursor:pointer;transition:opacity .15s,transform .15s;box-shadow:none;background-image:none}.btn:hover,.btn:focus-visible,.btn-primary:hover,.btn-primary:focus-visible{opacity:.88;transform:translateY(-1px);background:var(--text);background-image:none;box-shadow:none}.btn-ghost,.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;background:transparent;color:var(--text-2);font-family:var(--font);font-size:.9rem;font-weight:500;padding:.65rem 1.4rem;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:color .15s,border-color .15s,transform .15s}.btn-ghost:hover,.btn-ghost:focus-visible,.btn-secondary:hover,.btn-secondary:focus-visible{color:var(--text);border-color:var(--border-hover);transform:translateY(-1px);background:transparent}.meta-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.stack{display:flex;flex-direction:column;gap:1rem}.stack-large{display:flex;flex-direction:column;gap:3rem}.hero-panel{background:transparent;border:none;border-radius:0;padding:3rem 0 3.5rem;border-bottom:1px solid var(--border);margin-bottom:3.5rem;box-shadow:none}.hero-panel:before{display:none}.home-hero{min-height:calc(100svh - 60px);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:120px 1.5rem 80px;position:relative;text-align:center;overflow:hidden;margin:-60px 0 0}.home-hero:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,var(--border-hover) 1px,transparent 1px);background-size:32px 32px;mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black 40%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black 40%,transparent 100%);pointer-events:none}.home-hero:after{content:"";position:absolute;top:30%;left:50%;transform:translate(-50%,-50%);width:600px;height:600px;background:radial-gradient(circle,rgba(59,130,246,.12) 0%,transparent 70%);pointer-events:none}.home-hero-inner{position:relative;z-index:1;max-width:800px}.hero-badge{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--border);border-radius:999px;padding:.3rem .85rem;font-size:.78rem;font-family:var(--mono);color:var(--text-2);margin-bottom:2rem;background:var(--card-glow);white-space:nowrap}.hero-badge-dot{width:5px;height:5px;border-radius:50%;background:var(--green);animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.home-hero h1{font-size:clamp(2.8rem,7vw,5.5rem);font-weight:800;letter-spacing:-.04em;line-height:1.05;color:var(--text);margin-bottom:1.5rem}.home-hero h1 em{font-style:normal;color:var(--text-2)}.hero-sub{font-size:clamp(1rem,2vw,1.2rem);color:var(--text-2);max-width:52ch;margin:0 auto 2.5rem;line-height:1.65}.hero-actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.scroll-hint{position:absolute;bottom:2.5rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.4rem;color:var(--text-3);font-size:.72rem;font-family:var(--mono)}.scroll-line{width:1px;height:40px;background:linear-gradient(to bottom,var(--border-hover),transparent);animation:scrollLine 2s ease-in-out infinite}@keyframes scrollLine{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform:scaleY(1);transform-origin:bottom}to{transform:scaleY(0);transform-origin:bottom}}.stats-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.stat-cell{background:var(--bg-1);padding:2rem;text-align:center}.stat-num{font-size:2.5rem;font-weight:800;letter-spacing:-.04em;line-height:1;margin-bottom:.5rem}.stat-label{font-size:.78rem;color:var(--text-2);font-family:var(--mono)}.service-card{background:var(--bg-1);padding:2rem;transition:background .2s;position:relative;overflow:hidden}.service-card:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--mx, 50%) var(--my, 50%),var(--card-glow) 0%,transparent 60%);opacity:0;transition:opacity .3s;pointer-events:none}.service-card:hover{background:var(--bg-2)}.service-card:hover:after{opacity:1}.service-num{font-size:.72rem;font-family:var(--mono);color:var(--text-3);margin-bottom:1.25rem}.service-icon{font-size:1.4rem;margin-bottom:1rem;display:block;color:var(--blue)}.service-name{font-size:1.1rem;font-weight:700;letter-spacing:-.02em;margin-bottom:.5rem}.service-desc{font-size:.875rem;color:var(--text-2);line-height:1.65;margin-bottom:1.25rem}.service-tags{display:flex;flex-wrap:wrap;gap:.4rem}.tag{font-size:.7rem;font-family:var(--mono);color:var(--text-3);border:1px solid var(--border);border-radius:4px;padding:.2rem .5rem}.work-card{background:var(--bg-1);display:flex;flex-direction:column;transition:background .2s;color:inherit}.work-card:hover{background:var(--bg-2)}.work-img{width:100%;aspect-ratio:16 / 9;object-fit:cover;object-position:top;display:block;border-bottom:1px solid var(--border);filter:brightness(.85) saturate(.8);transition:filter .3s;border-radius:0}.work-card:hover .work-img{filter:brightness(1) saturate(1)}.work-img-placeholder{width:100%;aspect-ratio:16 / 9;background:var(--bg-3);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:.72rem;color:var(--text-3)}.work-body{padding:1.25rem;flex:1;display:flex;flex-direction:column;gap:.4rem}.work-meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:.25rem;gap:.5rem}.work-type{font-size:.7rem;font-family:var(--mono);color:var(--blue);text-transform:uppercase;letter-spacing:.05em}.work-award{font-size:.7rem;color:var(--amber);font-family:var(--mono)}.work-title{font-size:.95rem;font-weight:700;letter-spacing:-.01em}.work-title a{color:inherit}.work-card:hover .work-title{color:var(--text)}.work-desc{font-size:.82rem;color:var(--text-2);line-height:1.55;flex:1}.work-footer{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;border-top:1px solid var(--border);font-size:.72rem;font-family:var(--mono);color:var(--text-3);gap:.5rem}.work-status{display:flex;align-items:center;gap:.4rem}.status-dot{width:5px;height:5px;border-radius:50%;background:var(--green)}.status-dot.wip{background:var(--amber)}.status-dot.concept{background:var(--text-3)}.post-card{background:var(--bg-1);padding:1.5rem;display:flex;flex-direction:column;gap:.5rem;transition:background .2s;color:inherit}.post-card:hover{background:var(--bg-2)}.post-type{font-size:.7rem;font-family:var(--mono);color:var(--blue);text-transform:uppercase;letter-spacing:.05em}.post-title{font-size:1rem;font-weight:700;letter-spacing:-.02em;line-height:1.35}.post-title a{color:inherit}.post-desc{font-size:.82rem;color:var(--text-2);line-height:1.55;flex:1}.post-date{font-size:.7rem;font-family:var(--mono);color:var(--text-3);margin-top:.25rem}.skills-row{display:flex;flex-wrap:wrap;gap:.5rem}.skill-chip{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:999px;padding:.35rem .8rem;font-size:.78rem;font-family:var(--mono);color:var(--text-2);background:var(--bg-1);transition:border-color .15s,color .15s}.skill-chip:hover{border-color:var(--border-hover);color:var(--text)}.cta-block{border:1px solid var(--border);border-radius:var(--radius);padding:4rem 3rem;text-align:center;position:relative;overflow:hidden;background:var(--bg-1)}.cta-block:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:60%;height:1px;background:linear-gradient(90deg,transparent,rgba(59,130,246,.6),transparent)}.cta-title{font-size:clamp(1.6rem,3vw,2.5rem);font-weight:800;letter-spacing:-.03em;margin-bottom:.75rem}.cta-sub{color:var(--text-2);margin-bottom:2rem;font-size:.95rem}.cta-actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.contact-email{font-family:var(--mono);font-size:.85rem;color:var(--text-3);margin-top:1.5rem}.contact-email a{color:var(--text-2);border-bottom:1px solid var(--border);padding-bottom:1px;transition:color .15s,border-color .15s}.contact-email a:hover{color:var(--text);border-color:var(--border-hover)}.footer{border-top:1px solid var(--border);padding:2rem 1.5rem;margin-top:4rem;background:transparent}.footer-inner{max-width:var(--max);margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.footer-copy{font-size:.78rem;font-family:var(--mono);color:var(--text-3)}.footer-links{display:flex;gap:1.5rem;flex-wrap:wrap}.footer-links a{font-size:.78rem;font-family:var(--mono);color:var(--text-3);transition:color .15s}.footer-links a:hover{color:var(--text-2)}.social-links{display:flex;gap:.75rem;align-items:center}.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:6px;background:transparent;border:1px solid var(--border);color:var(--text-3);transition:color .15s,border-color .15s;cursor:pointer}.icon-btn:hover,.icon-btn:focus-visible{color:var(--text);border-color:var(--border-hover);background:transparent;transform:none;box-shadow:none}.tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(8px);padding:.45rem .7rem;background:var(--bg-2);border:1px solid var(--border-hover);border-radius:6px;box-shadow:0 10px 25px #0006;opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s,transform .15s;pointer-events:none;z-index:100;white-space:nowrap;margin-bottom:8px;font-size:.75rem;font-family:var(--mono);color:var(--text)}.icon-btn:hover .tooltip,.icon-btn:focus-visible .tooltip{opacity:1;visibility:visible;transform:translate(-50%) translateY(0)}.tooltip-qr-popup{white-space:normal;padding:6px;right:0;left:auto;width:152px;transform:translateY(8px)}.icon-btn:hover .tooltip-qr-popup,.icon-btn:focus-visible .tooltip-qr-popup{transform:translateY(0)}.tooltip-qr{display:block;width:140px;height:140px;border-radius:4px;object-fit:contain;background:#fff;padding:4px}.reveal{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease;will-change:opacity,transform}.reveal.in,.reveal.in-view{opacity:1;transform:translateY(0)}.reveal-delay-1,.reveal-d1{transition-delay:.1s}.reveal-delay-2,.reveal-d2{transition-delay:.2s}.reveal-delay-3,.reveal-d3{transition-delay:.3s}.grid>.reveal:nth-child(1),.grid-2>.reveal:nth-child(1),.grid-3>.reveal:nth-child(1),.grid-4>.reveal:nth-child(1){transition-delay:0ms}.grid>.reveal:nth-child(2),.grid-2>.reveal:nth-child(2),.grid-3>.reveal:nth-child(2),.grid-4>.reveal:nth-child(2){transition-delay:80ms}.grid>.reveal:nth-child(3),.grid-2>.reveal:nth-child(3),.grid-3>.reveal:nth-child(3),.grid-4>.reveal:nth-child(3){transition-delay:.16s}.grid>.reveal:nth-child(4),.grid-2>.reveal:nth-child(4),.grid-3>.reveal:nth-child(4),.grid-4>.reveal:nth-child(4){transition-delay:.24s}.hero-animate .hero-badge{animation:slideUp .5s 0s ease both}.hero-animate h1{animation:slideUp .5s .08s ease both}.hero-animate .hero-sub{animation:slideUp .5s .16s ease both}.hero-animate .hero-actions{animation:slideUp .5s .24s ease both}.hero-animate .scroll-hint{animation:slideUp .5s .32s ease both}@keyframes slideUp{0%{transform:translateY(14px)}to{transform:translateY(0)}}.arrow-icon{display:inline-block;transition:transform .15s,opacity .15s;margin-left:.1rem;opacity:.7}.arrow-icon-left{display:inline-block;transition:transform .15s,opacity .15s;margin-right:.1rem;opacity:.7}.card:hover .arrow-icon,.work-card:hover .arrow-icon,.post-card:hover .arrow-icon{transform:translate(4px);opacity:1}.btn:hover .arrow-icon,.btn-primary:hover .arrow-icon,.btn-ghost:hover .arrow-icon,.btn-secondary:hover .arrow-icon{transform:translate(3px)}.text-soft{color:var(--text-2)}.text-brand{color:var(--blue)}.text-sm{font-size:.85rem}.font-bold{font-weight:700}.m-0{margin:0}.mb-0{margin-bottom:0}.mt-0{margin-top:0}.mb-sm{margin-bottom:1rem}.mt-md{margin-top:1.5rem}.mt-lg{margin-top:2.5rem}.border-b{border-bottom:1px solid var(--border)}.pb-sm{padding-bottom:.8rem}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-hover)}::selection{background:#3b82f640;color:var(--text)}@media(max-width:900px){.nav{display:none}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.stats-row{grid-template-columns:repeat(2,1fr)}.home-hero{padding:100px 1.25rem 60px}.home-hero h1{font-size:clamp(2.4rem,10vw,3.5rem)}.cta-block{padding:2.5rem 1.5rem}.site-main{padding-block:0 3rem}}@media(max-width:480px){.stats-row{grid-template-columns:1fr 1fr}.nav-right .btn-nav{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
