*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font-body),sans-serif;background:var(--s);color:var(--p);overflow-x:hidden;margin:0}
h1,h2,h3,.fd{font-family:var(--font-heading),sans-serif;letter-spacing:.03em}

/* Reveal */
.rv{opacity:0;transform:translateY(24px);transition:opacity .65s cubic-bezier(.16,1,.3,1),transform .65s cubic-bezier(.16,1,.3,1)}
.rv.s1{transition-delay:.1s}.rv.s2{transition-delay:.2s}.rv.s3{transition-delay:.3s}
.rv.on{opacity:1;transform:none}

/* CTA red sweep */
.btn-r{position:relative;overflow:hidden;background:var(--a);transition:transform .2s,box-shadow .2s;display:inline-flex;align-items:center;justify-content:center}
.btn-r::before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);transform:translateX(-120%);transition:transform .5s}
.btn-r:hover::before{transform:translateX(120%)}
.btn-r:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(var(--a-rgb),.5)}

.btn-o{background:transparent;border:1px solid rgba(255,255,255,.3);transition:border-color .2s,background .2s;display:inline-flex;align-items:center;justify-content:center}
.btn-o:hover{border-color:rgba(255,255,255,.7);background:rgba(255,255,255,.08)}

/* Card hover */
.ch{transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s}
.ch:hover{transform:translateY(-5px);box-shadow:0 22px 44px rgba(0,0,0,.2)}

/* Animated underline */
.al{position:relative}
.al::after{content:'';position:absolute;bottom:-2px;left:0;width:0;height:2px;background:var(--a);transition:width .3s}
.al:hover::after{width:100%}

/* Diagonal clip hero */
.hero-diag{clip-path:polygon(0 0,100% 0,100% 88%,0 100%)}

/* Section red stripe accent */
.red-stripe::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--a)}

/* Service card number */
.srv-n{font-family:var(--font-heading),sans-serif;font-size:clamp(60px,10vw,120px);font-weight:400;color:var(--a);opacity:.08;position:absolute;top:-10px;right:16px;line-height:1;pointer-events:none}

/* Stats */
.stv{font-family:var(--font-heading),sans-serif;font-size:clamp(52px,7vw,88px);color:var(--a);line-height:1}

/* Racing stripe on hero */
.racing-stripe{position:absolute;top:0;right:0;bottom:0;width:6px;background:repeating-linear-gradient(180deg,var(--a),var(--a) 40px,transparent 40px,transparent 60px)}

#nav{transition:background .3s,box-shadow .3s;background:var(--p)}
#nav.top{background:rgba(var(--p-rgb),.7);backdrop-filter:blur(8px)}

#mmenu{transform:translateX(100%);opacity:0;pointer-events:none;transition:transform .35s cubic-bezier(.16,1,.3,1),opacity .3s}
#mmenu.op{transform:translateX(0);opacity:1;pointer-events:all}

input:focus,select:focus,textarea:focus{outline:2px solid var(--a);outline-offset:1px}
