:root{--bg-very-dark:#010517;--bg-gradient-start:#010517;--bg-gradient-end:#020b1a;--header-bg:linear-gradient(180deg, rgba(1, 3, 8, 0.7), rgba(1, 3, 8, 0.3));--panel:rgba(255, 255, 255, 0.03);--text:#f5f8ff;--muted:rgba(245, 248, 255, 0.78);--accent:#33aaff;--accent-2:#6fe0ff;--accent-lively:#33aaff;--accent-lively-bg:rgba(51, 170, 255, 0.15);--accent-lively-border:rgba(51, 170, 255, 0.2);--radius:12px;--maxw:1100px;--card-shadow:0 14px 40px rgba(2, 6, 16, 0.6);--canvas-grad-1:'rgba(1,3,8,0.02)';--canvas-grad-2:'rgba(1,3,8,0.06)';--canvas-line-1-base:'51,170,255';--canvas-line-1-alpha:0.06;--canvas-line-2-base:'51,170,255';--canvas-line-2-alpha:1.0;--canvas-dot-base:'180,230,255';--canvas-mouse-base:'50,170,255';--canvas-mouse-alpha:0.06}[data-theme="light"]{--bg-very-dark:#f9faff;--bg-gradient-start:#f9faff;--bg-gradient-end:#f0f6ff;--header-bg:linear-gradient(180deg, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.5));--panel:rgba(0, 10, 20, 0.04);--text:#071122;--muted:rgba(7, 17, 34, 0.7);--accent:#0b66ff;--accent-2:#50a7ff;--accent-lively:#00796b;--accent-lively-bg:rgba(0, 121, 107, 0.1);--accent-lively-border:rgba(0, 121, 107, 0.2);--card-shadow:0 8px 30px rgba(0, 0, 0, 0.1);--canvas-grad-1:'rgba(200, 220, 255, 0.04)';--canvas-grad-2:'rgba(200, 220, 255, 0.08)';--canvas-line-1-base:'0, 80, 180';--canvas-line-1-alpha:0.05;--canvas-line-2-base:'0, 80, 180';--canvas-line-2-alpha:1.0;--canvas-dot-base:'0, 70, 150';--canvas-mouse-base:'0, 100, 255';--canvas-mouse-alpha:0.05}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}html,body{height:100%;overflow-x:hidden}body{font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial;color:var(--text);background:radial-gradient(circle at 10% 10%,rgb(10 20 40 / .06),transparent 8%),linear-gradient(180deg,var(--bg-gradient-start),var(--bg-gradient-end) 80%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background 0.5s}#bg-canvas{position:fixed;inset:0;z-index:-1;display:block}.site-header{position:sticky;top:0;z-index:20;backdrop-filter:blur(12px);background:var(--header-bg);border-bottom:1px solid rgb(255 255 255 / .03)}[data-theme="light"] .site-header{border-bottom:1px solid rgb(0 0 0 / .05)}.header-inner{max-width:var(--maxw);margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:14px 20px}.brand h1{font-size:1.3rem;font-weight:700;letter-spacing:.5px;margin:0;opacity:0;transform:translateY(20px);animation:fadeSlideIn 1.2s ease forwards 0.2s}.brand a{color:inherit;text-decoration:none}.tagline{margin:3px 0 0;color:var(--muted);font-size:.85rem;opacity:0;animation:fadeSlideIn 1.2s ease forwards 0.4s}.controls{display:flex;align-items:center;gap:8px}.icon-btn{background:var(--panel);border:1px solid rgb(255 255 255 / .05);border-radius:50%;width:38px;height:38px;display:flex;align-items:center;justify-content:center;text-decoration:none;color:var(--text);cursor:pointer;transition:all 0.3s cubic-bezier(.4,0,.2,1);opacity:0;animation:fadeSlideIn 1.2s ease forwards}[data-theme="light"] .icon-btn{border:1px solid rgb(0 0 0 / .05)}.icon-btn:nth-child(1){animation-delay:0.5s}.icon-btn:nth-child(2){animation-delay:0.6s}.icon-btn:nth-child(3){animation-delay:0.7s}.icon-btn:nth-child(4){animation-delay:0.8s}.icon-btn:nth-child(5){animation-delay:0.9s}.icon-btn:hover{background:var(--accent);color:#fff;transform:translateY(-3px) scale(1.05);box-shadow:0 8px 20px rgb(51 170 255 / .3)}[data-theme="light"] .icon-btn:hover{box-shadow:0 8px 20px rgb(11 102 255 / .3)}.main{position:relative;z-index:5;max-width:var(--maxw);margin:0 auto;padding:20px 20px 80px}.section{margin:80px 0;opacity:0;transform:translateY(40px);transition:opacity 0.8s ease,transform 0.8s ease}.section.visible{opacity:1;transform:translateY(0)}.section-title{font-size:1.8rem;margin:0 0 12px;text-align:center;position:relative;display:block;min-height:1.2em}.section-title::after{content:'|';color:var(--accent);margin-left:5px;display:inline-block;animation:blink 1s step-start infinite}@keyframes blink{50%{opacity:0}}.hero{text-align:center;margin-top:40px}.hero-card{display:flex;align-items:center;justify-content:center;gap:30px;background:linear-gradient(135deg,rgb(255 255 255 / .03),rgb(255 255 255 / .01));padding:40px;border-radius:var(--radius);box-shadow:var(--card-shadow);backdrop-filter:blur(10px);border:1px solid rgb(255 255 255 / .05);max-width:900px;margin:0 auto}[data-theme="light"] .hero-card{background:linear-gradient(135deg,rgb(255 255 255 / .5),rgb(255 255 255 / .3));border:1px solid rgb(0 0 0 / .05)}.profile-photo{width:140px;height:140px;border-radius:50%;object-fit:cover;border:3px solid rgb(51 170 255 / .3);box-shadow:0 0 30px rgb(51 170 255 / .2);transition:transform 0.3s ease}[data-theme="light"] .profile-photo{border:3px solid rgb(11 102 255 / .3);box-shadow:0 0 30px rgb(11 102 255 / .2)}.profile-photo:hover{transform:scale(1.05) rotate(2deg)}.hero-text{flex:1;text-align:left}.hero-text h2{font-size:1.5rem;margin:0 0 12px;line-height:1.4}.hero-text .lead{color:var(--muted);margin-bottom:20px;line-height:1.6}.hero-actions{display:flex;gap:12px;margin-top:16px}.btn{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#021224;padding:11px 20px;border-radius:10px;text-decoration:none;font-weight:600;font-size:.95rem;border:0;display:inline-block;transition:transform 0.2s,box-shadow 0.2s;box-shadow:0 6px 20px rgb(51 170 255 / .2);cursor:pointer}[data-theme="light"] .btn{color:#fff;box-shadow:0 6px 20px rgb(11 102 255 / .3)}.btn:hover{transform:translateY(-2px);box-shadow:0 10px 30px rgb(51 170 255 / .35)}[data-theme="light"] .btn:hover{box-shadow:0 10px 30px rgb(11 102 255 / .4)}.btn.outline{background:#fff0;border:1px solid rgb(255 255 255 / .1);color:var(--text);box-shadow:none}[data-theme="light"] .btn.outline{border:1px solid rgb(0 10 20 / .2);color:var(--text)}.btn.outline:hover{border-color:var(--accent);color:var(--accent);background:rgb(51 170 255 / .1)}[data-theme="light"] .btn.outline:hover{color:var(--accent);background:rgb(11 102 255 / .1)}.btn.small{padding:6px 14px;font-size:.85rem;border-radius:8px}.contacts{margin-top:18px;display:flex;gap:16px;font-size:.9rem}.contacts a{color:var(--muted);text-decoration:none;transition:color 0.3s}.contacts a:hover{color:var(--accent)}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-top:30px}.skill{background:linear-gradient(135deg,rgb(255 255 255 / .04),rgb(255 255 255 / .02));padding:20px;border-radius:12px;border:1px solid rgb(255 255 255 / .05);transition:transform 0.3s ease,box-shadow 0.3s ease}[data-theme="light"] .skill{background:linear-gradient(135deg,rgb(255 255 255 / .8),rgb(255 255 255 / .5));border:1px solid rgb(0 0 0 / .05)}.skill:hover{transform:translateY(-5px);box-shadow:0 10px 30px rgb(2 6 16 / .5)}.bar{height:10px;background:rgb(255 255 255 / .05);border-radius:8px;overflow:hidden;margin-top:8px}[data-theme="light"] .bar{background:rgb(0 0 0 / .08)}.bar-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width 1.5s cubic-bezier(.4,0,.2,1)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:30px;max-width:900px;margin:30px auto 0}.two-col ul{list-style:none;padding:0}.two-col li{padding:8px 0 8px 20px;color:var(--muted);position:relative}.two-col li::before{content:'→';position:absolute;left:0;color:var(--accent)}.project-filters{display:flex;justify-content:center;gap:15px;margin:30px 0;flex-wrap:wrap}.btn-filter{background:var(--panel);border:1px solid rgb(255 255 255 / .05);color:var(--muted);padding:8px 16px;border-radius:8px;cursor:pointer;font-size:.9rem;transition:all 0.3s ease}[data-theme="light"] .btn-filter{border:1px solid rgb(0 0 0 / .1)}.btn-filter:hover{background:rgb(255 255 255 / .1);color:var(--text)}[data-theme="light"] .btn-filter:hover{background:rgb(0 0 0 / .05)}.btn-filter.active{background:var(--accent);color:#021224;font-weight:600}[data-theme="light"] .btn-filter.active{color:#fff}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;margin-top:30px}.project-tile{background:linear-gradient(135deg,rgb(255 255 255 / .04),rgb(255 255 255 / .01));border-radius:14px;overflow:hidden;border:1px solid rgb(255 255 255 / .05);transition:all 0.4s cubic-bezier(.4,0,.2,1);position:relative;display:flex;flex-direction:column}[data-theme="light"] .project-tile{background:linear-gradient(135deg,#ffffff,#fdfdff);border:1px solid rgb(0 0 0 / .05)}.project-tile:hover{transform:translateY(-10px);box-shadow:0 20px 50px rgb(2 6 16 / .7)}.project-tile::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--accent-2));transform:scaleX(0);transform-origin:left;transition:transform 0.4s ease}.project-tile:hover::before{transform:scaleX(1)}.thumb{height:180px;background-size:cover;background-position:center;background-color:rgb(51 170 255 / .1);transition:transform 0.5s ease}.project-tile:hover .thumb{transform:scale(1.08)}.info{padding:20px;display:flex;flex-direction:column;flex-grow:1}.info-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.info h4{margin:0;font-size:1.15rem}.proj-desc{color:var(--muted);margin-bottom:10px;font-size:.92rem;line-height:1.5;flex-grow:1}.proj-date{font-size:.85rem;margin-bottom:14px;color:var(--accent-2)}.proj-status{font-size:.8rem;font-weight:600;padding:3px 8px;border-radius:6px;white-space:nowrap}.proj-status.finished{color:#5cb85c;background:rgb(92 184 92 / .15)}.proj-status.in-progress{color:#f0ad4e;background:rgb(240 173 78 / .15)}.info-footer{display:flex;justify-content:space-between;align-items:center;margin-top:auto}.tags-wrapper{display:flex;gap:6px;flex-wrap:wrap;row-gap:10px;flex:1}.tag{display:inline-block;background:var(--accent-lively-bg);color:var(--accent-lively);padding:5px 10px;border-radius:6px;font-size:.8rem;border:1px solid var(--accent-lively-border);white-space:nowrap}.hobby-tile .tag{background:rgb(51 170 255 / .15);color:var(--accent-2);border:1px solid rgb(51 170 255 / .2)}[data-theme="light"] .hobby-tile .tag{background:rgb(11 102 255 / .1);color:var(--accent);border:1px solid rgb(11 102 255 / .2)}.card-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-top:30px}.card{background:linear-gradient(135deg,rgb(255 255 255 / .04),rgb(255 255 255 / .02));padding:24px;border-radius:var(--radius);box-shadow:var(--card-shadow);border:1px solid rgb(255 255 255 / .05);transition:transform 0.3s ease;position:relative}[data-theme="light"] .card{background:linear-gradient(135deg,#ffffff,#fdfdff);border:1px solid rgb(0 0 0 / .05)}.card:hover{transform:translateY(-3px)}.card-date{display:block;font-size:.85rem;font-weight:500;margin-bottom:8px;color:var(--accent-2)}[data-theme="light"] .card-date{color:var(--accent)}.card h4{margin:0 0 10px;font-size:1.1rem;color:var(--text)}.project-single .card{margin-bottom:24px}.project-meta-row{display:flex;justify-content:space-between;align-items:flex-start;margin-top:25px;gap:20px;flex-wrap:wrap}.proj-cta{margin-left:auto;flex-shrink:0}.project-layout{display:grid;grid-template-columns:2fr 1fr;gap:24px;align-items:flex-start}.project-gallery{display:flex;flex-direction:column;gap:16px}.gthumb{height:300px;background-size:cover;background-position:center;border-radius:var(--radius);border:1px solid rgb(255 255 255 / .1);cursor:pointer;transition:transform 0.3s ease,box-shadow 0.3s ease}[data-theme="light"] .gthumb{border:1px solid rgb(0 0 0 / .1)}.gthumb:hover{transform:scale(1.03);box-shadow:0 10px 30px rgb(2 6 16 / .5)}.project-details p{margin-bottom:20px;line-height:1.6}.project-details ul{padding-left:20px;margin-bottom:20px}.project-details h4{margin-top:35px;margin-bottom:15px;font-size:1.1rem;color:var(--text)}.project-details h4:first-child{margin-top:0}.contact{text-align:center}.contact form{max-width:600px;margin:30px auto 0;display:flex;flex-direction:column;gap:14px}.contact input,.contact textarea{padding:14px;border-radius:10px;border:1px solid rgb(255 255 255 / .08);background:rgb(255 255 255 / .03);color:var(--text);font-family:inherit;font-size:.95rem;transition:border-color 0.3s,background 0.3s}[data-theme="light"] .contact input,[data-theme="light"] .contact textarea{border:1px solid rgb(0 0 0 / .1);background:rgb(0 0 0 / .02)}.contact input:focus,.contact textarea:focus{outline:none;border-color:var(--accent);background:rgb(255 255 255 / .05)}.form-row{display:flex;gap:12px;justify-content:center}.footer{text-align:center;margin-top:40px;padding:30px 0;color:var(--muted);font-size:.9rem;border-top:1px solid rgb(255 255 255 / .05)}[data-theme="light"] .footer{border-top:1px solid rgb(0 0 0 / .08)}.modal{position:fixed;inset:0;background:rgb(0 0 0 / .9);z-index:100;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity 0.3s ease}[data-theme="light"] .modal{background:rgb(255 255 255 / .8)}.modal.visible{opacity:1;pointer-events:all}.modal img{max-width:90vw;max-height:80vh;object-fit:contain;border-radius:8px;box-shadow:0 10px 40px rgb(0 0 0 / .5)}.modal-close{position:absolute;top:20px;right:30px;font-size:2.5rem;color:#fff;background:#fff0;border:0;cursor:pointer}[data-theme="light"] .modal-close{color:#000}.modal-caption{position:absolute;bottom:20px;color:#fff;font-size:1rem;background:rgb(0 0 0 / .5);padding:8px 16px;border-radius:8px}[data-theme="light"] .modal-caption{color:#000;background:rgb(255 255 255 / .8)}.fadein{animation:fadeSlideIn 0.5s ease forwards}@keyframes fadeSlideIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.muted{opacity:.7;color:var(--muted)}@media (max-width:768px){.hero-card{flex-direction:column;text-align:center;padding:30px 20px}.hero-text{text-align:center}.hero-actions{justify-content:center}.contacts{flex-direction:column;gap:8px}.two-col{grid-template-columns:1fr}.projects-grid{grid-template-columns:1fr}.project-layout{grid-template-columns:1fr}.project-meta-row{flex-direction:column;align-items:flex-start}.proj-cta{margin-left:0}}@media (max-width:480px){.header-inner{flex-direction:column;gap:12px;text-align:center}.controls{flex-wrap:wrap;justify-content:center}.info-footer{flex-direction:column;align-items:flex-start;gap:14px}.info-footer .btn{width:100%;text-align:center}}