/* =========================================================================
   EOJ LOGISTICS — DESIGN SYSTEM
   Palette pulled from the EOJ flyer: deep brand blue, a brighter transit
   blue for motion/accents, and the flyer's warm cream used sparingly as a
   single warm counterpoint. Sora carries headline personality (fits a
   "fast delivery" brand without leaning on italics/caps tricks); Inter
   is used everywhere else, matching the plugin's own dashboard type.
   ========================================================================= */

:root{
  --eoj-navy:#081E42;
  --eoj-blue:#0E3E8F;
  --eoj-blue-bright:#2E6FEA;
  --eoj-sky:#EEF4FE;
  --eoj-sky-2:#DCE9FC;
  --eoj-cream:#FBE9B8;
  --eoj-cream-soft:#FCF6E4;
  --eoj-ink:#0E1524;
  --eoj-slate:#5C6B84;
  --eoj-line:#E3E9F3;
  --eoj-white:#FFFFFF;
  --eoj-success:#0F9D58;
  --eoj-danger:#D93025;
  --eoj-radius-lg:22px;
  --eoj-radius-md:14px;
  --eoj-radius-sm:10px;
  --eoj-shadow:0 20px 45px -20px rgba(8,30,66,.28);
  --eoj-shadow-sm:0 10px 25px -12px rgba(8,30,66,.22);
  --eoj-container:1200px;
  --eoj-speed:.5s;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}
