/* HAJ Foods homepage: animated hero, marquee ribbons, scroll storytelling.
   Loaded only on /index.html, after site.css. Motion is off for prefers-reduced-motion
   (site.css kills all animations/transitions) and everything is visible without JS. */

.home{overflow-x:clip}
.home :is(.eyebrow,.section-head){position:relative}

/* ---------- Hero ---------- */
.h-hero{position:relative;overflow:hidden;min-height:calc(100svh - 72px);display:grid;align-items:center;padding-block:clamp(32px,5vw,64px) clamp(64px,8vw,104px);isolation:isolate}
.h-blobs{position:absolute;inset:0;z-index:-1;pointer-events:none}
.h-blobs i{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55;animation:blob 18s ease-in-out infinite alternate}
.h-blobs .b1{width:46vw;height:46vw;max-width:620px;max-height:620px;right:-8vw;top:-12vw;background:var(--gold-soft)}
.h-blobs .b2{width:34vw;height:34vw;max-width:460px;max-height:460px;left:-10vw;bottom:4%;background:color-mix(in srgb,var(--leaf) 30%,transparent);animation-duration:22s;animation-delay:-6s}
.h-blobs .b3{width:22vw;height:22vw;max-width:300px;max-height:300px;left:42%;top:30%;background:color-mix(in srgb,var(--gold) 22%,transparent);animation-duration:26s;animation-delay:-12s}
@keyframes blob{0%{transform:translate(0,0) scale(1)}50%{transform:translate(4vw,-3vw) scale(1.12)}100%{transform:translate(-3vw,2vw) scale(.94)}}

