/* ===== JOJOFX — Apple 2026 Liquid Glass Portfolio ===== */
:root {
  --bg: #060608;
  --bg2: #0b0b10;
  --txt: #f5f5f7;
  --txt-dim: #a1a1aa;
  --txt-mute: #6b6b76;
  --accent: #2997ff;        /* Apple blue */
  --accent2: #bf5af2;       /* Apple purple */
  --accent3: #64d2ff;
  --glass-bg: rgba(255,255,255,0.06);
  --glass-bg2: rgba(255,255,255,0.09);
  --glass-brd: rgba(255,255,255,0.12);
  --glass-brd2: rgba(255,255,255,0.18);
  --grad: linear-gradient(120deg, #64d2ff 0%, #2997ff 40%, #bf5af2 100%);
  --grad-soft: linear-gradient(120deg, rgba(100,210,255,0.15), rgba(191,90,242,0.15));
  --shadow: 0 8px 32px rgba(0,0,0,0.4);
  --shadow-lg: 0 20px 60px rgba(0,0,0,0.5);
  --radius: 22px;
  --radius-lg: 30px;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}

*,*::before,*::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; -webkit-font-smoothing:antialiased; }
body {
  font-family:'Inter','Manrope',sans-serif;
  background:var(--bg); color:var(--txt);
  overflow-x:hidden; line-height:1.5;
}
::-webkit-scrollbar{width:8px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.15);border-radius:4px;}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}

/* ===== ANIMATED MESH BACKGROUND ===== */
.bg-mesh{position:fixed;inset:0;z-index:-2;overflow:hidden;background:var(--bg);}
.mesh-blob{position:absolute;border-radius:50%;filter:blur(90px);opacity:0.5;
  will-change:transform;}
.blob-1{width:50vw;height:50vw;background:radial-gradient(circle,#2997ff,transparent 70%);
  top:-10%;left:-5%;animation:drift1 22s ease-in-out infinite;}
.blob-2{width:45vw;height:45vw;background:radial-gradient(circle,#bf5af2,transparent 70%);
  bottom:-15%;right:-10%;animation:drift2 26s ease-in-out infinite;}
.blob-3{width:38vw;height:38vw;background:radial-gradient(circle,#64d2ff,transparent 70%);
  top:35%;left:45%;animation:drift3 30s ease-in-out infinite;}
@keyframes drift1{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(8vw,12vh) scale(1.15);}}
@keyframes drift2{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(-10vw,-8vh) scale(1.1);}}
@keyframes drift3{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(-6vw,10vh) scale(0.9);}}
.mesh-grain{position:absolute;inset:0;opacity:0.04;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9'/%3E%3C/filter%3E%3Crect width='100' height='100' filter='url(%23n)'/%3E%3C/svg%3E");}

/* ===== GLASS PRIMITIVES ===== */
.glass{
  background:var(--glass-bg);
  backdrop-filter:blur(24px) saturate(180%);
  -webkit-backdrop-filter:blur(24px) saturate(180%);
  border:1px solid var(--glass-brd);
}
.glass-card{
  background:var(--glass-bg);
  backdrop-filter:blur(30px) saturate(180%);
  -webkit-backdrop-filter:blur(30px) saturate(180%);
  border:1px solid var(--glass-brd);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow);
  position:relative;
}
.glass-card::before{
  content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;
  background:linear-gradient(140deg,rgba(255,255,255,0.4),transparent 40%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:0.6;
}
.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;}

/* ===== GLASS BUTTON ===== */
.glass-btn{
  display:inline-flex;align-items:center;gap:0.5rem;
  padding:0.8rem 1.5rem;border-radius:50px;font-weight:600;font-size:0.92rem;
  background:var(--glass-bg2);
  backdrop-filter:blur(20px) saturate(180%);
  -webkit-backdrop-filter:blur(20px) saturate(180%);
  border:1px solid var(--glass-brd2);color:var(--txt);
  cursor:pointer;transition:all 0.4s var(--ease);white-space:nowrap;
}
.glass-btn:hover{transform:translateY(-3px);background:rgba(255,255,255,0.14);
  box-shadow:0 12px 30px rgba(41,151,255,0.25);}
.glass-btn.primary{background:var(--grad);border:none;color:#fff;
  box-shadow:0 8px 24px rgba(41,151,255,0.4);}
