/* Pigeon Worldwide — colourful professional refresh (module: brand).
 * Tokens live in app.css :root. This file loads after app.css and before most module css, so rules that must beat
 * module css (public.css / portals.css) use a body.pw… prefix for specificity.
 * Contrast (WCAG AA, computed): white on --pw-grad-btn ≥4.70, white on indigo 6.29, teal-ink 5.47, sky-ink 5.93,
 * amber-ink 5.02; tinted badge text ≥4.8; hero copy sits on ≥4.5 mesh (see brand notes in DEVELOPER.md). */

/* ---------- Base ---------- */
body.pw{background:var(--pw-bg)}
body.pw.pw-public{background:#fff}
.pw a{color:var(--pw-primary-ink)}
.pw :focus-visible{outline:3px solid var(--pw-focus);outline-offset:2px}
.pw .pw-btn:focus-visible,.pw .pw-icon-btn:focus-visible,.pw a:focus-visible{outline:3px solid var(--pw-focus);outline-offset:2px}
.pw input:focus,.pw select:focus,.pw textarea:focus{border-color:var(--pw-focus);box-shadow:0 0 0 3px rgba(79,70,229,.18)}
.pw-check input{accent-color:var(--pw-primary)}
.pw-mark{flex:none;display:block;-webkit-print-color-adjust:exact;print-color-adjust:exact}
::selection{background:#FFE4E6;color:#881337}

/* ---------- Logo lockup ---------- */
.pw-logo{gap:11px}
.pw-logo .pw-mark{filter:drop-shadow(0 4px 10px rgba(225,29,72,.25))}
.pw-logo-text b{font-size:19px;font-weight:800;letter-spacing:-.03em;color:var(--pw-ink)}
.pw-logo-text span{margin-top:3px;font-size:10px;font-weight:800;letter-spacing:.26em;color:var(--pw-primary-ink)}
.pw-logo.is-light .pw-logo-text b{color:#fff}
.pw-logo.is-light .pw-logo-text span{color:#FDA4AF}
.pw-logo.is-light .pw-mark{filter:none}

/* ---------- Buttons ---------- */
.pw-btn{transition:transform .12s ease,box-shadow .15s,background .15s,border-color .15s}
.pw-btn:active{transform:translateY(0)}
.pw-btn-primary{background:var(--pw-grad-btn);box-shadow:0 6px 16px -6px rgba(225,29,72,.55)}
.pw-btn-primary:hover{background:var(--pw-grad-btn-hover);transform:translateY(-1px);box-shadow:0 10px 22px -8px rgba(225,29,72,.6)}
.pw-btn-ghost:hover{transform:translateY(-1px);border-color:#C7D2FE;background:#fff;box-shadow:0 4px 12px -4px rgba(79,70,229,.25)}
.pw-btn-light{background:var(--pw-primary-50);color:var(--pw-primary-ink)!important}
.pw-btn-light:hover{background:var(--pw-primary-100)}
.pw-btn-success{background:var(--pw-success)}
.pw-btn-success:hover{background:#166534;transform:translateY(-1px)}
.pw-btn-dark{background:var(--pw-dark)}
.pw-btn-dark:hover{background:#1E293B;transform:translateY(-1px)}
.pw-btn-danger:hover{transform:translateY(-1px)}
.pw-btn[disabled]:hover{transform:none;box-shadow:none}
.pw-step{background:var(--pw-grad-btn);box-shadow:0 4px 10px -4px rgba(225,29,72,.6)}
.pw-pager a.is-active{background:var(--pw-grad-btn);border-color:transparent}
.pw-tab.is-active{background:var(--pw-indigo);border-color:var(--pw-indigo)}
.pw-tab:hover{border-color:#C7D2FE}

/* ---------- Badges: colour by status family ---------- */
.pw-badge.is-success{background:#DCFCE7;color:#166534}
.pw-badge.is-warn{background:var(--pw-amber-100);color:#92400E}
.pw-badge.is-danger{background:#FEE2E2;color:#B91C1C}
.pw-badge.is-info{background:var(--pw-sky-100);color:#075985}
.pw-badge.is-primary{background:var(--pw-indigo-100);color:#3730A3}
.pw-badge.is-muted{background:#F1F5F9;color:#475569}
/* booking → sky · pickup → teal · hub processing → violet · on the way → indigo · attention → amber · done → green · problem → red */
.pw-badge.pw-st-booked{background:var(--pw-sky-100);color:#075985}
.pw-badge.pw-st-pickup_assigned,.pw-badge.pw-st-picked_up{background:var(--pw-teal-100);color:#115E59}
.pw-badge.pw-st-received_hub,.pw-badge.pw-st-weight_verified,.pw-badge.pw-st-awb_generated,.pw-badge.pw-st-vendor_allocated,.pw-badge.pw-st-manifested{background:#EDE9FE;color:#5B21B6}
.pw-badge.pw-st-dispatched,.pw-badge.pw-st-in_transit,.pw-badge.pw-st-customs_cleared,.pw-badge.pw-st-out_for_delivery{background:var(--pw-indigo-100);color:#3730A3}
.pw-badge.pw-st-payment_pending,.pw-badge.pw-st-customs_hold{background:var(--pw-amber-100);color:#92400E}
.pw-badge.pw-st-delivered{background:#DCFCE7;color:#166534}
.pw-badge.pw-st-ndr,.pw-badge.pw-st-rto{background:#FEE2E2;color:#B91C1C}
.pw-alert.is-success{background:#F0FDF4;border-color:#BBF7D0;color:#166534}
.pw-alert.is-info{background:var(--pw-sky-50);border-color:#BAE6FD;color:#075985}
.pw-alert.is-warn,.pw-alert.is-warning{background:var(--pw-amber-50);border-color:#FDE68A;color:#78350F}

/* ---------- App shell: sidebar + top bar ---------- */
.pw-side{background:linear-gradient(180deg,#fff 0%,#fff 60%,#FBFAFF 100%)}
.pw-side-portal{background:linear-gradient(90deg,var(--pw-primary-50),var(--pw-indigo-50));color:var(--pw-primary-ink);border:1px solid #FFE4E6}
.pw-nav-title{color:#64748B}
.pw-nav-link{transition:background .12s,color .12s}
.pw-nav-link:hover{background:#F1F5F9}
.pw-nav-link.is-active{background:var(--pw-grad-btn);box-shadow:0 8px 18px -8px rgba(225,29,72,.7)}
.pw-nav-link.is-active .pw-i{color:#fff}
.pw-avatar{background:linear-gradient(135deg,var(--pw-indigo),var(--pw-violet))}
.pw-top::before,.pw-pub-header::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,#E11D48,#F97316 22%,#F59E0B 40%,#0D9488 60%,#0284C7 78%,#4F46E5);pointer-events:none}
.pw-top-search{border:1px solid transparent;background:#F1F5F9;transition:border-color .15s,background .15s}
.pw-top-search:focus-within{border-color:#C7D2FE;background:#fff;box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.pw-wallet-chip{background:#DCFCE7;color:#166534!important}
.pw-bottom-nav a.is-active{color:var(--pw-primary-ink)!important}

/* ---------- Cards / KPI ---------- */
.pw-card{border-radius:16px}
.pw-kpis{gap:16px}
.pw-kpi{--k:#64748B;--k-ink:#475569;--k-50:#F1F5F9;--k-grad:linear-gradient(90deg,#94A3B8,#CBD5E1);border-radius:16px;padding-top:18px}
.pw-kpi::before{left:0;right:0;top:0;bottom:auto;width:auto;height:3px;background:var(--k-grad)}
.pw-kpi-icon{width:38px;height:38px;border-radius:12px;background:var(--k-50);color:var(--k-ink);box-shadow:inset 0 0 0 1px rgba(15,23,42,.03)}
a.pw-kpi:hover{border-color:var(--k-50);box-shadow:0 14px 30px -12px rgba(15,23,42,.25)}
.pw-kpi:not([class*=" is-"]):nth-child(5n+1),.pw-kpi.is-info{--k:#0284C7;--k-ink:var(--pw-sky-ink);--k-50:var(--pw-sky-50);--k-grad:linear-gradient(90deg,#0284C7,#4F46E5)}
.pw-kpi:not([class*=" is-"]):nth-child(5n+2){--k:#4F46E5;--k-ink:var(--pw-indigo-ink);--k-50:var(--pw-indigo-50);--k-grad:linear-gradient(90deg,#4F46E5,#7C3AED)}
.pw-kpi:not([class*=" is-"]):nth-child(5n+3){--k:#0D9488;--k-ink:var(--pw-teal-ink);--k-50:var(--pw-teal-50);--k-grad:linear-gradient(90deg,#0D9488,#0284C7)}
.pw-kpi:not([class*=" is-"]):nth-child(5n+4),.pw-kpi.is-warn{--k:#F59E0B;--k-ink:var(--pw-amber-ink);--k-50:var(--pw-amber-50);--k-grad:linear-gradient(90deg,#F59E0B,#F97316)}
.pw-kpi:not([class*=" is-"]):nth-child(5n+5),.pw-kpi.is-primary{--k:#E11D48;--k-ink:var(--pw-primary-ink);--k-50:var(--pw-primary-50);--k-grad:linear-gradient(90deg,#E11D48,#F97316)}
.pw-kpi.is-success{--k:#16A34A;--k-ink:#15803D;--k-50:#F0FDF4;--k-grad:linear-gradient(90deg,#16A34A,#0D9488)}
.pw-kpi.is-danger{--k:#DC2626;--k-ink:#B91C1C;--k-50:#FEF2F2;--k-grad:linear-gradient(90deg,#DC2626,#E11D48)}
.pw-kpi.is-muted{--k:#64748B;--k-ink:#475569;--k-50:#F1F5F9;--k-grad:linear-gradient(90deg,#94A3B8,#CBD5E1)}
.pw-kpi.is-primary::before,.pw-kpi.is-success::before,.pw-kpi.is-warn::before,.pw-kpi.is-danger::before,.pw-kpi.is-info::before{background:var(--k-grad)}
.pw-kpi.is-primary .pw-kpi-icon,.pw-kpi.is-success .pw-kpi-icon,.pw-kpi.is-warn .pw-kpi-icon,.pw-kpi.is-danger .pw-kpi-icon,.pw-kpi.is-info .pw-kpi-icon{background:var(--k-50);color:var(--k-ink)}

/* ---------- Tables / charts / misc ---------- */
.pw-table th{background:#F8FAFC;color:#475569}
.pw-table tbody tr:hover td{background:#FAFAFF}
.pw-bar-track span{background:linear-gradient(90deg,#E11D48,#F97316)}
.pw-bars .pw-bar-row:nth-child(5n+2) .pw-bar-track span{background:linear-gradient(90deg,#4F46E5,#7C3AED)}
.pw-bars .pw-bar-row:nth-child(5n+3) .pw-bar-track span{background:linear-gradient(90deg,#0D9488,#0284C7)}
.pw-bars .pw-bar-row:nth-child(5n+4) .pw-bar-track span{background:linear-gradient(90deg,#F59E0B,#F97316)}
.pw-bars .pw-bar-row:nth-child(5n+5) .pw-bar-track span{background:linear-gradient(90deg,#0284C7,#4F46E5)}
.pw-col{fill:var(--pw-primary)}
.pw-timeline li.is-latest .pw-tl-dot{border-color:var(--pw-primary);box-shadow:0 0 0 4px var(--pw-primary-100)}
.pw-progress div.is-done::before{background:var(--pw-grad-btn);border-color:#E11D48}
.pw-progress div.is-done::after{background:linear-gradient(90deg,#E11D48,#F97316)}
.pw-empty .pw-i{color:#A5B4FC}
.pw-ac button:hover,.pw-ac button.is-focus{background:var(--pw-indigo-50)}

/* ---------- Rate search + service result cards ---------- */
.pw-q-go{background:var(--pw-grad-btn)}
.pw-q-go:hover{background:var(--pw-grad-btn-hover)}
.pw-q-swap .pw-i{color:var(--pw-primary)}
.pw-svc{position:relative;border-left:5px solid var(--svc,#CBD5E1);--svc:#94A3B8;--svc-50:#F1F5F9;--svc-ink:#475569}
.pw-svc:hover{border-color:var(--pw-line);border-left-color:var(--svc);box-shadow:0 16px 32px -14px rgba(15,23,42,.28)}
.pw-svc-icon{background:var(--svc-50);color:var(--svc-ink)}
.pw-svc[data-tier=economy]{--svc:var(--pw-teal);--svc-50:var(--pw-teal-50);--svc-ink:var(--pw-teal-ink)}
.pw-svc[data-tier=express]{--svc:var(--pw-primary);--svc-50:var(--pw-primary-50);--svc-ink:var(--pw-primary-ink)}
.pw-svc[data-tier=documents]{--svc:var(--pw-indigo);--svc-50:var(--pw-indigo-50);--svc-ink:var(--pw-indigo-ink)}
.pw-svc[data-tier=ddp]{--svc:var(--pw-amber);--svc-50:var(--pw-amber-50);--svc-ink:var(--pw-amber-ink)}
.pw-svc[data-tier=standard]{--svc:var(--pw-sky);--svc-50:var(--pw-sky-50);--svc-ink:var(--pw-sky-ink)}
.pw-svc-tag{background:#DCFCE7;color:#166534}
.pw-svc-tag.is-warn{background:var(--pw-amber-100);color:#92400E}
label.pw-svc{border-left-width:5px}
body.pw .pws-rates .pw-svc[data-tier],body.pw .pw-quote-results .pw-svc[data-tier]{border-left:5px solid var(--svc)}
body.pw .pws-live .pw-svc[data-tier]:has(input:checked),body.pw .pw-live-price .pw-svc[data-tier]:has(input:checked){border-color:var(--svc);border-left-width:5px}

/* ---------- Public site ---------- */
.pw-pub-header{position:sticky}
.pw-pub-nav a.is-active{color:var(--pw-primary-ink)!important;background:var(--pw-primary-50)}
.pw-pub-nav a:hover{background:#F1F5F9}
body.pw-public .pw-hero,body.pw-public .pws-page-hero,body.pw-public .pw-track-hero,body.pw-public .pws-partner-hero,body.pw .pw-auth-art{
  position:relative;overflow:hidden;isolation:isolate;
  background:
    radial-gradient(640px 360px at 0% 0%,rgba(79,70,229,.5),transparent 65%),
    radial-gradient(520px 340px at 96% 12%,rgba(251,113,133,.14),transparent 65%),
    radial-gradient(600px 360px at 100% 100%,rgba(249,115,22,.3),transparent 62%),
    radial-gradient(420px 280px at 10% 100%,rgba(13,148,136,.28),transparent 65%),
    linear-gradient(135deg,#881337 0%,#B0103A 48%,#9A3412 100%)}
body.pw-public .pw-hero::after,body.pw-public .pws-page-hero::after,body.pw-public .pw-track-hero::after,body.pw-public .pws-partner-hero::after,body.pw .pw-auth-art::after,body.pw-public .pws-auth .pw-auth-art::after{
  content:"";position:absolute;inset:0;right:0;top:0;bottom:0;width:auto;height:auto;border-radius:0;z-index:-1;pointer-events:none;
  background:radial-gradient(rgba(255,255,255,.1) 1px,transparent 1.5px) 0 0/22px 22px;
  -webkit-mask-image:linear-gradient(115deg,transparent 30%,#000 75%);mask-image:linear-gradient(115deg,transparent 30%,#000 75%)}
body.pw-public .pw-hero::before,body.pw-public .pws-page-hero::before,body.pw-public .pws-partner-hero::before,body.pw .pw-auth-art::before{
  content:"";position:absolute;z-index:-1;right:-140px;top:-40px;width:620px;height:230px;border-radius:50%;border:2px solid rgba(255,255,255,.14);transform:rotate(-20deg);pointer-events:none}
body.pw-public .pws-page-hero::before{top:-80px;width:520px;height:190px}
.pw-hero-points span .pw-i{color:#FDE68A}
body.pw-public .pw-offer.o1{background:linear-gradient(135deg,#4338CA,#6D28D9)}
body.pw-public .pw-offer.o2{background:linear-gradient(135deg,#0F766E,#0369A1)}
body.pw-public .pw-offer.o3{background:linear-gradient(135deg,#BE123C,#C2410C)}
body.pw-public .pw-offer.o4{background:linear-gradient(135deg,#B45309,#9A3412)}
.pw-section.is-grey{background:radial-gradient(760px 300px at 0% 0%,rgba(79,70,229,.06),transparent 60%),radial-gradient(760px 300px at 100% 100%,rgba(225,29,72,.06),transparent 60%),#F8FAFC}
/* Coloured icon chips cycle through the palette */
.pw-features>*:nth-child(5n+1) .pw-fi,.pws-services>*:nth-child(5n+1) .pws-service-ic,.pws-trust>*:nth-child(5n+1) .pws-ti,.pw-routes>*:nth-child(5n+1) .pw-route-flag{background:var(--pw-primary-50);color:var(--pw-primary-ink)}
.pw-features>*:nth-child(5n+2) .pw-fi,.pws-services>*:nth-child(5n+2) .pws-service-ic,.pws-trust>*:nth-child(5n+2) .pws-ti,.pw-routes>*:nth-child(5n+2) .pw-route-flag{background:var(--pw-indigo-50);color:var(--pw-indigo-ink)}
.pw-features>*:nth-child(5n+3) .pw-fi,.pws-services>*:nth-child(5n+3) .pws-service-ic,.pws-trust>*:nth-child(5n+3) .pws-ti,.pw-routes>*:nth-child(5n+3) .pw-route-flag{background:var(--pw-teal-50);color:var(--pw-teal-ink)}
.pw-features>*:nth-child(5n+4) .pw-fi,.pws-services>*:nth-child(5n+4) .pws-service-ic,.pws-trust>*:nth-child(5n+4) .pws-ti,.pw-routes>*:nth-child(5n+4) .pw-route-flag{background:var(--pw-amber-50);color:var(--pw-amber-ink)}
.pw-features>*:nth-child(5n+5) .pw-fi,.pws-services>*:nth-child(5n+5) .pws-service-ic,.pws-trust>*:nth-child(5n+5) .pws-ti,.pw-routes>*:nth-child(5n+5) .pw-route-flag{background:var(--pw-sky-50);color:var(--pw-sky-ink)}
body.pw-public .pws-service{border-top:3px solid transparent}
body.pw-public .pws-services>*:nth-child(5n+1){border-top-color:#E11D48}
body.pw-public .pws-services>*:nth-child(5n+2){border-top-color:#4F46E5}
body.pw-public .pws-services>*:nth-child(5n+3){border-top-color:#0D9488}
body.pw-public .pws-services>*:nth-child(5n+4){border-top-color:#F59E0B}
body.pw-public .pws-services>*:nth-child(5n+5){border-top-color:#0284C7}
body.pw-public .pws-route:hover .pw-route-flag{background:var(--pw-grad-btn);color:#fff}
.pw-steps>div::before{background:var(--pw-grad-btn);box-shadow:0 6px 14px -6px rgba(225,29,72,.6)}
.pw-steps>div:nth-child(2)::before{background:linear-gradient(135deg,#4F46E5,#6D28D9)}
.pw-steps>div:nth-child(3)::before{background:linear-gradient(135deg,#0F766E,#0369A1)}
.pw-steps>div:nth-child(4)::before{background:linear-gradient(135deg,#B45309,#C2410C)}
.pw-cta-band,body.pw-public .pws-cta{background:radial-gradient(520px 240px at 100% 0%,rgba(225,29,72,.5),transparent 62%),radial-gradient(520px 260px at 0% 100%,rgba(79,70,229,.45),transparent 62%),#0F172A}
body.pw-public .pws-trackband,body.pw-public .pw-micro-hero,body.pw-public .pws-micro-hero,body.pw-public .pws-mini-hero{background:radial-gradient(620px 300px at 100% 0%,rgba(225,29,72,.45),transparent 62%),radial-gradient(520px 300px at 0% 100%,rgba(79,70,229,.4),transparent 62%),linear-gradient(135deg,#0F172A,#1E1B4B)}
body.pw-public .pws-micro-hero::after{background:radial-gradient(circle,rgba(249,115,22,.35),transparent 70%)}
.pw-track-box button{background:var(--pw-grad-btn)}
body.pw-public .pw-track-box button{background:var(--pw-grad-btn)}
body.pw-public .pw-track-box button:hover{background:var(--pw-grad-btn-hover)}
.pw-pub-footer{position:relative;background:radial-gradient(700px 260px at 100% 0%,rgba(79,70,229,.22),transparent 62%),radial-gradient(600px 240px at 0% 100%,rgba(225,29,72,.18),transparent 62%),#0B1120}
.pw-pub-footer::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,#E11D48,#F97316,#F59E0B,#0D9488,#0284C7,#4F46E5)}
.pw-pub-footer a:hover{color:#fff!important}

/* ---------- Portals ---------- */
body.pw .pwp-wallet-hero{background:radial-gradient(520px 220px at 100% 0%,rgba(79,70,229,.55),transparent 62%),radial-gradient(420px 200px at 0% 100%,rgba(13,148,136,.35),transparent 62%),linear-gradient(135deg,#0F172A,#1E1B4B)}
body.pw .pwp-wallet-hero.is-low,body.pw .pwp-rs-head,body.pw .pwp-track-hero{background:radial-gradient(520px 220px at 100% 0%,rgba(79,70,229,.45),transparent 62%),linear-gradient(135deg,#9F1239,#BE123C 50%,#B4380F)}

@media (max-width:720px){
  body.pw-public .pw-hero::before,body.pw-public .pws-page-hero::before,body.pw-public .pws-partner-hero::before{width:380px;height:150px;right:-160px}
}
