:root { scroll-behavior: smooth; }
.material-symbols-outlined { font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24; }

/* Glass */
.glass-card { background: rgba(255,255,255,.05); backdrop-filter: blur(12px); border: 1px solid rgba(255,255,255,.1); transition: border-color .3s, background .3s; }
.glass-card:hover { border-color: rgba(255,255,255,.2); background: rgba(255,255,255,.08); }

/* Gradient text */
.gradient-text { background: linear-gradient(to right,#c3c0ff,#4cd7f6); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }

/* Mesh + ambient effects */
.mesh-gradient-bg { background-color:#0b1326; background-image:radial-gradient(at 0% 0%, rgba(79,70,229,.15) 0px, transparent 50%), radial-gradient(at 100% 100%, rgba(147,51,234,.15) 0px, transparent 50%); }
.mesh-bg { background-image:radial-gradient(at 0% 0%, rgba(79,70,229,.15) 0px, transparent 50%), radial-gradient(at 100% 0%, rgba(3,181,211,.1) 0px, transparent 50%), radial-gradient(at 100% 100%, rgba(111,61,217,.15) 0px, transparent 50%), radial-gradient(at 0% 100%, rgba(79,70,229,.1) 0px, transparent 50%); }
.ai-pulse { animation:pulse-glow 4s ease-in-out infinite; }
.ai-dot { animation:ai-pulse-dot 4s ease-in-out infinite; }
.hero-orb { position:absolute; border-radius:50%; filter:blur(80px); pointer-events:none; animation:orb-drift 12s ease-in-out infinite alternate; }
.parallax-orb { position:fixed; border-radius:50%; filter:blur(80px); opacity:.12; pointer-events:none; z-index:0; }
.case-number { font-size:120px; font-weight:900; line-height:1; color:rgba(195,192,255,.06); position:absolute; top:-20px; right:-10px; font-family:'Space Grotesk',sans-serif; user-select:none; }
.timeline-line { position:absolute; left:2rem; top:0; bottom:0; width:1px; background:linear-gradient(to bottom, #4f46e5, #4cd7f6, transparent); }
.process-line { position:absolute; top:2rem; left:calc(50% + 2rem); width:calc(100% - 4rem); height:1px; background:linear-gradient(to right, rgba(195,192,255,.3), rgba(76,215,246,.3)); }
.stat-num { font-family:'Space Grotesk',sans-serif; }
.faq-item { cursor:pointer; }
.faq-body, .accordion-body { max-height:0; overflow:hidden; transition:max-height .4s cubic-bezier(.16,1,.3,1); }
.team-card:hover .team-overlay { opacity:1; }
.team-overlay { opacity:0; transition:opacity .4s; }
.hero-bg { background-size:110%; transition:background-size 10s ease-out; background-position:center; background-repeat:no-repeat; }
.hero-bg:hover { background-size:100%; }
.typewriter::after { content:'|'; animation:blink 1s step-end infinite; color:#4cd7f6; }

@keyframes pulse-glow { 0%,100% { opacity:.3; transform:scale(1); } 50% { opacity:.7; transform:scale(1.15); } }
@keyframes ai-pulse-dot { 0%,100% { opacity:.3; transform:scale(1); } 50% { opacity:.7; transform:scale(1.15); } }
@keyframes orb-drift { 0% { transform:translate(0,0) scale(1); } 100% { transform:translate(40px,30px) scale(1.1); } }
@keyframes blink { 50% { opacity:0; } }

/* Particles canvas */
#particles-canvas { position:fixed; top:0; left:0; width:100%; height:100%; pointer-events:none; z-index:0; opacity:.35; }

/* Cursor glow */
.cursor-glow { position:fixed; pointer-events:none; z-index:9999; width:300px; height:300px; border-radius:50%; background:radial-gradient(circle,rgba(79,70,229,.1) 0%,transparent 70%); transform:translate(-50%,-50%); transition:left .04s,top .04s; }

/* Scroll reveals */
.reveal,.reveal-left,.reveal-right,.reveal-scale { opacity:0; transition: opacity .8s cubic-bezier(.16,1,.3,1), transform .8s cubic-bezier(.16,1,.3,1); }
.reveal         { transform: translateY(48px); }
.reveal-left    { transform: translateX(-48px); }
.reveal-right   { transform: translateX(48px); }
.reveal-scale   { transform: scale(.92); }
.reveal.visible,.reveal-left.visible,.reveal-right.visible,.reveal-scale.visible { opacity:1; transform:none; }

/* Stagger */
.stagger > * { opacity:0; transform:translateY(28px); transition: opacity .6s cubic-bezier(.16,1,.3,1), transform .6s cubic-bezier(.16,1,.3,1); }
.stagger.visible > *:nth-child(1) { opacity:1; transform:none; transition-delay:.05s; }
.stagger.visible > *:nth-child(2) { opacity:1; transform:none; transition-delay:.15s; }
.stagger.visible > *:nth-child(3) { opacity:1; transform:none; transition-delay:.25s; }
.stagger.visible > *:nth-child(4) { opacity:1; transform:none; transition-delay:.35s; }
.stagger.visible > *:nth-child(5) { opacity:1; transform:none; transition-delay:.45s; }
.stagger.visible > *:nth-child(6) { opacity:1; transform:none; transition-delay:.55s; }

/* Scroll progress */
#scroll-progress { position:fixed; top:0; left:0; height:2px; z-index:100; background:linear-gradient(to right,#4f46e5,#4cd7f6); transition:width .1s; }

/* Back to top */
#back-top { position:fixed; bottom:2rem; right:2rem; z-index:50; width:2.5rem; height:2.5rem; border-radius:50%; background:rgba(79,70,229,.8); color:#fff; display:flex; align-items:center; justify-content:center; opacity:0; pointer-events:none; transition:opacity .3s,transform .3s; cursor:pointer; }
#back-top.visible { opacity:1; pointer-events:all; }
#back-top:hover { transform:translateY(-3px); }

/* Hero img parallax */
.hero-img { transition: transform 8s ease-out; }

/* Portfolio hover */
.portfolio-card .portfolio-img { transition: transform 1s cubic-bezier(.16,1,.3,1), filter .5s; }
.portfolio-card:hover .portfolio-img { transform:scale(1.06); filter:grayscale(0) !important; }

/* Form */
.form-input { background:transparent; border:0; border-bottom:1px solid rgba(255,255,255,.2); color:#dae2fd; width:100%; padding:.5rem 0; outline:none; transition:border-color .3s; }
.form-input:focus { border-color:#c3c0ff; }
.form-group { position:relative; padding-top:1.25rem; }
.form-label { position:absolute; top:1.25rem; left:0; color:#c7c4d8; font-size:.875rem; transition:transform .3s,font-size .3s,color .3s; pointer-events:none; }
.form-input:focus ~ .form-label,
.form-input:not(:placeholder-shown) ~ .form-label { transform:translateY(-1.4rem); font-size:.75rem; color:#c3c0ff; }

/* Section divider */
.section-divider { height:1px; background:linear-gradient(to right,transparent,rgba(255,255,255,.07),transparent); }

/* Mobile menu */
#mobile-menu { display:none; }
#mobile-menu.open { display:block; }

/* Page transition overlay */
.page-transition { position:fixed; inset:0; background:#0b1326; z-index:200; pointer-events:none; opacity:0; transition:opacity .35s; }
.page-transition.out { opacity:1; }