.glass-btn.primary:hover{box-shadow:0 14px 40px rgba(191,90,242,0.5);}
.glass-btn.big{padding:1rem 1.8rem;font-size:1rem;}

/* ===== PRELOADER ===== */
#preloader{position:fixed;inset:0;z-index:9999;background:var(--bg);
  display:flex;align-items:center;justify-content:center;
  transition:opacity 0.6s ease,visibility 0.6s ease;}
#preloader.hide{opacity:0;visibility:hidden;}
.pre-logo{font-family:'Manrope',sans-serif;font-size:2.4rem;font-weight:800;
  letter-spacing:0.05em;animation:prePulse 1.4s ease infinite;}
.pre-logo span{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
@keyframes prePulse{0%,100%{opacity:0.4;transform:scale(0.96);}50%{opacity:1;transform:scale(1);}}

/* ===== NAV ===== */
.nav{position:fixed;top:1rem;left:50%;transform:translateX(-50%);z-index:1000;
  width:min(1180px,calc(100% - 2rem));
  display:flex;align-items:center;gap:1.5rem;
  padding:0.7rem 0.7rem 0.7rem 1.6rem;border-radius:50px;
  transition:all 0.4s var(--ease);}
.nav.scrolled{background:rgba(10,10,16,0.6);box-shadow:var(--shadow);}
.nav-brand{font-family:'Manrope',sans-serif;font-weight:800;font-size:1.3rem;letter-spacing:0.02em;}
.nav-brand span{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.nav-menu{display:flex;gap:0.3rem;list-style:none;margin-left:auto;}
.nav-menu a{padding:0.5rem 1rem;border-radius:50px;font-size:0.9rem;font-weight:500;
  color:var(--txt-dim);transition:all 0.3s var(--ease);}
.nav-menu a:hover{color:var(--txt);background:rgba(255,255,255,0.08);}
.nav-cta{margin-left:0.5rem;}
.nav-burger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:0.6rem;margin-left:auto;}
.nav-burger span{width:22px;height:2px;background:var(--txt);border-radius:2px;transition:all 0.3s var(--ease);}

/* ===== MOBILE MENU ===== */
.mobile-drawer{position:fixed;inset:0;z-index:999;
  background:rgba(6,6,8,0.85);backdrop-filter:blur(30px);-webkit-backdrop-filter:blur(30px);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;
  opacity:0;visibility:hidden;transition:all 0.4s var(--ease);}
.mobile-drawer.open{opacity:1;visibility:visible;}
.mobile-drawer a{font-size:1.6rem;font-weight:700;color:var(--txt);}
.mobile-drawer a:hover{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}

/* ===== HERO ===== */
.hero{min-height:100vh;display:flex;align-items:center;justify-content:center;
  text-align:center;padding:8rem 1.5rem 4rem;position:relative;}
.hero-inner{max-width:840px;}
.hero-badge{display:inline-flex;align-items:center;gap:0.5rem;
  padding:0.45rem 1.1rem;border-radius:50px;font-size:0.82rem;font-weight:600;
  color:var(--txt-dim);margin-bottom:1.8rem;}
.pulse{width:8px;height:8px;border-radius:50%;background:#30d158;
  box-shadow:0 0 0 0 rgba(48,209,88,0.5);animation:pulse 2s infinite;}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(48,209,88,0.5);}70%{box-shadow:0 0 0 10px rgba(48,209,88,0);}100%{box-shadow:0 0 0 0 rgba(48,209,88,0);}}
.hero-title{font-family:'Manrope',sans-serif;font-weight:800;
  font-size:clamp(3rem,9vw,6.5rem);line-height:0.98;letter-spacing:-0.03em;margin-bottom:1.2rem;}
.hero-title .line{display:block;}
.hero-role{font-size:clamp(0.8rem,2vw,1rem);font-weight:700;letter-spacing:0.25em;
  color:var(--txt-dim);margin-bottom:1.5rem;}
