/* TD Logistics — dashboard */
  /* ---------------- dashboard ---------------- */
  .dash{display:flex;flex-direction:column;gap:26px}
  .attention{display:flex;flex-direction:column;gap:10px}
  .alert{display:flex;align-items:center;gap:13px;border:1px solid var(--line);border-radius:8px;padding:12px 16px;background:var(--midnight);font-size:.88rem;color:var(--slate)}
  .alert .ic{width:30px;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
  .alert .ic svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8}
  .alert.warn{border-color:var(--gold-dim)} .alert.warn .ic{color:var(--gold);background:rgba(212,175,55,.1)}
  .alert.good{border-color:#2f5e43} .alert.good .ic{color:var(--emerald);background:rgba(78,163,107,.1)}
  .alert.info .ic{color:var(--azure);background:rgba(91,141,239,.12)}
  .alert b{color:var(--parchment);font-weight:500;font-family:var(--mono);font-size:.84rem}
  .dsec .sec-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}
  .dsec .sec-head h3{font-family:var(--display);font-weight:600;font-size:1.1rem;color:var(--parchment)}
  .dsec .sec-head .meta{font-family:var(--mono);font-size:.64rem;color:var(--slate);text-transform:uppercase;letter-spacing:.12em}
  .ship{position:relative;border:1px solid var(--line);border-radius:8px;padding:16px 18px;background:var(--midnight);margin-bottom:12px;animation:shipin .45s ease backwards;animation-delay:var(--d,0ms)}
  .ship::after{content:"";position:absolute;inset:0;border-radius:8px;pointer-events:none}
  .ship.arrived-flash::after{animation:shipflash 1.2s ease}
  @keyframes shipin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  @keyframes shipflash{0%{box-shadow:0 0 0 0 rgba(212,175,55,0)}25%{box-shadow:0 0 24px 2px rgba(212,175,55,.5)}100%{box-shadow:0 0 0 0 rgba(212,175,55,0)}}
  .ship-top{display:flex;align-items:center;gap:11px;flex-wrap:wrap}
  .tid{font-family:var(--mono);font-size:.82rem;color:var(--gold);letter-spacing:.03em}
  .rt{font-family:var(--mono);font-size:.82rem;color:var(--parchment)}
  .ship .rw{margin-left:auto;font-family:var(--mono);font-size:.84rem;color:var(--parchment)}
  .ship .rw small{color:var(--slate)}
  .svc-badge{font-family:var(--mono);font-size:.54rem;letter-spacing:.1em;text-transform:uppercase;padding:2px 7px;border-radius:3px;border:1px solid}
  .svc-badge.hs{color:var(--gold);border-color:var(--gold-dim)}
  .svc-badge.jf{color:var(--azure);border-color:#2c468f}
  .svc-badge.white{color:#e0b8c0;border-color:var(--oxblood)}
  .rush-badge{font-family:var(--mono);font-size:.54rem;letter-spacing:.1em;text-transform:uppercase;color:var(--void);background:var(--gold);padding:2px 7px;border-radius:3px}
  .stepper{display:flex;align-items:center;margin-top:15px}
  .stepper .node{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:.64rem;text-transform:uppercase;letter-spacing:.06em;color:var(--slate-dim);white-space:nowrap}
  .stepper .node .dot{position:relative;width:12px;height:12px;border-radius:50%;border:1.5px solid var(--slate-dim);background:transparent;display:flex;align-items:center;justify-content:center;flex:0 0 auto;animation:dotpop .4s ease backwards;animation-delay:calc(var(--i,0)*.1s + var(--d,0ms))}
  .stepper .node.done{color:var(--slate)} .stepper .node.done .dot{background:var(--gold-dim);border-color:var(--gold-dim)}
  .stepper .node.cur{color:var(--gold)} .stepper .node.cur .dot{background:var(--gold);border-color:var(--gold);animation:breathe 1.7s ease-in-out infinite}
  .stepper .node.arrived{color:var(--gold)} .stepper .node.arrived .dot{background:var(--gold);border-color:var(--gold)}
  .stepper .node.fail{color:#e08a94} .stepper .node.fail .dot{background:var(--oxblood);border-color:var(--oxblood)}
  .stepper .chk{width:8px;height:8px;fill:none;stroke:var(--void);stroke-width:3.4;stroke-linecap:round;stroke-linejoin:round;position:relative;z-index:2}
  .stepper .chk path{stroke-dasharray:22;stroke-dashoffset:22;animation:draw .45s ease forwards;animation-delay:calc(var(--i,0)*.1s + var(--d,0ms) + .18s)}
  .stepper .node .ripple{position:absolute;inset:-3px;border-radius:50%;border:1.5px solid var(--gold);opacity:0;pointer-events:none}
  .stepper.celebrate .node.arrived .ripple{animation:ripple .85s ease-out .05s}
  .stepper .leg{position:relative;flex:1;height:2px;min-width:20px;margin:0 9px;background:var(--line);border-radius:2px}
  .stepper .leg .fill{position:absolute;left:0;top:0;height:100%;width:0;border-radius:2px;background:var(--gold-dim)}
  .stepper .leg.done .fill{width:100%;animation:legfill .5s ease forwards;animation-delay:calc(var(--i,0)*.16s + var(--d,0ms))}
  .stepper .leg.wait{overflow:hidden}
  .stepper .leg.wait .fill{width:100%;background:linear-gradient(90deg,transparent,var(--gold-dim),transparent);animation:waitpulse 1.9s ease-in-out infinite}
  .stepper .leg.flow .fill{width:100%;background:linear-gradient(90deg,var(--gold-dim) 0 35%,var(--gold-bright) 50%,var(--gold-dim) 65% 100%);background-size:220% 100%;animation:flowmove 1.15s linear infinite}
  .stepper .glide{position:absolute;top:50%;left:0;width:0;height:0;opacity:0;transform:translate(-50%,-50%)}
  .stepper .leg.flow .glide{border-left:7px solid var(--gold-bright);border-top:4px solid transparent;border-bottom:4px solid transparent;filter:drop-shadow(0 0 4px var(--gold));animation:glide 1.7s ease-in-out infinite}
  @keyframes dotpop{0%{transform:scale(.2);opacity:0}70%{transform:scale(1.18)}100%{transform:scale(1);opacity:1}}
  @keyframes breathe{0%,100%{box-shadow:0 0 4px var(--gold)}50%{box-shadow:0 0 13px var(--gold)}}
  @keyframes legfill{from{width:0}to{width:100%}}
  @keyframes waitpulse{0%,100%{opacity:.25}50%{opacity:.7}}
  @keyframes flowmove{from{background-position:0 0}to{background-position:-220% 0}}
  @keyframes glide{0%{left:2px;opacity:0}20%{opacity:1}80%{opacity:1}100%{left:calc(100% - 2px);opacity:0}}
  @keyframes draw{to{stroke-dashoffset:0}}
  @keyframes ripple{0%{transform:scale(1);opacity:.7}100%{transform:scale(3.6);opacity:0}}
  .ship .sub{font-family:var(--mono);font-size:.68rem;color:var(--slate);margin-top:11px}
  .haul{display:grid;grid-template-columns:1fr auto;gap:6px 18px;border:1px solid var(--line);border-radius:8px;padding:15px 18px;background:var(--midnight);margin-bottom:12px;align-items:center}
  .haul.rush{border-color:var(--gold-dim)}
  .haul .risk{font-family:var(--mono);font-size:.72rem;color:var(--slate);margin-top:8px}
  .haul .risk b{color:var(--parchment)}
  .haul .dl{font-family:var(--mono);font-size:.82rem;color:var(--gold);text-align:right;white-space:nowrap}
  .haul.rush .dl{color:var(--gold-bright)}
  .teasers{display:grid;grid-template-columns:1fr 1fr;gap:16px}
  .teaser{display:flex;align-items:center;gap:16px;border:1px solid var(--line);border-radius:8px;padding:18px 20px;background:var(--midnight)}
  .teaser .big{font-family:var(--display);font-size:1.9rem;color:var(--gold);line-height:1}
  .teaser .tx{font-size:.86rem;color:var(--slate)}
  .teaser .go{margin-left:auto;font-family:var(--mono);font-size:.64rem;text-transform:uppercase;letter-spacing:.06em;color:var(--gold);border:1px solid var(--gold-dim);border-radius:4px;padding:8px 12px;background:transparent}
  .teaser .go:hover{background:rgba(212,175,55,.08)}
  .subnav{display:flex;gap:2px;border-bottom:1px solid var(--line);flex-wrap:wrap}
  .subnav button{background:transparent;border:0;color:var(--slate);font-family:var(--body);font-size:.9rem;padding:11px 16px;position:relative}
  .subnav button .c{font-family:var(--mono);font-size:.66rem;color:var(--slate-dim);margin-left:7px}
  .subnav button:hover{color:var(--parchment)}
  .subnav button.on{color:var(--gold)}
  .subnav button.on .c{color:var(--gold-dim)}
  .subnav button.on::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;background:var(--gold);border-radius:2px}
  .subnav .ndot{width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px var(--gold);margin-left:7px;display:inline-block;vertical-align:middle}
  .earn{display:flex;flex-direction:column;gap:18px}
  .earn-charts{display:grid;grid-template-columns:1.5fr 1fr;gap:18px}
  @media(max-width:820px){.earn-charts{grid-template-columns:1fr}}
  .mixbar{display:flex;height:16px;border-radius:4px;overflow:hidden;margin:8px 0 20px}
  .mixbar span{display:block}
  .mixlegend{display:flex;flex-direction:column;gap:12px}
  .mixlegend .lg{display:flex;align-items:center;gap:10px;font-size:.86rem;color:var(--slate)}
  .mixlegend .sw{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
  .mixlegend .lv{margin-left:auto;font-family:var(--mono);font-size:.78rem;color:var(--parchment)}
  @media(max-width:700px){.teasers{grid-template-columns:1fr}}