.h-grid{width:100%;display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(28px,4vw,56px);align-items:center}
.h-grid > *{min-width:0}
.h-copy{display:grid;gap:26px;will-change:transform;container-type:inline-size}
.h-title{font-size:clamp(38px,6.4vw,92px);font-size:clamp(36px,11.6cqi,96px);font-weight:800;letter-spacing:-.04em;line-height:.94;display:grid}
.h-title .ln{display:block;overflow:hidden;overflow:clip visible;padding:.02em .06em .1em 0;margin-bottom:-.08em}
.h-title .ln > span{display:inline-block;isolation:isolate;animation:lineUp 1.05s cubic-bezier(.2,.8,.2,1) both}
.h-title .ln:nth-child(2) > span{animation-delay:.09s}
.h-title .ln:nth-child(3) > span{animation-delay:.18s}
.h-title .ln:nth-child(4) > span{animation-delay:.27s}
.h-title em{font-style:normal;color:var(--emerald);position:relative}
:root[data-theme="dark"] .h-title em{color:var(--leaf)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .h-title em{color:var(--leaf)}}
.h-title em::after{content:"";position:absolute;left:0;right:0;bottom:.08em;height:.16em;background:var(--gold);opacity:.6;border-radius:4px;z-index:-1;transform-origin:left;animation:underline .9s 1s cubic-bezier(.6,0,.2,1) both;pointer-events:none}
@keyframes lineUp{from{transform:translateY(112%) rotate(4deg)}to{transform:none}}
@keyframes underline{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.h-in{animation:hUp .9s cubic-bezier(.2,.7,.2,1) both}
.h-copy .eyebrow{animation-delay:0s}
.h-copy .lead{animation-delay:.45s}
.h-copy .actions{animation-delay:.6s}
@keyframes hUp{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

/* Orbit: food photos circling the Dubai hub */
.orbit{position:relative;width:min(100%,560px);aspect-ratio:1;justify-self:center;perspective:1100px;animation:orbitIn 1.4s .2s cubic-bezier(.2,.8,.2,1) both}
@keyframes orbitIn{from{opacity:0;transform:scale(.82) rotate(-12deg)}to{opacity:1;transform:none}}
.orbit-stage{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.ring{position:absolute;border-radius:50%;border:1.5px dashed color-mix(in srgb,var(--emerald) 30%,transparent);pointer-events:none}
.ring.r3,.track.r3{inset:3%}
.ring.r2,.track.r2{inset:16%}
.ring.r1,.track.r1{inset:29%}
.ring.r2{border-style:solid;border-color:color-mix(in srgb,var(--gold) 38%,transparent)}
.core{position:absolute;inset:39%;border-radius:50%;display:grid;place-items:center;text-align:center;color:var(--on-emerald);background:radial-gradient(circle at 32% 28%,var(--leaf),var(--emerald) 55%,var(--emerald-2));box-shadow:0 24px 50px -18px rgba(14,77,59,.6),inset 0 -8px 20px rgba(0,0,0,.18)}
.core span{display:block;font-family:var(--display);font-weight:800;font-size:clamp(20px,3.2vw,34px);letter-spacing:.01em;line-height:1}
.core small{display:block;font-family:var(--mono);font-size:clamp(8px,.9vw,10px);letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-top:4px}
.core::before,.core::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--gold);opacity:0;animation:ripple 3.6s ease-out infinite;pointer-events:none}
.core::after{animation-delay:1.8s}
@keyframes ripple{0%{opacity:.7;transform:scale(1)}100%{opacity:0;transform:scale(2.3)}}
.track{position:absolute;border-radius:50%;transform:rotate(var(--a));animation:orb 60s linear infinite;pointer-events:none}
.track.r2{animation-duration:46s}
.track.r1{animation-duration:34s}
.track.rev{animation-direction:reverse}
.sat{position:absolute;left:50%;top:0;width:var(--s);aspect-ratio:1;transform:translate(-50%,-50%) rotate(calc(-1 * var(--a)));animation:unorb 60s linear infinite}
.track.r2 .sat{animation-duration:46s}
.track.r1 .sat{animation-duration:34s}
.track.rev .sat{animation-direction:reverse}
.sat > span{display:block;width:100%;height:100%;border-radius:50%;overflow:hidden;border:4px solid var(--bg);box-shadow:0 18px 34px -16px rgba(6,24,18,.55);background:var(--surface-2);animation:pop .9s cubic-bezier(.3,1.5,.5,1) both}
.track:nth-of-type(5) .sat > span{animation-delay:.5s}.track:nth-of-type(6) .sat > span{animation-delay:.62s}.track:nth-of-type(7) .sat > span{animation-delay:.74s}.track:nth-of-type(8) .sat > span{animation-delay:.86s}.track:nth-of-type(9) .sat > span{animation-delay:.98s}.track:nth-of-type(10) .sat > span{animation-delay:1.1s}
.sat img{width:100%;height:100%;object-fit:cover}
.sat.dot{border-radius:50%;background:var(--gold);box-shadow:0 0 0 4px color-mix(in srgb,var(--gold) 25%,transparent)}
@keyframes orb{from{transform:rotate(var(--a))}to{transform:rotate(calc(var(--a) + 360deg))}}
@keyframes unorb{from{transform:translate(-50%,-50%) rotate(calc(-1 * var(--a)))}to{transform:translate(-50%,-50%) rotate(calc(-1 * var(--a) - 360deg))}}
@keyframes pop{from{transform:scale(0)}to{transform:scale(1)}}

/* Rotating badge */
.badge{position:absolute;left:-3%;bottom:-2%;width:clamp(92px,11vw,124px);aspect-ratio:1;border-radius:50%;background:var(--emerald-2);color:var(--gold);display:grid;place-items:center;box-shadow:0 18px 34px -16px rgba(6,24,18,.6);pointer-events:none;z-index:2}
.badge > svg{position:absolute;inset:0;width:100%;height:100%;animation:spin 16s linear infinite}
.badge text{font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.08em;fill:currentColor}
.badge i{width:38%;aspect-ratio:1;border-radius:50%;background:var(--gold);color:#1B1606;display:grid;place-items:center}
.badge i svg{width:56%;height:56%}
@keyframes spin{to{transform:rotate(360deg)}}

.h-scroll{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);display:grid;justify-items:center;gap:8px;font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);pointer-events:none}
.h-scroll i{width:2px;height:38px;border-radius:2px;background:linear-gradient(var(--gold),var(--gold)) no-repeat top/100% 40% ,var(--line);animation:cue 1.8s ease-in-out infinite}
@keyframes cue{0%{background-position:0 -20px,0 0}100%{background-position:0 40px,0 0}}