.hero-desc{font-size:1.1rem;color:var(--txt-dim);max-width:600px;margin:0 auto 2.5rem;line-height:1.7;}
.hero-actions{display:flex;gap:0.9rem;justify-content:center;flex-wrap:wrap;margin-bottom:3.5rem;}
.hero-stats{display:flex;gap:3rem;justify-content:center;flex-wrap:wrap;}
.hstat{display:flex;flex-direction:column;align-items:center;}
.hnum{font-family:'Manrope',sans-serif;font-size:2.6rem;font-weight:800;line-height:1;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;display:inline;}
.hsuf{font-size:1.4rem;font-weight:800;color:var(--accent3);}
.hstat small{color:var(--txt-mute);font-size:0.85rem;margin-top:0.4rem;font-weight:500;}
.scroll-cue{position:absolute;bottom:2rem;left:50%;transform:translateX(-50%);
  width:26px;height:42px;border:2px solid var(--glass-brd2);border-radius:50px;}
.scroll-cue span{display:block;width:4px;height:8px;background:var(--accent3);border-radius:2px;
  margin:7px auto;animation:scroll 1.8s infinite;}
@keyframes scroll{0%{opacity:0;transform:translateY(0);}40%{opacity:1;}80%{opacity:0;transform:translateY(14px);}100%{opacity:0;}}

/* ===== BRANDS MARQUEE ===== */
.brands{padding:1.5rem 0;border-top:1px solid var(--glass-brd);border-bottom:1px solid var(--glass-brd);
  overflow:hidden;background:rgba(255,255,255,0.02);}
.brands-track{display:flex;align-items:center;gap:2.5rem;white-space:nowrap;
  animation:marquee 55s linear infinite;width:max-content;}
.brands-track span{font-family:'Manrope',sans-serif;font-weight:700;font-size:1.1rem;
  color:var(--txt-dim);letter-spacing:0.08em;}
.brands-track i{color:var(--accent);font-style:normal;}
@keyframes marquee{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}

/* ===== SECTIONS ===== */
.section{max-width:1180px;margin:0 auto;padding:6rem 1.5rem;}
.sec-head{text-align:center;margin-bottom:3.5rem;}
.sec-tag{display:inline-block;padding:0.4rem 1.1rem;border-radius:50px;
  font-size:0.78rem;font-weight:700;letter-spacing:0.15em;text-transform:uppercase;
  color:var(--accent3);margin-bottom:1rem;}
.sec-title{font-family:'Manrope',sans-serif;font-weight:800;
  font-size:clamp(2rem,5vw,3.4rem);letter-spacing:-0.02em;line-height:1.1;}
.sec-title.left{text-align:left;}
.sec-sub{color:var(--txt-dim);font-size:1.05rem;margin-top:0.8rem;}

/* ===== VIDEO GRID ===== */
.video-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.25rem;}
.vcard{position:relative;border-radius:var(--radius);overflow:hidden;cursor:pointer;
  aspect-ratio:9/16;background:var(--bg2);border:1px solid var(--glass-brd);
  transition:all 0.5s var(--ease);}
.vcard:hover{transform:translateY(-8px) scale(1.02);box-shadow:var(--shadow-lg);border-color:var(--glass-brd2);}
.vcard video,.vcard img{width:100%;height:100%;object-fit:cover;}
.vcard-overlay{position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,0.7) 0%,transparent 50%);
  display:flex;align-items:flex-end;padding:1rem;opacity:0;transition:opacity 0.4s ease;}
.vcard:hover .vcard-overlay{opacity:1;}
.vcard-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0.8);
  width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,0.15);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,0.3);
  color:#fff;font-size:1.1rem;opacity:0;transition:all 0.4s var(--ease);}
.vcard:hover .vcard-play{opacity:1;transform:translate(-50%,-50%) scale(1);}

/* AI GENERATION — albom (landscape) format */
.ai-grid{grid-template-columns:repeat(3,1fr);}
.ai-grid .vcard{aspect-ratio:16/9;}
.vcard-tag{position:absolute;top:0.8rem;left:0.8rem;z-index:2;
  padding:0.25rem 0.7rem;border-radius:50px;font-size:0.7rem;font-weight:700;
  background:rgba(0,0,0,0.5);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,0.15);
  color:#fff;letter-spacing:0.05em;}
.vcard-num{position:absolute;bottom:0.9rem;left:1rem;z-index:2;font-weight:700;font-size:0.95rem;}

