/* usmanabbas.dev — 3D experience layer (ud3d) v1
   Loaded on every page. Safe to remove: delete the <link> and <script> tags. */

/* ---------- Scroll progress bar ---------- */
.ud3d-progress{position:fixed;top:0;left:0;height:3px;width:100%;z-index:1000;pointer-events:none;
  background:linear-gradient(90deg,#6C63FF,#00D9FF,#EA4B71);transform-origin:0 50%;transform:scaleX(0);}

/* ---------- Hero 3D globe canvas ---------- */
.ud3d-host{isolation:isolate;}
.ud3d-globe{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;display:block;}
.ud3d-globe.front{z-index:2;}
.ud3d-globe.behind{z-index:-1;opacity:.4;}
@media (max-width:900px){.ud3d-globe.front{opacity:.85;}.ud3d-globe.behind{opacity:.35;}}

/* ---------- 3D photo card (home hero) ---------- */
.photo-card.ud3d-photo{transform-style:preserve-3d;transition:transform .5s cubic-bezier(.2,.7,.2,1);will-change:transform;}
.photo-card.ud3d-photo .photo-frame{transform:translateZ(20px);}
.photo-card.ud3d-photo .fb-top{translate:0 0 90px;}
.photo-card.ud3d-photo .fb-bottom{translate:0 0 120px;}
.photo-card.ud3d-photo .photo-glow{transform:translateZ(-60px);}

/* ---------- Tilt cards + glare ---------- */
.ud3d-tilt{transform-style:preserve-3d;will-change:transform;}
.ud3d-tilt.ud3d-active{transition:transform .08s linear,border-color .2s,box-shadow .3s!important;
  box-shadow:0 30px 60px -20px rgba(0,0,0,.65),0 0 0 1px rgba(108,99,255,.35),0 18px 50px -10px rgba(108,99,255,.35)!important;border-color:rgba(108,99,255,.7)!important;}
.ud3d-tilt.ud3d-leaving{transition:transform .6s cubic-bezier(.2,.7,.2,1),box-shadow .6s!important;}
.ud3d-glare{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:5;opacity:0;transition:opacity .3s;
  background:radial-gradient(circle at var(--gx,50%) var(--gy,50%),rgba(255,255,255,.16),rgba(255,255,255,0) 55%);mix-blend-mode:screen;}
.ud3d-tilt.ud3d-active .ud3d-glare{opacity:1;}
.ud3d-tilt .skill-icon,.ud3d-tilt .tool-icon,.ud3d-tilt .card-tag,.ud3d-tilt .selected-work-tag,.ud3d-tilt .testimonial-stars{transform:translateZ(40px);}
.ud3d-tilt .skill-title,.ud3d-tilt .card-title,.ud3d-tilt .selected-work-title{transform:translateZ(28px);}

/* ---------- 3D scroll reveal ---------- */
.ud3d-rv{opacity:0;transform:perspective(1100px) rotateX(24deg) translateY(60px) scale(.96);transform-origin:50% 100%;}
.ud3d-rv.ud3d-in{opacity:1;transform:perspective(1100px) rotateX(0) translateY(0) scale(1);
  transition:opacity .8s ease,transform .95s cubic-bezier(.16,1,.3,1);transition-delay:var(--d,0s);}

/* ---------- 3D depth on headings ---------- */
.section-title,.hero-title,.cta-section h2{filter:drop-shadow(0 2px 0 #2a2470) drop-shadow(0 2px 0 #1e1a55) drop-shadow(0 10px 22px rgba(108,99,255,.28));}

/* ---------- 3D buttons ---------- */
.btn-primary,.nav-cta{position:relative;box-shadow:0 5px 0 #3f37b8,0 12px 28px rgba(108,99,255,.45)!important;transition:transform .15s,box-shadow .15s!important;}
.btn-primary:hover,.nav-cta:hover{transform:translateY(-2px)!important;box-shadow:0 7px 0 #3f37b8,0 18px 36px rgba(108,99,255,.55)!important;}
.btn-primary:active,.nav-cta:active{transform:translateY(4px)!important;box-shadow:0 1px 0 #3f37b8,0 6px 14px rgba(108,99,255,.4)!important;}
.btn-secondary{transition:transform .15s,box-shadow .15s!important;box-shadow:0 5px 0 rgba(30,30,64,.9)!important;}
.btn-secondary:hover{transform:translateY(-2px)!important;}
.btn-secondary:active{transform:translateY(4px)!important;box-shadow:0 1px 0 rgba(30,30,64,.9)!important;}

/* ---------- Floating wireframe 3D cubes (CTA + alt sections) ---------- */
.ud3d-cubes{position:absolute;inset:0;pointer-events:none;z-index:0;perspective:900px;overflow:hidden;}
.ud3d-cube{position:absolute;transform-style:preserve-3d;animation:ud3dSpin var(--t,22s) linear infinite;}
.ud3d-cube i{position:absolute;inset:0;border:1.5px solid var(--c,rgba(108,99,255,.55));background:rgba(108,99,255,.04);box-shadow:inset 0 0 20px rgba(108,99,255,.15);}
.ud3d-cube i:nth-child(1){transform:translateZ(var(--h))}
.ud3d-cube i:nth-child(2){transform:rotateY(180deg) translateZ(var(--h))}
.ud3d-cube i:nth-child(3){transform:rotateY(90deg) translateZ(var(--h))}
.ud3d-cube i:nth-child(4){transform:rotateY(-90deg) translateZ(var(--h))}
.ud3d-cube i:nth-child(5){transform:rotateX(90deg) translateZ(var(--h))}
.ud3d-cube i:nth-child(6){transform:rotateX(-90deg) translateZ(var(--h))}
@keyframes ud3dSpin{from{transform:rotateX(-20deg) rotateY(0) rotateZ(10deg)}to{transform:rotateX(340deg) rotateY(360deg) rotateZ(10deg)}}
.cta-section>*:not(.ud3d-cubes){position:relative;z-index:1;}

/* ---------- Accessibility: honour reduced-motion ---------- */
@media (prefers-reduced-motion:reduce){
  .ud3d-rv{opacity:1!important;transform:none!important;}
  .ud3d-cube{animation:none!important;}
  .photo-card.ud3d-photo{transform:none!important;}
}

/* ---------- AI Workforce robot scene ---------- */
.ud3d-bots-section{position:relative;padding:80px 5% 40px;overflow:hidden;}
.ud3d-bots-head{max-width:1200px;margin:0 auto 8px;text-align:center;display:flex;flex-direction:column;align-items:center;}
.ud3d-bots-head .section-desc{margin:0 auto;}
.ud3d-bots{position:relative;max-width:1280px;margin:0 auto;height:clamp(360px,44vw,600px);border-radius:24px;
  background:radial-gradient(ellipse at 50% 60%,rgba(108,99,255,.14),rgba(6,6,16,0) 65%);}
.ud3d-bots canvas{display:block;width:100%!important;height:100%!important;border-radius:24px;}
.ud3d-bots-note{max-width:1200px;margin:6px auto 0;text-align:center;font-size:.78rem;color:#8888aa;}
.ud3d-bots-section.compact{padding:56px 5% 24px;border-top:1px solid #1e1e40;}
.ud3d-bots-section.compact .ud3d-bots{height:clamp(240px,30vw,400px);}
.ud3d-bots-kicker{display:inline-flex;align-items:center;gap:8px;font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#00D9FF;margin-bottom:10px;}
.ud3d-bots-kicker:before{content:"";width:8px;height:8px;border-radius:50%;background:#22E39A;box-shadow:0 0 10px #22E39A;}
.ud3d-bots-title{font-family:'Space Grotesk',Inter,sans-serif;font-size:clamp(1.3rem,2.4vw,1.9rem);font-weight:800;color:#fff;margin:0 0 8px;text-wrap:balance;}
.ud3d-bots-sub{color:#8888aa;font-size:.98rem;line-height:1.6;margin:0 auto;max-width:620px;}
.ud3d-bots-sub a{color:#8f88ff;font-weight:700;text-decoration:none;}
.ud3d-bots-sub a:hover{color:#fff;}
@media (max-width:700px){
  .ud3d-bots-section{padding:56px 16px 28px;}
  .ud3d-bots{height:min(92vw,360px);border-radius:18px;}
  .ud3d-bots-section.compact{padding:44px 16px 16px;}
  .ud3d-bots-section.compact .ud3d-bots{height:min(84vw,320px);}
}

/* ---------- Quick facts + SEO copy blocks ---------- */
.ud-facts{margin:28px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
.ud-facts>div{background:var(--card,#13132b);border:1px solid var(--border,#1e1e40);border-radius:14px;padding:16px 18px;}
.ud-facts dt{font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#8f88ff;margin-bottom:6px;}
.ud-facts dd{margin:0;color:#dcdcf0;font-size:.95rem;line-height:1.6;}
.ud-facts a{color:#00D9FF;text-decoration:none;font-weight:600;}
.ud-facts a:hover{text-decoration:underline;}
.ud-seo-copy{padding:60px 5% 20px;}
.ud-seo-copy p{color:var(--muted,#8888aa);font-size:1rem;line-height:1.8;margin:14px 0 0;}
.ud-seo-copy a{color:#8f88ff;font-weight:700;}
@media (max-width:700px){.ud-facts{grid-template-columns:1fr;}}

/* ---------- Mobile: stop sideways scrolling caused by the off-screen menu panel ---------- */
html,body{max-width:100%;overflow-x:clip;}
.ud-facts>div:last-child:nth-child(odd){grid-column:1/-1;}

/* ---------- Ranking pack: article tables, TL;DR, service boxes, case study pages ---------- */
.ud-tldr{background:linear-gradient(135deg,rgba(108,99,255,.14),rgba(0,217,255,.06));border:1px solid rgba(108,99,255,.45);border-radius:16px;padding:22px 24px;margin:8px 0 30px;}
.ud-tldr-title{font-size:.75rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#00D9FF;margin-bottom:8px;}
.ud-tldr p{color:#e6e6f5!important;}
.ud-tldr ul{margin-bottom:0!important;}
.ud-table-wrap{overflow-x:auto;margin:18px 0 24px;border:1px solid var(--border,#1e1e40);border-radius:14px;}
.ud-table{width:100%;border-collapse:collapse;min-width:560px;font-size:.92rem;}
.ud-table th{background:#1a1a3a;color:#fff;text-align:left;padding:12px 14px;font-weight:700;}
.ud-table td{padding:12px 14px;border-top:1px solid var(--border,#1e1e40);color:#ccccdd;vertical-align:top;line-height:1.55;}
.ud-table tr:nth-child(even) td{background:rgba(255,255,255,.02);}
.ud-table td:first-child{color:#fff;font-weight:600;}
.ud-svc-box{margin:34px 0;padding:22px 24px;border-radius:16px;border:1px solid rgba(0,217,255,.35);background:rgba(0,217,255,.05);}
.ud-svc-kicker{font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#00D9FF;margin-bottom:6px;}
.ud-svc-box p{margin-bottom:12px!important;}
.ud-svc-link{display:inline-block;font-weight:700;color:#fff!important;background:var(--accent,#6C63FF);padding:10px 18px;border-radius:10px;box-shadow:0 4px 0 #3f37b8;}
.ud-svc-link:hover{text-decoration:none!important;transform:translateY(-1px);}
.ud-svc-related{padding:70px 5% 30px;}
.ud-rel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-top:24px;}
.ud-rel-grid a{display:block;background:var(--card,#13132b);border:1px solid var(--border,#1e1e40);border-radius:14px;padding:16px 18px;color:#fff;text-decoration:none;font-weight:600;line-height:1.45;transition:border-color .2s,transform .2s;}
.ud-rel-grid a:hover{border-color:var(--accent,#6C63FF);transform:translateY(-2px);}
.ud-rel-grid a span{display:block;font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#8f88ff;margin-bottom:6px;}
.ud-cs-extra{margin-top:40px;}
.ud-cs-stack,.ud-cs-services,.ud-cs-others{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;}
.ud-cs-stack span{padding:8px 14px;border:1px solid var(--border,#1e1e40);border-radius:999px;background:var(--card,#13132b);color:#dcdcf0;font-size:.88rem;}
.ud-cs-services a,.ud-cs-others a{padding:10px 16px;border-radius:12px;background:var(--card,#13132b);border:1px solid var(--border,#1e1e40);color:#8f88ff;font-weight:700;text-decoration:none;font-size:.92rem;}
.ud-cs-services a:hover,.ud-cs-others a:hover{border-color:var(--accent,#6C63FF);color:#fff;}
.ud-cs-cta{margin-top:44px;padding:32px;border-radius:20px;text-align:center;background:linear-gradient(135deg,rgba(108,99,255,.18),rgba(0,217,255,.08));border:1px solid rgba(108,99,255,.4);}
.ud-cs-cta h2{font-family:'Space Grotesk',sans-serif;font-size:1.6rem;margin-bottom:10px;}
.ud-cs-cta p{color:var(--muted,#8888aa);margin-bottom:22px;}
.ud-cs-cta .btn-primary,.ud-cs-cta .btn-secondary{display:inline-block;margin:6px;}

/* ---------- Accessibility: links inside text are underlined; stronger contrast ---------- */
.article-body p a,.article-body li a,.ud-tldr a,.ud-svc-box p a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;}
.tip-box strong{color:#9d97ff!important;}
.term-line.ok{color:#22E39A;}

/* ---------- Click-to-play YouTube video (loads nothing from YouTube until clicked) ---------- */
.ud-video-section{padding:90px 5% 40px;}
.ud-video-section.about{padding-top:30px;}
.ud-video{position:relative;aspect-ratio:16/9;border-radius:22px;overflow:hidden;border:1px solid rgba(108,99,255,.45);box-shadow:0 30px 80px rgba(0,0,0,.55),0 0 60px rgba(108,99,255,.25);background:#0d0d1f;}
.ud-video-btn{all:unset;position:absolute;inset:0;cursor:pointer;display:block;}
.ud-video-btn img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s,filter .3s;}
.ud-video-btn:hover img{transform:scale(1.03);filter:brightness(1.08);}
.ud-video-btn:focus-visible{outline:3px solid #00D9FF;outline-offset:-3px;}
.ud-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);filter:drop-shadow(0 10px 25px rgba(0,0,0,.6));transition:transform .2s;}
.ud-video-btn:hover .ud-play{transform:translate(-50%,-50%) scale(1.1);}
.ud-video-len{position:absolute;right:14px;bottom:14px;background:rgba(0,0,0,.75);color:#fff;font-size:.8rem;font-weight:700;padding:4px 9px;border-radius:6px;}
.ud-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.ud-transcript{margin:18px auto 0;max-width:760px;text-align:left;color:var(--muted,#8888aa);font-size:.92rem;}
.ud-transcript summary{cursor:pointer;color:#8f88ff;font-weight:700;text-align:center;list-style:none;}
.ud-transcript summary::-webkit-details-marker{display:none;}
.ud-transcript ol{margin:12px 0 0 20px;line-height:1.7;}
@media (max-width:700px){.ud-video-section{padding:60px 16px 24px;}.ud-video{border-radius:14px;}.ud-play svg{width:64px;height:46px;}}
