/* Rapple Logistics - client portal page (/client-portal/) - v1, 14 Oct 2026 */
:root{--px-ink:#07090B;--px-panel:#0F1419;--px-panel-2:#151C23;--px-edge:rgba(199,205,214,.12);--px-edge-2:rgba(199,205,214,.22);--px-dur:.6s}

/* ---------- hero: real photos (sea, air, road), slow pan and crossfade, dusk grade ---------- */
.px-hero{position:relative;isolation:isolate;overflow:hidden;background:var(--px-ink);color:#fff;min-height:calc(100svh - 64px - var(--mbar));display:flex;align-items:flex-end}
.px-stage{position:absolute;left:0;right:0;top:0;height:100%;z-index:-2;overflow:hidden;background:var(--px-ink)}
.px-slide{position:absolute;inset:0;margin:0;opacity:0;transition:opacity 1.4s var(--ease);will-change:opacity}
.px-slide.is-on{opacity:1}
.px-slide picture,.px-slide img{display:block;width:100%;height:100%}
.px-slide img{object-fit:cover;transform-origin:var(--ox,60%) var(--oy,50%);transform:scale(1.04)}
.px-slide[data-mode="sea"]{--ox:72%;--oy:66%;--tx:-2%;--ty:-1.5%}
.px-slide[data-mode="air"]{--ox:50%;--oy:40%;--tx:0%;--ty:1.5%}
.px-slide[data-mode="road"]{--ox:80%;--oy:60%;--tx:-2.5%;--ty:0%}
.px-hero.is-moving .px-slide.is-on img{animation:pxKen 9s linear forwards}
@keyframes pxKen{from{transform:scale(1.04) translate(0,0)}to{transform:scale(1.16) translate(var(--tx),var(--ty))}}
/* dusk grade over every photo, so the three read as one set */
.px-grade{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(14,28,48,.55) 0%,rgba(14,28,48,.1) 38%,rgba(214,150,96,.16) 72%,rgba(7,9,11,.2) 100%);mix-blend-mode:multiply}
.px-hero:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(7,9,11,.45) 0%,rgba(7,9,11,0) 22%,rgba(7,9,11,0) 40%,rgba(7,9,11,.82) 64%,var(--px-ink) 78%)}
.px-hero-in{position:relative;padding-top:var(--s7);padding-bottom:var(--s6)}
.px-hero h1{color:#fff;font-size:clamp(38px,10.4vw,84px);line-height:.94;max-width:13ch;letter-spacing:.005em}
.px-hero .lead{color:#D3DAE1;max-width:46ch;margin:var(--s3) 0 var(--s5)}
.px-hero .eyebrow{color:#C7CDD6}
.px-hero .crumb{margin-bottom:0}
/* the reel: three controls that pick the photo and show its timer */
.px-reel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:var(--s5);max-width:560px}
.px-reel-btn{position:relative;display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-items:baseline;text-align:left;min-height:56px;padding:12px 10px 10px;border:0;border-radius:0;background:none;color:#A7B1BC;cursor:pointer;font:inherit;-webkit-tap-highlight-color:transparent}
.px-reel-bar{position:absolute;left:0;right:0;top:0;height:2px;background:rgba(199,205,214,.25);overflow:hidden}
.px-reel-bar i{position:absolute;inset:0;background:#fff;transform:scaleX(0);transform-origin:0 50%}
.px-reel-btn[aria-pressed="true"] .px-reel-bar i{transform:scaleX(1)}
.px-hero.is-moving .px-reel-btn[aria-pressed="true"] .px-reel-bar i{animation:pxBarRun var(--px-cycle,7s) linear forwards}
@keyframes pxBarRun{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.px-reel-k{font:500 12px/1 var(--mono);color:#6B7785;grid-row:span 2}
.px-reel-btn b{font:600 15px/1.2 var(--body);color:inherit}
.px-reel-btn small{grid-column:2;font-size:12px;line-height:1.3;color:#7F8A96;margin-top:2px}
.px-reel-btn[aria-pressed="true"]{color:#fff}
.px-reel-btn[aria-pressed="true"] .px-reel-k{color:#C7CDD6}
.px-reel-btn:focus-visible{outline:2px solid #C7CDD6;outline-offset:2px}
@media(hover:hover){.px-reel-btn:hover{color:#fff}}
@media(min-width:900px){
  .px-hero{min-height:min(820px,calc(100vh - 110px));align-items:center}
  .px-stage{left:34%;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 26%);mask-image:linear-gradient(90deg,transparent 0,#000 26%)}
  .px-hero:before{background:linear-gradient(180deg,rgba(7,9,11,0) 78%,var(--px-ink) 100%)}
  .px-hero-in{padding-top:var(--s7);padding-bottom:var(--s7)}
  .px-hero .hero-btns{max-width:460px}
}
@media(max-width:899px){
  .px-hero{display:block;min-height:0}
  .px-hero:before{display:none}
  .px-stage{position:relative;height:auto;aspect-ratio:5/4;max-height:56svh;-webkit-mask-image:linear-gradient(180deg,#000 72%,transparent);mask-image:linear-gradient(180deg,#000 72%,transparent)}
  .px-hero-in{margin-top:-36px;padding-top:0}
  .px-reel-k{display:none}
  .px-reel-btn{grid-template-columns:1fr}
  .px-hero .crumb{display:none}
  .px-hero .hero-btns .btn-outline{display:inline-flex}
  .px-reel-btn small{display:none}
}
@media(max-width:380px){.px-reel-btn b{font-size:14px}}

/* ---------- shared section head ---------- */
.px-head{max-width:720px;margin-bottom:var(--s6)}
.px-head h2{margin-top:0}
.px-head h2{font-size:clamp(30px,5.4vw,52px);line-height:.98;margin:0 0 var(--s3)}
.px-head p{color:var(--mute);font-size:clamp(16px,1.6vw,18px);max-width:56ch;margin:0}
.px-head-dark p{color:#A7B1BC}
.px-kicker{font:500 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--steel)}
.px-head .px-kicker{margin:24px 0 8px}
.px-head-dark .px-kicker{color:#93A3B8}
.px-feat,.px-journey,.px-moves,.px-start{padding:52px 0}
@media(min-width:900px){.px-feat,.px-moves,.px-start{padding:72px 0}.px-journey{padding:72px 0}}

/* ---------- bento ---------- */
.px-track-row{margin-bottom:16px}
.px-bento{position:relative;display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;margin:0 calc(-1 * var(--gutter));padding:0 var(--gutter) 6px;scrollbar-width:none}
.px-bento::-webkit-scrollbar{display:none}
.px-col{display:contents}
@media(max-width:759px){.px-bento > .px-col > .px-tile{flex:0 0 84%;scroll-snap-align:center}}
@media(min-width:760px){.px-bento{display:grid;grid-template-columns:1fr 1fr;gap:16px;overflow:visible;margin:0;padding:0}}
@media(min-width:760px){.px-bento{align-items:stretch}.px-col{display:flex;flex-direction:column;gap:16px}.px-col > .px-tile:last-child{flex:1 1 auto}.px-col > .px-tile:last-child .px-art{margin-top:0}.px-col-wide{grid-column:1 / -1}}
@media(min-width:900px){.px-t-chat{flex-direction:row;align-items:center}.px-t-chat .px-tile-txt{flex:0 0 38%}.px-t-chat .px-art{flex:1;margin:0}}
.px-rail-hint{display:flex;justify-content:center;gap:6px;margin-top:10px}
.px-rail-hint i{width:6px;height:6px;border-radius:50%;background:#C9CED6;transition:background .2s,width .2s}
.px-rail-hint i.on{background:var(--ink);width:18px;border-radius:3px}
@media(min-width:760px){.px-rail-hint{display:none}}
.px-tile{position:relative;display:flex;flex-direction:column;gap:var(--s5);background:var(--px-panel);color:#C9D1D9;border-radius:20px;padding:24px;overflow:hidden;border:1px solid #1B232C;
  box-shadow:0 1px 0 rgba(255,255,255,.04) inset,0 1px 2px rgba(10,11,12,.12),0 12px 32px -12px rgba(10,11,12,.35)}
.px-tile:after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:radial-gradient(420px 220px at 100% 0%,rgba(94,118,144,.16),transparent 70%)}
.px-tile h3{font-family:var(--head);text-transform:uppercase;font-weight:600;font-size:clamp(24px,2.4vw,28px);line-height:1;letter-spacing:.02em;color:#fff;margin:0 0 8px}
.px-tile p{margin:0;font-size:16px;line-height:1.55;color:#A7B1BC;max-width:46ch}
.px-num{display:block;font:500 12px/1 var(--mono);color:#5E7690;letter-spacing:.08em;margin-bottom:14px}
.px-art{position:relative;z-index:1;margin-top:auto}
@media(min-width:900px){.px-t-track{flex-direction:row;align-items:center}.px-t-track .px-tile-txt{flex:0 0 31%}.px-t-track .px-art{flex:1;margin:0}}

/* ---------- tile art: every tile plays a short sequence when it scrolls into view, then loops while on screen.
   Steps are .px-s; portal.js adds .js-seq to the art box, then .on to each step in turn. Without JS (or with
   reduced motion) everything shows in its finished state. ---------- */
.js-seq .px-s{opacity:0;transform:translateY(8px);transition:opacity .45s var(--ease),transform .45s var(--ease)}
.js-seq .px-s.on{opacity:1;transform:none}

/* 01 ask: the form fills itself in, Send presses, the request lands */
.px-ask{display:grid;gap:10px}
.px-form{background:var(--px-panel-2);border:1px solid var(--px-edge);border-radius:12px;padding:12px;display:grid;gap:8px}
.px-field{display:grid;grid-template-columns:52px minmax(0,1fr);align-items:center;gap:8px;border-bottom:1px solid #22303C;padding-bottom:8px;min-height:28px}
.px-field span{font:500 12px/1 var(--mono);color:#6B7785;text-transform:uppercase;letter-spacing:.06em}
.px-field b{font:500 14px/1.3 var(--body);color:#E6EAEE;min-width:0}
.px-field b.typing:after{content:"";display:inline-block;width:1.5px;height:1em;margin-left:2px;vertical-align:-2px;background:#C7CDD6;animation:pxCaret .8s steps(1) infinite}
.px-send{justify-self:end}
.px-send em{display:inline-block;font:600 14px/1 var(--body);font-style:normal;color:#fff;background:var(--steel);padding:8px 16px;border-radius:8px}
.js-seq .px-send.on em{animation:pxPress .6s .25s var(--ease) both}
.px-inbox{display:flex;align-items:center;gap:12px;background:#12331F;border:1px solid rgba(111,214,160,.25);border-radius:12px;padding:10px 12px}
.px-inbox b{display:block;font:600 14px/1.25 var(--body);color:#fff}
.px-inbox small{display:block;font-size:12px;color:#9FD9B9}
.px-env{flex:0 0 34px;height:34px;border-radius:8px;display:grid;place-items:center;background:rgba(111,214,160,.14);color:#6FD6A0}
.px-env .i{width:18px;height:18px}
.js-seq .px-inbox.on .px-env{animation:pxFly .7s var(--ease) both}

/* 02 one-page quote: each charge lands with a tick, the count runs up, then Accept */
.px-sheet{background:#F6F7F9;color:var(--text);border-radius:12px;padding:14px 14px 12px;box-shadow:0 18px 40px -18px rgba(0,0,0,.6);transform:rotate(-1deg)}
.px-sheet-top{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:2px}
.px-sheet-top b{font-family:var(--head);text-transform:uppercase;font-size:18px;color:var(--ink);letter-spacing:.04em}
.px-sheet-top .mono{font-size:12px;color:var(--mute)}
.px-line{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed #E3E6EA;font-size:14px}
.px-line span{color:#3A414B;min-width:0}
.px-line em{display:inline-flex;align-items:center;gap:4px;font:600 12px/1 var(--body);font-style:normal;color:#1C6B4F;background:#E3F3EA;padding:4px 7px;border-radius:20px;white-space:nowrap}
.px-line em .i{width:12px;height:12px}
.js-seq .px-line.on em{animation:pxPop .45s .15s var(--ease) both}
.px-total{border-bottom:0}
.px-total span{color:var(--ink);font-weight:700}
.px-total em{background:var(--ink);color:#fff}
.px-accept{position:relative;margin-top:10px;height:40px}
.px-accept span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:6px;border-radius:8px;font:600 14px/1 var(--body);transition:opacity .35s var(--ease),transform .35s var(--ease)}
.px-accept-btn{background:var(--ink);color:#fff;opacity:0}
.px-accept-ok{background:#12331F;color:#6FD6A0}
.px-accept-ok .i{width:18px;height:18px}
.js-seq .px-accept-btn{opacity:1}
.js-seq .px-accept-ok{opacity:0;transform:scale(.96)}
.js-seq .px-accept.on .px-accept-btn{animation:pxPress .5s .2s var(--ease) both;opacity:0;transition-delay:.8s}
.js-seq .px-accept.on .px-accept-ok{opacity:1;transform:none;transition-delay:.85s}

/* 04 an email at every step: each lands with a ping and a New tag */
.px-notes{display:grid;gap:8px}
.px-note{position:relative;display:flex;align-items:center;gap:12px;background:var(--px-panel-2);border:1px solid var(--px-edge);border-radius:12px;padding:10px 12px}
.js-seq .px-note{transform:translateX(18px)}
.px-note b{display:block;font:600 14px/1.25 var(--body);color:#fff}
.px-note small{display:block;font-size:12px;color:#8C97A3}
.px-note-ic{position:relative;flex:0 0 34px;height:34px;border-radius:8px;display:grid;place-items:center;background:#1C2630;color:#C7CDD6}
.px-note-ic .i{width:18px;height:18px}
.px-note-ic:after{content:"";position:absolute;inset:0;border-radius:inherit;border:2px solid #7CBDEB;opacity:0}
.js-seq .px-note.on .px-note-ic:after{animation:pxRing 1.1s .2s ease-out}
.px-new{margin-left:auto;font:700 12px/1 var(--body);font-style:normal;letter-spacing:.08em;text-transform:uppercase;color:#7CBDEB;background:#12283A;padding:4px 6px;border-radius:12px;opacity:0}
.js-seq .px-note.on .px-new{animation:pxNew 2.4s .3s var(--ease) both}

/* 05 documents: each file arrives, then its tick lands */
.px-docs{list-style:none;margin:auto 0 0;padding:0;display:grid;gap:6px}
.px-docs li{display:flex;align-items:center;gap:10px;background:var(--px-panel-2);border:1px solid var(--px-edge);border-radius:8px;padding:10px 12px;font-size:14px;color:#E6EAEE}
.px-docs li > .i{width:18px;height:18px;color:#93A3B8;flex:0 0 18px}
.px-docs li span{flex:1;min-width:0}
.px-docs em{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#12331F;color:#6FD6A0}
.px-docs em .i{width:13px;height:13px}
.js-seq .px-docs li em,.js-seq.px-docs li em{transform:scale(0);transition:transform .35s .35s var(--ease)}
.js-seq.px-docs li.on em{transform:scale(1)}

/* 06 invoices: rows arrive, the open one turns paid, the statement is ready */
.px-inv{display:grid;gap:6px}
.px-inv-row{display:flex;align-items:center;gap:10px;background:var(--px-panel-2);border:1px solid var(--px-edge);border-radius:8px;padding:10px 12px;font-size:14px;color:#E6EAEE}
.px-inv-row .mono{font-size:12px;color:#8C97A3;flex:0 0 auto}
.px-inv-t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.px-inv-flip .px-open{display:none}
.js-seq .px-inv-flip .px-open{display:inline-block}
.js-seq .px-inv-flip .px-paid{display:none}
.js-seq .px-inv-flip.paid .px-open{display:none}
.js-seq .px-inv-flip.paid .px-paid{display:inline-block;animation:pxPop .45s var(--ease) both}
.px-inv-dl{display:flex;align-items:center;gap:8px;margin-top:4px;font:600 14px/1 var(--body);color:#fff;padding:12px;border:1px solid rgba(199,205,214,.4);border-radius:8px}
.px-inv-dl .i{width:18px;height:18px}
.js-seq .px-inv-dl.on{animation:pxGlow 2s .4s ease-in-out 2}

/* 07 chat: question, typing, answer */
.px-chat{display:flex;flex-direction:column;gap:8px}
.px-b{margin:0;max-width:86%;font-size:14px;line-height:1.4;padding:10px 12px;border-radius:12px}
.px-tile .px-b{color:#fff}
.px-b-me{align-self:flex-end;background:var(--steel);border-bottom-right-radius:4px}
.px-b-us{align-self:flex-start;background:#1C2630;border-bottom-left-radius:4px}
.px-b-typing{display:none;align-self:flex-start;background:#1C2630;gap:4px;padding:12px 14px}
.js-seq .px-b-typing{display:flex}
.js-seq .px-b-typing.gone{display:none}
.px-b-typing i{width:6px;height:6px;border-radius:50%;background:#8C97A3;animation:pxDot 1s ease-in-out infinite}
.px-b-typing i:nth-child(2){animation-delay:.15s}
.px-b-typing i:nth-child(3){animation-delay:.3s}
/* 03 route */
.px-route{background:#0A0E12;border:1px solid var(--px-edge);border-radius:12px;padding:10px 10px 14px}
.px-route-svg{display:block;width:100%;height:auto}
.px-svg-lbl{font:500 12px var(--mono);letter-spacing:.12em;fill:#6B7785}
.px-route-done{stroke-dasharray:1;stroke-dashoffset:1}
.px-ping{transform-origin:600px 120px;transform-box:view-box;opacity:0}
.in .px-ping{animation:pxPing 2.4s ease-out infinite}
.px-steps{list-style:none;margin:8px 0 0;padding:0 4px;display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.px-steps li{position:relative;font:500 12px/1.2 var(--mono);letter-spacing:.02em;text-transform:uppercase;color:#56616D;text-align:center;padding-top:14px;transition:color .3s}
.px-steps li:before{content:"";position:absolute;top:0;left:50%;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:#26313C;transition:background .3s,box-shadow .3s}
.px-steps li.on{color:#E6EAEE}
.px-steps li.on:before{background:#C7CDD6;box-shadow:0 0 0 4px rgba(199,205,214,.14)}
@media(max-width:899px){.px-steps{padding:0 2px}.px-steps li{color:transparent;padding-top:10px;overflow:hidden;white-space:nowrap;text-indent:200%}.px-route .px-steps-now{display:block}}

/* ---------- journey tracker ---------- */
.px-journey{background:radial-gradient(900px 420px at 80% 0%,rgba(94,118,144,.2),transparent 70%),var(--px-ink)}
.px-tabs{display:inline-flex;gap:4px;padding:4px;border-radius:12px;background:#12171D;border:1px solid var(--px-edge);margin-bottom:var(--s6);max-width:100%}
.px-tabs button{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:0;border-radius:8px;background:transparent;color:#A7B1BC;font:600 15px/1 var(--body);cursor:pointer;transition:background .25s var(--ease),color .25s}
.px-tabs button .i{width:18px;height:18px}
.px-tabs button[aria-selected="true"]{background:#E6EAEE;color:var(--ink)}
.px-tabs button:focus-visible{outline:2px solid #C7CDD6;outline-offset:2px}
.px-track{position:relative}
.px-track-bar{position:relative;height:4px;border-radius:2px;background:#1E262F;margin:0 0 var(--s5)}
.px-track-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:inherit;background:linear-gradient(90deg,#4C6076,#C7CDD6);transition:width .9s var(--ease)}
.px-track-fill:after{content:"";position:absolute;right:-7px;top:50%;width:14px;height:14px;margin-top:-7px;border-radius:50%;background:#fff;box-shadow:0 0 0 6px rgba(255,255,255,.12),0 0 24px rgba(199,205,214,.6)}
.px-track-steps{list-style:none;margin:0;padding:0;display:grid;gap:10px;grid-template-columns:1fr;counter-reset:pxs}
.px-track-steps li{counter-increment:pxs;display:grid;grid-template-columns:28px 1fr;column-gap:12px;align-items:baseline;align-content:start;padding:12px 14px;border-radius:12px;border:1px solid #1B232C;background:#0E1318;transition:background .4s var(--ease),border-color .4s,opacity .4s;opacity:.55;cursor:pointer}
.px-track-steps li:before{content:none;font:500 12px var(--mono);color:#5E7690;grid-row:span 2}
.px-track-steps b{font-family:var(--head);text-transform:uppercase;font-weight:600;font-size:20px;letter-spacing:.03em;color:#fff;line-height:1.1}
.px-track-steps span{font-size:14px;color:#8C97A3}
.px-track-steps li.done{opacity:.85}
.px-track-steps li.now{opacity:1;background:#141C24;border-color:#3E5063}
.px-track-steps li.now:before{color:#C7CDD6}
.px-track-now{margin:var(--s4) 0 0;color:#A7B1BC;font-size:14px}
.px-track-now b{color:#fff}
@media(min-width:760px){.px-track-steps{grid-template-columns:repeat(4,1fr)}}
@media(min-width:1100px){.px-track-steps{grid-template-columns:repeat(7,1fr);gap:8px}.px-track-steps li{grid-template-columns:1fr;padding:14px}.px-track-steps li:before{grid-row:auto;margin-bottom:10px}}
@media(max-width:759px){.px-track-bar{display:none}}

/* ---------- everything we move ---------- */
.px-mgrid{display:grid;grid-template-columns:1fr;gap:10px}
@media(min-width:620px){.px-mgrid{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.px-mgrid{grid-template-columns:repeat(3,1fr);gap:14px}}
.px-m{position:relative;display:grid;grid-template-columns:48px 1fr 20px;grid-template-rows:auto auto;column-gap:14px;align-items:center;padding:16px;border-radius:12px;border:1px solid var(--line);background:#fff;text-decoration:none;color:var(--text);transition:border-color .25s var(--ease),transform .25s var(--ease),box-shadow .25s}
.px-m-ic{grid-row:span 2;width:48px;height:48px;border-radius:12px;display:grid;place-items:center;background:var(--ink);color:#C7CDD6}
.px-m b{font-family:var(--head);text-transform:uppercase;font-weight:600;font-size:20px;letter-spacing:.02em;color:var(--ink);line-height:1.1}
.px-m small{font-size:16px;color:var(--mute);grid-column:2}
.px-m > .i:last-child{grid-column:3;grid-row:1 / span 2;width:18px;height:18px;color:var(--steel);transition:transform .25s var(--ease)}
@media(hover:hover){.px-m:hover{border-color:var(--ink);transform:translateY(-2px);box-shadow:var(--shadow)}.px-m:hover > .i:last-child{transform:translateX(3px)}}

/* ---------- getting started ---------- */
.px-three{list-style:none;margin:0 0 var(--s6);padding:0;display:grid;gap:10px;grid-template-columns:1fr}
@media(min-width:760px){.px-three{grid-template-columns:repeat(3,1fr);gap:14px}}
.px-three li{display:flex;flex-direction:column;gap:6px;padding:20px;border-radius:12px;background:#fff;border:1px solid var(--line)}
.px-three-n{font:600 44px/1 var(--head);color:var(--steel);margin-bottom:6px}
.px-three b{font-family:var(--head);text-transform:uppercase;font-size:24px;font-weight:600;color:var(--ink);letter-spacing:.02em;line-height:1.05}
.px-three li > span:last-child{color:var(--mute);font-size:16px}
.px-start-btns{max-width:520px}

/* ---------- keyframes ---------- */
@keyframes pxCaret{50%{opacity:0}}
@keyframes pxPress{0%{transform:none}40%{transform:scale(.92)}100%{transform:none}}
@keyframes pxFly{0%{transform:translate(-30px,-14px) rotate(-12deg);opacity:0}100%{transform:none;opacity:1}}
@keyframes pxPop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.08);opacity:1}100%{transform:none}}
@keyframes pxRing{0%{opacity:.9;transform:scale(1)}100%{opacity:0;transform:scale(1.6)}}
@keyframes pxNew{0%{opacity:0;transform:scale(.8)}15%,75%{opacity:1;transform:none}100%{opacity:0}}
@keyframes pxPing{0%{opacity:.8;transform:scale(1)}100%{opacity:0;transform:scale(3.2)}}
@keyframes pxGlow{0%,100%{border-color:rgba(199,205,214,.4)}50%{border-color:#fff;box-shadow:0 0 0 4px rgba(199,205,214,.12)}}
@keyframes pxDot{0%,100%{opacity:.35;transform:none}50%{opacity:1;transform:translateY(-2px)}}

@media (prefers-reduced-motion: reduce){
  .px-slide{transition:none}
  .px-tile *,.px-tile *:before,.px-tile *:after{animation:none !important;transition:none !important}
  .px-route-done{stroke-dashoffset:0}
  .px-track-fill{transition:none}
}

/* ---------- home: where we work + track a shipment ---------- */
.px-trackband{background:var(--px-ink);color:#C9D1D9;padding:52px 0}
.px-trackband-in > *{min-width:0}
.px-trackband .track{max-width:100%;width:auto;margin:0;box-sizing:border-box}
.px-trackband-in{display:grid;gap:28px}
.px-where h2{color:#fff;font-size:clamp(26px,3.4vw,36px);margin:0 0 14px}
.px-where-list{list-style:none;margin:0;padding:0;display:grid}
.px-where-list li{display:grid;grid-template-columns:92px minmax(0,1fr);gap:12px;padding:12px 0;border-top:1px solid #1E262F;font-size:16px}
.px-where-list b{font:500 12px/1.6 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#93A3B8}
.px-where-list span{color:#D3DAE1}
@media(min-width:900px){.px-trackband{padding:72px 0}.px-trackband-in{grid-template-columns:1.1fr .9fr;gap:56px;align-items:start}}
.px-hero-home h1{font-size:clamp(34px,8.6vw,64px);max-width:17ch;line-height:.96}

.px-steps-now{display:none;margin:10px 4px 0;font:500 12px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:#E6EAEE}