@media (max-width:900px){
  .h-hero{min-height:0}
  .h-grid{grid-template-columns:1fr}
  .orbit{width:min(100%,440px)}
  .h-scroll{display:none}
}

/* ---------- Marquee ribbons ---------- */
.mq{position:relative;padding-block:clamp(40px,6vw,76px);overflow:hidden}
.mq-row{width:112%;margin-left:-6%;display:flex;overflow:hidden;padding-block:clamp(12px,1.6vw,18px);font-family:var(--display);font-weight:800;font-size:clamp(24px,3.6vw,48px);letter-spacing:-.02em;line-height:1.1;white-space:nowrap}
.mq-row.a{background:var(--emerald);color:var(--on-emerald);transform:rotate(-2.2deg);position:relative;z-index:1;box-shadow:0 20px 40px -24px rgba(6,24,18,.6)}
.mq-row.b{background:var(--gold);color:#1B1606;transform:rotate(1.6deg);margin-top:clamp(-18px,-1.5vw,-10px);font-size:clamp(18px,2.4vw,30px)}
.mq-track{display:flex;flex:none;will-change:transform;animation:mq 60s linear infinite}
.mq-row.b .mq-track{animation-direction:reverse;animation-duration:50s}
.mq-track span{display:inline-flex;align-items:center;gap:.55em;padding-right:.55em}
.mq-track span::after{content:"";width:.42em;height:.42em;border-radius:50% 0 50% 50%;transform:rotate(-45deg);background:var(--gold);flex:none}
.mq-row.b .mq-track span::after{background:var(--emerald-2)}
.js-mq .mq-track{animation:none}
@keyframes mq{to{transform:translateX(-50%)}}

/* ---------- Statement with scroll-lit words ---------- */
.stmt .wrap{display:grid;gap:clamp(22px,3vw,34px)}
.stmt .section-head{margin-bottom:0}
.words{font-family:var(--display);font-weight:700;font-size:clamp(26px,4.2vw,56px);line-height:1.12;letter-spacing:-.025em;max-width:21em}
.words em{font-style:normal;color:var(--emerald)}
:root[data-theme="dark"] .words em{color:var(--leaf)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .words em{color:var(--leaf)}}
.words .w{opacity:.16;transition:opacity .35s ease}
.words .w.lit{opacity:1}
.stmt-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:clamp(18px,3vw,40px);color:var(--muted);font-size:17px;padding-top:clamp(18px,3vw,30px);border-top:1px solid var(--line)}
.stmt-cols .signature{border:0;padding:0}
@media (max-width:860px){.stmt-cols{grid-template-columns:1fr}}

/* ---------- Tilt cards ---------- */
.home .card[data-tilt]{transform:perspective(800px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--ty,0px));transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .25s,border-color .25s}
.home .card[data-tilt]:hover{--ty:-6px}
.home .card[data-tilt] .ico{transition:transform .4s cubic-bezier(.3,1.5,.5,1)}
.home .card[data-tilt]:hover .ico{transform:rotate(-8deg) scale(1.1)}

