/* Shared UI components */

.btn-primary{display:inline-block;background:var(--violet);color:#fff;font-weight:500;font-size:0.95rem;padding:0.9rem 2.1rem;border-radius:100px;text-decoration:none;transition:background .2s,transform .15s;border:none;cursor:pointer;}
.btn-primary:hover{background:var(--spark);transform:translateY(-2px);}
.btn-outline-dark{display:inline-block;background:transparent;color:#fff;font-weight:500;font-size:0.95rem;padding:0.9rem 2.1rem;border-radius:100px;text-decoration:none;border:1.5px solid rgba(255,255,255,0.3);transition:all .2s;}
.btn-outline-dark:hover{border-color:#fff;background:rgba(255,255,255,0.08);transform:translateY(-2px);}
.btn-outline{display:inline-block;background:transparent;color:var(--grape);font-weight:500;font-size:0.95rem;padding:0.85rem 2rem;border-radius:100px;text-decoration:none;border:1.5px solid var(--grape);transition:all .2s;}
.btn-outline:hover{background:var(--violet);color:#fff;transform:translateY(-2px);}
.btn-light{display:inline-block;background:var(--spark);color:#fff;font-weight:500;font-size:0.95rem;padding:0.85rem 2rem;border-radius:100px;text-decoration:none;white-space:nowrap;transition:opacity .2s,transform .15s;}
.btn-light:hover{opacity:.88;transform:translateY(-2px);}

.marquee-strip{background:var(--ink-2);border-top:1px solid rgba(108,63,232,0.4);border-bottom:1px solid rgba(108,63,232,0.4);overflow:hidden;padding:0.9rem 0;position:relative;z-index:2;}
.marquee-track{display:flex;width:max-content;animation:scrollLeft 28s linear infinite;}
.marquee-track span{font-family:'Space Mono',monospace;font-size:0.78rem;letter-spacing:0.08em;text-transform:uppercase;color:#8B85AD;padding:0 2rem;white-space:nowrap;display:flex;align-items:center;gap:2rem;}
.marquee-track span b{color:var(--spark);font-weight:700;}

.divider{height:1.5px;background:linear-gradient(90deg,transparent,var(--mist) 15%,var(--mist) 85%,transparent);margin:0 6vw;}

.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease;}
.reveal.in-view{opacity:1;transform:translateY(0);}

.section-label{font-family:'Space Mono',monospace;font-size:0.72rem;font-weight:400;letter-spacing:0.14em;text-transform:uppercase;color:var(--violet);padding:3.8rem 6vw 1rem;}
.cat-title{font-family:'Bricolage Grotesque',sans-serif;font-size:clamp(1.7rem,3.4vw,2.5rem);font-weight:800;color:var(--grape);padding:0 6vw 0.5rem;letter-spacing:-0.02em;}
.cat-desc{font-size:1rem;color:var(--mid);padding:0 6vw 2.5rem;max-width:640px;}

.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:1.5rem;padding:3.5rem 6vw;}
.stat-num{font-family:'Bricolage Grotesque',sans-serif;font-size:clamp(1.8rem,3.5vw,2.6rem);font-weight:800;color:var(--violet);letter-spacing:-0.02em;}
.stat-label{font-family:'Space Mono',monospace;font-size:0.72rem;color:var(--mid);margin-top:0.4rem;text-transform:uppercase;letter-spacing:0.04em;}

.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;padding:0 6vw 4rem;}
.expertise-card{background:var(--paper-gradient);border:1.5px solid var(--mist);border-radius:16px;padding:1.9rem;transition:border-color .25s,transform .25s,box-shadow .25s;}
.expertise-card:hover{border-color:#c4b5fd;transform:translateY(-5px);box-shadow:0 16px 36px rgba(108,63,232,0.12);}
.expertise-card h3{font-family:'Bricolage Grotesque',sans-serif;font-size:1.05rem;font-weight:700;color:var(--grape);margin-bottom:0.6rem;}
.expertise-card p{font-size:0.9rem;color:var(--mid);}

.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem;padding:0 6vw 4rem;}
.card{background:var(--paper-gradient);border:1.5px solid var(--mist);border-radius:16px;padding:1.85rem;transition:border-color .25s,transform .25s,box-shadow .25s;position:relative;overflow:hidden;}
.card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--violet),var(--spark));opacity:0;transition:opacity .25s;}
.card:hover{border-color:#c4b5fd;transform:translateY(-5px);box-shadow:0 16px 36px rgba(108,63,232,0.12);}
.card:hover::before{opacity:1;}
.card-icon{font-size:1.75rem;margin-bottom:1rem;display:block;}
.card h3{font-family:'Bricolage Grotesque',sans-serif;font-size:1.05rem;font-weight:700;color:var(--grape);margin-bottom:0.5rem;}
.card p{font-size:0.9rem;color:var(--mid);line-height:1.6;}
.card-tag{display:inline-block;margin-top:1rem;font-family:'Space Mono',monospace;font-size:0.68rem;font-weight:400;letter-spacing:0.06em;text-transform:uppercase;color:var(--violet);background:var(--mist);padding:0.3rem 0.65rem;border-radius:100px;}

.portfolio-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;padding:0 6vw 4rem;}
.portfolio-item{display:block;text-decoration:none;color:inherit;border-radius:16px;overflow:hidden;border:1.5px solid var(--mist);background:var(--ink);position:relative;cursor:none;}
.portfolio-thumb{aspect-ratio:4/3;background:linear-gradient(135deg,#22193f,#3A1A8A 60%,#6C3FE8);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;}
.portfolio-thumb::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(0,0,0,0.75) 100%);opacity:0;transition:opacity .3s;}
.portfolio-item:hover .portfolio-thumb::after{opacity:1;}
.portfolio-thumb span{font-family:'Space Mono',monospace;font-weight:700;color:rgba(255,255,255,0.55);font-size:0.8rem;letter-spacing:0.05em;text-transform:uppercase;transition:transform .35s ease;}
.portfolio-item:hover .portfolio-thumb span{transform:scale(1.08);}
.portfolio-info{position:absolute;left:0;right:0;bottom:0;padding:1.2rem 1.4rem;transform:translateY(8px);opacity:0;transition:opacity .3s,transform .3s;z-index:2;}
.portfolio-item:hover .portfolio-info{opacity:1;transform:translateY(0);}
.portfolio-info h4{font-family:'Bricolage Grotesque',sans-serif;font-size:0.95rem;font-weight:700;color:#fff;}
.portfolio-info p{font-family:'Space Mono',monospace;font-size:0.72rem;color:var(--spark);margin-top:0.2rem;text-transform:uppercase;letter-spacing:0.04em;}
.portfolio-note{margin:0 6vw 3rem;padding:1rem 1.4rem;background:var(--mist);border-radius:12px;font-size:0.85rem;color:var(--grape);}

.rating-badge{display:flex;align-items:center;gap:0.7rem;margin:0 6vw 2rem;}
.rating-badge .stars{color:var(--spark);font-size:1.1rem;letter-spacing:2px;}
.rating-badge .rtext{font-size:0.9rem;color:var(--mid);}
.rating-badge .rtext b{color:var(--grape);}
.testi-marquee{overflow:hidden;padding:0 0 4rem;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);}
.testi-track{display:flex;gap:1.25rem;width:max-content;animation:scrollLeft 40s linear infinite;padding:0 6vw;}
.testi-track:hover{animation-play-state:paused;}
.testi-card{background:var(--paper-gradient);border:1.5px dashed #c4b5fd;border-radius:16px;padding:1.75rem;width:320px;flex-shrink:0;}
.testi-quote{font-size:0.92rem;color:var(--mid);font-style:italic;line-height:1.65;margin-bottom:1.2rem;}
.testi-author{display:flex;align-items:center;gap:0.7rem;}
.testi-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--violet),var(--spark));flex-shrink:0;}
.testi-name{font-family:'Bricolage Grotesque',sans-serif;font-size:0.88rem;font-weight:700;color:var(--grape);}
.testi-role{font-family:'Space Mono',monospace;font-size:0.7rem;color:var(--mid);}

