@font-face{font-family:Outfit;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/98848575513c9742-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Outfit;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/7b0b24f36b1a6d0b-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Outfit Fallback;src:local("Arial");ascent-override:100.18%;descent-override:26.05%;line-gap-override:0.00%;size-adjust:99.82%}.__className_a80a2d{font-family:Outfit,Outfit Fallback;font-style:normal}.__variable_a80a2d{--font-outfit:"Outfit","Outfit Fallback"}@font-face{font-family:Fira Code;font-style:normal;font-weight:300 700;font-display:swap;src:url(/_next/static/media/999e639cd9d85971-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Fira Code;font-style:normal;font-weight:300 700;font-display:swap;src:url(/_next/static/media/9af6411484c7e20a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Fira Code;font-style:normal;font-weight:300 700;font-display:swap;src:url(/_next/static/media/e6b5cfd5a74e1cae-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Fira Code;font-style:normal;font-weight:300 700;font-display:swap;src:url(/_next/static/media/6aacc40b7795b725-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Fira Code;font-style:normal;font-weight:300 700;font-display:swap;src:url(/_next/static/media/67110d8fe39c5e84-s.woff2) format("woff2");unicode-range:u+2000-2001,u+2004-2008,u+200a,u+23b8-23bd,u+2500-259f}@font-face{font-family:Fira Code;font-style:normal;font-weight:300 700;font-display:swap;src:url(/_next/static/media/046b90749014f852-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Fira Code;font-style:normal;font-weight:300 700;font-display:swap;src:url(/_next/static/media/3703c28dcda155b1-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Fira Code Fallback;src:local("Arial");ascent-override:73.56%;descent-override:23.92%;line-gap-override:0.00%;size-adjust:134.59%}.__className_dfa83f{font-family:Fira Code,Fira Code Fallback;font-style:normal}.__variable_dfa83f{--font-fira:"Fira Code","Fira Code Fallback"}:root{--bg:#07080b;--bg-elev:#0e1016;--card:rgba(255,255,255,0.035);--card-hover:rgba(255,255,255,0.06);--border:rgba(255,255,255,0.09);--text:#f4f4f5;--muted:#a1a1aa;--primary:#3b82f6;--primary-soft:rgba(59,130,246,0.14);--accent:#10b981;--accent-soft:rgba(16,185,129,0.14);--warning:#f59e0b;--error:#ef4444;--terminal:#0b0d12;--radius:14px;--container:1120px;--shadow:0 10px 40px rgba(0,0,0,0.35);color-scheme:dark}:root[data-theme=light]{--bg:#fafafa;--bg-elev:#ffffff;--card:#ffffff;--card-hover:#f4f4f5;--border:rgba(15,23,42,0.1);--text:#0f172a;--muted:#5b6474;--primary:#2563eb;--primary-soft:rgba(37,99,235,0.1);--accent:#059669;--accent-soft:rgba(5,150,105,0.1);--terminal:#0f172a;--shadow:0 10px 30px rgba(15,23,42,0.08);color-scheme:light}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:80px}body{background:var(--bg);color:var(--text);font-family:var(--font-outfit),system-ui,sans-serif;line-height:1.6;overflow-x:hidden;transition:background-color .25s ease,color .25s ease}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.mono,code,pre{font-family:var(--font-fira),ui-monospace,monospace}:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:6px}.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 20px}section{padding:96px 0}.section-head{margin-bottom:40px}.eyebrow{font-family:var(--font-fira),monospace;font-size:.8rem;color:var(--accent);letter-spacing:.04em;margin-bottom:8px;display:block}.section-title{font-size:clamp(1.8rem,4vw,2.5rem);font-weight:800;line-height:1.15;letter-spacing:-.02em}.section-sub{margin-top:10px;max-width:620px}.muted,.section-sub{color:var(--muted)}.glow{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(600px 400px at 85% -5%,var(--primary-soft),transparent 70%),radial-gradient(500px 400px at 0 30%,var(--accent-soft),transparent 70%)}.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 20px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--text);font:inherit;font-weight:600;font-size:.95rem;cursor:pointer;transition:transform .15s ease,background .15s ease,border-color .15s ease}.btn:hover{transform:translateY(-2px)}.btn-primary,.btn:hover{border-color:var(--primary)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{filter:brightness(1.1)}.btn-sm{padding:7px 14px;font-size:.85rem}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:.78rem;font-weight:600;border:1px solid var(--border);background:var(--card);color:var(--muted)}.badge-accent{background:var(--accent-soft);color:var(--accent);border-color:transparent}.badge-error{background:rgba(239,68,68,.12);color:var(--error);border-color:transparent}.dot{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}.dot-pulse{animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 currentColor}70%{box-shadow:0 0 0 7px transparent}to{box-shadow:0 0 0 0 transparent}}.tags{display:flex;flex-wrap:wrap;gap:6px}.tag{font-family:var(--font-fira),monospace;font-size:.75rem;padding:3px 9px;border-radius:6px;background:var(--primary-soft);color:var(--primary)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:26px;transition:transform .2s ease,border-color .2s ease,background .2s ease}.card.hoverable:hover,a.card:hover{transform:translateY(-4px);border-color:var(--primary);background:var(--card-hover)}.placeholder{border:1px dashed var(--warning)!important;position:relative}.placeholder-note{color:var(--warning);font-size:.8rem;font-weight:600}.header{position:-webkit-sticky;position:sticky;top:0;z-index:50;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);background:color-mix(in srgb,var(--bg) 75%,transparent);border-bottom:1px solid var(--border)}.nav{display:flex;align-items:center;justify-content:space-between;height:66px;gap:16px}.logo{font-weight:800;font-size:1.25rem;letter-spacing:-.02em}.logo span{color:var(--primary)}.nav-links{display:flex;gap:4px;list-style:none}.nav-links a{padding:8px 12px;border-radius:8px;color:var(--muted);font-weight:500;font-size:.95rem;transition:color .15s,background .15s}.nav-links a:hover{color:var(--text);background:var(--card)}.nav-actions{display:flex;align-items:center;gap:8px}.icon-btn{width:38px;height:38px;display:inline-grid;place-items:center;border-radius:10px;border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;font-size:1rem}.icon-btn:hover{border-color:var(--primary)}.burger{display:none}.hero{padding:80px 0 64px}.hero-grid{display:grid;grid-template-columns:1.1fr 1fr;grid-gap:48px;gap:48px;align-items:center}.hero h1{font-size:clamp(2.3rem,6vw,3.8rem);line-height:1.05;font-weight:800;letter-spacing:-.035em;margin:18px 0 14px}.hero h1 .highlight{background:linear-gradient(90deg,var(--primary),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}.hero-role{font-size:1.15rem;font-weight:600}.hero-pitch{color:var(--muted);font-size:1.05rem;margin:14px 0 28px;max-width:560px}.hero-actions{display:flex;flex-wrap:wrap;gap:12px}.terminal{background:var(--terminal);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;color:#e4e4e7}.terminal-bar{display:flex;align-items:center;gap:7px;padding:12px 16px;background:rgba(255,255,255,.04);border-bottom:1px solid rgba(255,255,255,.06);font-size:.8rem;color:#a1a1aa}.terminal-bar i{width:11px;height:11px;border-radius:50%;display:inline-block}.terminal-body{padding:18px 20px;font-family:var(--font-fira),monospace;font-size:.86rem;line-height:1.75;min-height:290px;white-space:pre-wrap}.t-comment{color:#6b7280}.t-key{color:#c084fc}.t-fn{color:#60a5fa}.t-str{color:#fbbf24}.t-pass{color:#34d399;font-weight:700}.caret{display:inline-block;width:8px;height:1.1em;background:#34d399;vertical-align:text-bottom;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px}.stat{text-align:center;padding:22px 12px}.stat strong{display:block;font-size:2rem;font-weight:800;letter-spacing:-.02em}.stat span{color:var(--muted);font-size:.9rem}.featured{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:32px;gap:32px;padding:36px;background:linear-gradient(135deg,var(--primary-soft),transparent 55%),var(--card)}.featured h3{font-size:2rem;font-weight:800;letter-spacing:-.02em;margin:10px 0 4px}.featured-metrics{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px;align-content:start}.metric{padding:18px;border-radius:12px;border:1px solid var(--border);background:var(--bg-elev)}.metric strong{font-size:1.6rem;font-weight:800;display:block}.metric span{color:var(--muted);font-size:.85rem}.row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.grid-3{grid-template-columns:repeat(3,1fr);grid-gap:20px}.grid-2,.grid-3{display:grid;gap:20px}.grid-2{grid-template-columns:repeat(2,1fr);grid-gap:20px}.project-card h3{font-size:1.3rem;margin-bottom:6px}.project-card p{color:var(--muted);margin-bottom:18px;font-size:.95rem}.link-arrow{color:var(--primary);font-weight:600;font-size:.9rem}.about-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:48px;gap:48px}.about-text p{color:var(--muted);margin-bottom:16px;font-size:1.02rem}.skill-group+.skill-group{margin-top:22px}.skill-group h4{font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:10px}.skill-group .tags span{padding:6px 12px;border-radius:8px;border:1px solid var(--border);background:var(--card);font-size:.88rem}.timeline{position:relative;padding-left:28px}.timeline:before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:var(--border)}.timeline-item{position:relative;margin-bottom:22px}.timeline-item:before{content:"";position:absolute;left:-27px;top:30px;width:12px;height:12px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 4px var(--bg)}.timeline-item h3{font-size:1.15rem}.timeline-item ul{margin:12px 0 0 18px;color:var(--muted)}.timeline-item li{margin-bottom:4px}.repo{display:flex;flex-direction:column;gap:8px;padding:20px}.repo h4{font-family:var(--font-fira),monospace;font-size:.95rem;word-break:break-word}.repo p{color:var(--muted);font-size:.88rem;flex:1 1}.repo-meta{display:flex;gap:14px;font-size:.8rem;color:var(--muted)}.post-card h3{font-size:1.15rem;margin:10px 0 8px}.post-card p{color:var(--muted);font-size:.93rem}.prose{max-width:720px;margin:0 auto;font-size:1.05rem}.prose h1{font-size:clamp(2rem,5vw,2.8rem);line-height:1.15;letter-spacing:-.02em;margin:14px 0}.prose h2{font-size:1.5rem;margin:36px 0 12px}.prose ol,.prose p,.prose ul{margin-bottom:16px;color:var(--text);opacity:.92}.prose ol,.prose ul{padding-left:22px}.prose li{margin-bottom:6px}.prose code{font-size:.9em;padding:2px 6px;border-radius:5px;background:var(--card-hover);border:1px solid var(--border)}.prose pre{background:var(--terminal);color:#e4e4e7;padding:18px;border-radius:10px;overflow-x:auto;margin-bottom:18px}.prose pre code{background:none;border:0;padding:0}.prose a{color:var(--primary);text-decoration:underline}.contact-card{max-width:720px;margin:0 auto;padding:0;overflow:hidden}.contact-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:22px 28px;border-bottom:1px solid var(--border);background:var(--bg-elev)}.contact-head h2{font-size:1.3rem}.ticket-id{font-family:var(--font-fira),monospace;font-size:.8rem;color:var(--primary);background:var(--primary-soft);padding:4px 10px;border-radius:6px}.form{padding:28px;grid-gap:18px}.form,.form-row{display:grid;gap:18px}.form-row{grid-template-columns:1fr 1fr;grid-gap:18px}.field label{display:block;font-size:.85rem;font-weight:600;margin-bottom:6px}.field input,.field select,.field textarea{width:100%;padding:11px 13px;border-radius:10px;border:1px solid var(--border);background:var(--bg-elev);color:var(--text);font:inherit;font-size:.95rem}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.hidden-field{position:absolute;left:-9999px}.form-status{font-size:.92rem;font-weight:600}.form-status.ok{color:var(--accent)}.form-status.err{color:var(--error)}.footer{border-top:1px solid var(--border);padding:40px 0;margin-top:40px}.footer-inner{justify-content:space-between;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:.9rem}.footer-inner,.footer-links{display:flex;gap:16px}.footer-links a:hover{color:var(--text)}.konami-hint{font-family:var(--font-fira),monospace;font-size:.72rem;opacity:.5}.page-head{padding:64px 0 32px}.back{color:var(--muted);font-size:.9rem}.back:hover{color:var(--text)}.detail-section+.detail-section{margin-top:32px}.detail-section h2{font-size:1.3rem;margin-bottom:12px}.detail-section ul{padding-left:20px;color:var(--muted)}.detail-section li{margin-bottom:7px}.reveal{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease}.reveal.visible{opacity:1;transform:none}.prod-btn{position:fixed;right:18px;bottom:18px;z-index:40;font-family:var(--font-fira),monospace;font-size:.75rem;font-weight:600;padding:8px 12px;border-radius:8px;border:1px solid rgba(239,68,68,.4);background:color-mix(in srgb,var(--bg) 85%,transparent);color:var(--error);cursor:pointer}.prod-btn:hover{background:var(--error);color:#fff}.overlay{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{max-width:460px;width:100%;text-align:center;background:var(--bg-elev);border:1px solid var(--error);border-radius:var(--radius);padding:32px}.modal h2{color:var(--error);margin-bottom:10px}.modal p{color:var(--muted);margin-bottom:22px}.bsod{position:fixed;inset:0;z-index:110;background:#0b57d0;color:#fff;display:flex;flex-direction:column;justify-content:center;padding:8vw;gap:18px}.bsod .face{font-size:6rem;line-height:1}.bsod p{max-width:640px;font-size:1.05rem}body.crashing .header,body.crashing main{animation:shake .4s infinite}body.crashed .header,body.crashed main>*{transition:transform 1.2s cubic-bezier(.55,0,1,.45),opacity 1.2s;transform:translateY(120vh) rotate(var(--rot,8deg));opacity:0}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-3px,2px) rotate(-.5deg)}75%{transform:translate(3px,-2px) rotate(.5deg)}}.matrix{position:fixed;inset:0;z-index:120;pointer-events:none}.cv{max-width:820px;margin:40px auto;background:#fff;color:#111827;padding:48px;border-radius:8px;box-shadow:var(--shadow)}.cv h1{font-size:2rem}.cv h2{font-size:1rem;text-transform:uppercase;letter-spacing:.08em;color:#2563eb;border-bottom:1px solid #e5e7eb;padding-bottom:6px;margin:26px 0 12px}.cv h3{font-size:1.02rem}.cv li,.cv p{font-size:.93rem;color:#374151}.cv ul{padding-left:18px;margin-top:6px}.cv .cv-meta{color:#6b7280;font-size:.9rem}.cv .cv-item+.cv-item{margin-top:14px}.cv-toolbar{max-width:820px;margin:24px auto 0;padding:0 20px;display:flex;justify-content:space-between;gap:12px}@media print{.cv-toolbar,.footer,.glow,.header,.prod-btn{display:none!important}body{background:#fff}.cv{margin:0;padding:0;box-shadow:none}}@media (max-width:900px){.about-grid,.featured,.hero-grid{grid-template-columns:1fr}.grid-3,.stats{grid-template-columns:1fr 1fr}}@media (max-width:760px){section{padding:64px 0}.burger{display:inline-grid}.nav-links{display:none;position:absolute;top:66px;left:0;right:0;flex-direction:column;padding:12px 20px 20px;background:var(--bg);border-bottom:1px solid var(--border)}.nav-links.open{display:flex}.nav-links a{display:block;padding:12px}.featured-metrics,.form-row,.grid-2,.grid-3{grid-template-columns:1fr}.featured{padding:24px}.terminal-body{font-size:.78rem;min-height:240px}.cv{padding:24px;margin:16px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}.admin-nav{display:flex;flex-wrap:wrap;padding:10px;margin-bottom:32px;border:1px solid var(--border);border-radius:var(--radius);background:var(--card)}.admin-nav,.admin-nav>a{align-items:center;gap:6px}.admin-nav>a{display:inline-flex;padding:8px 12px;border-radius:8px;color:var(--muted);font-weight:600;font-size:.92rem}.admin-nav>a:hover{color:var(--text);background:var(--card-hover)}.editor{display:grid;grid-gap:18px;gap:18px}.editor-tabs{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.editor-tabs button{padding:7px 14px;border-radius:8px;border:1px solid var(--border);background:var(--card);color:var(--muted);font:inherit;font-weight:600;cursor:pointer}.editor-tabs button.active{color:var(--text);border-color:var(--primary)}.editor-panes{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px}.editor-write textarea{height:100%;min-height:460px;font-family:var(--font-fira),monospace;font-size:.88rem;line-height:1.6;resize:vertical}.editor-preview{max-width:none;margin:0;max-height:640px;overflow:auto;font-size:.98rem}@media (min-width:901px){.editor-tabs button{display:none}}@media (max-width:900px){.editor-panes{grid-template-columns:1fr}.editor-panes.show-edit .editor-preview,.editor-panes.show-preview .editor-write{display:none}}