/* ---------- Horizontal category scroller ---------- */
.hs{background:var(--emerald-2);color:var(--on-emerald);position:relative;padding:0}
:root[data-theme="dark"] .hs{background:#07100D}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .hs{background:#07100D}}
/* .wrap uses auto margins, which would shrink-to-fit inside these grids without width:100% */
.hs-sticky > .wrap{width:100%}
.hs-sticky{padding-block:clamp(56px,8vw,104px);overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(26px,4vw,44px)}
.hs .eyebrow{color:var(--gold)}
.hs-head{width:100%;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:20px}
.hs-head .section-head{margin:0;max-width:640px}
.hs-track{--pad:max(clamp(16px,4vw,32px),calc((100vw - var(--maxw)) / 2 + 32px));display:flex;gap:18px;padding-inline:var(--pad);overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--pad);scrollbar-width:none;-webkit-overflow-scrolling:touch}
.hs-track::-webkit-scrollbar{display:none}
.hs-card{flex:none;width:clamp(230px,27vw,340px);aspect-ratio:3/4;border-radius:26px;overflow:hidden;position:relative;scroll-snap-align:start;text-decoration:none;color:#fff;background:var(--emerald);transform:rotate(var(--rot,0deg));transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.hs-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.12) translateX(var(--px,0px));transition:transform .8s}
.hs-card:hover img{transform:scale(1.2) translateX(var(--px,0px))}
.hs-card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,24,18,.1) 30%,rgba(6,24,18,.85));pointer-events:none}
.hs-card small,.hs-card b{position:absolute;z-index:1;left:20px;right:20px}
.hs-card small{top:18px;font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:#F4F8F5;opacity:.85}
.hs-card b{bottom:20px;font-family:var(--display);font-weight:700;font-size:clamp(20px,2vw,26px);line-height:1.1;letter-spacing:-.01em}
.hs-card.type{background:radial-gradient(120% 90% at 20% 10%,var(--leaf),#0A3A2C)}
.hs-card.type.gold{background:radial-gradient(120% 90% at 20% 10%,#E4C274,#8C6A22)}
.hs-card.type em{position:absolute;inset:0;display:grid;place-items:center;font-style:normal;font-family:var(--display);font-weight:800;font-size:clamp(70px,9vw,120px);letter-spacing:-.04em;opacity:.9}
.hs-card:focus-visible{box-shadow:0 0 0 3px var(--emerald-2),0 0 0 6px var(--gold)}
.hs-bar{height:3px;border-radius:3px;background:rgba(255,255,255,.14);overflow:hidden}
.hs-bar i{display:block;height:100%;width:100%;background:var(--gold);transform-origin:left;transform:scaleX(var(--p,0))}
/* Pinned mode (desktop, set by home.js) */
.hs.pin .hs-sticky{position:sticky;top:72px;height:calc(100vh - 72px);min-height:560px;align-content:center;padding-block:32px}
.hs.pin .hs-track{overflow:visible;scroll-snap-type:none;will-change:transform}
.hs:not(.pin) .hs-bar{display:none}

/* ---------- Steps draw in ---------- */
.js-anim .home .steps .step{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
.js-anim .home .steps .step.in{opacity:1;transform:none}
.js-anim .home .steps .step::before{transform:scaleX(0);transform-origin:left;transition:transform 1s .35s cubic-bezier(.6,0,.2,1)}
.js-anim .home .steps .step.in::before{transform:none}
.js-anim .home .steps .step .n{transform:scale(0);transition:transform .6s .1s cubic-bezier(.3,1.6,.5,1)}
.js-anim .home .steps .step.in .n{transform:none}
@media (max-width:900px){.js-anim .home .steps .step::before{transform:scaleY(0);transform-origin:top}}

/* ---------- CTA orbs ---------- */
.h-cta{isolation:isolate}
.cta-orb{position:absolute;border-radius:50%;pointer-events:none;z-index:-1}
.cta-orb.o1{width:220px;height:220px;left:-60px;bottom:-110px;background:color-mix(in srgb,var(--leaf) 45%,transparent);filter:blur(40px);animation:blob 14s ease-in-out infinite alternate}
.cta-orb.o2{width:14px;height:14px;right:26%;top:22%;background:var(--gold);box-shadow:0 0 0 8px rgba(201,160,74,.18);animation:bob 5s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-14px)}}

/* ---------- Generic reveal ---------- */
.js-anim [data-rv],.js-anim [data-rv-stagger] > *{opacity:0;transform:translateY(34px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.js-anim [data-rv].in,.js-anim [data-rv-stagger] > .in{opacity:1;transform:none}
.js-anim .home .card[data-tilt]:not(.in){transform:translateY(34px)}
.js-anim .home .card[data-tilt].in{transform:perspective(800px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--ty,0px))}
.js-anim .home .card[data-tilt].done{transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .25s,border-color .25s}

.btn[data-magnet]{transform:translate(var(--mx,0px),var(--my,0px))}
.btn[data-magnet]:hover{transform:translate(var(--mx,0px),calc(var(--my,0px) - 2px))}