body{
  font-family:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  color:var(--eoj-ink);
  background:var(--eoj-white);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4,.eoj-display{
  font-family:"Sora",Inter,sans-serif;
  color:var(--eoj-navy);
  line-height:1.15;
  font-weight:700;
  letter-spacing:-.01em;
}
p{color:var(--eoj-slate)}
a{color:var(--eoj-blue);text-decoration:none}
img{max-width:100%;display:block}
:focus-visible{outline:3px solid var(--eoj-blue-bright);outline-offset:2px;border-radius:4px}
.eoj-container{max-width:var(--eoj-container);margin:0 auto;padding:0 24px}
.eoj-block{padding:96px 0}
.eoj-block--tight{padding:64px 0}
@media (max-width:768px){
  .eoj-block{padding:64px 0}
  .eoj-block--tight{padding:44px 0}
}
.eoj-eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-size:13px;font-weight:700;letter-spacing:.06em;
  color:var(--eoj-blue);background:var(--eoj-sky);
  border:1px solid var(--eoj-sky-2);
  padding:6px 14px;border-radius:99px;margin-bottom:18px;
}
.eoj-eyebrow::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--eoj-blue-bright);flex:none}
.eoj-lede{font-size:1.15rem;max-width:60ch}
.eoj-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:Inter,sans-serif;font-weight:700;font-size:15px;
  padding:14px 26px;border-radius:12px;border:0;cursor:pointer;
  background:var(--eoj-blue);color:#fff;
  transition:transform .18s ease,box-shadow .18s ease,background .18s ease;
  box-shadow:0 12px 24px -10px rgba(14,62,143,.55);
}
.eoj-btn:hover{background:var(--eoj-navy);transform:translateY(-2px);color:#fff}
.eoj-btn:active{transform:translateY(0)}
.eoj-btn.secondary{background:var(--eoj-white);color:var(--eoj-blue)!important;box-shadow:none;border:1.5px solid var(--eoj-sky-2)}
.eoj-btn.secondary:hover{background:var(--eoj-sky);color:var(--eoj-navy)!important}
.eoj-btn.ghost-inverse{background:transparent;color:#fff!important;border:1.5px solid rgba(255,255,255,.55);box-shadow:none}
.eoj-btn.ghost-inverse:hover{background:rgba(255,255,255,.14)}
.eoj-btn.eoj-btn--lg{padding:17px 32px;font-size:16px;border-radius:14px}

/* -------------------------------------------------------------------
   Site header
   ------------------------------------------------------------------- */
.eoj-header{
  position:sticky;top:0;z-index:60;background:rgba(255,255,255,.86);
  backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .25s ease, box-shadow .25s ease, background .25s ease;
}
.eoj-header.is-scrolled{border-color:var(--eoj-line);box-shadow:0 6px 24px -18px rgba(8,30,66,.5)}
.eoj-header__bar{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:14px 0}
.eoj-logo{display:flex;align-items:center;gap:10px}
.eoj-logo img{height:34px;width:auto}
.eoj-nav{display:flex;align-items:center;gap:2px}
.eoj-nav ul{list-style:none;display:flex;gap:4px;margin:0;padding:0}
.eoj-nav a{
  color:var(--eoj-navy);font-weight:600;font-size:14.5px;
  padding:10px 14px;border-radius:9px;transition:background .15s ease,color .15s ease;
}
.eoj-nav a:hover{background:var(--eoj-sky);color:var(--eoj-blue)}
.eoj-header__actions{display:flex;align-items:center;gap:10px}
.eoj-burger{display:none;background:none;border:0;padding:8px;cursor:pointer}
.eoj-burger span{display:block;width:24px;height:2px;background:var(--eoj-navy);margin:5px 0;border-radius:2px;transition:transform .25s ease,opacity .25s ease}
.eoj-mobile-nav{display:none;flex-direction:column;gap:2px;padding:12px 24px 20px;border-top:1px solid var(--eoj-line);background:#fff}
.eoj-mobile-nav a{padding:12px 4px;font-weight:600;color:var(--eoj-navy);border-bottom:1px solid var(--eoj-line)}
.eoj-mobile-nav .eoj-header__actions{margin-top:14px;flex-direction:column;align-items:stretch}
body.eoj-menu-open .eoj-mobile-nav{display:flex}
body.eoj-menu-open .eoj-burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
body.eoj-menu-open .eoj-burger span:nth-child(2){opacity:0}
body.eoj-menu-open .eoj-burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
@media (max-width:960px){
  .eoj-nav,.eoj-header__actions.desktop-only{display:none}
  .eoj-burger{display:block}
}

/* -------------------------------------------------------------------
   Hero
   ------------------------------------------------------------------- */
.eoj-hero-section{position:relative;overflow:hidden;padding:76px 0 40px;background:
  radial-gradient(1100px 480px at 82% -10%, var(--eoj-sky) 0%, rgba(238,244,254,0) 60%),
  #fff;}
.eoj-hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
@media (max-width:960px){.eoj-hero-grid{grid-template-columns:1fr;gap:40px}}
.eoj-hero-copy h1{font-size:clamp(2.3rem,4.4vw,3.5rem);margin:0 0 20px}
.eoj-hero-copy .eoj-lede{font-size:1.2rem;margin-bottom:32px}
.eoj-hero-ctas{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:34px}
.eoj-hero-trust{display:flex;flex-wrap:wrap;gap:26px;padding-top:26px;border-top:1px solid var(--eoj-line)}
.eoj-hero-trust div{display:flex;flex-direction:column}
.eoj-hero-trust strong{font-family:Sora,sans-serif;font-size:1.6rem;color:var(--eoj-navy)}
.eoj-hero-trust span{font-size:13px;color:var(--eoj-slate)}

/* Hero visual: an animated delivery-route card echoing the tracking
   product itself, rather than a stock photo or generic device mock. */
.eoj-hero-visual{position:relative}
.eoj-route-card{
  position:relative;background:linear-gradient(165deg,var(--eoj-navy),var(--eoj-blue) 70%);
  border-radius:28px;padding:34px;color:#fff;box-shadow:var(--eoj-shadow);
  min-height:420px;overflow:hidden;
}
.eoj-route-card::after{content:"";position:absolute;inset:0;background:
  radial-gradient(420px 220px at 100% 0%, rgba(255,255,255,.14), transparent 60%);}
.eoj-route-card__top{display:flex;justify-content:space-between;align-items:flex-start;position:relative;z-index:2}
.eoj-route-card__code{font-family:Sora,sans-serif;font-weight:700;font-size:1.05rem;letter-spacing:.02em}
/* Scoped under .eoj-route-card: the plugin's own rider/tracking screens
   (v2.0.1) also render a bare ".eoj-pill" status badge — scoping here
   keeps this hero-only translucent badge from leaking onto that
   unrelated element instead of renaming a class two places. */
.eoj-route-card .eoj-pill{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.16);padding:6px 12px;border-radius:99px;font-size:12.5px;font-weight:700}
.eoj-route-card .eoj-pill i.eoj-dot{width:7px;height:7px;border-radius:50%;background:#7CF29C;box-shadow:0 0 0 4px rgba(124,242,156,.25);animation:eoj-pulse 1.8s ease-in-out infinite}
@keyframes eoj-pulse{0%,100%{opacity:1}50%{opacity:.35}}
.eoj-route-track{position:relative;margin:46px 6px 22px;height:150px}
/* Scoped under .eoj-route-track: the plugin's own tracking screen (v1.2.0)
   also renders a bare ".eoj-route-line" divider inside its ".eoj-route"
   grid — scoping here keeps this hero-only decoration from leaking onto
   that unrelated element instead of renaming a class two places. */
.eoj-route-track .eoj-route-line{position:absolute;left:6%;right:6%;top:50%;height:3px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.55) 0 10px,transparent 10px 20px);transform:translateY(-50%)}
.eoj-route-point{position:absolute;top:50%;width:14px;height:14px;border-radius:50%;background:#fff;transform:translate(-50%,-50%);box-shadow:0 0 0 5px rgba(255,255,255,.18)}
.eoj-route-point.start{left:6%}
.eoj-route-point.end{left:94%;background:var(--eoj-cream)}
.eoj-route-mover{
  position:absolute;top:50%;left:6%;width:38px;height:38px;transform:translate(-50%,-50%);
  background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 18px -6px rgba(0,0,0,.4);
  animation:eoj-move-route 6s ease-in-out infinite;
}
.eoj-route-mover svg{width:20px;height:20px}
@keyframes eoj-move-route{
  0%{left:6%} 45%{left:94%} 50%{left:94%} 95%{left:6%} 100%{left:6%}
}
.eoj-route-card__stats{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,1fr);gap:14px;border-top:1px solid rgba(255,255,255,.18);padding-top:22px}
.eoj-route-card__stats div strong{display:block;font-family:Sora,sans-serif;font-size:1.3rem}
.eoj-route-card__stats div span{font-size:12px;color:rgba(255,255,255,.72)}
.eoj-floating-badge{
  position:absolute;bottom:-22px;left:-22px;background:#fff;color:var(--eoj-navy);
  border-radius:18px;padding:16px 20px;box-shadow:var(--eoj-shadow-sm);
  display:flex;align-items:center;gap:12px;max-width:230px;
}
.eoj-floating-badge .eoj-icon-badge{background:var(--eoj-sky);color:var(--eoj-blue)}
@media (max-width:520px){.eoj-floating-badge{display:none}}

/* -------------------------------------------------------------------
   Reveal-on-scroll (single orchestrated pattern, not per-card noise)
   ------------------------------------------------------------------- */
.eoj-reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
.eoj-reveal.is-visible{opacity:1;transform:none}
.eoj-reveal-group.is-visible .eoj-reveal-child{opacity:1;transform:none}
.eoj-reveal-child{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}
.eoj-reveal-group.is-visible .eoj-reveal-child:nth-child(1){transition-delay:.03s}
.eoj-reveal-group.is-visible .eoj-reveal-child:nth-child(2){transition-delay:.11s}
.eoj-reveal-group.is-visible .eoj-reveal-child:nth-child(3){transition-delay:.19s}
.eoj-reveal-group.is-visible .eoj-reveal-child:nth-child(4){transition-delay:.27s}
.eoj-reveal-group.is-visible .eoj-reveal-child:nth-child(5){transition-delay:.35s}

/* -------------------------------------------------------------------
   Section heads
   ------------------------------------------------------------------- */
.eoj-section-head{max-width:640px;margin-bottom:52px}
.eoj-section-head.center{margin-left:auto;margin-right:auto;text-align:center}
.eoj-section-head h2{font-size:clamp(1.7rem,3vw,2.4rem);margin:0 0 14px}

/* -------------------------------------------------------------------
   Services
   ------------------------------------------------------------------- */
.eoj-services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
@media (max-width:900px){.eoj-services-grid{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.eoj-services-grid{grid-template-columns:1fr}}
.eoj-service-card{
  background:#fff;border:1px solid var(--eoj-line);border-radius:var(--eoj-radius-lg);
  padding:30px 26px;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;
}
.eoj-service-card:hover{transform:translateY(-6px);box-shadow:var(--eoj-shadow-sm);border-color:transparent}
.eoj-icon-badge{
  width:52px;height:52px;border-radius:14px;background:var(--eoj-navy);color:#fff;
  display:flex;align-items:center;justify-content:center;margin-bottom:18px;
}
.eoj-icon-badge svg{width:26px;height:26px}
.eoj-service-card h3{font-size:1.15rem;margin:0 0 8px}
.eoj-service-card p{margin:0;font-size:14.5px}

/* -------------------------------------------------------------------
   Why EOJ — quiet stat strip (big number, small label — used once)
   ------------------------------------------------------------------- */
.eoj-why-wrap{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
@media (max-width:900px){.eoj-why-wrap{grid-template-columns:1fr;gap:36px}}
.eoj-why-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:22px}
.eoj-why-list li{display:flex;gap:16px;align-items:flex-start}
.eoj-why-list .eoj-icon-badge{width:40px;height:40px;border-radius:11px;background:var(--eoj-sky);color:var(--eoj-blue);flex:none;margin:0}
.eoj-why-list .eoj-icon-badge svg{width:20px;height:20px}
.eoj-why-list h4{margin:0 0 4px;font-size:1.02rem;color:var(--eoj-navy);font-family:Sora,sans-serif}
.eoj-why-list p{margin:0;font-size:14.5px}
.eoj-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.eoj-stat{padding:22px 0;border-top:1px solid var(--eoj-line)}
.eoj-stat strong{display:block;font-family:Sora,sans-serif;font-size:2.4rem;color:var(--eoj-navy)}
.eoj-stat span{font-size:13.5px;color:var(--eoj-slate)}

/* -------------------------------------------------------------------
   How it works — connected sequence (numbering justified: real steps)
   ------------------------------------------------------------------- */
.eoj-steps{position:relative;display:grid;grid-template-columns:repeat(5,1fr);gap:16px;counter-reset:eoj-step}
@media (max-width:960px){.eoj-steps{grid-template-columns:1fr;gap:0}}
.eoj-step{position:relative;padding:0 6px 40px}
@media (max-width:960px){
  .eoj-step{padding:0 0 0 46px;margin-bottom:30px;min-height:40px}
  .eoj-step:last-child{margin-bottom:0}
}
.eoj-step__num{
  counter-increment:eoj-step;width:40px;height:40px;border-radius:50%;
  background:var(--eoj-navy);color:#fff;display:flex;align-items:center;justify-content:center;
  font-family:Sora,sans-serif;font-weight:700;margin-bottom:18px;position:relative;z-index:2;
}
.eoj-step__num::before{content:counter(eoj-step)}
@media (max-width:960px){.eoj-step__num{position:absolute;left:0;top:0;margin-bottom:0}}
.eoj-steps::before{
  content:"";position:absolute;top:20px;left:calc(10% + 4px);right:calc(10% + 4px);height:2px;
  background:repeating-linear-gradient(90deg,var(--eoj-line) 0 8px,transparent 8px 16px);
}
@media (max-width:960px){
  .eoj-steps::before{content:"";position:absolute;top:0;bottom:0;left:19px;right:auto;width:2px;height:auto;
    background:repeating-linear-gradient(180deg,var(--eoj-line) 0 8px,transparent 8px 16px);}
}
.eoj-step h4{font-size:1rem;margin:0 0 6px;color:var(--eoj-navy);font-family:Sora,sans-serif}
.eoj-step p{font-size:13.8px;margin:0}

/* -------------------------------------------------------------------
   Tracking preview
   ------------------------------------------------------------------- */
.eoj-tracking-panel{
  background:var(--eoj-navy);border-radius:28px;padding:50px;color:#fff;
  display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center;position:relative;overflow:hidden;
}
.eoj-tracking-panel::before{content:"";position:absolute;inset:0;background:radial-gradient(600px 260px at 90% 110%,rgba(46,111,234,.35),transparent 60%)}
@media (max-width:900px){.eoj-tracking-panel{grid-template-columns:1fr;padding:34px 26px}}
.eoj-tracking-panel h2{color:#fff}
.eoj-tracking-panel p{color:rgba(255,255,255,.78)}
.eoj-timeline-demo{position:relative;z-index:2;display:flex;flex-direction:column;gap:0}
.eoj-timeline-demo .tl-item{display:flex;gap:14px;padding-bottom:22px;position:relative}
.eoj-timeline-demo .tl-item::before{content:"";position:absolute;left:9px;top:22px;bottom:0;width:2px;background:rgba(255,255,255,.18)}
.eoj-timeline-demo .tl-item:last-child::before{display:none}
.eoj-timeline-demo .tl-dot{width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.14);border:2px solid rgba(255,255,255,.4);flex:none}
.eoj-timeline-demo .tl-item.done .tl-dot{background:#7CF29C;border-color:#7CF29C}
.eoj-timeline-demo .tl-item.active .tl-dot{background:#fff;border-color:#fff;box-shadow:0 0 0 6px rgba(255,255,255,.18)}
.eoj-timeline-demo strong{display:block;font-size:14.5px}
.eoj-timeline-demo span{font-size:12.5px;color:rgba(255,255,255,.6)}

/* -------------------------------------------------------------------
   Coverage
   ------------------------------------------------------------------- */
.eoj-coverage{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center}
@media (max-width:900px){.eoj-coverage{grid-template-columns:1fr}}
.eoj-coverage-card{background:var(--eoj-sky);border-radius:24px;padding:36px;position:relative;overflow:hidden}
.eoj-coverage-city{display:inline-flex;align-items:center;gap:10px;background:#fff;border-radius:99px;padding:10px 18px;font-weight:700;color:var(--eoj-navy);box-shadow:var(--eoj-shadow-sm);margin-bottom:14px}
.eoj-coverage-city .eoj-dot-live{width:8px;height:8px;background:var(--eoj-success);border-radius:50%}
.eoj-coming-soon{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.eoj-coming-soon span{background:#fff;border:1px dashed var(--eoj-sky-2);color:var(--eoj-slate);font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:99px}

/* -------------------------------------------------------------------
   Technology strip
   ------------------------------------------------------------------- */
.eoj-tech-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
@media (max-width:900px){.eoj-tech-grid{grid-template-columns:1fr 1fr}}
.eoj-tech-item{padding:26px 20px;border-radius:var(--eoj-radius-md);background:#fff;border:1px solid var(--eoj-line);text-align:center}
.eoj-tech-item .eoj-icon-badge{margin:0 auto 14px;background:var(--eoj-sky);color:var(--eoj-blue)}
.eoj-tech-item h4{font-size:.98rem;margin:0 0 4px;font-family:Sora,sans-serif;color:var(--eoj-navy)}
.eoj-tech-item p{font-size:13px;margin:0}

/* -------------------------------------------------------------------
   CTA band
   ------------------------------------------------------------------- */
.eoj-cta-band{
  background:linear-gradient(120deg,var(--eoj-blue),var(--eoj-navy));
  border-radius:28px;padding:56px;color:#fff;display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap;
}
.eoj-cta-band h2{color:#fff;margin:0 0 8px;font-size:1.8rem}
.eoj-cta-band p{color:rgba(255,255,255,.8);margin:0}
.eoj-cta-actions{display:flex;gap:12px;flex-wrap:wrap}

/* -------------------------------------------------------------------
   Contact
   ------------------------------------------------------------------- */
.eoj-contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:50px}
@media (max-width:900px){.eoj-contact-grid{grid-template-columns:1fr}}
.eoj-contact-list{list-style:none;margin:26px 0 0;padding:0;display:flex;flex-direction:column;gap:18px}
.eoj-contact-list li{display:flex;align-items:center;gap:14px}
.eoj-contact-list a{color:var(--eoj-navy);font-weight:600}
.eoj-contact-card{background:#fff;border:1px solid var(--eoj-line);border-radius:var(--eoj-radius-lg);padding:30px}

/* -------------------------------------------------------------------
   Footer
   ------------------------------------------------------------------- */
.eoj-footer{background:var(--eoj-navy);color:rgba(255,255,255,.75);padding:64px 0 28px}
.eoj-footer h5{color:#fff;font-family:Sora,sans-serif;font-size:.92rem;letter-spacing:.03em;margin-bottom:16px}
.eoj-footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:36px}
@media (max-width:900px){.eoj-footer-grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.eoj-footer-grid{grid-template-columns:1fr}}
.eoj-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}
.eoj-footer a{color:rgba(255,255,255,.75);font-size:14px}
.eoj-footer a:hover{color:#fff}
.eoj-footer-bottom{border-top:1px solid rgba(255,255,255,.14);margin-top:48px;padding-top:22px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:13px}
.eoj-footer .eoj-logo img{filter:brightness(0) invert(1)}

/* =========================================================================
   PLUGIN UI RESKIN (matches eoj-logistics plugin v2.0.1)
   v2.0.1 rebuilt its own markup/classnames again -- this reskin was
   rewritten from a full read of includes/class-eoj-shortcodes.php and
   public/css/public.css, not carried over from the v1.2.0 version. The
   plugin now wraps every shortcode in .eoj-public-app, uses
   .eoj-public-card / .eoj-rider-shell as card chrome, .eoj-section as a
   plain in-form divider (NOT the same thing as this theme's own
   full-width .eoj-block page sections -- see the rename above), and
   .eoj-track-head/.eoj-track-grid/.eoj-timeline/.eoj-rider-card for the
   tracking + rider views. These rules load after the plugin's own
   public.css (see functions.php's dependency chain) and restyle that
   exact markup -- no plugin file is touched and no functionality changes.
   ========================================================================= */
.eoj-public-app{max-width:1100px;margin:0 auto;padding:56px 24px 96px}
.eoj-public-card,.eoj-rider-shell{
  background:#fff;border:1px solid var(--eoj-line);border-radius:var(--eoj-radius-lg);
  padding:38px;box-shadow:var(--eoj-shadow-sm);
}
.eoj-public-card{max-width:760px;margin:0 auto}
.eoj-public-card h2{font-family:Sora,sans-serif;color:var(--eoj-navy);font-size:2.1rem;margin:10px 0}
.eoj-lead{color:var(--eoj-slate);line-height:1.7}
.eoj-login-card{max-width:440px}

/* .eoj-section here is the plugin's own in-form divider (Your details /
   Pickup / Destination / Package & receiver) -- deliberately NOT the same
   class as this theme's full-width homepage .eoj-block sections. */
.eoj-section{border-top:1px solid var(--eoj-line);padding-top:22px;margin-top:22px}
.eoj-section h3{font-family:Sora,sans-serif;color:var(--eoj-navy);font-size:1rem;margin:0 0 14px}

.eoj-public-form{display:grid;gap:14px}
.eoj-public-form label{display:grid;gap:6px;font-size:12.5px;font-weight:700;color:var(--eoj-navy)}
.eoj-public-form label span{font-weight:500;color:var(--eoj-slate)}
.eoj-public-form input,.eoj-public-form select,.eoj-public-form textarea{
  border:1.5px solid var(--eoj-line);border-radius:11px;padding:13px 14px;
  font-family:Inter,sans-serif;font-size:14.5px;background:#fff;color:var(--eoj-ink);
  transition:border-color .15s ease,box-shadow .15s ease;
}
.eoj-public-form input:focus,.eoj-public-form select:focus,.eoj-public-form textarea:focus{
  border-color:var(--eoj-blue-bright);box-shadow:0 0 0 4px rgba(46,111,234,.14);outline:none;
}
.eoj-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}

/* .eoj-btn itself is already fully styled by the site-wide button rule
   near the top of this file (the plugin's bare <button class="eoj-btn">
   inherits that automatically) — only the plugin-only disabled state and
   the plugin's separate .eoj-secondary link class need adding here. */
.eoj-btn:disabled{opacity:.4;cursor:default;transform:none}
.eoj-secondary{color:var(--eoj-blue);font-weight:700;font-size:14px;text-decoration:none}
.eoj-secondary:hover{color:var(--eoj-navy)}

.eoj-message{margin-top:12px;border-radius:11px;padding:13px 15px;font-size:13.5px;font-weight:600}
.eoj-message.ok{background:#e8f8ee;color:#0a6b3d}
.eoj-message.error{background:#fbeceb;color:#a4241a}
.eoj-message a{color:inherit;text-decoration:underline}

.eoj-track-form{display:flex;gap:10px}
.eoj-track-form input{flex:1;border:1.5px solid var(--eoj-line);border-radius:11px;padding:13px 14px;font-size:14.5px}
@media (max-width:600px){.eoj-track-form{flex-direction:column}}

.eoj-map{height:430px;border-radius:20px;background:var(--eoj-sky);margin-top:20px;overflow:hidden}
.eoj-map .leaflet-container{font-family:Inter,sans-serif}
@media (max-width:700px){.eoj-map{height:330px}}

.eoj-track-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:22px;padding:18px 20px;background:var(--eoj-sky);border-radius:16px}
.eoj-track-head span{display:block;font-size:11px;font-weight:800;letter-spacing:.04em;color:var(--eoj-slate)}
.eoj-track-head strong{font-family:Sora,sans-serif;font-size:1.4rem;color:var(--eoj-navy)}
.eoj-live{color:#0a6b3d;font-weight:800;font-size:13px}
.eoj-stale{color:#a75b16;font-weight:800;font-size:13px}
.eoj-track-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0}
.eoj-track-grid>div{background:var(--eoj-sky);border-radius:14px;padding:14px}
.eoj-track-grid small{display:block;font-size:10.5px;font-weight:800;letter-spacing:.03em;color:var(--eoj-slate)}
.eoj-track-grid b{display:block;margin-top:5px;text-transform:capitalize;color:var(--eoj-ink);font-weight:700}
@media (max-width:700px){.eoj-track-grid{grid-template-columns:1fr 1fr}}

/* Timeline: the plugin renders plain <div><i></i><span><b>/<small></span></div>
   rows inside .eoj-timeline with no extra wrapper class, so these rules
   target the structural elements directly rather than a per-item class. */
.eoj-timeline{margin-top:20px}
.eoj-timeline>div{display:flex;gap:14px;padding:11px 0;border-bottom:1px solid var(--eoj-line)}
.eoj-timeline>div:last-child{border-bottom:0}
.eoj-timeline i{width:11px;height:11px;border-radius:50%;background:var(--eoj-blue-bright);margin-top:5px;flex:none}
.eoj-timeline span{display:grid;gap:2px}
.eoj-timeline b{font-family:Sora,sans-serif;color:var(--eoj-navy);font-size:14px;text-transform:capitalize}
.eoj-timeline small{color:var(--eoj-slate);font-size:12px}

.eoj-rider-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:26px}
.eoj-rider-head h2{margin:5px 0;font-family:Sora,sans-serif;color:var(--eoj-navy)}
.eoj-rider-head p{margin:0;color:var(--eoj-slate)}
.eoj-rider-card{background:#fff;border:1px solid var(--eoj-line);border-radius:20px;padding:22px;margin-bottom:16px;box-shadow:var(--eoj-shadow-sm)}
.eoj-rider-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.eoj-rider-card h3{line-height:1.5;font-size:1.02rem;margin:8px 0 14px;color:var(--eoj-ink);font-weight:600}
.eoj-code{font-family:Sora,sans-serif;font-weight:700;color:var(--eoj-navy);letter-spacing:.02em}
.eoj-pill{display:inline-flex;align-items:center;padding:6px 12px;border-radius:99px;background:var(--eoj-sky);color:var(--eoj-blue);font-weight:700;font-size:12px;text-transform:capitalize}
.eoj-rider-contact{display:flex;gap:10px;flex-wrap:wrap}
.eoj-rider-contact a{background:var(--eoj-sky);color:var(--eoj-blue)!important;text-decoration:none;padding:10px 12px;border-radius:10px;font-weight:700;font-size:12.5px}
.eoj-rider-buttons{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.eoj-rider-buttons button{border:0;border-radius:10px;background:var(--eoj-blue);color:#fff;padding:11px 14px;font-weight:700;font-size:13px;cursor:pointer;text-transform:capitalize;transition:background .15s ease}
.eoj-rider-buttons button:hover:not(:disabled){background:var(--eoj-navy)}
.eoj-rider-buttons button:disabled{opacity:.35;cursor:default}
.eoj-empty{padding:30px 0;text-align:center;color:var(--eoj-slate);font-size:14px}

/* Rider GPS status banner injected by eoj-theme.js (additive, reads
   permission state only -- does not duplicate the plugin's own GPS calls) */
.eoj-gps-banner{display:flex;align-items:center;gap:10px;background:var(--eoj-sky);color:var(--eoj-navy);border-radius:12px;padding:12px 16px;font-size:13.5px;font-weight:600;margin-bottom:16px}
.eoj-gps-banner.on{background:#e8f8ee;color:#0a6b3d}
.eoj-gps-banner.off{background:#fbeceb;color:#a4241a}
.eoj-gps-banner .eoj-dot{width:8px;height:8px;border-radius:50%;background:currentColor}

@media (max-width:700px){
  .eoj-public-app{padding:24px 16px 64px}
  .eoj-public-card,.eoj-rider-shell{padding:24px;border-radius:18px}
  .eoj-public-card h2{font-size:1.6rem}
  .eoj-two{grid-template-columns:1fr}
  .eoj-rider-head{align-items:flex-start;flex-direction:column;gap:10px}
}

/* WordPress core / accessibility niceties */
.screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);overflow:hidden;height:1px;width:1px}