/* ===== MASONRY (graphics) ===== */
.masonry{columns:4;column-gap:1.25rem;}
.gcard{break-inside:avoid;margin-bottom:1.25rem;border-radius:var(--radius);overflow:hidden;
  cursor:pointer;border:1px solid var(--glass-brd);background:var(--bg2);
  transition:all 0.5s var(--ease);position:relative;}
.gcard:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:var(--glass-brd2);}
.gcard img{width:100%;height:auto;transition:transform 0.6s var(--ease);}
.gcard:hover img{transform:scale(1.05);}
.gcard-badge{position:absolute;top:0.7rem;left:0.7rem;z-index:2;
  padding:0.2rem 0.65rem;border-radius:50px;font-size:0.68rem;font-weight:700;
  background:rgba(0,0,0,0.5);backdrop-filter:blur(10px);color:#fff;letter-spacing:0.05em;}

/* ===== ABOUT ===== */
.about-wrap{display:grid;grid-template-columns:340px 1fr;gap:2.5rem;align-items:start;margin-bottom:5rem;}
.about-left{padding:2.5rem 2rem;text-align:center;position:sticky;top:6rem;}
.about-avatar{width:130px;height:130px;margin:0 auto 1.3rem;border-radius:50%;
  position:relative;overflow:hidden;border:2px solid var(--glass-brd2);
  background:var(--grad-soft);display:flex;align-items:center;justify-content:center;}
.about-avatar img{width:100%;height:100%;object-fit:cover;}
.avatar-fallback{display:none;font-family:'Manrope',sans-serif;font-size:2.6rem;font-weight:800;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.about-avatar.no-img .avatar-fallback{display:block;}
.about-left h3{font-family:'Manrope',sans-serif;font-size:1.4rem;font-weight:800;}
.about-pos{color:var(--accent3);font-size:0.9rem;font-weight:600;margin:0.3rem 0 1.2rem;}
.about-langs{display:flex;flex-direction:column;gap:0.5rem;margin-bottom:1.5rem;}
.chip{padding:0.4rem 0.9rem;border-radius:50px;background:rgba(255,255,255,0.05);
  border:1px solid var(--glass-brd);font-size:0.82rem;color:var(--txt-dim);}
.about-socials{display:flex;gap:0.6rem;justify-content:center;}
.soc{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:1rem;color:var(--txt);transition:all 0.4s var(--ease);}
.soc:hover{transform:translateY(-3px);background:var(--grad);border-color:transparent;color:#fff;}
.about-right .sec-tag{margin-bottom:1rem;}
.about-text{color:var(--txt-dim);line-height:1.8;margin-bottom:1.2rem;font-size:1rem;}
.exp-block{display:flex;flex-direction:column;gap:1.25rem;margin-top:2rem;}
.exp-item{padding:1.8rem;}
.exp-top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:0.5rem;margin-bottom:0.6rem;}
.exp-top h4{font-family:'Manrope',sans-serif;font-size:1.15rem;font-weight:700;}
.exp-date{font-size:0.82rem;color:var(--accent3);font-weight:600;
  padding:0.25rem 0.8rem;border-radius:50px;background:rgba(100,210,255,0.1);}
.exp-clients{color:var(--txt-dim);font-size:0.9rem;margin-bottom:1rem;font-weight:500;}
.exp-list{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:0.5rem 1.5rem;}
.exp-list li{position:relative;padding-left:1.4rem;color:var(--txt-dim);font-size:0.9rem;line-height:1.5;}
.exp-list li::before{content:'';position:absolute;left:0;top:0.5rem;width:7px;height:7px;
  border-radius:50%;background:var(--grad);}

/* ===== SKILLS ===== */
.skills-wrap{text-align:center;}
.skills-head{font-family:'Manrope',sans-serif;font-size:1.6rem;font-weight:800;margin-bottom:2rem;}
.skills-grid{display:flex;flex-wrap:wrap;gap:0.7rem;justify-content:center;}
.skill-pill{padding:0.6rem 1.2rem;border-radius:50px;font-size:0.9rem;font-weight:600;
  background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid var(--glass-brd);color:var(--txt-dim);transition:all 0.4s var(--ease);cursor:default;}
.skill-pill:hover{color:var(--txt);border-color:var(--accent);transform:translateY(-3px);
  box-shadow:0 8px 20px rgba(41,151,255,0.2);}
.skill-pill i{margin-right:0.4rem;color:var(--accent3);}

/* ===== CONTACT ===== */
.contact-card{max-width:760px;margin:0 auto;padding:3.5rem 2.5rem;text-align:center;}
.contact-sub{color:var(--txt-dim);font-size:1.05rem;margin:0.8rem 0 2rem;}
.contact-btns{display:flex;gap:0.9rem;justify-content:center;flex-wrap:wrap;}

/* ===== FOOTER ===== */
.footer{text-align:center;padding:3rem 1.5rem;border-top:1px solid var(--glass-brd);}
.foot-brand{font-family:'Manrope',sans-serif;font-weight:800;font-size:1.4rem;margin-bottom:0.6rem;}
.foot-brand span{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.footer p{color:var(--txt-mute);font-size:0.88rem;}

/* ===== LIGHTBOX ===== */
.lightbox{position:fixed;inset:0;z-index:3000;display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;transition:all 0.4s var(--ease);padding:2rem;}
.lightbox.open{opacity:1;visibility:visible;}
.lb-overlay{position:absolute;inset:0;background:rgba(3,3,5,0.92);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);}
.lb-content{position:relative;z-index:2;max-width:90vw;max-height:88vh;
  display:flex;align-items:center;justify-content:center;
  transform:scale(0.92);transition:transform 0.4s var(--ease);}
.lightbox.open .lb-content{transform:scale(1);}
.lb-content video,.lb-content img{max-width:90vw;max-height:88vh;
  border-radius:18px;box-shadow:var(--shadow-lg);object-fit:contain;}
.lb-content video{width:auto;height:88vh;background:#000;}
.lb-close{position:absolute;top:1.5rem;right:1.5rem;z-index:5;
  width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,0.1);
  backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,0.2);color:#fff;
  font-size:1.2rem;cursor:pointer;transition:all 0.3s var(--ease);}
.lb-close:hover{background:rgba(255,255,255,0.2);transform:rotate(90deg);}
.lb-nav{position:absolute;z-index:5;top:50%;transform:translateY(-50%);
  width:52px;height:52px;border-radius:50%;background:rgba(255,255,255,0.1);
  backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,0.2);color:#fff;
  font-size:1.1rem;cursor:pointer;transition:all 0.3s var(--ease);}
