:root{--card:#23374d;--acc:#3ea6ff;--text:#dfe7ff;--muted:#9fb1ff;--ring: rgba(62,166,255,.35);--shadow: 0 10px 30px rgba(0,0,0,.35);--bg-base: rgb(5, 23, 46);--bg-accent: rgb(5, 23, 46)}:root[data-theme=light]{--card:#ffffff;--acc:#007bff;--text:#1c1c28;--muted:#5c5c7a;--ring: rgba(0,123,255,.35);--bg-base: rgb(245, 249, 255);--bg-accent: rgb(224, 232, 255)}*{box-sizing:border-box}html,body,#root{height:100%}html{scroll-behavior:smooth}body{margin:0;font-family:Poppins,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans;color:var(--text);background-image:linear-gradient(283deg,#e4e4e40a 0% 30%,#8282820a 30% 49%,#7fc5cb0a 49% 100%),linear-gradient(297deg,#e4e4e40a 0% 20%,#8282820a 20% 60%,#7fc5cb0a 60% 100%),linear-gradient(242deg,#e4e4e40a 0% 29%,#8282820a 29% 48%,#7fc5cb0a 48% 100%),linear-gradient(90deg,var(--bg-base),var(--bg-accent));background-size:200% 200%;background-position:var(--bg-x, 50%) var(--bg-y, 50%),var(--bg-x, 50%) var(--bg-y, 50%),var(--bg-x, 50%) var(--bg-y, 50%),var(--bg-x, 50%) var(--bg-y, 50%);background-attachment:fixed;transition:background .6s ease,color .6s ease}.container{width:min(1000px,92%);margin:auto}.section{padding:140px 0}.section h2{text-align:center;margin:0 0 30px;letter-spacing:.5px;font-weight:700}@media(max-width:980px){.section{padding:110px 0}}@media(max-width:560px){.section{padding:80px 0}}.theme-toggle{background:none;border:none;font-size:1.4rem;cursor:pointer;color:var(--text);margin-top:10px;transition:transform .3s ease}.theme-toggle:hover{transform:rotate(15deg)}@media(min-width:768px){.theme-toggle{margin-top:0;margin-left:10px}}.nav{position:fixed;top:0;width:100%;z-index:1000;background:#0a0f2899;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.06)}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:64px}.brand{font-weight:700;letter-spacing:.5px;color:var(--text)}.brand span{color:var(--acc)}.hamburger{display:flex;flex-direction:column;justify-content:space-between;width:26px;height:18px;background:none;border:none;cursor:pointer;z-index:1100}.hamburger span{display:block;height:3px;width:100%;background:var(--text);border-radius:2px;transition:all .3s ease}.hamburger.active span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}.hamburger.active span:nth-child(2){opacity:0}.hamburger.active span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}.menu{position:fixed;top:64px;left:0;right:0;background:#0f1432f5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;flex-direction:column;align-items:center;gap:24px;padding:24px 0;transform:translateY(-120%);transition:transform .4s ease}.menu.open{transform:translateY(0)}.menu a{color:var(--text);text-decoration:none;font-weight:500;font-size:1.1rem;transition:color .2s ease}.menu a:hover{color:var(--acc)}@media(min-width:768px){.hamburger{display:none}.menu{position:static;flex-direction:row;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;gap:16px;padding:0;transform:none;height:auto}}.active-link{color:var(--acc);border-bottom:2px solid var(--acc);padding-bottom:2px}:root[data-theme=light] .nav{background:#0a0f28b3}:root[data-theme=light] .brand,:root[data-theme=light] .menu a,:root[data-theme=light] .hamburger span,:root[data-theme=light] .nav .theme-toggle{color:#fff}:root[data-theme=light] .menu a.active-link{color:var(--acc);border-bottom-color:var(--acc)}:root[data-theme=light] .menu a:hover{color:var(--acc)}:root[data-theme=light] .hamburger span{background:#fff}.hero{padding:150px 0 100px;background:radial-gradient(600px 600px at 75% 20%,rgba(62,166,255,.08),transparent 60%),radial-gradient(700px 700px at 20% 30%,rgba(62,166,255,.07),transparent 60%)}.hero-grid{display:grid;grid-template-columns:1.8fr .7fr;gap:100px;align-items:center}.hero h1{font-size:42px;margin:10px 0}.hero .h-accent{color:var(--acc)}.hero p{color:var(--muted);max-width:56ch;line-height:1.6}.cta{display:flex;gap:12px;margin-top:20px}.btn{background:var(--acc);color:#062342;border:none;padding:12px 18px;border-radius:14px;font-weight:700;box-shadow:0 10px 24px var(--ring);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.btn:hover{transform:translateY(-2px);box-shadow:0 12px 28px var(--ring)}.btn.ghost{background:transparent;color:var(--text);border:1px solid rgba(255,255,255,.15)}.hero-card img{width:150%;border-radius:226px;display:block}.hero-subtitle{font-weight:500;color:var(--muted);letter-spacing:.5px}.hero-title{font-size:44px;line-height:1.2;margin:10px 0 16px;background:linear-gradient(to right,#8902ff,#04b0ff);color:transparent;-webkit-background-clip:text;background-clip:text}.glow-text{color:var(--acc);text-shadow:0 0 10px rgba(62,166,255,.5),0 0 20px rgba(62,166,255,.3)}.hero-desc{color:var(--muted);max-width:10ch;line-height:1.6;font-weight:300}.avatar-glow{position:relative;display:flex;border-radius:110%;padding:1px;background:radial-gradient(circle at 30% 30%,#3ea6ffcc,#ffffff0d);box-shadow:0 0 25px #3ea6ff80;animation:glowPulse 4s infinite alternate}.avatar-img{border-radius:50%;display:block;width:260px;height:260px;object-fit:cover;border:3px solid rgba(255,255,255,.2)}@keyframes glowPulse{0%{box-shadow:0 0 25px #3ea6ff66}to{box-shadow:0 0 45px #3ea6ffcc}}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}.card{background:var(--card);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:18px;box-shadow:var(--shadow);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;position:relative;overflow:hidden}.card:hover{transform:translateY(-4px);border-color:#3ea6ff59;box-shadow:0 14px 40px #00000073}.card:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--x,50%) var(--y,50%),rgba(62,166,255,.25),transparent 70%);transition:opacity .2s;opacity:0;pointer-events:none}.card:hover:before{opacity:1}.card h3{margin:6px 0 8px;font-size:18px}.card p{color:var(--muted);font-size:14px;line-height:1.55}.resume-header.center{text-align:center;margin-bottom:18px}.resume-title{margin:0;font-size:32px}.tabs{display:flex;gap:8px;justify-content:center;margin-bottom:24px}.tab{padding:10px 14px;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:#c9bbbb08;cursor:pointer;font-weight:600;color:#7295ca;transition:outline .2s ease,border-color .2s ease,color .2s ease,background-color .2s ease}.tab:hover{border-color:var(--ring);background-color:var(--ring)}.tab.active{outline:2px solid var(--ring);border-color:transparent;color:#dfe7ff;background-color:var(--acc)}.timeline{display:flex;flex-direction:column;gap:20px}.timeline-item{display:flex;gap:16px;align-items:flex-start}.timeline-icon{font-size:22px;line-height:1}.timeline-content h4{margin:0;font-size:18px}.timeline-content .org{color:var(--muted);font-size:14px;margin:4px 0 6px}.timeline-content .desc{color:var(--text);font-size:15px;line-height:1.5}.resume-content{padding-top:20px}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:18px}.skill-card{display:flex;flex-direction:column;align-items:center;justify-content:center;background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:18px;text-align:center;box-shadow:var(--shadow);transition:transform .2s ease,border-color .2s ease}.skill-card:hover{transform:translateY(-3px);border-color:var(--ring)}.skill-card img{width:80px;height:80px;margin-bottom:10px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.skill-card img.icon-express{background:#ffffff1f;border-radius:10px;padding:6px;box-shadow:0 0 0 1px #ffffff42,0 2px 6px #00000059}.skill-card p{font-weight:500;color:var(--muted)}.resume-socials{margin:20px 0;display:flex;justify-content:center;gap:28px;opacity:.9}.resume-socials img{width:24px;height:24px;transition:transform .3s ease,filter .3s ease;filter:brightness(.9)}.resume-socials img:hover{transform:translateY(-4px) scale(1.05);filter:brightness(1.2)}:root[data-theme=light] .resume-socials img{filter:invert(23%) sepia(65%) saturate(2350%) hue-rotate(191deg) brightness(93%) contrast(96%)}:root[data-theme=light] .resume-socials img:hover{filter:invert(23%) sepia(65%) saturate(2350%) hue-rotate(191deg) brightness(103%) contrast(96%)}h2{background:linear-gradient(to right,#8902ff,#04b0ff);color:transparent;-webkit-background-clip:text;background-clip:text}.portfolio-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.thumb{position:relative;border-radius:14px;overflow:hidden;border:1px solid rgba(255,255,255,.08);height:260px}.project-img{width:100%;height:100%;object-fit:cover;display:block;background:#0c1729}.project-img.project-img-contain{object-fit:contain}.thumb.flip-card{perspective:1000px}.flip-inner{position:relative;width:100%;height:100%;transition:transform .5s ease;transform-style:preserve-3d}.flip-card:hover .flip-inner{transform:rotateY(180deg)}.flip-front,.flip-back{position:absolute;inset:0;backface-visibility:hidden;border-radius:14px;overflow:hidden;height:100%}.flip-front picture,.flip-back picture{display:block;height:100%}.front-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:16px;background:linear-gradient(180deg,#0000,#06143cbf 85%);gap:4px}.flip-back{background:linear-gradient(160deg,#06143ce6,#040a1ef2);transform:rotateY(180deg);padding:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;box-sizing:border-box}.project-links .btn.ghost:hover{background:var(--acc);color:#000;border-color:var(--acc)}.flip-back{background:linear-gradient(160deg,#fffffff5,#f0f4ffeb);color:#0d1b2a}.flip-back .proj-tag{color:#2f3e52}.flip-back .badge{background:#ffffffeb;border:1px solid rgba(13,27,42,.2);color:#0d1b2a}.flip-back .project-links .btn.ghost{color:#0d1b2a;border:1px solid rgba(13,27,42,.25);background:#ffffffe6}.flip-back .project-links .btn.ghost:hover{background:var(--acc);color:#062342;border-color:var(--acc)}.portfolio-tabs{display:flex;justify-content:center;gap:10px;margin:30px 0 40px;flex-wrap:wrap}.portfolio-tabs .tab{padding:10px 16px;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:#ffffff08;color:var(--text);cursor:pointer;font-weight:600;transition:all .2s ease}.portfolio-tabs .tab:hover{border-color:var(--ring);color:var(--acc)}.portfolio-tabs .tab.active{background:var(--acc);color:#062342;outline:2px solid var(--ring);border-color:transparent}.thumb{position:relative;border-radius:14px;overflow:hidden;border:1px solid rgba(255,255,255,.08);transition:transform .2s ease}.thumb:hover{transform:translateY(-3px)}.portfolio-desc{text-align:center;color:var(--muted);font-size:14px;margin-top:8px}footer{padding:40px 0;color:var(--muted);text-align:center;border-top:1px solid rgba(255,255,255,.08)}.reveal{opacity:0;transform:translateY(12px);transition:opacity .6s ease,transform .6s ease}.reveal.is-visible{opacity:1;transform:none}.reveal-item{opacity:0;transform:translateY(12px);transition:opacity .6s ease,transform .6s ease;transition-delay:var(--d, 0ms)}.reveal-item.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.reveal,.reveal-item{opacity:1;transform:none;transition:none}}@media(max-width:980px){.hero-grid{grid-template-columns:1fr;gap:32px}.grid,.portfolio-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.grid,.portfolio-grid{grid-template-columns:1fr}.cta{flex-direction:column}}@media(max-width:980px){.hero-grid{display:flex;flex-direction:column-reverse;align-items:center;text-align:center;gap:40px}.hero-card{margin:0 auto}.avatar-glow{order:-1;margin-bottom:20px}.avatar-img{width:200px;height:200px;border-radius:50%;object-fit:cover}}@media(max-width:560px){.avatar-img{width:150px;height:150px}.hero h1{font-size:30px}.avatar-glow{width:160px;height:160px;padding:3px;border-radius:50%;margin:0 auto}.hero-desc{font-size:.95rem}.cta{flex-direction:column;align-items:center}}.contact-wrap{text-align:center;background:linear-gradient(to right,#8902ff,#04b0ff);color:transparent;-webkit-background-clip:text;background-clip:text}.contact-sub{color:var(--muted);margin:-6px 0 22px}.contact-card{--radius: 18px;position:relative;max-width:720px;margin:0 auto;padding:26px;border-radius:var(--radius);background:#ffffff08;border:1px solid rgba(255,255,255,.1);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);isolation:isolate}.contact-card:before{content:"";position:absolute;inset:-1px;z-index:-1;border-radius:calc(var(--radius) + 1px);background:conic-gradient(from 180deg at 50% 50%,#3ea6ff00,#3ea6ff8c,#3ea6ff00 60%,#3ea6ff8c,#3ea6ff00);filter:blur(14px);opacity:.4}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.contact-card:before{animation:none}}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:12px}@media(max-width:600px){.form-grid{grid-template-columns:1fr}}.field{position:relative}.field input,.field textarea{width:100%;background:#ffffff0d;border:1px solid rgba(255,255,255,.12);color:var(--text);padding:16px 14px 14px;border-radius:12px;font:inherit;outline:none;transition:border-color .25s ease,background .25s ease,box-shadow .25s ease}.field textarea{min-height:120px;resize:vertical}.field input:focus,.field textarea:focus{border-color:var(--acc);background:#3ea6ff0f;box-shadow:0 0 0 3px var(--ring)}.field label{position:absolute;left:12px;top:12px;padding:0 6px;background:transparent;color:var(--muted);font-size:.95rem;pointer-events:none;transition:transform .2s ease,color .2s ease,background .2s ease,font-size .2s ease,top .2s ease}.field input::placeholder,.field textarea::placeholder{color:transparent}.field input:focus+label,.field textarea:focus+label,.field input:not(:placeholder-shown)+label,.field textarea:not(:placeholder-shown)+label{top:-8px;left:10px;font-size:.78rem;color:var(--acc);background:#06143cbf;border-radius:8px}:root[data-theme=light] .field input:focus+label,:root[data-theme=light] .field textarea:focus+label,:root[data-theme=light] .field input:not(:placeholder-shown)+label,:root[data-theme=light] .field textarea:not(:placeholder-shown)+label{background:#ffffffe6}.contact-btn{width:100%;margin-top:6px;display:inline-flex;justify-content:center;align-items:center;gap:10px}.btn-contents{display:inline-flex;align-items:center;gap:10px}.spinner{width:18px;height:18px;border-radius:50%;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;animation:spin .9s linear infinite}@media(prefers-reduced-motion:reduce){.spinner{animation:none}}.toast{position:fixed;right:18px;bottom:18px;padding:12px 14px;border-radius:12px;font-weight:600;color:#062342;box-shadow:0 10px 28px #00000059;transform:translateY(10px);opacity:0;animation:toast-in .35s ease forwards;z-index:9999}.toast.ok{background:#66e2a3}.toast.error{background:#ff8a8a}@keyframes toast-in{to{opacity:1;transform:translateY(0)}}.hp{display:none!important}.sr-live{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.lang-segmented{position:relative;display:inline-grid;grid-template-columns:1fr 1fr;align-items:center;gap:0;width:96px;height:34px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:3px;box-shadow:0 6px 16px #00000040;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.seg-btn{position:relative;z-index:2;height:28px;border:0;background:transparent;color:var(--text);font-weight:700;letter-spacing:.5px;border-radius:999px;cursor:pointer;transition:color .2s ease,transform .1s ease}.seg-btn:hover{transform:translateY(-1px)}.seg-btn.active{color:#062342}.seg-thumb{position:absolute;z-index:1;width:calc(50% - 3px);height:28px;left:3px;top:3px;border-radius:999px;background:var(--acc);box-shadow:0 10px 24px var(--ring);transition:transform .25s ease}.seg-thumb.right{transform:translate(100%)}:root[data-theme=light] .lang-segmented{background:#fff;border-color:#0000000f;box-shadow:0 6px 16px #00000014}.lang-flags{display:inline-flex;gap:8px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:4px;box-shadow:0 6px 16px #00000040;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.flag-btn{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--text);padding:6px 10px;border-radius:10px;font-weight:700;letter-spacing:.4px;cursor:pointer;transition:background .2s ease,transform .1s ease,outline .2s ease}.flag-btn:hover{transform:translateY(-1px);background:#ffffff0f}.flag-btn.active{outline:2px solid var(--ring);background:#3ea6ff1f}.flag-ico{display:block;line-height:1}.flag-ico img{width:20px;height:14px;display:block;object-fit:cover;border-radius:2px;box-shadow:0 1px 3px #00000040}.flag-txt{display:block}:root[data-theme=light] .lang-flags{background:#fff;border-color:#00000014;box-shadow:0 6px 16px #00000014}.proj-title{font-size:16px;font-weight:700;display:block;margin-bottom:2px}.proj-tag{color:var(--muted);font-size:12px;margin-bottom:6px}.proj-techs{display:flex;gap:2px;justify-content:center;flex-wrap:wrap;margin-bottom:4px}.tech-wrap{position:relative;display:inline-flex;align-items:center;justify-content:center}.tech-wrap:after{content:attr(data-name);position:absolute;bottom:100%;left:50%;transform:translate(-50%,-6px);background:#000000bf;color:#fff;font-size:10px;padding:2px 6px;border-radius:6px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease;z-index:2}.tech-wrap:hover:after{opacity:1;transform:translate(-50%,-10px)}.tech-icon{width:26px!important;height:26px!important;object-fit:contain;filter:drop-shadow(0 1px 1px rgba(0,0,0,.12));opacity:.85;display:block}.tech-icon.icon-express{width:40px!important;height:auto!important;max-height:24px!important;background:#ffffff24;border-radius:6px;padding:3px 6px;box-sizing:border-box;box-shadow:0 0 0 1px #0000001f;object-fit:contain}.proj-badges{display:flex;gap:8px;margin:4px 0 6px;flex-wrap:wrap;justify-content:center}.badge{background:#ffffff1f;border:1px solid rgba(255,255,255,.2);color:var(--text);padding:3px 8px;border-radius:12px;font-size:11px;letter-spacing:.1px}.project-links{display:flex;justify-content:center;gap:8px;margin-top:6px;flex-wrap:wrap}.project-links .btn.ghost{border:1px solid rgba(255,255,255,.15);padding:7px 12px;border-radius:10px;font-size:.8rem;color:var(--text);transition:all .3s ease}
