/* ============================================================
   LTD LITTLE SEOUL — tracking.css
   Suivi de livraison : route animée, camion, jalons.
   Simulation visuelle basée sur le statut de la commande.
   ============================================================ */

.track{
  border:1px solid var(--line-2);border-radius:var(--r-lg);overflow:hidden;
  background:linear-gradient(180deg,var(--ink-800),var(--ink-850));box-shadow:var(--shadow-2);
}
.track-head{
  padding:20px 22px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  border-bottom:1px solid var(--line);background:linear-gradient(100deg,var(--red-dim),transparent 60%);
}
.track-head .ttl{display:flex;align-items:center;gap:13px}
.track-head .ttl .ic{
  width:46px;height:46px;border-radius:14px;display:grid;place-items:center;flex:none;
  background:var(--ltd-red);color:#fff;box-shadow:0 10px 26px -12px var(--ltd-red-glow);
}
.track-head h3{font-size:18px;text-transform:uppercase;letter-spacing:.02em}
.track-head .ref{font-family:var(--font-mono);font-size:12.5px;color:var(--txt-3)}

/* --- Scène de route --- */
.track-scene{position:relative;padding:34px 22px 26px;overflow:hidden}
.track-scene::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(600px 260px at 50% 120%,rgba(59,130,246,.07),transparent 70%);
}
.skyline{
  position:absolute;left:0;right:0;bottom:96px;height:70px;opacity:.28;
  background:repeating-linear-gradient(90deg,
    transparent 0 18px, var(--ink-500) 18px 30px,
    transparent 30px 46px, var(--ink-500) 46px 54px,
    transparent 54px 78px, var(--ink-500) 78px 96px);
  mask-image:linear-gradient(180deg,transparent,#000 60%);
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 60%);
}
.road{
  position:relative;height:88px;border-radius:14px;background:linear-gradient(180deg,#1b1f26,#0e1116);
  border:1px solid var(--line);overflow:hidden;
}
.road::before{
  content:"";position:absolute;left:0;right:0;top:50%;height:3px;transform:translateY(-50%);
  background:repeating-linear-gradient(90deg,rgba(255,255,255,.35) 0 26px,transparent 26px 52px);
  animation:roadMove 1.4s linear infinite;opacity:.5;
}
@keyframes roadMove{to{background-position-x:-52px}}
.road.is-idle::before{animation:none}
.road .edge{position:absolute;left:0;right:0;height:2px;background:rgba(255,255,255,.06)}
.road .edge.top{top:9px}.road .edge.bot{bottom:9px}

.truck{
  position:absolute;top:50%;left:0;transform:translate(-50%,-58%);
  transition:left 1.4s var(--ease);will-change:left;z-index:3;
}
.truck svg{width:88px;height:auto;filter:drop-shadow(0 12px 14px rgba(0,0,0,.6))}
.truck.is-moving{animation:truckBob .9s ease-in-out infinite}
@keyframes truckBob{0%,100%{transform:translate(-50%,-58%)}50%{transform:translate(-50%,-62%)}}
.truck .dust{position:absolute;right:100%;top:60%;display:flex;gap:5px;opacity:.6}
.truck .dust i{width:5px;height:5px;border-radius:50%;background:var(--txt-3);animation:dust 1.1s linear infinite}
.truck .dust i:nth-child(2){animation-delay:.2s}.truck .dust i:nth-child(3){animation-delay:.4s}
@keyframes dust{0%{opacity:.7;transform:translateX(0) scale(1)}100%{opacity:0;transform:translateX(-24px) scale(.4)}}

.track-rail{position:relative;margin:26px 6px 0;height:4px;border-radius:99px;background:var(--ink-600)}
.track-rail .fill{position:absolute;left:0;top:0;bottom:0;border-radius:99px;background:linear-gradient(90deg,var(--ltd-red-600),var(--ltd-red-300));transition:width 1.2s var(--ease)}
.track-stops{display:flex;justify-content:space-between;margin-top:-11px;position:relative;z-index:2}
.stop{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1;text-align:center;min-width:0}
.stop .knob{
  width:18px;height:18px;border-radius:50%;background:var(--ink-700);border:2px solid var(--line-2);
  display:grid;place-items:center;transition:.4s var(--ease);
}
.stop.done .knob{background:var(--ok);border-color:var(--ok)}
.stop.current .knob{background:var(--ltd-red);border-color:var(--ltd-red);box-shadow:0 0 0 5px var(--red-dim);animation:knobPulse 1.8s ease-out infinite}
@keyframes knobPulse{0%{box-shadow:0 0 0 0 var(--red-dim)}70%{box-shadow:0 0 0 12px rgba(225,29,46,0)}100%{box-shadow:0 0 0 0 rgba(225,29,46,0)}}
.stop .lb{font-size:11.5px;color:var(--txt-3);line-height:1.25;font-weight:600}
.stop.done .lb,.stop.current .lb{color:var(--txt)}
.stop .tm{font-family:var(--font-mono);font-size:10px;color:var(--txt-3)}
@media(max-width:640px){
  .stop .lb{font-size:10px}
  .truck svg{width:62px}
  .road{height:70px}
}

.track-ends{display:flex;justify-content:space-between;padding:16px 22px;border-top:1px solid var(--line);gap:16px}
.track-ends .pt{display:flex;gap:11px;align-items:flex-start;min-width:0}
.track-ends .pt .ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--ink-700);color:var(--txt-2);flex:none}
.track-ends .pt .k{display:block;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-3);margin-bottom:2px}
.track-ends .pt .k::after{content:" :"}
.track-ends .pt .v{display:block;font-weight:650;font-size:14px;overflow:hidden;text-overflow:ellipsis}
.track-ends .pt--dest{text-align:right;flex-direction:row-reverse}