.cta-band{background:var(--ink);margin:1rem 6vw 5rem;border-radius:20px;padding:3.8rem 3rem;display:flex;align-items:center;justify-content:space-between;gap:2rem;flex-wrap:wrap;position:relative;overflow:hidden;border:1.5px solid rgba(255,255,255,0.08);}
.cta-band::before{content:'';position:absolute;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,var(--violet-glow),transparent 70%);top:-120px;right:-80px;filter:blur(20px);}
.cta-band h2{position:relative;z-index:1;font-family:'Bricolage Grotesque',sans-serif;font-size:clamp(1.3rem,2.5vw,1.9rem);font-weight:800;color:#fff;letter-spacing:-0.02em;max-width:480px;line-height:1.2;}
.cta-band h2 em{color:var(--spark);font-style:normal;}
.cta-links{position:relative;z-index:1;display:flex;gap:0.9rem;flex-wrap:wrap;}

footer{border-top:1.5px solid var(--mist);padding:2rem 6vw;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;font-size:0.82rem;color:var(--mid);}
.footer-logo-link{justify-self:start;}
.footer-socials{justify-self:center;}
.footer-copyright{justify-self:end;text-align:right;}
.footer-socials{display:flex;gap:0.7rem;}
.footer-socials a{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--mist);color:var(--mid);background:var(--paper-gradient);text-decoration:none;transition:background .25s,border-color .25s,color .25s,transform .25s;}
.footer-socials a:hover{background:var(--violet);border-color:var(--violet);color:#fff;transform:translateY(-3px);}
.footer-socials svg{width:17px;height:17px;}
.footer-socials .icon-text{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:0.85rem;line-height:1;}
.footer-logo-link{gap:0.32rem;}

.magnetic{display:inline-block;transition:transform .15s ease-out;}