.lb-nav:hover{background:rgba(255,255,255,0.2);}
.lb-prev{left:1.5rem;}.lb-next{right:1.5rem;}

/* ===== REVEAL ===== */
.reveal{opacity:0;transform:translateY(40px);transition:opacity 0.8s var(--ease),transform 0.8s var(--ease);}
.reveal.in{opacity:1;transform:translateY(0);}

/* ===== RESPONSIVE ===== */
@media(max-width:1024px){
  .video-grid{grid-template-columns:repeat(3,1fr);}
  .ai-grid{grid-template-columns:repeat(2,1fr);}
  .masonry{columns:3;}
  .about-wrap{grid-template-columns:1fr;}
  .about-left{position:static;max-width:340px;margin:0 auto;}
  .sec-title.left{text-align:center;}
  .about-right .sec-tag{display:block;text-align:center;}
}
@media(max-width:760px){
  .nav-menu,.nav-cta{display:none;}
  .nav-burger{display:flex;}
  .nav{padding:0.7rem 1rem 0.7rem 1.3rem;}
  .video-grid{grid-template-columns:repeat(2,1fr);}
  .ai-grid{grid-template-columns:1fr;}
  .masonry{columns:2;}
  .hero-stats{gap:1.8rem;}
  .exp-list{grid-template-columns:1fr;}
  .lb-content video{height:auto;max-height:80vh;}
  .lb-nav{width:42px;height:42px;}
  .lb-prev{left:0.5rem;}.lb-next{right:0.5rem;}
}
@media(max-width:460px){
  .video-grid{grid-template-columns:1fr 1fr;gap:0.8rem;}
  .masonry{columns:1;}
  .section{padding:4rem 1.2rem;}
  .contact-btns{flex-direction:column;}
  .contact-btns .glass-btn{width:100%;justify-content:center;}
}

/* burger active */
.nav-burger.active span:first-child{transform:translateY(3.5px) rotate(45deg);}
.nav-burger.active span:last-child{transform:translateY(-3.5px) rotate(-45deg);}