.track-eta{
  display:flex;align-items:center;gap:10px;padding:12px 22px;border-top:1px solid var(--line);
  background:var(--ink-850);font-size:13.5px;color:var(--txt-2);flex-wrap:wrap;
}
.track-eta b{font-family:var(--font-mono);color:var(--txt)}

/* Mini carte fictive de Los Santos */
.mini-map{position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);background:var(--ink-850)}
.mini-map svg{display:block;width:100%;height:auto}
.mini-map .route-path{stroke-dasharray:6 8;animation:dash 22s linear infinite}
@keyframes dash{to{stroke-dashoffset:-280}}
.mini-map .moving-dot{filter:drop-shadow(0 0 6px var(--ltd-red))}

/* --- Chargement (étape "ready") : employé qui charge une caisse --- */
.load-scene{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:16px}
.load-scene svg{width:min(220px,72%);height:auto}
.load-worker{animation:workerBob 1.1s ease-in-out infinite;transform-origin:46px 66px}
@keyframes workerBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
.load-box{animation:boxLoad 1.6s ease-in-out infinite}
@keyframes boxLoad{
  0%{transform:translate(0,0) rotate(0deg)}
  35%{transform:translate(48px,-6px) rotate(-4deg)}
  55%{transform:translate(96px,-2px) rotate(2deg)}
  75%{transform:translate(122px,0) rotate(0deg)}
  100%,100.001%{transform:translate(0,0) rotate(0deg);opacity:1}
}
.load-label{font-size:12px;color:var(--txt-3);letter-spacing:.04em}

/* --- Arrivée proche : halo pulsé autour du camion --- */
.truck.is-arriving .arrive-pulse{
  position:absolute;left:50%;top:50%;width:14px;height:14px;border-radius:50%;
  background:var(--ltd-red);transform:translate(-50%,-50%);opacity:.6;
  animation:pulseRing 1.4s ease-out infinite;pointer-events:none;
}

/* --- Livraison effectuée : bandeau de succès animé --- */
.track-success{
  display:flex;align-items:center;gap:14px;padding:16px 22px;border-top:1px solid var(--line);
  background:linear-gradient(100deg,var(--ok-dim),transparent 70%);
}
.success-burst{
  width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:var(--ok);color:#08130c;animation:successPop .5s var(--ease);box-shadow:0 0 0 0 rgba(34,197,94,.5);
}
@keyframes successPop{0%{transform:scale(.3);opacity:0}60%{transform:scale(1.15);opacity:1}100%{transform:scale(1)}}
