/* ===== block 6 (was body, 471 chars) ===== */

.skip-link{position:fixed;top:-64px;left:8px;z-index:3000;background:var(--blue-deep,#12264E);color:#fff;padding:10px 18px;border-radius:0 0 12px 12px;font-weight:700;font-size:14px;text-decoration:none;transition:top .18s ease}
.skip-link:focus{top:0}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[role="button"]:focus-visible{outline:3px solid var(--orange,#F07C1F);outline-offset:2px}
.view:focus{outline:none}

/* ===== block 7 (was body, 5166 chars) ===== */

  .route-anim{position:relative;height:172px;border-radius:20px;overflow:hidden;margin-top:18px;
    background:linear-gradient(180deg,#8Fb9e8 0%,#bcd8f2 38%,#e4eef7 60%,#e4eef7 62%);
    border:1px solid rgba(18,38,78,.08);box-shadow:0 20px 46px -26px rgba(18,38,78,.42)}
  /* sun with soft haze */
  .ra-sun{position:absolute;top:20px;right:12%;width:34px;height:34px;border-radius:50%;
    background:radial-gradient(circle at 40% 40%,#FFF3C4,#FFD54F 55%,#FFB300);
    box-shadow:0 0 26px 10px rgba(255,199,64,.45),0 0 60px 30px rgba(255,214,120,.2);
    animation:raSun 7s ease-in-out infinite}
  @keyframes raSun{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
  /* far snow-hazed Himalaya — scrolls slowly (parallax) */
  .ra-range{position:absolute;left:0;right:0;background-repeat:repeat-x;background-position:0 bottom;will-change:background-position}
  .ra-range-far{bottom:60px;height:78px;opacity:.85;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='440' height='90'%3E%3Cpath d='M0,90 L0,58 L34,30 L52,44 L84,14 L108,40 L140,22 L170,46 L196,20 L232,48 L262,26 L298,50 L330,22 L364,48 L398,28 L440,50 L440,90 Z' fill='%23a9bdd6'/%3E%3Cpath d='M84,14 L74,26 L96,26 Z M196,20 L186,31 L208,31 Z M330,22 L320,33 L342,33 Z' fill='%23eef4fb'/%3E%3C/svg%3E");
    background-size:440px 78px;animation:raScrollFar 60s linear infinite}
  @keyframes raScrollFar{from{background-position:0 bottom}to{background-position:-440px bottom}}
  /* near green foothills — scrolls faster */
  .ra-range-near{bottom:56px;height:56px;opacity:.95;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='520' height='70'%3E%3Cpath d='M0,70 L0,44 Q64,16 132,40 Q198,60 272,36 Q346,14 418,42 Q470,58 520,44 L520,70 Z' fill='%237ba05f'/%3E%3Cpath d='M0,70 L0,52 Q80,34 150,50 Q230,66 320,48 Q400,34 470,52 Q500,60 520,54 L520,70 Z' fill='%23688c50'/%3E%3C/svg%3E");
    background-size:520px 56px;animation:raScrollNear 26s linear infinite}
  @keyframes raScrollNear{from{background-position:0 bottom}to{background-position:-520px bottom}}
  /* asphalt highway */
  .ra-road{position:absolute;left:0;right:0;bottom:0;height:60px;
    background:linear-gradient(180deg,#4a5160 0%,#363c48 30%,#2b303a 100%)}
  .ra-road::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;
    background:linear-gradient(180deg,rgba(255,255,255,.25),transparent)}
  .ra-edge{position:absolute;left:0;right:0;height:2px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.7) 0 18px,transparent 18px 30px);animation:raLane .5s linear infinite}
  .ra-edge.top{top:9px}.ra-edge.bot{bottom:9px}
  .ra-lane{position:absolute;top:50%;left:0;right:0;height:5px;transform:translateY(-50%);
    background:repeating-linear-gradient(90deg,#F6C744 0 30px,transparent 30px 60px);
    animation:raLane .42s linear infinite;will-change:background-position;border-radius:3px}
  @keyframes raLane{from{background-position:0 0}to{background-position:-60px 0}}
  /* roadside km posts flying past for speed feel */
  .ra-posts{position:absolute;left:0;right:0;bottom:44px;height:16px;
    background-image:radial-gradient(circle at 6px 12px,#d9dee6 0 2px,transparent 2px);
    background-size:150px 16px;background-repeat:repeat-x;animation:raPosts 1.3s linear infinite;opacity:.7}
  @keyframes raPosts{from{background-position:0 0}to{background-position:-150px 0}}
  /* SVG coach */
  /* Spans the whole track; the coach artwork sits at its left edge. That
     makes a translateX percentage a percentage of the ROAD, so the drive
     needs no `left` and never triggers layout. */
  .ra-bus{position:absolute;bottom:16px;left:0;right:0;width:auto;z-index:4;pointer-events:none;
    animation:raDrive 8s cubic-bezier(.45,0,.55,1) infinite;will-change:transform}
  /* The bob rides on the inner svg, not on .ra-bus: both used to animate the
     same element, and the shorter transform animation silently cancelled the
     drive's transform. Split, they compose. */
  .ra-bus svg{width:96px;height:auto;display:block;
    filter:drop-shadow(0 6px 5px rgba(0,0,0,.3));
    animation:raBob 1s ease-in-out infinite}
  .ra-wheel{transform-box:fill-box;transform-origin:center;animation:raSpin .5s linear infinite}
  @keyframes raSpin{to{transform:rotate(360deg)}}
  @keyframes raDrive{
    0%{transform:translateX(2%);opacity:0}
    5%{opacity:1}
    88%{transform:translateX(calc(88% - 96px));opacity:1}
    95%{transform:translateX(calc(88% - 96px));opacity:0}
    100%{transform:translateX(calc(88% - 96px));opacity:0}}
  @keyframes raBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.5px)}}
  /* city pins */
  .ra-pin{position:absolute;bottom:64px;z-index:3;display:inline-flex;align-items:center;gap:5px;
    font-size:11px;font-weight:800;color:var(--ink);background:rgba(255,255,255,.92);
    padding:3px 9px;border-radius:999px;box-shadow:0 4px 10px rgba(18,38,78,.22)}
  .ra-pin .ra-fl{font-size:15px;line-height:1}
  .ra-pin::after{content:"";position:absolute;left:14px;bottom:-6px;border:5px solid transparent;border-top-color:rgba(255,255,255,.92)}
  .ra-in{left:12px}.ra-np{right:12px}.ra-np::after{left:auto;right:14px}
  .ra-tag{position:absolute;bottom:7px;left:50%;transform:translateX(-50%);z-index:5;
    font-size:11px;font-weight:700;color:#fff;background:rgba(0,0,0,.34);padding:3px 12px;border-radius:999px;white-space:nowrap;backdrop-filter:blur(2px)}
  @media (max-width:520px){.route-anim{height:150px}.ra-bus{width:78px}}
  @media (prefers-reduced-motion:reduce){
    .ra-bus,.ra-lane,.ra-edge,.ra-posts,.ra-range,.ra-sun,.ra-wheel{animation:none}
    .ra-bus{left:42%;opacity:1}
  }
  
/* ===== block 8 (was body, 5308 chars) ===== */

      .shg-hero{--shg-orange:#F07C1F;--shg-orange-l:#FFB25E;--shg-dur:16s;position:relative;overflow:hidden;border-radius:26px;margin-top:34px;padding:34px 30px;color:#EAF2FF;background:linear-gradient(135deg,rgba(10,22,40,.92),rgba(18,38,78,.82) 55%,rgba(26,58,106,.78));border:1px solid rgba(255,178,94,.22);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 24px 60px rgba(5,12,25,.55),0 4px 18px rgba(240,124,31,.18),inset 0 1px 0 rgba(255,255,255,.08)}
      .shg-aura{position:absolute;inset:0;pointer-events:none;background:radial-gradient(520px 260px at 12% -12%,rgba(240,124,31,.30),transparent 60%),radial-gradient(460px 240px at 108% 118%,rgba(95,168,232,.24),transparent 62%)}
      .shg-body{position:relative;z-index:1}
      .shg-head{margin-bottom:22px}
      .shg-live{display:inline-flex;align-items:center;gap:7px;background:rgba(240,124,31,.16);border:1px solid rgba(240,124,31,.36);color:var(--shg-orange-l);border-radius:999px;padding:5px 13px;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
      .shg-live i{width:8px;height:8px;border-radius:50%;background:var(--shg-orange);animation:shgBlink 1.4s ease-out infinite}
      @keyframes shgBlink{0%{box-shadow:0 0 0 0 rgba(240,124,31,.55)}70%{box-shadow:0 0 0 8px rgba(240,124,31,0)}100%{box-shadow:0 0 0 0 rgba(240,124,31,0)}}
      .shg-name{font-family:var(--f-display,'Cinzel',serif);font-weight:900;font-size:clamp(28px,5vw,44px);line-height:1.05;letter-spacing:.01em;margin:12px 0 8px}
      .shg-grad{background:linear-gradient(92deg,var(--shg-orange-l),var(--shg-orange));-webkit-background-clip:text;background-clip:text;color:transparent}
      .shg-corridor{display:inline-flex;align-items:center;gap:12px;font-size:clamp(15px,2.4vw,19px);font-weight:700;color:#CFE0FA}
      .shg-corridor .shg-dash{color:var(--shg-orange);font-weight:900}
      .shg-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:8px}
      .shg-stat{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.10);border-radius:16px;padding:14px 16px}
      .shg-k{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9FBBE6;margin-bottom:6px}
      .shg-v{font-size:clamp(16px,2.2vw,20px);font-weight:800;color:#fff;font-variant-numeric:tabular-nums}
      .shg-seats{color:var(--shg-orange-l)}
      .shg-seats small{font-size:12px;font-weight:600;color:#9FBBE6}
      .shg-stat-cd .shg-count{color:#fff;letter-spacing:.02em}
      .shg-route{position:relative;height:84px;margin:26px 2px 6px}
      .shg-rail{position:absolute;top:20px;left:7.14%;right:7.14%;height:4px;border-radius:4px;background:linear-gradient(90deg,rgba(240,124,31,.5),rgba(95,168,232,.5));overflow:hidden}
      .shg-rail::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(255,255,255,.45) 0 7px,transparent 7px 15px);animation:shgDash 1s linear infinite}
      @keyframes shgDash{to{background-position:15px 0}}
      .shg-stops{position:absolute;left:0;right:0;top:0;display:flex;justify-content:space-between}
      .shg-stop{position:relative;display:flex;flex-direction:column;align-items:center;width:14.28%}
      .shg-stop i{width:14px;height:14px;border-radius:50%;background:#274a7d;border:2px solid #4a74ad;margin-top:13px;animation:shgGlow var(--shg-dur) linear infinite;animation-delay:calc(var(--i) / 6 * var(--shg-dur))}
      .shg-stop em{margin-top:9px;font-size:10.5px;font-style:normal;font-weight:600;color:#A9C3EA;text-align:center;line-height:1.15;max-width:56px}
      @keyframes shgGlow{0%{background:var(--shg-orange);border-color:var(--shg-orange-l);transform:scale(1.5);box-shadow:0 0 0 4px rgba(240,124,31,.22),0 0 16px 3px rgba(240,124,31,.7)}16%{background:#274a7d;border-color:#4a74ad;transform:scale(1);box-shadow:none}100%{background:#274a7d;border-color:#4a74ad;transform:scale(1);box-shadow:none}}
      .shg-bus{position:absolute;top:2px;left:7.14%;transform:translateX(-50%);animation:shgBus var(--shg-dur) linear infinite}
      @keyframes shgBus{0%{left:7.14%}100%{left:92.86%}}
      .shg-bus-i{display:block;font-size:24px;filter:drop-shadow(0 4px 6px rgba(0,0,0,.4));animation:shgBob .9s ease-in-out infinite}
      @keyframes shgBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
      .shg-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}
      .shg-hero .btn{font-weight:800}
      .shg-book{box-shadow:0 8px 22px rgba(240,124,31,.35)}
      .shg-hero .btn-ghost{background:rgba(255,255,255,.05);border:1.5px solid rgba(255,255,255,.28);color:#EAF2FF}
      .shg-hero .btn-ghost:hover{background:rgba(255,255,255,.12);border-color:var(--shg-orange-l);color:#fff}
      @media (max-width:640px){
        .shg-hero{padding:26px 18px;border-radius:22px}
        .shg-stats{grid-template-columns:1fr 1fr}
        .shg-stat-cd{grid-column:1 / -1}
        .shg-stop em{font-size:9px;max-width:42px}
        .shg-bus-i{font-size:20px}
        .shg-ctas .btn{flex:1 1 auto}
      }
      @media (max-width:380px){.shg-stop em{font-size:8px}}
      @media (prefers-reduced-motion:reduce){
        .shg-bus,.shg-bus-i,.shg-stop i,.shg-rail::after,.shg-live i{animation:none}
        .shg-bus{left:7.14%}
      }
      
/* ===== block 9 (was body, 3024 chars) ===== */

    .ja-partner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:0;margin:18px 0 6px;
      border-radius:22px;overflow:hidden;background:rgba(255,255,255,.9);border:1px solid rgba(18,38,78,.08);
      box-shadow:0 34px 70px -34px rgba(18,38,78,.5),0 2px 0 rgba(255,255,255,.7) inset;
      transition:transform .25s ease,box-shadow .25s ease}
    .ja-partner:hover{transform:translateY(-3px);box-shadow:0 44px 84px -34px rgba(18,38,78,.55)}
    .ja-photo{position:relative;min-height:200px;background:
      linear-gradient(135deg,var(--ja-orange,#E8672C),#B23A12)}
    .ja-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
    .ja-photo-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
      color:#fff;text-align:center;font-size:44px;line-height:1.2;text-shadow:0 2px 10px rgba(0,0,0,.3)}
    .ja-photo-ph small{font-size:13px;font-weight:700;opacity:.95;margin-top:6px}
    .ja-partner-badge{position:absolute;left:12px;top:12px;z-index:2;background:rgba(10,107,59,.95);color:#fff;
      font-size:11.5px;font-weight:800;letter-spacing:.02em;border-radius:999px;padding:6px 12px;
      box-shadow:0 8px 18px -8px rgba(0,0,0,.5)}
    .ja-partner-body{padding:18px 18px 16px}
    .ja-partner-body h3{margin:0 0 2px;font-family:var(--f-display);font-size:19px}
    .ja-rate{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 12px}
    .ja-rate .g-pill{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid #E4E9F2;
      border-radius:999px;padding:6px 12px;font-weight:800;font-size:13px;box-shadow:0 4px 12px -6px rgba(18,38,78,.3)}
    .ja-rate .g-pill .stars{color:#FFB300;letter-spacing:1px}
    .ja-rate a{font-weight:700;font-size:12.5px;color:var(--blue)}
    .ja-facts{list-style:none;padding:0;margin:0 0 14px;display:grid;gap:6px;font-size:13px;color:var(--ink)}
    .ja-actions{display:flex;gap:10px;margin-bottom:12px}
    .ja-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:11px;border-radius:12px;
      font-weight:800;font-size:14px;text-decoration:none;transition:transform .12s ease,filter .12s ease}
    .ja-btn:hover{transform:translateY(-1px);filter:brightness(1.05)}
    .ja-btn.call{background:var(--blue,#2E5FA8);color:#fff}
    .ja-btn.wa{background:#25D366;color:#fff}
    .ja-maps{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
    .ja-mbtn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;border-radius:12px;
      background:var(--blue-50,#F0F5FC);border:1px solid var(--blue-100,#E3ECF9);text-decoration:none;color:var(--ink);
      font-size:12px;font-weight:700;transition:transform .12s ease,background .12s ease}
    .ja-mbtn span{font-size:12px}
    .ja-mbtn:hover{transform:translateY(-2px);background:#fff}
    .ja-mbtn b{font-size:20px;line-height:1}
    @media(max-width:640px){.ja-partner{grid-template-columns:1fr}.ja-photo{min-height:170px}}
    
/* ===== block 10 (was body, 2488 chars) ===== */

  .ja-menu{--ja-orange:#F07C1F;--ja-navy:#12264E;--ja-bg:#FFF7EF;--ja-card:#FFFFFF;--ja-text:#12264E;--ja-muted:#5B6B85;--ja-line:#F1E6D8;--ja-pill:#FFF1E4;--ja-shadow:0 10px 30px -12px rgba(18,38,78,.20);--ja-shadow-hi:0 18px 40px -14px rgba(240,124,31,.32);--ja-radius:20px;box-sizing:border-box;max-width:1120px;margin-inline:auto;padding:clamp(18px,4vw,34px);background:var(--ja-bg);color:var(--ja-text);border-radius:calc(var(--ja-radius) + 6px)}
  .ja-menu *,.ja-menu *::before,.ja-menu *::after{box-sizing:border-box}
  :root[data-theme="dark"] .ja-menu{--ja-orange:#FF8C33;--ja-bg:#0C1730;--ja-card:#152242;--ja-text:#EAF0FB;--ja-muted:#9FB0CE;--ja-line:rgba(255,255,255,.09);--ja-pill:rgba(240,124,31,.16);--ja-shadow:0 12px 34px -14px rgba(0,0,0,.6);--ja-shadow-hi:0 18px 44px -14px rgba(0,0,0,.72)}
  .ja-menu__head{display:flex;align-items:center;gap:clamp(14px,3vw,26px);flex-wrap:wrap}
  .ja-menu__intro{flex:1 1 260px;min-width:0}
  .ja-menu__eyebrow{margin:0 0 6px;font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ja-orange)}
  .ja-menu__title{margin:0;line-height:1.02;font-weight:800;letter-spacing:-.01em;font-size:clamp(1.7rem,4.6vw,2.5rem);color:var(--ja-text);font-family:var(--f-display)}
  .ja-menu__pitch{margin:8px 0 0;max-width:46ch;font-size:1rem;color:var(--ja-muted)}
  .ja-stone{flex:0 0 auto;width:96px;overflow:hidden;background:#FDFDFB;border:1px solid rgba(18,38,78,.16);border-radius:48px 48px 14px 14px / 62px 62px 14px 14px;box-shadow:var(--ja-shadow);text-align:center;user-select:none}
  .ja-stone__cap{background:var(--ja-orange);color:#fff;padding:12px 4px 8px;font-size:.66rem;font-weight:800;letter-spacing:.12em}
  .ja-stone__dist{display:flex;flex-direction:column;gap:3px;padding:8px 6px 10px;color:#12264E;font-size:.62rem;font-weight:600;letter-spacing:.04em}
  .ja-stone__dist b{font-weight:800}
  .ja-strip{display:flex;flex-wrap:wrap;gap:8px 10px;list-style:none;margin:22px 0 26px;padding:0}
  .ja-strip li{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;font-size:.86rem;font-weight:600;color:var(--ja-text);background:var(--ja-card);border:1px solid var(--ja-line);border-radius:999px;box-shadow:var(--ja-shadow)}
  .ja-note{margin:20px 0 0;padding:16px 20px;font-size:.95rem;line-height:1.5;color:var(--ja-text);background:var(--ja-pill);border:1px solid var(--ja-line);border-radius:14px;text-align:center}
  @media (max-width:420px){.ja-menu__head{flex-direction:row}}
  
/* ===== block 11 (was body, 982 chars) ===== */

      .co-bpass{position:relative;display:flex;justify-content:space-between;align-items:stretch;gap:12px;
        background:linear-gradient(135deg,#1A237E,#303F9F);color:#fff;border-radius:16px;padding:13px 16px;margin-bottom:14px;
        box-shadow:0 14px 30px -16px rgba(26,35,126,.65)}
      .co-bpass::before{content:"🎫";position:absolute;right:12px;top:10px;opacity:.14;font-size:34px}
      .co-bpass .bp-l{min-width:0}
      .co-bpass .bp-name{display:block;font-weight:800;font-size:16px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:52vw}
      .co-bpass .bp-route{display:block;font-size:12.5px;color:#C5CAE9;margin-top:5px;font-weight:600}
      .co-bpass .bp-r{text-align:right;display:flex;flex-direction:column;justify-content:space-between;flex:none}
      .co-bpass .bp-amt{font-weight:800;font-size:18px;font-family:var(--f-code)}
      .co-bpass .bp-meta{font-size:11px;color:#C5CAE9;font-weight:600;margin-top:5px}
      
/* ===== block 12 (was body, 723 chars) ===== */

      .co-operator{display:flex;align-items:center;gap:11px;margin-top:14px;padding:11px 13px;
        background:var(--blue-50);border:1px solid var(--blue-100);border-radius:14px}
      .co-op-logo{width:38px;height:38px;border-radius:9px;object-fit:contain;background:#fff;flex:none}
      .co-op-txt{flex:1;min-width:0}
      .co-op-txt b{display:block;font-size:13.5px;font-family:var(--f-display);color:var(--ink)}
      .co-op-txt small{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}
      .co-op-txt a{color:var(--blue);font-weight:700}
      .co-op-verified{font-size:11px;font-weight:800;color:#0a6b3b;background:#d7f4e3;border-radius:999px;padding:4px 9px;white-space:nowrap;flex:none}
      
/* ===== block 13 (was body, 134477 chars) ===== */

/* ============================================================
   [CSS] v4.0 UPGRADE ADDITIONS — Bot, Landing
   ============================================================ */
/* A3 — three-dot typing bubble (replaces the plain "…") */
.ai-typing{display:flex;gap:5px;padding:12px 16px;align-items:center}
.ai-typing span{width:8px;height:8px;border-radius:50%;background:var(--blue-100,#b9cdea);animation:typingBounce 1.2s infinite}
.ai-typing span:nth-child(2){animation-delay:.2s}
.ai-typing span:nth-child(3){animation-delay:.4s}
@keyframes typingBounce{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-8px)}}
/* C3 — service card: gradient rim glow on hover (drawn INSIDE the card:
   .svc-card clips overflow, so an outset border would be invisible) */
.svc-card::after{content:'';position:absolute;inset:0;border-radius:inherit;padding:2px;pointer-events:none;
  background:conic-gradient(from 40deg,var(--blue),var(--orange),#f4a300,var(--blue));
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;
  opacity:0;transition:opacity .4s ease}
.svc-card:hover::after{opacity:1}
/* C6 — FAQ: the real defect was CLIPPING, not jank. `max-height:320px`
   silently truncates any answer taller than that (the luggage/customs one
   already is on a narrow phone), and the answer is `overflow:hidden`, so
   the missing text is invisible rather than scrollable. Raising the ceiling
   fixes that with zero layout risk.

   The blueprint asked for a `grid-template-rows: 0fr→1fr` swap instead.
   That is the nicer mechanism — it animates to the content's true height
   with no magic number — but it could not be verified here: every FAQ item
   lives under a `content-visibility:auto` section, whose subtree layout is
   skipped in this headless pane, so the open row measured 0px on the real
   page even though a synthetic copy animated correctly. Shipping an
   unverified rewrite of a working disclosure control is not worth a
   cosmetic gain; the ceiling stays, generously. */
.faq-item.open .faq-a{max-height:1400px}
/* C8 — section headings pick up the brand blue→orange gradient (scoped) */
.sec-head h2{background:linear-gradient(135deg,var(--blue-deep,#12264E) 0%,var(--blue,#2E5FA8) 60%,var(--orange,#F07C1F) 100%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;display:inline-block}
/* C1 — live journey ticker under the hero search card */
.hero-live-ticker{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted,#6b7688);margin-top:12px;justify-content:center}
.hero-live-ticker .live-dot{width:7px;height:7px;border-radius:50%;background:#4CAF50;animation:livePulse 1.5s infinite}
@keyframes livePulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.5)}}
@media (prefers-reduced-motion: reduce){.ai-typing span,.hero-live-ticker .live-dot{animation:none}}

/* ---------- [CSS] PATCH: pieces referenced by the JS renderers ---------- */
.deck-block.hide{display:none}
.admin-tabpane{animation:viewIn .3s ease both}
.badge{display:inline-block;padding:4px 11px;border-radius:999px;font-size:11.5px;font-weight:800;letter-spacing:.03em;background:var(--blue-50);color:var(--blue-800);border:1px solid var(--blue-100)}
.badge.pend{background:#FFF6E5;color:#8A5A00;border-color:#F3DFAE}
.badge.ok{background:#E9F8EF;color:#0F7A3D;border-color:#BFE8CF}
.badge.bad{background:#FDEDED;color:#B02A2A;border-color:#F2C6C6}
.pax-table{width:100%;border-collapse:collapse;margin:14px 0 6px;font-size:13.5px}
.pax-table th{background:var(--blue-50);color:var(--blue-800);text-align:left;padding:9px 12px;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase}
.pax-table td{padding:9px 12px;border-bottom:1px solid var(--line)}
.pax-table tr td:first-child{font-family:var(--f-code);font-weight:700}
.msg-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px 18px;margin-bottom:12px}
.msg-card .msg-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.msg-card .msg-head small{margin-left:auto;color:var(--muted)}
.msg-card p{font-size:14px;margin-bottom:8px}
.msg-card > small{color:var(--muted)}
.rt-active{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--blue-800);cursor:pointer}
.rt-active input{width:17px;height:17px;accent-color:var(--ok)}
.bc-time .dur.route-dash{height:2px}

/* ---------- [CSS] WOMEN SAFETY + SOS — floating FAB, emergency modal, safety strips ---------- */
.sos-fab{position:fixed;right:16px;bottom:24px;z-index:90;width:56px;height:56px;border-radius:50%;border:2px solid #fff;background:#D32F2F;color:#fff;font-size:23px;line-height:1;display:none;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 20px rgba(211,47,47,.45);transition:transform .2s ease}
.sos-fab.show{display:flex}
.sos-fab:hover{transform:scale(1.06)}
.sos-fab:active{transform:scale(.92)}
@keyframes sosPulse{0%,100%{box-shadow:0 6px 20px rgba(211,47,47,.45),0 0 0 0 rgba(211,47,47,.35)}50%{box-shadow:0 6px 20px rgba(211,47,47,.45),0 0 0 12px rgba(211,47,47,0)}}
@media (prefers-reduced-motion: no-preference){.sos-fab.show{animation:sosPulse 2s ease infinite}}
@media (max-width:760px){.sos-fab{bottom:calc(76px + env(safe-area-inset-bottom))}}
.sos-btn{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;margin-bottom:9px;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:14.5px;font-weight:700;cursor:pointer;text-decoration:none;text-align:left;font-family:inherit;transition:transform .15s ease,box-shadow .15s ease}
.sos-btn:hover{box-shadow:var(--shadow-sm)}
.sos-btn:active{transform:scale(.97)}
.sos-btn .si{font-size:21px;flex:0 0 auto}
.sos-btn small{display:block;font-weight:500;color:var(--muted);font-size:11.5px;line-height:1.45}
.sos-btn.call{border-left:4px solid #D32F2F}
.women-safe-strip{margin-top:12px;padding:10px 14px;border:1px solid var(--line);border-left:4px solid #E91E63;background:rgba(233,30,99,.06);border-radius:0 12px 12px 0;font-size:12.5px;line-height:1.55;color:var(--ink)}
:root[data-theme="dark"] .women-safe-strip{background:rgba(233,30,99,.12)}
.safety-ribbon{display:flex;align-items:center;gap:14px;margin-top:20px;padding:14px 18px;border:1px solid var(--line);border-left:5px solid #E91E63;border-radius:14px;background:var(--card);box-shadow:var(--shadow-sm)}
:root[data-theme="dark"] .safety-ribbon,:root[data-theme="dark"] .sos-btn{background:var(--card);border-color:var(--line);color:var(--ink)}
:root[data-theme="dark"] .sos-btn.call{border-left-color:#E57373}
@media print{.sos-fab{display:none!important}}

/* ---------- [CSS] AI ASSISTANT — floating chat FAB (bottom-left) + glass panel ---------- */
.ai-fab{position:fixed;left:16px;bottom:24px;z-index:90;width:52px;height:52px;border-radius:50%;border:2px solid #fff;background:linear-gradient(135deg,var(--blue,#1A3A6A),#F07C1F);color:#fff;font-size:24px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 20px rgba(26,58,106,.4);transition:transform .2s ease}
.ai-fab:hover{transform:scale(1.08)}
.ai-fab:active{transform:scale(.92)}
@media (max-width:760px){.ai-fab{bottom:calc(76px + env(safe-area-inset-bottom))}}
.ai-panel{position:fixed;left:16px;bottom:88px;z-index:96;width:min(345px,calc(100vw - 24px));height:min(480px,62vh);display:none;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:0 18px 50px rgba(10,20,40,.25);overflow:hidden;backdrop-filter:blur(8px)}
.ai-panel.open{display:flex}
@media (prefers-reduced-motion: no-preference){.ai-panel.open{animation:sheetUp .28s var(--ease)}}
@media (max-width:760px){.ai-panel{bottom:calc(140px + env(safe-area-inset-bottom))}}
:root[data-theme="dark"] .ai-panel{box-shadow:0 18px 50px rgba(0,0,0,.6)}
.ai-head{display:flex;align-items:center;gap:10px;padding:12px 14px;background:linear-gradient(120deg,var(--blue,#1A3A6A),#27599e);color:#fff}
.ai-head b{font-family:var(--f-display);font-size:14.5px;display:block;line-height:1.2}
.ai-head small{font-size:11px;opacity:.8}
.ai-ava{font-size:24px}
.ai-head select{border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.12);color:#fff;border-radius:9px;font-size:12px;padding:4px 6px;font-weight:700}
.ai-head select option{color:#14243F;background:#fff}
.ai-close{background:none;border:none;color:#fff;font-size:15px;cursor:pointer;padding:6px;opacity:.85}
.ai-close:hover{opacity:1}
.ai-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:9px;background:var(--bg,#F4F7FC)}
:root[data-theme="dark"] .ai-msgs{background:var(--blue-deep)}
.ai-msg{max-width:86%;padding:9px 13px;border-radius:15px;font-size:13.5px;line-height:1.55;word-break:break-word}
.ai-msg.bot{align-self:flex-start;background:var(--card);border:1px solid var(--line);color:var(--ink);border-bottom-left-radius:5px}
.ai-msg.user{align-self:flex-end;background:var(--blue,#1A3A6A);color:#fff;border-bottom-right-radius:5px}
.ai-msg a{color:var(--orange);font-weight:700}
.ai-chips{display:flex;gap:6px;overflow-x:auto;padding:8px 12px;border-top:1px solid var(--line);background:var(--card);scrollbar-width:none}
.ai-chips::-webkit-scrollbar{display:none}
.ai-chip{flex:0 0 auto;padding:6px 12px;border-radius:999px;border:1px solid var(--blue-100);background:var(--blue-50);color:var(--blue-800);font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}
.ai-chip:active{transform:scale(.95)}
.ai-wa-cta{display:inline-block;margin-top:4px;padding:9px 15px;border-radius:11px;background:#25D366;color:#fff;font-weight:800;font-size:13px;text-decoration:none;box-shadow:0 4px 12px rgba(37,211,102,.35)}
.ai-wa-cta:hover{filter:brightness(1.05)}
.ai-wa-cta:active{transform:scale(.96)}
.ai-inrow{display:flex;gap:7px;padding:10px 12px;border-top:1px solid var(--line);background:var(--card)}
.ai-inrow input{flex:1;min-width:0;border:1.5px solid var(--line);border-radius:12px;padding:9px 12px;font-size:13.5px;background:var(--bg,#FBFCFE);color:var(--ink)}
.ai-inrow input:focus{outline:none;border-color:var(--blue-100)}
.ai-mic,.ai-send{flex:0 0 40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--blue-50);color:var(--blue-800);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.ai-send{background:var(--orange);border-color:var(--orange);color:#fff}
.ai-mic.listening{background:#D32F2F;border-color:#D32F2F;color:#fff}
@media (prefers-reduced-motion: no-preference){.ai-mic.listening{animation:sosPulse 1.4s ease infinite}}
.ai-typing{align-self:flex-start;font-size:12px;color:var(--muted);padding:2px 6px}
/* "Chat with us" — the human escape hatch under the assistant's input.
   WhatsApp green so it reads as WhatsApp and not as another bot control. */
.ai-wa{display:flex;align-items:center;gap:10px;margin:0 10px 10px;padding:9px 12px;
  border-radius:12px;text-decoration:none;background:#25D366;color:#06301A;
  min-height:44px;touch-action:manipulation;
  box-shadow:0 3px 12px rgba(37,211,102,.28);
  transition:transform .15s ease,box-shadow .2s ease}
.ai-wa:hover,.ai-wa:focus-visible{transform:translateY(-1px);box-shadow:0 6px 18px rgba(37,211,102,.4)}
.ai-wa:active{transform:scale(.985)}
.ai-wa-ic{font-size:19px;line-height:1;flex:0 0 auto}
.ai-wa-txt{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.ai-wa-txt b{font-size:13px;font-weight:800}
.ai-wa-txt small{font-size:11px;opacity:.78;font-weight:600}
.ai-wa-go{flex:0 0 auto;font-weight:900;font-size:15px;opacity:.75}
@media print{.ai-fab,.ai-panel,.ai-wa{display:none!important}}

/* ---------- [CSS] 26. DARK MODE — token overrides on data-theme ---------- */
:root{--ease:cubic-bezier(.4,0,.2,1)}   /* standard easing used by new components */
:root[data-theme="dark"]{
  --bg:#0D1526; --card:#16203A; --ink:#E7EEFA; --muted:#93A5C4; --line:#26334F;
  --blue-50:#1A2743; --blue-100:#243758; --blue-deep:#0A1122; --blue-800:#9FBCE8;
  --orange-100:#3A2A18;
  --shadow-sm:0 1px 2px rgba(0,0,0,.4), 0 4px 14px rgba(0,0,0,.35);
  --shadow-md:0 8px 30px rgba(0,0,0,.5);
  --shadow-lg:0 18px 50px rgba(0,0,0,.6);
}
:root[data-theme="dark"] body{background:var(--bg);color:var(--ink)}
:root[data-theme="dark"] .nav{background:rgba(13,21,38,.86)}
:root[data-theme="dark"] .search-card,:root[data-theme="dark"] .bus-card,:root[data-theme="dark"] .seat-panel,
:root[data-theme="dark"] .sum-card,:root[data-theme="dark"] .co-card,:root[data-theme="dark"] .c-card,
:root[data-theme="dark"] .t-badge,:root[data-theme="dark"] .svc-card,:root[data-theme="dark"] .flag-card,
:root[data-theme="dark"] .fact,:root[data-theme="dark"] .faq-item,:root[data-theme="dark"] .mybk-card,
:root[data-theme="dark"] .my-hello,:root[data-theme="dark"] .msg-card,:root[data-theme="dark"] .rt-card,
:root[data-theme="dark"] .status-card,:root[data-theme="dark"] .empty-state,:root[data-theme="dark"] .admin-gate,
:root[data-theme="dark"] .shg-modal .m-box,:root[data-theme="dark"] .astat,:root[data-theme="dark"] .intl-badge,
:root[data-theme="dark"] .hamburger,:root[data-theme="dark"] .mobile-menu,:root[data-theme="dark"] .qr-box{
  background:var(--card);border-color:var(--line);color:var(--ink)}
:root[data-theme="dark"] .s-field select,:root[data-theme="dark"] .s-field input,
:root[data-theme="dark"] .field input,:root[data-theme="dark"] .field select,:root[data-theme="dark"] .field textarea,
:root[data-theme="dark"] .pax-row input,:root[data-theme="dark"] .pax-row select,
:root[data-theme="dark"] .adm-toolbar input,:root[data-theme="dark"] .adm-toolbar select{
  background:var(--blue-50);border-color:var(--line);color:var(--ink)}
:root[data-theme="dark"] .btn-ghost{background:var(--card);color:var(--ink);border-color:var(--line)}
:root[data-theme="dark"] .seat{background:var(--card);color:var(--blue-800);border-color:#3B4E75}
:root[data-theme="dark"] .seat.bkd{background:#22304E;border-color:#22304E;color:#5A6C8F}
:root[data-theme="dark"] .seat.sel{background:var(--orange);color:#fff}
:root[data-theme="dark"] .bus-frame{background:linear-gradient(180deg,#131C33,#0F1830);box-shadow:inset 0 0 0 4px var(--card),var(--shadow-sm)}
:root[data-theme="dark"] .section.alt{background:var(--card)}
:root[data-theme="dark"] .story{background:linear-gradient(180deg,var(--card),var(--bg))}
:root[data-theme="dark"] .story-copy p,:root[data-theme="dark"] .about-copy p{color:#AFC0DD}
:root[data-theme="dark"] .about-copy .quote{background:var(--card);color:var(--ink)}
:root[data-theme="dark"] .pay-card{background:linear-gradient(160deg,var(--card),#20293F);border-color:#3A3524}
:root[data-theme="dark"] .pay-amt,:root[data-theme="dark"] .pm-tab,:root[data-theme="dark"] .proof-tab{background:var(--card);color:var(--muted);border-color:var(--line)}
:root[data-theme="dark"] .pm-tab.on{background:#2A2214;color:var(--ink);border-color:var(--orange)}
:root[data-theme="dark"] .skel{background:linear-gradient(90deg,#1D2A47 25%,#26334F 45%,#1D2A47 65%);background-size:200% 100%}
:root[data-theme="dark"] .bottom-nav{background:rgba(13,21,38,.96);border-color:var(--line)}
:root[data-theme="dark"] .table-wrap table,:root[data-theme="dark"] table.admin td{border-color:var(--line)}
:root[data-theme="dark"] .qr-box img{background:#fff;padding:6px;border-radius:10px}
:root[data-theme="dark"] .astat{background:linear-gradient(145deg,rgba(10,14,26,.95),rgba(22,32,58,.9));border-color:rgba(80,150,255,.12);backdrop-filter:blur(12px)}
:root[data-theme="dark"] .astat:hover{box-shadow:0 8px 24px rgba(80,150,255,.08)}
:root[data-theme="dark"] .admin-gate{background:#0A0E1A;border-color:#1A2240}
:root[data-theme="dark"] .admin-gate .lock{background:linear-gradient(135deg,#1A2240,#0A0E1A);box-shadow:0 0 20px rgba(80,150,255,.2)}
:root[data-theme="dark"] #admBhagwanBanner{background:linear-gradient(135deg,rgba(10,14,26,.9),rgba(22,32,58,.8));border-color:#1A2240}
:root[data-theme="dark"] .adm-toolbar input,:root[data-theme="dark"] .adm-toolbar select{background:#0A0E1A;border-color:#1A2240}
:root[data-theme="dark"] .adm-toolbar input:focus,:root[data-theme="dark"] .adm-toolbar select:focus{border-color:rgb(80,150,255);box-shadow:0 0 0 3px rgba(80,150,255,.15)}
:root[data-theme="dark"] .trip-toggle{background:var(--blue-50);border-color:var(--line)}
:root[data-theme="dark"] .notice-bar{background:linear-gradient(92deg,#33260F,#2B1F0C 55%,#241A0A);border-color:#4A3A1A;border-left-color:#C9A227;color:#EBC98A}
:root[data-theme="dark"] .notice-bar button{color:#EBC98A}
:root[data-theme="dark"] .wb-note{background:#241D0F;border-color:#4A3A1A;color:var(--ink)}
:root[data-theme="dark"] .tnc-box{background:var(--blue-50);border-color:var(--line)}
.theme-btn{width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:15px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);transition:transform .25s var(--ease)}
.theme-btn:hover{transform:rotate(20deg)}
/* Part-8 palette picker — the 7 day-palettes as a manual theme chooser */
.palette-btn{width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:15px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);cursor:pointer;transition:transform .25s var(--ease)}
.palette-btn:hover{transform:rotate(-20deg)}
.palette-wrap{position:relative;display:inline-flex}
.palette-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:130;display:none;grid-template-columns:repeat(4,1fr);gap:8px;padding:12px;width:242px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 44px rgba(10,20,40,.28)}
.palette-pop.open{display:grid}
.pal-sw{cursor:pointer;border:2px solid transparent;border-radius:10px;padding:6px 2px 5px;display:flex;flex-direction:column;align-items:center;gap:5px;background:none;font-size:10px;font-weight:700;color:var(--ink)}
.pal-sw:hover{background:var(--blue-50)}
.pal-sw.on{border-color:var(--orange)}
.pal-dot{width:26px;height:26px;border-radius:50%;border:1px solid rgba(0,0,0,.12);box-shadow:0 2px 6px rgba(0,0,0,.15)}
.pal-auto{grid-column:1/-1;flex-direction:row;gap:8px;justify-content:center;border-top:1px solid var(--line);padding-top:9px;margin-top:3px}
:root[data-theme="dark"] .pal-sw:hover{background:rgba(255,255,255,.06)}

/* ---------- [CSS] 27. AGENT DASHBOARD ---------- */
.glass{background:rgba(255,255,255,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line)}
:root[data-theme="dark"] .glass{background:rgba(22,32,58,.72)}
.ag-code-card{display:flex;gap:22px;align-items:center;justify-content:space-between;border-radius:22px;padding:24px 26px;box-shadow:var(--shadow-md);margin-bottom:18px;flex-wrap:wrap;background:linear-gradient(145deg,rgba(255,255,255,.95),rgba(245,247,252,.98));backdrop-filter:blur(12px);border:1px solid rgba(46,95,168,.08);transition:transform var(--dur-base) var(--ease-standard),box-shadow var(--dur-base) var(--ease-standard)}
.ag-code-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.ag-code-card small{font-family:var(--f-code);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.ag-code{font-family:var(--f-code);font-weight:700;font-size:clamp(26px,4vw,38px);letter-spacing:.14em;color:var(--orange-600);margin:2px 0}
.ag-share{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.ag-qr{text-align:center;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 14px}
.ag-qr img{border-radius:8px;margin-bottom:6px;background:#fff;padding:4px}
.ag-qr small{display:block;font-size:10.5px}
.ag-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:18px}
.ag-stats .astat{background:linear-gradient(145deg,rgba(255,255,255,.9),rgba(245,247,252,.95));backdrop-filter:blur(12px);border:1px solid rgba(46,95,168,.12);border-radius:18px;padding:18px 14px;text-align:center;transition:transform var(--dur-base) var(--ease-standard),box-shadow var(--dur-base) var(--ease-standard)}
.ag-stats .astat:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(46,95,168,.12)}
.ag-stats .astat b{display:block;font-family:var(--f-display);font-size:22px;margin-bottom:4px;background:linear-gradient(135deg,var(--blue),var(--orange));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.ag-stats .astat span{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.ag-badge{display:inline-flex;align-items:center;gap:5px;padding:6px 13px;border-radius:999px;font-size:12.5px;font-weight:800;background:var(--blue-50);color:var(--muted);border:1px dashed var(--line)}
.ag-badge.won{background:var(--orange-100);color:var(--orange-600);border:1px solid #F6D3AE}
.lead-row{display:flex;align-items:center;gap:12px;padding:9px 10px;border-bottom:1px dashed var(--line);font-size:14px}
.lead-row:last-child{border-bottom:none}
.lead-row.me{background:var(--blue-50);border-radius:10px}
.lead-row .lr-rank{width:26px;height:26px;flex:none;border-radius:50%;background:var(--blue-50);color:var(--blue-800);font-family:var(--f-code);font-size:12.5px;font-weight:700;display:flex;align-items:center;justify-content:center}
.lead-row:nth-child(1) .lr-rank{background:#FFE9B8;color:#8A5A00}
.lead-row .lr-name{flex:1}
.lead-row .lr-n{font-family:var(--f-code);font-weight:700;color:var(--ok)}
@media (max-width:900px){.ag-stats{grid-template-columns:repeat(3,1fr)}}
@media (max-width:560px){.ag-stats{grid-template-columns:1fr 1fr}.ag-code-card{justify-content:center;text-align:center}.ag-share{justify-content:center}}

/* ---------- [CSS] 28. ADMIN ANALYTICS, AGENTS & AUDIT ---------- */
.adm-charts{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:16px 0 6px}
.chart-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px 16px;overflow-x:auto}
.chart-card b{display:block;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-family:var(--f-code)}
.audit-row{display:flex;gap:12px;align-items:baseline;padding:10px 12px;border-bottom:1px dashed var(--line);font-size:13.5px;flex-wrap:wrap}
.audit-row:nth-child(odd){background:var(--blue-50);border-radius:10px}
.audit-row .audit-ts{font-family:var(--f-code);font-size:11.5px;color:var(--muted);flex:none;min-width:120px}
.audit-row b{flex:none}
.audit-row span:last-child{color:var(--muted)}

/* ---------- [CSS] 29. LOYALTY ---------- */
.loy-card small{font-family:var(--f-code);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.loy-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.loy-n{font-family:var(--f-display);font-size:28px;display:block}
.loy-n span{font-size:13px;color:var(--muted);font-family:var(--f-body)}
.loy-tier{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:999px;font-weight:800;font-size:13.5px;background:linear-gradient(135deg,var(--orange-100),#FFF3E2);color:#8A5A00;border:1px solid #F3D9B0}
:root[data-theme="dark"] .loy-tier{background:linear-gradient(135deg,#33260F,#2B1F0C);color:#EBC98A;border-color:#4A3A1A}
.loy-bar{height:8px;border-radius:4px;background:var(--blue-50);overflow:hidden;margin:6px 0 4px}
.loy-bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--orange),var(--orange-600));transition:width .6s var(--ease)}
.loy-use{display:flex;gap:9px;align-items:center;background:var(--blue-50);border:1.5px dashed var(--blue-100);border-radius:12px;padding:10px 12px;font-size:13px;font-weight:700;margin:10px 0 4px;cursor:pointer}
.loy-use input{width:18px;height:18px;accent-color:var(--orange);flex:none}

/* ---------- [CSS] 30. TRACK MY BUS ---------- */
.trk-map{width:100%;height:auto;display:block;background:var(--card);border:1px solid var(--line);border-radius:16px}

/* ---------- [CSS] 31. TICKET EXTRAS (distance / weather / checklist) ---------- */
.dist-box{margin:12px 0 0}
.wx-box{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--blue-50);border:1px solid var(--blue-100);border-radius:12px;padding:10px 14px;margin:12px 0 0}
.wx-box small{font-size:12px;color:var(--muted)}
.wx-box b{font-size:14.5px;white-space:nowrap}
.cl-box{background:var(--card);border:1.5px dashed var(--line);border-radius:14px;padding:12px 16px;margin:12px 0 0;font-size:13.5px}
.cl-box summary{cursor:pointer;font-weight:800}
.cl-box ul{margin:10px 0 2px 20px}
.cl-box li{padding:3px 0}

/* ---------- [CSS] 32. POLISH & PERFORMANCE PASS ----------
   Consistent glass treatment where it fits, standardized easing,
   smooth momentum scrolling; animations stay transform/opacity-only. */
.shg-modal .m-box{background:rgba(255,255,255,.9);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
:root[data-theme="dark"] .shg-modal .m-box{background:rgba(22,32,58,.92)}
.sum-card,.pay-card{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.table-wrap,.bus-frame,.chart-card{-webkit-overflow-scrolling:touch}
.view.active{animation-duration:.32s}
.reveal{transition-duration:.55s,.55s;transition-timing-function:var(--ease),var(--ease)}
.btn{transition-timing-function:var(--ease)}
.bus-card,.svc-card,.t-badge,.flag-card,.mybk-card,.faq-item,.seat{transition-timing-function:var(--ease)}
.atab,.pm-tab,.proof-tab,.deck-tab,.trip-pill{transition:background .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease),box-shadow .18s var(--ease)}
.admin-tabpane{animation-duration:.24s}
@media (max-width:760px){
  .theme-btn{width:34px;height:34px}
  .dist-box .btn,.wx-box{min-height:44px}
}
@media (max-width:860px){.adm-charts{grid-template-columns:1fr}.astat-grid{grid-template-columns:repeat(4,1fr)}}
@media (max-width:560px){.astat-grid{grid-template-columns:1fr 1fr}}

/* ---------- [CSS] 33. PREMIUM JOURNEY TIMELINE (.jt-*) ---------- */
.jt{display:flex;flex-direction:column;margin-top:2px}
.jt-item{display:flex;gap:12px;align-items:stretch}
.jt-rail{display:flex;flex-direction:column;align-items:center;flex:none;width:28px}
.jt-node{width:27px;height:27px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;font-family:var(--f-code);background:var(--blue-50);color:var(--muted);border:2px solid var(--line)}
.jt-item.done .jt-node{background:var(--ok);border-color:var(--ok);color:#fff}
.jt-item.current .jt-node{background:var(--orange);border-color:var(--orange);color:#fff;font-size:14px;box-shadow:0 0 0 4px rgba(244,124,32,.2)}
.jt-line{flex:1;width:3px;min-height:24px;border-radius:2px;background:var(--line);margin:3px 0}
.jt-body{flex:1;min-width:0;padding:3px 0 16px}
.jt-item:last-child .jt-body{padding-bottom:4px}
.jt-head{display:flex;align-items:baseline;gap:8px 10px;flex-wrap:wrap}
.jt-city{font-family:var(--f-display);font-size:14.5px;color:var(--ink)}
.jt-item.future .jt-city{color:var(--muted);font-weight:600}
.jt-meta{margin-left:auto;display:flex;gap:8px;align-items:baseline;white-space:nowrap}
.jt-km{font-family:var(--f-code);font-size:11px;color:var(--muted)}
.jt-time{font-family:var(--f-code);font-size:12px;font-weight:700;color:var(--ink);background:var(--blue-50);border:1px solid var(--line);border-radius:8px;padding:1px 8px}
.jt-day{color:var(--orange-600);font-weight:800;font-size:10px}
.jt-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.jt-chip{font-size:10.5px;font-weight:700;background:var(--blue-50);border:1px solid var(--blue-100);color:var(--muted);border-radius:999px;padding:2.5px 9px;white-space:nowrap}
.jt-item.done .jt-chip{opacity:.65}
.jt-eta{display:inline-block;margin-top:8px;font-size:12.5px;font-weight:800;color:var(--orange-600);background:var(--orange-100);border:1px dashed var(--orange-600);border-radius:10px;padding:5px 11px}
.jt-eta small{font-weight:600;color:var(--muted)}
.jt-note{margin-top:10px;font-size:11.5px;color:var(--muted);border-top:1px dashed var(--line);padding-top:8px}
.jt-lunch-badge{display:flex;align-items:baseline;gap:8px;margin-top:7px;font-size:12.5px;font-weight:800;color:#B45309;background:linear-gradient(135deg,#FFF3E0,#FFE4B8);border:1.5px solid #FF9800;border-radius:10px;padding:6px 12px;width:max-content;max-width:100%}
.jt-lunch-badge span{font-weight:600;color:#9A5B00;white-space:nowrap}
:root[data-theme="dark"] .jt-lunch-badge{background:linear-gradient(135deg,#3A2A12,#4A3418);color:#FFC876;border-color:#B4690A}
:root[data-theme="dark"] .jt-lunch-badge span{color:#E0A968}
.jt-item.hl-stop{animation:jtHighlight 1.8s var(--ease)}
@keyframes jtHighlight{0%,100%{background:transparent}20%{background:rgba(255,152,0,.14)}}
.trk-stop-label:hover,.trk-stop-label:focus{text-decoration:underline}
.trk-stop-dot{transition:r .15s var(--ease)}
.trk-stop-dot:hover{cursor:pointer}
:root[data-theme="dark"] .jt-eta{color:#F5B678}
@media (max-width:560px){.jt-meta{gap:6px}.jt-time{font-size:11px}.jt-city{font-size:13.5px}}
@media (prefers-reduced-motion: no-preference){
  .jt-item{animation:jtIn .45s var(--ease) both;animation-delay:calc(var(--jt-i,0)*45ms)}
  .jt-item.current .jt-node{animation:jtPulse 1.7s ease-in-out infinite}
}
@keyframes jtIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes jtPulse{0%,100%{box-shadow:0 0 0 3px rgba(244,124,32,.28)}50%{box-shadow:0 0 0 9px rgba(244,124,32,.04)}}

/* ---------- [CSS] 34. CABIN INTELLIGENCE — VIP PRIVATE & SHARING THEMES ----------
   .premium-mode is set on #view-seats / #view-checkout when Flow bookingType
   is 'private' (sleeper coaches only); .sharing-mode when 'sharing'.
   Gold accent: #D4AF37 · headings #8a6d1d (light) / #e8c766 (dark). */
.vip-badge{display:none;align-items:center;gap:6px;width:max-content;font-size:11px;font-weight:900;letter-spacing:1.2px;color:#8a6d1d;background:linear-gradient(135deg,#FBF3DC,#F3E3B4);border:1.5px solid #D4AF37;border-radius:999px;padding:4px 12px;margin-bottom:10px;white-space:nowrap}
.premium-mode .vip-badge{display:inline-flex}
.vip-priority-chip{display:none;gap:9px;align-items:flex-start;font-size:12.5px;font-weight:800;color:#8a6d1d;background:linear-gradient(135deg,#FDF9EC,#F9EFD2);border:1.5px dashed #D4AF37;border-radius:12px;padding:9px 13px;margin-top:12px}
.vip-priority-chip small{display:block;font-weight:600;font-size:11px;color:var(--muted);margin-top:2px}
.premium-mode .vip-priority-chip{display:flex}
#view-seats.premium-mode .sum-card,#view-checkout.premium-mode .pay-card{border:1.5px solid #D4AF37;box-shadow:0 0 0 4px rgba(212,175,55,.12),0 14px 34px rgba(212,175,55,.20)}
#view-seats.premium-mode .sum-card h3,#view-checkout.premium-mode .pay-card h3{color:#8a6d1d}
:root[data-theme="dark"] #view-seats.premium-mode .sum-card h3,:root[data-theme="dark"] #view-checkout.premium-mode .pay-card h3{color:#e8c766}
:root[data-theme="dark"] .vip-badge{color:#e8c766;background:linear-gradient(135deg,rgba(212,175,55,.16),rgba(212,175,55,.08))}
:root[data-theme="dark"] .vip-priority-chip{color:#e8c766;background:linear-gradient(135deg,rgba(212,175,55,.10),rgba(212,175,55,.05))}
:root[data-theme="dark"] #view-seats.premium-mode .sum-card,:root[data-theme="dark"] #view-checkout.premium-mode .pay-card{box-shadow:0 0 0 4px rgba(212,175,55,.10),0 14px 34px rgba(0,0,0,.45)}
/* Sharing mode — subtle blue occupancy emphasis on the seats summary */
#view-seats.sharing-mode .sum-card{border-top:3px solid var(--blue)}
/* Ticket / status page: VIP gold band + sharing chip (under the status band) */
.vip-band{padding:12px 18px;text-align:center;font-weight:900;font-size:14px;letter-spacing:.4px;color:#5c4708;background:linear-gradient(135deg,#F5E6BC,#E9CE7E,#F5E6BC);border-bottom:1.5px solid #D4AF37}
.vip-band small{display:block;font-weight:600;font-size:11.5px;letter-spacing:0;color:#6d5a1a;margin-top:2px}
:root[data-theme="dark"] .vip-band{background:linear-gradient(135deg,#3A3115,#57471C,#3A3115);color:#F0D98A;border-bottom-color:#8a6d1d}
:root[data-theme="dark"] .vip-band small{color:#CBB670}
.share-band{padding:10px 18px;text-align:center;background:var(--blue-50);border-bottom:1px solid var(--blue-100)}
.share-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:var(--blue);background:var(--card);border:1.5px solid var(--blue-100);border-radius:999px;padding:4px 12px}
:root[data-theme="dark"] .share-chip{color:#7FB2FF}
@media (prefers-reduced-motion: no-preference){
  .premium-mode .vip-badge{animation:vipGlow 2.4s ease-in-out infinite}
}
@keyframes vipGlow{0%,100%{box-shadow:0 0 0 0 rgba(212,175,55,.35)}50%{box-shadow:0 0 0 6px rgba(212,175,55,0)}}

/* ---------- [CSS] 35. LUXURY BOARDING PASS (confirmed tickets) ----------
   .bp-band   : gradient header strip inside .status-card (confirmed only)
   .bp-perf   : perforation divider with punched notch circles before the QR stub
   .bp-barcode: decorative code-128-style barcode under the QR (barcodeSVG)
   .bp-ribbon : gold VIP corner ribbon for private-cabin bookings */
.bp-band{position:relative;overflow:hidden;padding:14px 30px 16px;color:#fff;background:linear-gradient(115deg,var(--blue-deep) 0%,var(--blue) 52%,var(--orange) 100%)}
.bp-band-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap}
.bp-title{font-family:var(--f-display);font-weight:800;font-size:12.5px;letter-spacing:.14em;text-transform:uppercase}
.bp-id{font-family:var(--f-code);font-weight:700;font-size:13px;color:#FFE2C2;margin-left:auto;text-align:right}
.bp-codes{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:10px}
.bp-code{font-family:var(--f-display);font-weight:900;font-size:34px;line-height:1;letter-spacing:.05em;text-shadow:0 1px 3px rgba(0,0,0,.28)}
.bp-code small{display:block;font-size:10px;font-weight:700;letter-spacing:.08em;color:rgba(255,255,255,.85);margin-top:4px;text-transform:uppercase}
.bp-code:last-child{text-align:right}
.bp-arrow{flex:1;display:flex;align-items:center;gap:7px;max-width:230px;min-width:64px;margin:0 auto}
.bp-arrow .ln{flex:1;height:0;border-top:2px dashed rgba(255,255,255,.55);position:relative}
.bp-arrow .ln.arr::after{content:"";position:absolute;right:-2px;top:-6px;border:5px solid transparent;border-left:8px solid rgba(255,255,255,.92)}
.bp-arrow .pl{font-size:16px;line-height:1}
.bp-ribbon{position:absolute;top:15px;right:-36px;transform:rotate(45deg);background:linear-gradient(135deg,#F5E6BC,#D4AF37 45%,#F5E6BC);color:#5c4708;font-weight:900;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;padding:4px 42px;box-shadow:0 2px 6px rgba(0,0,0,.28);pointer-events:none;white-space:nowrap}
.bp-band.bp-vip .bp-band-top{padding-right:62px}
.bp-perf{position:relative;height:0;border-top:2px dashed var(--line);margin:24px -30px 20px}
.bp-perf::before,.bp-perf::after{content:"";position:absolute;top:-9px;width:16px;height:16px;border-radius:50%;background:var(--bg);border:1px solid var(--line)}
.bp-perf::before{left:-8px}
.bp-perf::after{right:-8px}
.bp-barcode{display:flex;flex-direction:column;align-items:center;gap:5px;margin:0 0 16px;padding:12px 14px 10px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:14px}
.bp-barcode .bp-bars{display:block;width:100%;max-width:320px;height:44px}
.bp-bc-id{font-family:var(--f-code);font-size:12px;letter-spacing:.32em;text-indent:.32em;color:var(--muted)}
:root[data-theme="dark"] .bp-ribbon{background:linear-gradient(135deg,#57471C,#D4AF37 45%,#57471C);color:#2b2107}
@media (max-width:760px){
  .bp-band{padding:12px 18px 14px}
  .bp-code{font-size:26px}
  .bp-perf{margin:20px -18px 16px}
}
@media print{
  .bp-band,.bp-ribbon{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .bp-ribbon{box-shadow:none}
  .bp-perf::before,.bp-perf::after{background:#fff}
  .bp-barcode{border-color:#B9C7DE}
}

/* ---------- [CSS] 36. NOTIFICATION CENTER — navbar bell, unread badge,
   slide-down panel. Data lives in DB.notifications (see [JS] NOTIFICATION
   CENTER in the last script block). All colours via theme tokens → dark
   mode works automatically. ---------- */
.nav-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);cursor:pointer;font-size:17px;line-height:1;margin:0 4px;padding:0;transition:box-shadow .18s var(--ease),border-color .18s var(--ease)}
.nav-bell:hover{border-color:var(--blue-100);box-shadow:0 4px 14px rgba(26,58,106,.14)}
.notif-badge{position:absolute;top:-6px;right:-6px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--bad);color:#fff;font-size:10px;font-weight:800;font-family:var(--f-code);display:flex;align-items:center;justify-content:center;border:2px solid var(--card);box-sizing:content-box}
.mm-notif-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--bad);color:#fff;font-size:11px;font-weight:800;font-family:var(--f-code);margin-left:6px;vertical-align:middle}
.notif-panel{position:fixed;top:84px;right:16px;width:min(380px,calc(100vw - 20px));max-height:70vh;overflow-y:auto;background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 50px rgba(10,20,40,.20);z-index:95;display:none}
.notif-panel.open{display:block}
:root[data-theme="dark"] .notif-panel{box-shadow:0 18px 50px rgba(0,0,0,.55)}
.notif-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--card);z-index:1;border-radius:16px 16px 0 0}
.notif-head b{font-family:var(--f-display);font-size:14.5px;color:var(--ink)}
.notif-mark{background:none;border:none;color:var(--blue);font-weight:700;font-size:12px;cursor:pointer;padding:4px 2px;white-space:nowrap}
:root[data-theme="dark"] .notif-mark{color:#7FB2FF}
.notif-item{display:flex;gap:10px;padding:12px 16px;border-bottom:1px dashed var(--line);align-items:flex-start}
.notif-item:last-child{border-bottom:none}
.notif-item.unread{background:var(--blue-50)}
.notif-ico{font-size:20px;line-height:1.2;flex:none}
.notif-item b{display:block;font-size:13.5px;color:var(--ink)}
.notif-item p{font-size:12.5px;color:var(--muted);margin:2px 0 0;word-break:break-word}
.notif-time{font-size:11px;color:var(--muted);font-family:var(--f-code);white-space:nowrap;flex:none;margin-left:auto;padding-top:2px}
.notif-empty{padding:34px 18px;text-align:center;color:var(--muted);font-size:13px;line-height:1.6}
.notif-empty .big{font-size:34px;margin-bottom:8px}
@media (prefers-reduced-motion: no-preference){.notif-panel.open{animation:fadeDown .22s var(--ease)}}
@media (max-width:760px){.notif-panel{top:78px;right:10px}}

/* ---------- [CSS] 37. PERF — content-visibility for long home sections.
   The hero (div.hero#top) has no .section class, and :not(#top) makes the
   exclusion explicit, so first paint above the fold is never affected. ---------- */
@supports (content-visibility:auto){
  .section:not(#top){content-visibility:auto;contain-intrinsic-size:1px 600px}
}

.seat-auto{display:block;margin:0 auto 14px;white-space:nowrap}
.seat-auto[disabled]{opacity:.5;cursor:not-allowed}

/* ---------- [CSS] 37z. MAIN-POINT FARE BOARD + LIVE FARE ---------- */
.fare-live{display:none;grid-column:1/-1;margin-top:12px;padding:12px 16px;border-radius:14px;
  background:linear-gradient(120deg,var(--blue-50),var(--orange-100));
  border:1.5px solid var(--orange-100);align-items:center;gap:14px;flex-wrap:wrap}
.fare-live.on{display:flex}
.fare-live .fl-amt{font-family:var(--f-display);font-size:26px;font-weight:900;color:var(--orange-600);line-height:1}
.fare-live .fl-npr{font-size:12.5px;color:var(--muted);font-weight:700}
.fare-live .fl-lbl{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:800}
.fare-live .fl-was{font-size:13px;color:var(--muted);text-decoration:line-through;font-weight:600}
.fare-live .fl-save{font-size:11.5px;font-weight:800;background:var(--ok);color:#fff;padding:3px 9px;border-radius:999px;
  display:inline-flex;align-items:center;gap:6px}
/* The percentage leads, the rupee amount follows — "5% OFF" is what a
   passenger compares against the counter, the rupees are the proof. */
.fare-live .fl-off{background:rgba(255,255,255,.22);padding:1px 7px;border-radius:999px;font-weight:900;letter-spacing:.02em}

/* Fare-board OFF pill. Sized to be read across a phone screen without
   shouting over the price itself, and animated on transform/opacity only so
   it costs nothing on a mid-range Android. */
.fb-off{margin-left:auto;background:linear-gradient(135deg,#F07C1F,#FF9E45);color:#fff;
  font-size:12px;font-weight:900;letter-spacing:.03em;padding:5px 13px;border-radius:999px;
  box-shadow:0 3px 12px rgba(240,124,31,.34);white-space:nowrap;
  animation:fbOffPulse 2.6s ease-in-out infinite}
@keyframes fbOffPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
@media (prefers-reduced-motion:reduce){.fb-off{animation:none}}
@media (max-width:420px){.fb-off{margin-left:0;font-size:11.5px;padding:4px 11px}}
.fare-live .fl-dir{font-size:12.5px;font-weight:700;color:var(--blue-800)}
/* Bus-count chip inside the live summary — "🚌 5 buses" for the picked pair. */
.fare-live .fl-buses{font-size:12px;font-weight:800;color:var(--blue-800);background:rgba(255,255,255,.6);
  border:1px solid var(--blue-100);padding:3px 10px;border-radius:999px;white-space:nowrap}
.fare-live .fl-buses.none{color:var(--muted);opacity:.75}

/* ---------- [CSS] SIMPLE SEARCH — direction toggle + one-town picker (2026-08-25) ----------
   The whole first decision on this one-road service: जाने / फर्किने, then which
   Gujarat town. A big two-way segmented control replaces the From/To pair. */
.dir-toggle{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
.dir-pill{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  padding:12px 10px;border-radius:16px;border:1.6px solid var(--blue-100);background:var(--blue-50);
  cursor:pointer;text-align:center;
  transition:background .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.dir-pill .dp-fl{font-size:15px;line-height:1;color:var(--blue-800)}
.dir-pill b{font-size:15px;font-weight:800;color:var(--ink)}
.dir-pill small{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.01em}
.dir-pill:hover{border-color:var(--blue);transform:translateY(-1px)}
.dir-pill.on{background:linear-gradient(135deg,var(--blue),var(--blue-800));border-color:var(--blue);
  box-shadow:0 8px 20px rgba(46,95,168,.28)}
.dir-pill.on b,.dir-pill.on small,.dir-pill.on .dp-fl{color:#fff}
@media (prefers-reduced-motion:reduce){.dir-pill{transition:none}.dir-pill:hover{transform:none}}

/* One town, one date, one big Search — no swap, no return field, no voice. */
.search-grid.simple{grid-template-columns:1.3fr 1fr auto}
.search-grid.simple .btn-search{padding:15px 30px;align-self:end;font-size:16px;font-weight:800;white-space:nowrap}
@media (max-width:760px){
  .search-grid.simple{grid-template-columns:1fr}
  .search-grid.simple .btn-search{width:100%}
}

.fareboard{background:var(--card);border:1.5px solid var(--line);border-radius:20px;padding:18px 18px 14px;
  box-shadow:0 10px 32px rgba(18,38,78,.07)}
.fb-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.fb-head h3{font-family:var(--f-display);font-size:19px;margin:0}
.fb-head small{font-size:12px;color:var(--muted);font-weight:600}
.fb-sub{font-size:12.5px;color:var(--muted);margin:0 0 14px}
.fb-dirs{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:640px){.fb-dirs{grid-template-columns:1fr}}
.fb-dir{border:1.5px solid var(--line);border-radius:16px;padding:14px;background:var(--blue-50)}
.fb-dir.back{background:var(--orange-100)}
.fb-dir-t{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.fb-dir-t b{font-size:13.5px;font-family:var(--f-display)}
.fb-price{text-align:right;line-height:1.15}
.fb-price .p{font-family:var(--f-display);font-size:24px;font-weight:900;color:var(--orange-600)}
.fb-price .n{display:block;font-size:11.5px;color:var(--muted);font-weight:700}
.fb-price .w{display:block;font-size:11.5px;color:var(--muted);text-decoration:line-through}
.fb-row{display:flex;width:100%;align-items:center;justify-content:space-between;gap:8px;padding:7px 4px;
  border:none;border-top:1px dashed var(--line);border-radius:8px;background:transparent;font:inherit;
  font-size:13px;color:inherit;text-align:left;cursor:pointer;transition:background .15s}
.fb-row:hover,.fb-row:focus-visible{background:rgba(255,255,255,.55)}
.fb-row:first-of-type{border-top:none}
.fb-row .c{font-weight:700}
.fb-row .k{font-size:11.5px;color:var(--muted);font-weight:600}
.fb-foot{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line);font-size:12px;color:var(--muted);display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.fb-chip{background:var(--blue-100);color:var(--blue-800);padding:3px 10px;border-radius:999px;font-weight:800;font-size:11.5px}

/* ---------- [CSS] 38. SPLASH SCREEN — cold-launch cinematic entry ---------- */
/* The fade is .38s, not 1s: a full second of watching a logo dissolve is a
   second the passenger cannot tap anything, and it is the last thing between
   them and the role picker. */
.splash{position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(140deg,#0E1E40 0%,var(--blue-deep) 45%,#1E3E77 100%);overflow:hidden;transition:opacity .38s cubic-bezier(.4,0,.2,1),transform .38s cubic-bezier(.4,0,.2,1),visibility .38s}
.splash.done{opacity:0;transform:scale(1.04);visibility:hidden;pointer-events:none}
.splash::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.08) 1px,transparent 1.6px);background-size:26px 26px;opacity:.5;pointer-events:none;animation:splashStars 20s linear infinite}
@keyframes splashStars{from{transform:translateY(0)}to{transform:translateY(-26px)}}
.splash-content{position:relative;z-index:1;text-align:center;padding:0 24px;max-width:460px;opacity:0;transform:translateY(20px);animation:splashContentIn .3s .04s cubic-bezier(.4,0,.2,1) forwards}
@keyframes splashContentIn{to{opacity:1;transform:none}}
.splash-motif{width:120px;height:120px;margin:0 auto 28px;position:relative;animation:splashMotifPulse 3s 1s ease-in-out infinite}
@keyframes splashMotifPulse{0%,100%{transform:scale(1);filter:drop-shadow(0 0 0 transparent)}50%{transform:scale(1.04);filter:drop-shadow(0 0 18px rgba(240,124,31,.2))}}
.splash-motif svg{width:100%;height:100%}
.splash-motif .motif-path{stroke-dasharray:800;stroke-dashoffset:800;animation:motifDraw 2.5s cubic-bezier(.4,0,.2,1) forwards}
@keyframes motifDraw{to{stroke-dashoffset:0}}
.splash-brand{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:nowrap}
/* Logo: build-in → settle, paced to land inside the real ~500ms splash floor
   (Sep-2 mobile pass). Transform + filter only, so it runs on the GPU. */
.splash-logo{width:66px;height:66px;flex:0 0 auto;object-fit:contain;opacity:0;will-change:transform,filter;
  animation:splashLogoIn .62s .04s cubic-bezier(.4,0,.2,1) forwards;
  filter:drop-shadow(0 8px 20px rgba(0,0,0,.35))}
@keyframes splashLogoIn{
  0%  {opacity:0;transform:perspective(620px) scale(.55) rotateY(-100deg)}
  14% {opacity:1;transform:perspective(620px) scale(1.07) rotateY(0deg)}
  22% {transform:perspective(620px) scale(1) rotateY(0deg);filter:drop-shadow(0 8px 20px rgba(0,0,0,.35))}
  50% {transform:perspective(620px) scale(1.04) rotateY(180deg);filter:drop-shadow(0 10px 28px rgba(255,199,120,.55))}
  78% {transform:perspective(620px) scale(1) rotateY(360deg)}
  100%{opacity:1;transform:perspective(620px) scale(1) rotateY(360deg);filter:drop-shadow(0 10px 22px rgba(0,0,0,.35))}
}
/* Company name — letter-by-letter reveal (index carried in --i). */
.splash-title .ltr{display:inline-block;opacity:0;will-change:transform,opacity;
  transform:translateY(20px) rotateX(-55deg);
  animation:splashLtrIn .26s cubic-bezier(.22,1,.36,1) forwards;
  animation-delay:calc(.05s + var(--i,0) * .013s)}
@keyframes splashLtrIn{to{opacity:1;transform:none}}
.splash-title{font-family:var(--f-display);font-size:clamp(24px,6.4vw,40px);font-weight:800;color:#fff;letter-spacing:.02em;line-height:1.05;text-align:left;opacity:0;transform:translateY(14px);transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}
.splash-title.show{opacity:1;transform:none}
.splash-title .gold{color:var(--orange)}
@media (max-width:400px){.splash-logo{width:52px;height:52px}.splash-brand{gap:11px}.splash-title{font-size:clamp(22px,7vw,32px)}}
.splash-tagline{margin-top:16px;font-size:14px;color:rgba(207,224,248,.8);letter-spacing:.08em;font-weight:600;opacity:0;transform:translateY(12px) scale(.96);transition:opacity .22s cubic-bezier(.4,0,.2,1),transform .22s cubic-bezier(.4,0,.2,1)}
.splash-tagline.show{opacity:1;transform:none}
.splash-phone{display:inline-flex;align-items:center;gap:8px;margin-top:24px;padding:10px 22px;border-radius:999px;background:rgba(255,255,255,.07);border:1px solid rgba(255,217,168,.22);color:#FFD9A8;font-family:var(--f-display);font-size:17px;font-weight:800;letter-spacing:.03em;text-decoration:none;opacity:0;transform:translateY(10px);transition:opacity .22s cubic-bezier(.4,0,.2,1),transform .22s cubic-bezier(.4,0,.2,1)}
.splash-phone.show{opacity:1;transform:none}
.splash-phone .sp-ico{font-size:16px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4))}
.splash-phone:hover{background:rgba(255,255,255,.13);border-color:rgba(255,217,168,.42);color:#fff}
.splash-skip{margin-top:24px;padding:8px 20px;border-radius:999px;border:1px solid rgba(255,255,255,.2);background:transparent;color:rgba(255,255,255,.5);font-size:12px;font-weight:600;cursor:pointer;opacity:0;transform:translateY(8px);transition:opacity .5s ease,transform .5s ease,background .2s,color .2s;letter-spacing:.04em}
.splash-skip.show{opacity:1;transform:none}
.splash-skip:hover{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.35)}
/* ---- Splash portal strip (staff escape hatch, 2s) ---- */
.splash-portal{margin-top:22px;opacity:0;transform:translateY(10px);transition:opacity .24s cubic-bezier(.4,0,.2,1),transform .24s cubic-bezier(.4,0,.2,1)}
.splash-portal.show{opacity:1;transform:none}
.splash-portal[hidden]{display:none}
.sp-hint{font-size:12px;letter-spacing:.03em;color:rgba(207,224,248,.72);font-weight:600;margin-bottom:10px}
.sp-hint b{color:#FFD9A8}
.sp-pills{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.sp-pill{display:inline-flex;align-items:center;gap:7px;padding:9px 18px;border-radius:999px;
  border:1px solid rgba(255,217,168,.28);background:rgba(255,255,255,.08);color:#fff;
  font-size:13px;font-weight:700;letter-spacing:.03em;cursor:pointer;
  transition:background .18s,border-color .18s,transform .18s}
.sp-pill:hover,.sp-pill:focus-visible{background:rgba(240,124,31,.9);border-color:var(--orange,#F07C1F);transform:translateY(-1px)}
/* Feature strip — one line visible at a time, cross-faded by JS toggling
   .on. Height is fixed so swapping lines never nudges the pills below. */
.sp-feats{list-style:none;margin:0 0 14px;padding:0;height:20px;position:relative}
.sp-feats li{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:6px;
  margin:0;font-size:13px;font-weight:600;letter-spacing:.01em;color:rgba(207,224,248,.82);
  opacity:0;transform:translateY(6px);transition:opacity .32s ease,transform .32s ease;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp-feats li.on{opacity:1;transform:none}
.sp-feats b{color:#FFD9A8;font-weight:800}
.sp-pill-go{background:rgba(240,124,31,.92);border-color:rgba(240,124,31,.92);color:#fff}
.sp-pill-go:hover,.sp-pill-go:focus-visible{background:#F07C1F;border-color:#F07C1F}
@media (max-width:400px){.sp-feats li{font-size:12px}.sp-pill{padding:9px 14px;font-size:12.5px}}
@media (prefers-reduced-motion:reduce){.sp-feats li{transition:none}}
.sp-track{margin:12px auto 0;width:170px;height:3px;border-radius:999px;background:rgba(255,255,255,.14);overflow:hidden}
.sp-track i{display:block;height:100%;width:100%;border-radius:999px;background:linear-gradient(90deg,#FFD9A8,#F07C1F);transform-origin:left center}
@media (prefers-reduced-motion:reduce){.splash-portal{transition:none;opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  .splash-title,.splash-tagline,.splash-phone,.splash-skip{transition:none;opacity:1;transform:none}
  .splash-logo,.splash-content{animation:none;opacity:1;transform:none}
  .splash-title .ltr{animation:none;opacity:1;transform:none}
  .splash-motif .motif-path{animation:none;stroke-dashoffset:0}
}

/* ---------- [CSS] 38a. ROLE GATE — "Select your access" after the splash ----------
   Three glass cards over the same deep-blue field the splash uses, so the
   handoff reads as one continuous premium entry rather than two screens. */
.rolegate{position:fixed;inset:0;z-index:9998;display:flex;align-items:center;justify-content:center;padding:24px;
  background:linear-gradient(140deg,#0E1E40 0%,var(--blue-deep) 45%,#1E3E77 100%);
  opacity:0;transition:opacity .5s cubic-bezier(.4,0,.2,1)}
.rolegate[hidden]{display:none}
.rolegate.in{opacity:1}
.rolegate.out{opacity:0;pointer-events:none}
.rolegate::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(680px 340px at 18% 8%,rgba(240,124,31,.20),transparent 62%),
             radial-gradient(620px 320px at 84% 92%,rgba(88,150,255,.20),transparent 62%)}
.rg-inner{position:relative;z-index:1;width:100%;max-width:940px;text-align:center}
.rg-title{font-family:var(--f-display);font-size:clamp(23px,4.6vw,36px);font-weight:800;color:#fff;margin:0 0 8px;letter-spacing:.01em}
.rg-sub{color:rgba(207,224,248,.82);font-size:14px;margin:0 0 26px;letter-spacing:.02em}
.rg-sub b{display:inline-block;min-width:19px;padding:1px 6px;margin:0 1px;border-radius:6px;
  background:rgba(255,255,255,.13);color:#FFD9A8;font-family:var(--f-code);font-size:12.5px}
.rg-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.rg-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;
  padding:30px 18px 24px;border-radius:20px;cursor:pointer;color:#fff;text-align:center;
  background:rgba(255,255,255,.075);border:1px solid rgba(255,255,255,.16);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  box-shadow:0 14px 40px rgba(0,0,0,.28);
  transition:transform .28s cubic-bezier(.34,1.4,.64,1),box-shadow .28s,border-color .28s,background .28s;
  opacity:0;animation:rgCardIn .55s cubic-bezier(.22,1,.36,1) forwards}
.rg-card:nth-child(1){animation-delay:.10s}
.rg-card:nth-child(2){animation-delay:.19s}
.rg-card:nth-child(3){animation-delay:.28s}
@keyframes rgCardIn{from{opacity:0;transform:translateY(22px) scale(.96)}to{opacity:1;transform:none}}
.rg-card:hover,.rg-card:focus-visible{transform:translateY(-7px) scale(1.03);
  background:rgba(255,255,255,.13);border-color:rgba(255,217,168,.5);
  box-shadow:0 22px 54px rgba(0,0,0,.4),0 0 0 1px rgba(255,217,168,.22) inset;outline:none}
.rg-num{position:absolute;top:12px;left:14px;width:24px;height:24px;border-radius:8px;
  display:flex;align-items:center;justify-content:center;font-family:var(--f-code);font-size:12px;font-weight:700;
  background:rgba(255,255,255,.14);color:#FFD9A8}
.rg-ico{font-size:40px;line-height:1;filter:drop-shadow(0 6px 14px rgba(0,0,0,.35))}
.rg-name{font-family:var(--f-display);font-size:19px;font-weight:800;letter-spacing:.01em}
.rg-desc{font-size:12.5px;color:rgba(207,224,248,.78);line-height:1.45;max-width:200px}
.rg-remember{display:inline-flex;align-items:center;gap:8px;margin-top:24px;color:rgba(207,224,248,.72);font-size:13px;cursor:pointer}
.rg-remember input{width:15px;height:15px;accent-color:var(--orange)}
@media (max-width:720px){
  .rg-cards{grid-template-columns:1fr;gap:12px}
  .rg-card{flex-direction:row;justify-content:flex-start;text-align:left;padding:16px 18px 16px 46px;gap:14px;border-radius:16px}
  .rg-ico{font-size:29px}
  .rg-desc{max-width:none;font-size:12px}
  .rg-num{top:50%;transform:translateY(-50%);left:12px}
}
@media (prefers-reduced-motion:reduce){
  .rolegate{transition:none}
  .rg-card{animation:none;opacity:1}
  .rg-card:hover,.rg-card:focus-visible{transform:none}
}

/* ---------- [CSS] 38b. BOOKING PROGRESS LINE — booking-flow step indicator
   A thin 3px fixed bar pinned to the very top edge that fills as the passenger
   moves Results → Seats → Checkout → Ticket. Hidden on every non-flow view. ---------- */
.book-progress{position:fixed;top:0;left:0;width:100%;height:3px;z-index:9997;background:transparent;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;pointer-events:none}
.book-progress.on{opacity:1;visibility:visible}
.book-progress > i{display:block;height:100%;width:0;border-radius:0 3px 3px 0;background:linear-gradient(90deg,var(--blue,#12264E),var(--orange,#F07C1F));box-shadow:0 0 8px rgba(240,124,31,.55);transform-origin:left center;transition:width .4s cubic-bezier(.2,.8,.2,1)}
.book-progress.pulse > i{animation:bookProgPulse .55s ease}
@keyframes bookProgPulse{0%{transform:scaleY(1)}50%{transform:scaleY(2.6)}100%{transform:scaleY(1)}}
@media (prefers-reduced-motion:reduce){.book-progress > i{transition:none}.book-progress.pulse > i{animation:none}}

/* ---------- [CSS] 39. UNIFIED LIVE MAP (Leaflet, lazy-loaded) ---------- */
.tracker-wrap{position:relative;width:100%;height:calc(100vh - 140px);min-height:480px;border-radius:var(--r);overflow:hidden;background:var(--blue-deep);perspective:1200px}
.tracker-wrap .leaflet-container{width:100%;height:100%;background:#AAD3DF;font-family:var(--f-body)}
.tracker-wrap .leaflet-bottom{bottom:260px}
@media (max-width:760px){.tracker-wrap{height:calc(100vh - 64px);min-height:400px;border-radius:0;margin:-22px -22px 0}.tracker-wrap .leaflet-bottom{bottom:52vh}}
/* Animated dashed road line (India saffron / Nepal crimson segments) */
.shg-dash{stroke-dasharray:12 14;animation:shgDash 1.1s linear infinite}
@keyframes shgDash{to{stroke-dashoffset:-26}}
/* Temple markers */
.shg-temple{font-size:17px;line-height:26px;text-align:center;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35));transition:transform .15s}
.shg-temple:hover{transform:scale(1.25)}
/* Clean, Google-Maps-like tile tone */
.tracker-wrap .leaflet-tile{filter:saturate(.82) contrast(.93) brightness(1.04)}
.trk-center-btn.on{background:var(--orange);border-color:var(--orange);color:#fff}
#liveMapBadge{position:relative;z-index:5}

/* ---------- [CSS] 39b. GTA-STYLE TILTED 3D CAMERA — real OSM tiles/roads/
   markers underneath, purely a CSS 3D presentation on a wrapper OUTSIDE
   Leaflet's own DOM (#liveMapStage), so panning/click math is untouched. ---------- */
.live-map-stage{position:absolute;inset:0;width:100%;height:100%;transform-origin:50% 100%;transition:transform .7s cubic-bezier(.2,.8,.2,1);will-change:transform}
.live-map-stage #liveMapEl{width:100%;height:100%}
.map-horizon-haze{position:absolute;inset:0 0 auto 0;height:38%;pointer-events:none;z-index:4;opacity:0;transition:opacity .5s ease;background:linear-gradient(to bottom,rgba(160,200,230,.55),rgba(160,200,230,.18) 60%,transparent)}
.tracker-wrap.map-3d-scene .live-map-stage{transform:rotateX(58deg) scale(1.7)}
.tracker-wrap.map-3d-scene .map-horizon-haze{opacity:1}
.tracker-wrap.map-3d-scene .shg-temple{transform:rotateX(-58deg)}
.tracker-wrap.map-3d-scene .shg-temple:hover{transform:rotateX(-58deg) scale(1.25)}
/* Flat zoom control (replaces Leaflet's own, which would tilt with the map) */
.trk-zoom-ctrl{position:absolute;bottom:20px;right:12px;z-index:5;display:flex;flex-direction:column;border-radius:12px;overflow:hidden;box-shadow:var(--shadow-sm)}
.trk-zoom-btn{width:40px;height:36px;background:var(--card);border:1px solid var(--line);color:var(--ink);font-size:18px;font-weight:700;cursor:pointer;transition:background .15s}
.trk-zoom-btn:first-child{border-bottom:none}
.trk-zoom-btn:hover{background:var(--blue-50)}
@media (prefers-reduced-motion:reduce){.shg-dash{animation:none}.live-map-stage,.map-horizon-haze{transition:none}}

/* ---------- [CSS] 39c. FULL INDIA+NEPAL MAP TAB ---------- */
.fm-tabs{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.fm-tab-btn{padding:9px 16px;border-radius:10px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);font-weight:700;font-size:13.5px;cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.fm-tab-btn.on{background:var(--blue);border-color:var(--blue);color:#fff}
.fm-tab-btn:hover:not(.on){border-color:var(--blue-100);background:var(--blue-50)}
#fmPane_fullmap{display:flex;flex-direction:column;height:calc(100vh - 200px);min-height:520px}
@media (max-width:760px){#fmPane_fullmap{height:calc(100vh - 130px);min-height:440px}}
.fm-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:10px 0;border-bottom:1px dashed var(--line)}
.fm-search{display:flex;gap:6px;flex:1;min-width:200px}
.fm-search input{flex:1;padding:9px 12px;border:1.5px solid var(--line);border-radius:10px;background:var(--blue-50);font-size:13.5px}
.fm-search input:focus{outline:none;border-color:var(--blue);background:#fff}
.fm-search button{padding:9px 14px;border-radius:10px;background:var(--orange);color:#fff;font-weight:700;font-size:13px;border:none;cursor:pointer}
.fm-tool-btn{padding:9px 14px;border-radius:10px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);font-weight:600;font-size:13px;cursor:pointer;white-space:nowrap}
.fm-tool-btn:hover{border-color:var(--blue-100);background:var(--blue-50)}
.fm-route-toggle{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--muted);white-space:nowrap;cursor:pointer}
.fm-filterbar{display:flex;gap:6px;flex-wrap:wrap;padding:10px 0}
.fm-filter-btn{padding:6px 12px;border-radius:999px;border:1.5px solid var(--line);background:transparent;color:var(--muted);font-weight:600;font-size:12.5px;cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.fm-filter-btn.on{background:var(--orange);border-color:var(--orange);color:#fff}
.fm-filter-btn:hover:not(.on){border-color:var(--orange-100);color:var(--ink)}
.fm-map-wrap{flex:1;position:relative;border-radius:var(--r);overflow:hidden;min-height:300px}
.fm-map-wrap #fullMapEl{width:100%;height:100%}
.fm-landmark{font-size:18px;line-height:28px;text-align:center;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}
.fm-stops-pane{max-width:640px;margin:0 auto;padding:10px 4px}
.fm-stops-pane h4{font-size:13px;color:var(--muted);font-weight:700;margin:6px 0 8px;letter-spacing:.06em}
@media (prefers-reduced-motion:reduce){.fm-tab-btn,.fm-filter-btn{transition:none}}

/* Bottom sheet */
.trk-sheet{position:absolute;bottom:0;left:0;right:0;background:var(--card);border-radius:18px 18px 0 0;box-shadow:0 -4px 24px rgba(18,38,78,.15);z-index:10;max-height:55vh;overflow-y:auto;transition:transform .35s cubic-bezier(.4,0,.2,1)}
.trk-sheet-handle{width:36px;height:4px;border-radius:2px;background:var(--line);margin:10px auto 6px}
.trk-sheet-head{padding:8px 20px 12px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.trk-sheet-head .trk-bus-name{font-family:var(--f-display);font-weight:800;font-size:17px;color:var(--ink)}
.trk-sheet-head .trk-bus-no{font-family:var(--f-code);font-size:12px;color:var(--muted);background:var(--blue-50);padding:3px 8px;border-radius:6px}
.trk-eta-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
@media (max-width:560px){.trk-eta-strip{grid-template-columns:repeat(2,1fr)}}
.trk-eta-cell{background:var(--card);padding:12px 16px;text-align:center}
.trk-eta-cell .val{font-family:var(--f-code);font-size:18px;font-weight:800;color:var(--ink)}
.trk-eta-cell .lbl{font-size:11px;color:var(--muted);margin-top:2px}
.trk-delay-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700}
.trk-delay-badge.on-time{background:#E2F6EB;color:var(--ok)}
.trk-delay-badge.delayed{background:#FDE3E3;color:var(--bad)}
.trk-delay-badge.early{background:#E3ECF9;color:var(--blue)}
.trk-stops-list{padding:0 20px 20px}
.trk-stops-list h4{font-size:13px;color:var(--muted);font-weight:700;margin:14px 0 8px;letter-spacing:.06em}
.trk-stop-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.trk-stop-row:last-child{border-bottom:none}
.trk-stop-row .dot{width:10px;height:10px;border-radius:50%;flex:none}
.trk-stop-row .dot.passed{background:var(--ok)}
.trk-stop-row .dot.current{background:var(--orange);box-shadow:0 0 0 3px rgba(240,124,31,.25)}
.trk-stop-row .dot.upcoming{background:var(--line)}
.trk-stop-row .info{flex:1;min-width:0}
.trk-stop-row .info .nm{font-weight:700;font-size:14px}
.trk-stop-row .info .km{font-size:12px;color:var(--muted);font-family:var(--f-code)}
.trk-stop-row .tm{font-family:var(--f-code);font-size:13px;color:var(--muted);text-align:right;flex:none}
.trk-center-btn{position:absolute;top:12px;right:12px;z-index:5;width:40px;height:40px;border-radius:12px;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;transition:transform .15s}
.trk-center-btn:hover{transform:scale(1.08)}
.trk-demo-badge{position:relative;z-index:5;padding:10px 18px;background:linear-gradient(135deg,rgba(240,124,31,.95),rgba(180,80,10,.95));color:#fff;font-size:12.5px;font-weight:700;text-align:center;line-height:1.5;backdrop-filter:blur(6px)}

/* ---------- [CSS] 40. TRACKER POLISH ---------- */
.trk-eta-cell .val{transition:color .3s ease}
@media (prefers-reduced-motion:reduce){
  .logo-anim{animation:none!important}
}

/* ---------- [CSS] 41. LOGO ANIMATION ---------- */
@keyframes logoGlow{0%,100%{filter:drop-shadow(0 0 4px rgba(240,124,31,.3))}50%{filter:drop-shadow(0 0 14px rgba(240,124,31,.6))}}
@keyframes logoPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.topbar-logo img,.nav .logo-img{animation:logoPulse 4s ease-in-out infinite,logoGlow 4s ease-in-out infinite}
.splash .motif svg{animation:logoPulse 2s ease-in-out infinite}

/* ---------- [CSS] 42. AMOLED DARK MODE BOOST ---------- */
:root[data-theme="dark"]{
  --bg:#000000;--card:#0A0E1A;--ink:#F0F4FF;--muted:#8899BB;--line:#1A2240;
  --blue-50:#0D1530;--blue-100:#152040;--blue-deep:#000000;
  --orange:rgb(255,140,40);--ok:rgb(50,220,120);--bad:rgb(255,75,75);--warn:rgb(255,200,50);
  --blue:rgb(80,150,255);
  --shadow-sm:0 2px 8px rgba(0,0,0,.8);--shadow-md:0 8px 32px rgba(0,0,0,.9);--shadow-lg:0 18px 50px rgba(0,0,0,1)
}
:root[data-theme="dark"] body{background:#000}
:root[data-theme="dark"] .hero{background:linear-gradient(165deg,#000 0%,#050A18 40%,#0A1428 100%)}
:root[data-theme="dark"] .nav{background:rgba(0,0,0,.92);backdrop-filter:blur(12px)}
:root[data-theme="dark"] .topbar{background:#000}
:root[data-theme="dark"] .btn-orange{background:linear-gradient(135deg,#FF8C20,#FF6B00);box-shadow:0 4px 16px rgba(255,100,0,.3)}
:root[data-theme="dark"] .btn-blue{background:linear-gradient(135deg,#4A9AFF,#2B7AE8);box-shadow:0 4px 16px rgba(60,130,255,.3)}
:root[data-theme="dark"] .trk-sheet{background:#0A0E1A;box-shadow:0 -4px 30px rgba(0,0,0,.8)}
:root[data-theme="dark"] .trk-eta-cell .val{color:#4FC3F7}
:root[data-theme="dark"] .trk-optin{background:linear-gradient(135deg,rgba(80,150,255,.08),rgba(255,140,40,.08));border-color:#1A2240}
:root[data-theme="dark"] .status-band.confirmed{background:linear-gradient(135deg,rgba(50,220,120,.1),rgba(50,220,120,.05))}
:root[data-theme="dark"] .tk-signature{color:rgba(80,150,255,.06)}
:root[data-theme="dark"] .mybk-card{background:#0A0E1A;border-color:#1A2240}
:root[data-theme="dark"] .c-card{background:#0A0E1A;border-color:#1A2240}
:root[data-theme="dark"] .quick-grid a{background:#0A0E1A;border-color:#1A2240}
:root[data-theme="dark"] .quick-grid a:hover{border-color:var(--orange);box-shadow:0 0 20px rgba(255,140,40,.15)}
:root[data-theme="dark"] .date-chips button,
:root[data-theme="dark"] .pax-memory .pm-chip{background:#0A0E1A;border-color:#1A2240;color:var(--ink)}
:root[data-theme="dark"] .date-chips button.on{background:var(--blue);border-color:var(--blue);color:#fff}
:root[data-theme="dark"] .pax-memory .pm-chip:hover{background:#111A2E;border-color:var(--blue)}
:root[data-theme="dark"] .pax-memory .pm-clear:hover{background:#0A0E1A}
:root[data-theme="dark"] .seat{background:#0A0E1A;border-color:#1A2240;color:#4FC3F7}
:root[data-theme="dark"] .seat.sel{background:linear-gradient(135deg,#FF8C20,#FF6B00);color:#fff;box-shadow:0 0 12px rgba(255,100,0,.4)}

/* ---------- [CSS] 43. MOBILE-SMOOTH POLISH ---------- */
*{-webkit-tap-highlight-color:transparent}
/* touch-action:manipulation drops the ~300ms double-tap-to-zoom wait that
   mobile browsers otherwise hold every tap for. Applied to the things that
   are actually pressed rather than to *, so pinch-zoom still works on the
   map, the seat chart and the ticket. */
button,.btn,.seat,.nav-link,.bn-item,.lang-btn,.sp-pill,.num-pill,.fb-row,
.date-chips button,.quick-grid a,.atab,summary,[role="button"]{touch-action:manipulation}
/* 44x44 is the smallest reliable finger target; several of these rendered at
   34-40px on a phone, which is where mis-taps in a booking flow come from.
   Measured at 375px wide after the change: nothing interactive is under 44. */
.btn,button.btn,.bn-item,.lang-btn,.btn-sm,button.btn-sm{min-height:44px}
.btn,.seat,.nav-link,.quick-grid a,.bus-card,.mybk-card,.faq-item{transition:transform .15s ease,box-shadow .2s ease,background .2s ease}
.btn:active{transform:scale(.96)}
.seat:active{transform:scale(.92)}
.quick-grid a:active{transform:scale(.97)}
.bus-card:active{transform:scale(.99)}
input,select,textarea{font-size:16px}
@media (max-width:760px){
  .hero h1.hero-brand{font-size:clamp(19px,6.5vw,28px);letter-spacing:.02em}
  .hero-brand-np{font-size:14px;letter-spacing:.16em}
  .hero-slogan{font-size:clamp(17px,5vw,19px)}
  .quick-grid{gap:10px}
  .quick-grid a{padding:16px 12px}
  .status-actions{flex-direction:column}
  .status-actions .btn{width:100%}
}

/* ---------- [CSS] 44. FOUNDER / LEADERSHIP CARD ---------- */
.founder-card{display:flex;align-items:center;gap:22px;background:linear-gradient(135deg,var(--card),var(--blue-50));border:1px solid var(--line);border-radius:20px;padding:22px 26px;box-shadow:var(--shadow-sm,0 2px 8px rgba(20,40,80,.06))}
.founder-avatar-wrap{flex:none;width:118px;height:118px;border-radius:50%;padding:4px;background:linear-gradient(135deg,var(--orange),#FFD700,var(--blue));display:flex;align-items:center;justify-content:center;animation:ceoRing 2.6s ease-in-out infinite;position:relative}
@keyframes ceoRing{0%,100%{box-shadow:0 0 0 0 rgba(240,124,31,.35),0 4px 18px rgba(240,124,31,.25)}50%{box-shadow:0 0 0 12px rgba(240,124,31,0),0 4px 24px rgba(240,124,31,.4)}}
@media(prefers-reduced-motion:reduce){.founder-avatar-wrap{animation:none}}
.founder-avatar-wrap img{width:100%;height:100%;border-radius:50%;object-fit:contain;background:#fff;padding:8px}
.founder-initials{font-family:var(--f-display);font-size:28px;font-weight:800;color:#fff;letter-spacing:.06em;width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--blue-deep),var(--blue));text-shadow:0 1px 4px rgba(0,0,0,.25)}
.founder-body{flex:1;min-width:0}
.founder-body h2{line-height:1.15}
.founder-role{color:var(--orange);font-weight:700;font-size:13.5px;margin:2px 0 6px}
.founder-bio{color:var(--muted);font-size:13.5px;line-height:1.55;margin:0 0 12px;max-width:560px}
.founder-links{display:flex;flex-wrap:wrap;gap:8px}
.founder-link{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;border:1px solid var(--line);color:var(--ink);font-size:12.5px;font-weight:700;text-decoration:none;transition:transform .15s ease,border-color .2s ease}
.founder-link:hover{border-color:var(--orange);transform:translateY(-1px)}
@media (max-width:640px){
  .founder-card{flex-direction:column;text-align:center;padding:20px}
  .founder-bio{max-width:none}
  .founder-links{justify-content:center}
}
:root[data-theme="dark"] .founder-card{background:linear-gradient(135deg,#0A0E1A,#0D1530);border-color:#1A2240}
:root[data-theme="dark"] .founder-avatar-wrap img{background:#0A0E1A}
:root[data-theme="dark"] .founder-initials{background:linear-gradient(135deg,#0A0E1A,#1C3B72)}

/* ---------- [CSS] 45a. GPS DISTANCE + 3D FLOATING HERO ---------- */
.gps-pulse-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 0 rgba(34,197,94,.4);animation:gpsPulse 1.8s ease infinite}
@keyframes gpsPulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.4)}70%{box-shadow:0 0 0 8px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
#gpsDistResult .verify-note{font-size:13.5px;line-height:1.6}

.float-hero-wrap{position:relative;height:180px;overflow:hidden;pointer-events:none;margin:-10px 0 10px}
.float-item{position:absolute;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-fill-mode:both;filter:drop-shadow(0 4px 12px rgba(0,0,0,.15))}
.float-bus{font-size:48px;left:50%;top:50%;transform:translate(-50%,-50%);animation:floatBus 4s ease-in-out infinite}
.float-flag-in{font-size:30px;left:12%;top:30%;animation:floatFlag 5s ease-in-out infinite}
.float-flag-np{font-size:30px;right:12%;top:25%;animation:floatFlag 5.5s ease-in-out infinite .5s}
.float-om{font-size:36px;left:28%;top:60%;animation:floatSpin 7s linear infinite;opacity:.7}
.float-trident{font-size:28px;right:25%;top:65%;animation:floatSpin 8s linear infinite reverse;opacity:.6}
.float-lotus{font-size:24px;left:68%;top:18%;animation:floatFlag 6s ease-in-out infinite 1s;opacity:.5}
.float-wheel{font-size:22px;left:8%;top:65%;animation:floatSpin 10s linear infinite;opacity:.4}
.float-mountain{font-size:26px;right:8%;top:50%;animation:floatFlag 7s ease-in-out infinite 2s;opacity:.5}
@keyframes floatBus{0%,100%{transform:translate(-50%,-50%) translateY(0) rotate(-2deg)}50%{transform:translate(-50%,-50%) translateY(-18px) rotate(2deg)}}
@keyframes floatFlag{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-14px) scale(1.08)}}
@keyframes floatSpin{0%{transform:translateY(0) rotate(0deg)}25%{transform:translateY(-10px) rotate(90deg)}50%{transform:translateY(0) rotate(180deg)}75%{transform:translateY(-10px) rotate(270deg)}100%{transform:translateY(0) rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.float-item{animation:none!important}.gps-pulse-dot{animation:none!important}}

.founder-card{position:relative;overflow:hidden}
.founder-card::before{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:conic-gradient(from 0deg,transparent,rgba(240,124,31,.06),transparent,rgba(59,130,246,.06),transparent);animation:founderGlow 8s linear infinite;pointer-events:none}
@keyframes founderGlow{to{transform:rotate(360deg)}}
.founder-highlight{border:2px solid var(--orange);box-shadow:0 0 20px rgba(240,124,31,.12),0 8px 32px rgba(20,40,80,.08)}
.founder-badge{display:inline-flex;align-items:center;gap:5px;background:linear-gradient(135deg,var(--orange),#e65100);color:#fff;font-size:11px;font-weight:800;padding:3px 10px;border-radius:999px;letter-spacing:.04em;text-transform:uppercase;margin-bottom:6px}

/* ---------- [CSS] 45c. FOOTER CEO BLOCK + MANTRA (Task 4) ---------- */
.f-ceo{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:12.5px;line-height:1.5}
.f-ceo img{width:44px;height:44px;border-radius:50%;object-fit:cover;border:2px solid var(--orange);animation:ceoRing 3.2s ease-in-out infinite}
.f-ceo #ceoMantra{color:#FFD9A8;font-weight:700;letter-spacing:.08em}
.f-ceo #mantraBtn{background:none;border:none;cursor:pointer;font-size:15px;vertical-align:middle;padding:2px 4px;transition:transform .15s ease}
.f-ceo #mantraBtn:hover{transform:scale(1.25)}
.f-ceo #mantraBtn:active{transform:scale(.9)}
@media(prefers-reduced-motion:reduce){.f-ceo img{animation:none}}

/* ---------- [CSS] 45d. TRAILER INTRO SCENES (splash) ---------- */
.intro-scenes{position:relative;min-height:150px;width:min(600px,94vw);margin-top:16px}
.intro-scene{position:absolute;inset:0;opacity:0;transform:translateY(16px) scale(.96);transition:opacity .8s var(--ease-decel),transform .8s var(--ease-decel);display:flex;flex-direction:column;align-items:center;gap:9px;pointer-events:none}
.intro-scene.on{opacity:1;transform:none}
.intro-art{font-size:46px;letter-spacing:8px;filter:drop-shadow(0 8px 20px rgba(0,0,0,.4))}
.intro-flag{display:inline-block;font-size:54px;animation:flagWave 2.6s ease-in-out infinite}
.intro-flag.np{animation-delay:.5s}
@keyframes flagWave{0%,100%{transform:rotate(-6deg) translateY(0)}50%{transform:rotate(6deg) translateY(-9px)}}
.intro-icon-big{font-size:clamp(48px,10vw,72px);text-align:center;line-height:1;margin-bottom:8px;animation:introIconPulse 1.5s ease-in-out infinite alternate}
@keyframes introIconPulse{0%{transform:scale(1);filter:drop-shadow(0 0 8px rgba(255,180,60,.3))}100%{transform:scale(1.08);filter:drop-shadow(0 0 20px rgba(255,180,60,.6))}}
.intro-text{font-size:clamp(17px,3vw,22px);font-weight:800;color:#fff;text-align:center;max-width:540px;line-height:1.5}
.intro-sub{font-size:clamp(12.5px,2.2vw,15px);color:rgba(207,224,248,.82);text-align:center;max-width:540px;line-height:1.5}
.intro-step{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.2);border-radius:999px;padding:8px 20px;font-size:15px;color:#FFD9A8;font-weight:800;letter-spacing:.02em}
#splashSound{position:absolute;top:16px;left:16px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);color:#fff;border-radius:999px;padding:7px 14px;font-size:12px;font-weight:700;cursor:pointer;z-index:6;transition:background .2s}
#splashSound.on{background:var(--orange);border-color:var(--orange)}
@media(prefers-reduced-motion:reduce){.intro-flag{animation:none}.intro-scene{transition:opacity .8s}}
/* ---------- [CSS] 45e. BIG FLAGS + ANIMATED NAMES + FEATURE BADGES ---------- */
.flag-duo{display:flex;align-items:center;gap:clamp(20px,5vw,54px);justify-content:center}
.flag-col{display:flex;flex-direction:column;align-items:center;gap:12px}
.flag-big{position:relative;animation:flagWave 3s ease-in-out infinite;transform-origin:top center}
.flag-big-in{width:clamp(150px,30vw,290px);height:clamp(100px,20vw,193px);border-radius:8px;background:linear-gradient(180deg,#FF9933 0 33.4%,#fff 33.4% 66.7%,#138808 66.7% 100%);box-shadow:0 16px 44px rgba(0,0,0,.5)}
.chakra{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#000088;font-size:clamp(26px,5vw,48px);animation:chakraSpin 9s linear infinite}
@keyframes chakraSpin{to{transform:translate(-50%,-50%) rotate(360deg)}}
.flag-big-np{width:clamp(105px,21vw,200px);height:clamp(135px,27vw,258px);background:#DC143C;clip-path:polygon(0 0,88% 25%,30% 47%,100% 79%,0 100%);filter:drop-shadow(0 0 3px #003893) drop-shadow(0 14px 32px rgba(0,0,0,.5));animation-delay:.4s}
.np-sym{position:absolute;left:20%;top:57%;color:#fff;font-size:clamp(17px,3.4vw,32px)}
.np-sym.moon{top:20%;font-size:clamp(15px,3vw,28px)}
.flag-bus{font-size:clamp(48px,9vw,84px);animation:busRock 3.4s ease-in-out infinite;filter:drop-shadow(0 10px 22px rgba(0,0,0,.45))}
@keyframes busRock{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-12px) rotate(3deg)}}
.flag-name{display:flex;gap:3px;font-family:var(--f-display);font-weight:800;font-size:clamp(22px,4.2vw,38px);color:#fff;letter-spacing:.22em;text-shadow:0 3px 14px rgba(0,0,0,.55)}
/* CEO introduction scene — large photo circle + name + company (Scene 1) */
.ceo-intro{display:flex;flex-direction:column;align-items:center;gap:10px}
.ceo-intro-photo{width:clamp(120px,24vw,180px);height:clamp(120px,24vw,180px);border-radius:50%;border:4px solid rgba(255,200,100,.6);overflow:hidden;box-shadow:0 16px 48px rgba(0,0,0,.5);background:linear-gradient(135deg,#1A2744,#0D1530)}
.ceo-intro-photo img{width:100%;height:100%;object-fit:cover}
.ceo-intro-initials{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:42px;font-weight:800;color:#FFD9A8;font-family:var(--f-display)}
.ceo-intro-name{font-family:var(--f-display);font-weight:800;font-size:clamp(26px,5vw,42px);color:#fff;text-align:center;letter-spacing:.06em;text-shadow:0 4px 18px rgba(0,0,0,.5)}
.ceo-intro-title{font-size:clamp(14px,2.6vw,18px);color:#FFD9A8;font-weight:700;letter-spacing:.04em}
.ceo-intro-route{font-size:clamp(12px,2.2vw,15px);color:rgba(207,224,248,.7);text-align:center}
.intro-company{font-family:var(--f-display);font-weight:800;font-size:clamp(18px,3.6vw,30px);letter-spacing:.1em;color:#FFD9A8;text-align:center;text-shadow:0 3px 16px rgba(0,0,0,.55);margin-top:2px}
/* Flag solo — one flag centered (India scene / Nepal scene) */
.flag-solo{display:flex;flex-direction:column;align-items:center;gap:16px}
#introMapBox{background:rgba(255,255,255,.95);border-radius:16px;padding:10px;width:min(520px,90vw);box-shadow:0 14px 40px rgba(0,0,0,.45)}
#introMapBox svg{display:block}
#introMapBox #trkRoutePath{stroke-dasharray:1600;stroke-dashoffset:1600;animation:routeDraw 6s ease forwards}
@keyframes routeDraw{to{stroke-dashoffset:0}}
.flag-name i{font-style:normal;opacity:0;transform:translateY(14px)}
.intro-scene.on .flag-name i{animation:letterPop .55s var(--ease-decel) forwards}
.intro-scene.on .flag-name i:nth-child(1){animation-delay:.55s}.intro-scene.on .flag-name i:nth-child(2){animation-delay:.7s}
.intro-scene.on .flag-name i:nth-child(3){animation-delay:.85s}.intro-scene.on .flag-name i:nth-child(4){animation-delay:1s}
.intro-scene.on .flag-name i:nth-child(5){animation-delay:1.15s}
@keyframes letterPop{to{opacity:1;transform:none}}
.feat-grid{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:440px}
.feat-badge{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);border-radius:999px;padding:9px 17px;font-size:14.5px;color:#fff;font-weight:800;opacity:0;transform:scale(.6)}
.intro-scene.on .feat-badge{animation:featPop .45s var(--ease-decel) forwards}
.intro-scene.on .feat-badge:nth-child(1){animation-delay:.5s}.intro-scene.on .feat-badge:nth-child(2){animation-delay:.75s}
.intro-scene.on .feat-badge:nth-child(3){animation-delay:1s}.intro-scene.on .feat-badge:nth-child(4){animation-delay:1.25s}
.intro-scene.on .feat-badge:nth-child(5){animation-delay:1.5s}.intro-scene.on .feat-badge:nth-child(6){animation-delay:1.75s}
@keyframes featPop{60%{transform:scale(1.08)}to{opacity:1;transform:scale(1)}}
.feat-grid.steps{flex-direction:column;align-items:stretch}
.feat-grid.steps .feat-badge{justify-content:flex-start;text-align:left;color:#FFD9A8}
.flag-sm.flag-big-in{width:clamp(90px,18vw,150px);height:clamp(60px,12vw,100px)}
.flag-sm.flag-big-np{width:clamp(65px,13vw,110px);height:clamp(84px,17vw,142px)}
.flag-sm .chakra{font-size:clamp(16px,3.2vw,28px)}.flag-sm .np-sym{font-size:clamp(11px,2.2vw,18px)}.flag-sm .np-sym.moon{font-size:clamp(9px,1.8vw,15px)}
/* GPU-accelerated smooth 120Hz transitions */
.intro-scene{will-change:opacity,transform;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.flag-big,.flag-bus,.ceo-intro-photo{will-change:transform}
.intro-scenes{min-height:min(390px,58vh)}
@media(prefers-reduced-motion:reduce){.flag-big,.flag-bus,.chakra{animation:none!important}.intro-scene.on .flag-name i,.intro-scene.on .feat-badge{animation:none;opacity:1;transform:none}#introMapBox #trkRoutePath{animation:none;stroke-dashoffset:0}.flag-card .fl,.bus-run,.flagWave{animation:none!important}}

/* ---------- [CSS] 45b. 3D CLICK FEEDBACK + 120HZ SMOOTHNESS ---------- */
.btn:active,.seat:not(:disabled):active,.tier-pill:active,.deck-tab:active,.bt-pill:active,.qa-card:active,.founder-link:active,.pm-tab:active,.trip-pill:active{transform:translateY(1px) scale(.96)}
.seat,.tier-pill,.deck-tab,.float-item,.berth-pair{will-change:transform}
.seat:not(:disabled):hover{transform:translateY(-2px) scale(1.04);box-shadow:0 4px 12px rgba(46,95,168,.18)}
@media(prefers-reduced-motion:reduce){.seat:not(:disabled):hover{transform:none}}

/* ---------- [CSS] 45. GLOBAL SMOOTH POLISH ---------- */
.style-card,.result-card,.seat-grid,.status-card,.trust-card,.proof-card,.founder-card,.svc-card,.qa-card,.astat{transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1)}
.style-card:hover,.result-card:hover,.trust-card:hover,.proof-card:hover,.svc-card:hover,.qa-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(20,40,80,.12)}
a,button,.btn,.nav a,.tab-btn,.pm-tab,.bt-pill,.tier-pill,.proof-tab,.trip-pill{transition:all .15s cubic-bezier(.4,0,.2,1)}
.sec-head h2,.kicker{transition:opacity .4s var(--ease-decel),transform .4s var(--ease-decel)}
/* Staggered list entrance */
.stagger-item{opacity:0;transform:translateY(14px);animation:staggerIn var(--dur-slow) var(--ease-decel) forwards}
@keyframes staggerIn{to{opacity:1;transform:none}}
.stagger-item:nth-child(1){animation-delay:0ms}.stagger-item:nth-child(2){animation-delay:50ms}
.stagger-item:nth-child(3){animation-delay:100ms}.stagger-item:nth-child(4){animation-delay:150ms}
.stagger-item:nth-child(5){animation-delay:200ms}.stagger-item:nth-child(6){animation-delay:250ms}
.stagger-item:nth-child(7){animation-delay:300ms}.stagger-item:nth-child(8){animation-delay:350ms}
.stagger-item:nth-child(9){animation-delay:400ms}.stagger-item:nth-child(10){animation-delay:450ms}
.stagger-item:nth-child(n+11){animation-delay:500ms}

/* ================================================================
   [CSS] PAYMENT PROOF CARD — one-click proof submission on checkout
================================================================ */
.pp-card{background:linear-gradient(135deg,#f8fdf9 0%,#eef7f0 100%);border:1.5px solid #c8e6c9;border-radius:20px;padding:22px 20px;margin-top:18px;position:relative;overflow:hidden}
.pp-card::before{content:'';position:absolute;top:-30px;right:-30px;width:100px;height:100px;border-radius:50%;background:rgba(23,138,80,.08)}
.pp-card .pp-title{font-family:var(--f-display);font-size:17px;color:var(--ok);margin-bottom:4px;display:flex;align-items:center;gap:8px}
.pp-card .pp-sub{font-size:13px;color:var(--muted);margin-bottom:16px;line-height:1.5}
.pp-actions{display:flex;flex-direction:column;gap:10px}
.pp-btn{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;border:1.5px solid var(--line);border-radius:14px;background:#fff;cursor:pointer;font-family:var(--f-body);font-size:14px;font-weight:600;color:var(--ink);transition:transform .12s,box-shadow .2s,border-color .2s;text-align:left;text-decoration:none}
.pp-btn:active{transform:scale(.97)}
.pp-btn:hover{border-color:var(--ok);box-shadow:0 4px 16px rgba(23,138,80,.12)}
.pp-btn .pp-ico{font-size:22px;flex:none;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:10px}
.pp-btn.upload .pp-ico{background:#E8F5E9}
.pp-btn.wa .pp-ico{background:#E8F5E9}
.pp-btn.email .pp-ico{background:#E3F2FD}
.pp-btn.change .pp-ico{background:#FFF3E0}
.pp-btn .pp-lbl{flex:1}
.pp-btn .pp-lbl small{display:block;font-weight:400;font-size:11.5px;color:var(--muted);margin-top:2px}
.pp-btn.disabled{opacity:.45;pointer-events:none}
.pp-preview{margin-top:12px;border-radius:14px;overflow:hidden;position:relative;display:none}
.pp-preview.show{display:block}
.pp-preview img{width:100%;max-height:200px;object-fit:contain;background:#f5f5f5;display:block}
.pp-preview .pp-remove{position:absolute;top:8px;right:8px;background:rgba(0,0,0,.6);color:#fff;border:none;border-radius:50%;width:28px;height:28px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.pp-status{margin-top:14px;padding:16px;border-radius:14px;text-align:center;display:none}
.pp-status.show{display:block}
.pp-status.ready{background:#E8F5E9;border:1.5px solid #A5D6A7}
.pp-status.waiting{background:#FFF8E1;border:1.5px solid #FFE082}
.pp-status .pp-st-ico{font-size:32px;margin-bottom:6px}
.pp-status .pp-st-title{font-size:15px;font-weight:700;margin-bottom:4px}
.pp-status .pp-st-sub{font-size:12.5px;color:var(--muted);line-height:1.5}
@keyframes ppPulse{0%,100%{opacity:1}50%{opacity:.5}}
.pp-status.waiting .pp-st-ico{animation:ppPulse 1.8s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.pp-status.waiting .pp-st-ico{animation:none}}

[data-theme="dark"] .pp-card,.dark .pp-card{background:linear-gradient(135deg,#1a2e1f 0%,#162218 100%);border-color:#2e5a3a}
[data-theme="dark"] .pp-btn,.dark .pp-btn{background:var(--card);border-color:var(--line);color:var(--ink)}

/* ================================================================
   [CSS] PAYMENT VERIFICATION — glass-morphism submission + admin queue
================================================================ */
/* Payment submission form (post-checkout) */
.pv-overlay{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.55);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:16px;opacity:0;pointer-events:none;transition:opacity .3s}
.pv-overlay.show{opacity:1;pointer-events:auto}
.pv-modal{background:var(--card);border-radius:24px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;padding:28px 24px;box-shadow:0 20px 60px rgba(0,0,0,.25);position:relative;transform:translateY(20px);transition:transform .3s var(--ease-decel)}
.pv-overlay.show .pv-modal{transform:translateY(0)}
.pv-modal .close{position:absolute;top:14px;right:14px;background:none;border:none;font-size:20px;cursor:pointer;color:var(--muted);width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.pv-modal .close:hover{background:var(--blue-50)}
.pv-modal h3{font-family:var(--f-display);font-size:20px;margin-bottom:4px}
.pv-modal .sub{font-size:13px;color:var(--muted);margin-bottom:20px}
.pv-modal .pv-id{display:inline-block;background:var(--blue-50);padding:6px 14px;border-radius:10px;font-family:var(--f-code);font-weight:700;font-size:14px;color:var(--blue);margin-bottom:16px}
.pv-drop{border:2px dashed var(--line);border-radius:16px;padding:28px 16px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;position:relative;overflow:hidden}
.pv-drop:hover,.pv-drop.drag{border-color:var(--orange);background:var(--orange-100)}
.pv-drop .ico{font-size:32px;margin-bottom:8px}
.pv-drop b{display:block;font-size:14px;margin-bottom:4px}
.pv-drop small{font-size:12px;color:var(--muted)}
.pv-drop img{max-width:100%;max-height:200px;border-radius:12px;margin-top:10px;display:none}
.pv-drop img.show{display:block}
.pv-drop .remove{position:absolute;top:8px;right:8px;background:var(--bad);color:#fff;border:none;border-radius:50%;width:24px;height:24px;font-size:14px;cursor:pointer;display:none;align-items:center;justify-content:center}
.pv-drop img.show~.remove{display:flex}
.pv-field{margin-bottom:14px}
.pv-field label{display:block;font-size:12.5px;font-weight:600;color:var(--muted);margin-bottom:5px}
.pv-field input{width:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;font-size:14px;font-family:var(--f-body);background:var(--bg);transition:border-color .2s}
.pv-field input:focus{border-color:var(--blue);outline:none}
.pv-field .err{font-size:11px;color:var(--bad);margin-top:3px;display:none}
.pv-field.invalid input{border-color:var(--bad)}
.pv-field.invalid .err{display:block}
.pv-submit{width:100%;padding:14px;border:none;border-radius:16px;background:linear-gradient(135deg,var(--ok),#1db954);color:#fff;font-size:15px;font-weight:700;cursor:pointer;font-family:var(--f-body);transition:transform .15s,box-shadow .2s;margin-top:8px}
.pv-submit:active{transform:scale(.97)}
.pv-submit:disabled{opacity:.5;cursor:not-allowed}
.pv-success{text-align:center;padding:20px 0}
.pv-success .big{font-size:56px;margin-bottom:12px}
.pv-success h4{font-size:18px;font-weight:800;margin-bottom:6px}
.pv-success p{font-size:13px;color:var(--muted)}
@keyframes pvCheck{0%{transform:scale(0) rotate(-45deg)}50%{transform:scale(1.2) rotate(5deg)}100%{transform:scale(1) rotate(0)}}
.pv-success .big{animation:pvCheck .6s var(--ease-decel)}

/* Admin verification queue */
.pvq-card{background:var(--card);border-radius:18px;padding:18px;margin-bottom:14px;box-shadow:0 2px 14px rgba(0,0,0,.06);border-left:4px solid var(--warn);transition:border-color .3s}
.pvq-card.approved{border-left-color:var(--ok)}
.pvq-card.rejected{border-left-color:var(--bad)}
.pvq-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.pvq-head .badge{display:inline-block;padding:3px 10px;border-radius:99px;font-size:11px;font-weight:700}
.pvq-head .badge.pending{background:#FFF3E0;color:var(--warn)}
.pvq-head .badge.approved{background:#E8F5E9;color:var(--ok)}
.pvq-head .badge.rejected{background:#FFEBEE;color:var(--bad)}
.pvq-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;font-size:13px;margin-bottom:14px}
.pvq-grid .lbl{color:var(--muted);font-size:11.5px}
.pvq-grid .val{font-weight:600}
.pvq-shot{max-width:100%;max-height:220px;border-radius:12px;cursor:pointer;border:1px solid var(--line);margin-bottom:14px}
.pvq-actions{display:flex;gap:8px;flex-wrap:wrap}
.pvq-actions button,.pvq-actions a{padding:8px 16px;border-radius:12px;font-size:12.5px;font-weight:700;border:none;cursor:pointer;font-family:var(--f-body);text-decoration:none;display:inline-flex;align-items:center;gap:5px}
.pvq-approve{background:var(--ok);color:#fff}
.pvq-reject{background:var(--bad);color:#fff}
.pvq-wa{background:#25D366;color:#fff}
.pvq-view{background:var(--blue-50);color:var(--blue)}
.pvq-dl{background:var(--bg);color:var(--ink)}

/* Admin notification bell */
.adm-bell{position:relative;cursor:pointer;font-size:20px;background:none;border:none;padding:4px 8px}
.adm-bell .count{position:absolute;top:-4px;right:-4px;background:var(--bad);color:#fff;font-size:10px;font-weight:800;min-width:18px;height:18px;line-height:18px;border-radius:99px;text-align:center;padding:0 4px;display:none}
.adm-bell .count.show{display:block;animation:bellBounce .5s ease}
@keyframes bellBounce{0%{transform:scale(0)}50%{transform:scale(1.3)}100%{transform:scale(1)}}

/* Reject reason modal */
.pvr-overlay{position:fixed;inset:0;z-index:350;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:16px;opacity:0;pointer-events:none;transition:opacity .3s}
.pvr-overlay.show{opacity:1;pointer-events:auto}
.pvr-modal{background:var(--card);border-radius:20px;width:100%;max-width:400px;padding:24px;box-shadow:0 16px 50px rgba(0,0,0,.2)}

@media(prefers-reduced-motion:reduce){
  .pv-success .big{animation:none}
  .adm-bell .count.show{animation:none}
}

/* ================================================================
   [CSS] TRIP COMPANION — ixigo-style "My Trip" view
   Accessible via #/trip/<PNR>. Phases: booked → pre-trip → departure → live → arrived.
================================================================ */
#view-trip{background:var(--bg);min-height:100vh}
.tc-hero{position:relative;overflow:hidden;padding:28px 20px 24px;color:#fff;border-radius:0 0 24px 24px;
  background:linear-gradient(135deg,#FF9933 0%,#2E5FA8 50%,#DC143C 100%);background-size:200% 200%}
.tc-hero.shimmer{animation:tcShimmer 6s ease infinite}
@keyframes tcShimmer{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
.tc-hero .overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.15) 0%,rgba(0,0,0,.3) 100%)}
.tc-hero *{position:relative;z-index:1}
.tc-hero .route-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.tc-hero .city{font-size:22px;font-weight:800;font-family:var(--f-display);text-shadow:0 2px 8px rgba(0,0,0,.3)}
.tc-hero .city small{display:block;font-size:11px;font-weight:500;font-family:var(--f-body);opacity:.85;margin-top:2px}
.tc-hero .mid{flex:1;text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px}
.tc-hero .mid .bus-ico{font-size:24px}
.tc-hero .mid .dash{width:80%;max-width:120px;height:2px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.6) 0 6px,transparent 6px 12px)}
.tc-hero .mid .dur{font-size:12px;opacity:.8;font-weight:600}
.tc-hero .trip-meta{display:flex;gap:14px;font-size:12px;opacity:.85;flex-wrap:wrap}
.tc-hero .trip-meta span{display:inline-flex;align-items:center;gap:4px}
.tc-hero .back-btn{position:absolute;top:16px;left:16px;z-index:2;background:rgba(0,0,0,.3);border:none;color:#fff;width:36px;height:36px;border-radius:50%;font-size:16px;cursor:pointer;backdrop-filter:blur(8px)}

.tc-body{padding:16px 16px 100px;max-width:640px;margin:0 auto}

/* Phase timeline */
.tc-timeline{position:relative;padding:0 0 0 32px;margin:0 0 20px}
.tc-timeline::before{content:'';position:absolute;left:11px;top:8px;bottom:8px;width:2px;border-left:2px dashed var(--line)}
.tc-phase{position:relative;padding:8px 0 16px}
.tc-phase .dot{position:absolute;left:-32px;top:10px;width:22px;height:22px;border-radius:50%;background:var(--card);border:2.5px solid var(--muted);display:flex;align-items:center;justify-content:center;font-size:10px;z-index:1}
.tc-phase.done .dot{background:var(--ok);border-color:var(--ok);color:#fff}
.tc-phase.active .dot{background:var(--ok);border-color:var(--ok);color:#fff;box-shadow:0 0 0 5px rgba(23,138,80,.2);animation:tcPulse 2s infinite}
@keyframes tcPulse{0%,100%{box-shadow:0 0 0 5px rgba(23,138,80,.2)}50%{box-shadow:0 0 0 10px rgba(23,138,80,.05)}}
.tc-phase .phase-label{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px}
.tc-phase.future .phase-label{color:var(--muted)}

/* Cards */
.tc-card{background:var(--card);border-radius:16px;padding:16px;margin-bottom:12px;box-shadow:0 2px 12px rgba(0,0,0,.05)}
.tc-card.dark{background:#0d1117;color:#e6edf3;border:1px solid rgba(255,255,255,.08)}
.tc-card.dark b,.tc-card.dark .val{color:#fff}
.tc-card.dark small,.tc-card.dark .lbl{color:rgba(255,255,255,.6)}
.tc-card .card-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:14px;font-weight:700}
.tc-card .card-head .ico{font-size:20px}

/* Live GPS timeline (self-contained, phone-GPS driven) */
.lt-card{border:1px solid var(--line)}
.lt-sub{font-weight:600;color:var(--muted);font-size:11.5px}
.lt-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.lt-stats .cell{text-align:center;padding:10px 4px;background:var(--blue-50);border-radius:12px}
.lt-stats .cell b{display:block;font-size:17px;font-weight:800;color:var(--ink);line-height:1.1}
.lt-stats .cell small{font-size:10px;color:var(--muted)}
.lt-next{display:flex;align-items:center;gap:10px;padding:9px 12px;background:linear-gradient(135deg,var(--blue-50),rgba(240,124,31,.08));border:1px solid var(--blue-100);border-radius:12px;margin-bottom:10px}
.lt-next .ico{font-size:18px}
.lt-next .info b{font-size:13.5px;display:block}
.lt-next .info small{font-size:11.5px;color:var(--muted)}
.lt-ctrl{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.lt-status{font-size:12px;color:var(--muted)}
.lt-status.err{color:var(--warn);font-weight:600}
.lt-status.on{color:var(--ok);font-weight:600}
.lt-rail{position:relative;padding:4px 0}
.lt-fill{position:absolute;left:13px;top:10px;width:3px;height:0;background:linear-gradient(var(--blue),var(--orange));border-radius:2px;z-index:1;transition:height .6s ease,top .6s ease}
.lt-bus{position:absolute;left:1px;top:0;font-size:19px;z-index:3;transition:top .6s ease;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3))}
.lt-stop{position:relative;display:flex;gap:12px;padding:7px 0;min-height:32px}
.lt-stop .lt-marker{position:relative;width:28px;flex-shrink:0;z-index:2}
.lt-stop .lt-dot{position:absolute;left:8px;top:5px;width:11px;height:11px;border-radius:50%;background:var(--card);border:2.5px solid var(--muted);box-sizing:border-box;transition:all .3s}
.lt-stop.done .lt-dot{background:var(--blue);border-color:var(--blue)}
.lt-stop.next .lt-dot{border-color:var(--orange)}
.lt-stop.here .lt-dot{background:var(--orange);border-color:var(--orange);box-shadow:0 0 0 4px rgba(240,124,31,.22);animation:tcPulse 1.8s infinite}
.lt-name{font-size:13px;font-weight:700;color:var(--ink);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.lt-stop.done .lt-name{color:var(--muted)}
.lt-km{font-size:11px;font-weight:700;color:var(--blue)}
.lt-stop.done .lt-km{color:var(--muted)}
.lt-amen{font-size:12px;color:var(--muted);margin-top:1px;letter-spacing:1px}
.lt-note{font-size:11px;color:var(--muted);margin-top:8px;line-height:1.45}

/* Weather card */
.tc-weather{display:flex;gap:12px;flex-wrap:wrap}
.tc-wx{flex:1;min-width:120px;text-align:center;padding:12px;border-radius:12px;background:rgba(255,255,255,.05)}
.tc-wx .temp{font-size:28px;font-weight:800}
.tc-wx .cond{font-size:12px;opacity:.7;margin-top:2px}
.tc-wx .city-name{font-size:11px;font-weight:600;opacity:.8;margin-bottom:6px}

/* Leave-by card */
.tc-leaveby{display:flex;align-items:center;gap:14px}
.tc-leaveby .time-block{min-width:90px;text-align:center}
.tc-leaveby .time-block .t{font-size:24px;font-weight:800;color:var(--ok)}
.tc-leaveby .time-block small{font-size:11px;color:rgba(255,255,255,.6)}
.tc-leaveby .details{flex:1;font-size:13px;line-height:1.5}
.tc-card.urgent{border:2px solid var(--warn);animation:tcUrgent 2s infinite}
@keyframes tcUrgent{0%,100%{border-color:var(--warn)}50%{border-color:rgba(183,121,31,.3)}}

/* Checklist */
.tc-checklist{list-style:none;padding:0;margin:0}
.tc-checklist li{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.tc-checklist li:last-child{border:none}
.tc-checklist input[type=checkbox]{width:20px;height:20px;accent-color:var(--ok);flex-shrink:0}
.tc-checklist .checked{text-decoration:line-through;opacity:.5}

/* Cabin info */
.tc-cabin{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tc-cabin .cell{text-align:center;padding:12px;background:var(--blue-50);border-radius:12px}
.tc-cabin .cell b{display:block;font-size:16px;margin-bottom:2px}
.tc-cabin .cell small{font-size:11px;color:var(--muted)}

/* Boarding point */
.tc-boarding{position:relative;border-radius:16px;overflow:hidden;min-height:140px;display:flex;align-items:flex-end;padding:20px;color:#fff;
  background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.7) 100%),linear-gradient(135deg,var(--blue-deep),var(--blue-800))}
.tc-boarding .bp-name{font-size:20px;font-weight:800;font-family:var(--f-display)}
.tc-boarding .bp-addr{font-size:12px;opacity:.8;margin-top:4px}
.tc-boarding .bp-badge{display:inline-block;margin-top:8px;padding:4px 12px;background:var(--orange);border-radius:99px;font-size:11px;font-weight:700}

/* Countdown */
.tc-countdown{text-align:center;padding:20px}
.tc-countdown .timer{font-size:32px;font-weight:800;font-family:var(--f-code);color:var(--orange)}
.tc-countdown small{font-size:12px;color:var(--muted);display:block;margin-top:4px}

/* Live map container */
.tc-map-wrap{position:relative;height:300px;border-radius:16px;overflow:hidden;margin-bottom:12px}
.tc-map-wrap #tcMap{width:100%;height:100%}

/* Pull-up sheet over map */
.tc-sheet{background:var(--card);border-radius:20px 20px 0 0;padding:16px 20px;box-shadow:0 -4px 20px rgba(0,0,0,.08)}
.tc-sheet .handle{width:40px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 14px}
.tc-sheet .eta-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.tc-sheet .eta-grid .cell{text-align:center}
.tc-sheet .eta-grid .cell b{display:block;font-size:18px;font-weight:800}
.tc-sheet .eta-grid .cell small{font-size:11px;color:var(--muted)}
.tc-next-halt{display:flex;align-items:center;gap:12px;padding:12px;background:var(--blue-50);border-radius:14px}
.tc-next-halt .ico{font-size:22px}
.tc-next-halt .info{flex:1}
.tc-next-halt .info b{display:block;font-size:14px}
.tc-next-halt .info small{font-size:12px;color:var(--muted)}

/* Geofence banner */
.tc-geobanner{position:fixed;top:0;left:0;right:0;z-index:200;padding:14px 20px;text-align:center;font-size:14px;font-weight:700;color:#fff;transform:translateY(-100%);transition:transform .4s var(--ease-decel);pointer-events:none}
.tc-geobanner.show{transform:translateY(0);pointer-events:auto}
.tc-geobanner.meal{background:linear-gradient(135deg,#FF9800,#F57C00)}
.tc-geobanner.border{background:linear-gradient(135deg,#E91E63,#C2185B)}
.tc-geobanner.fuel{background:linear-gradient(135deg,#4CAF50,#388E3C)}
.tc-geobanner.near{background:linear-gradient(135deg,var(--orange),var(--orange-600))}

/* Arrived */
.tc-arrived{text-align:center;padding:30px 20px}
.tc-arrived .big{font-size:48px;margin-bottom:12px}
.tc-arrived h3{font-size:20px;font-weight:800;margin-bottom:6px}
.tc-arrived .ts{font-size:13px;color:var(--muted)}
.tc-arrived .actions{display:flex;gap:10px;justify-content:center;margin-top:20px;flex-wrap:wrap}
.tc-arrived .actions a,.tc-arrived .actions button{padding:10px 20px;border-radius:14px;font-size:13px;font-weight:700;text-decoration:none;border:none;cursor:pointer;font-family:var(--f-body)}

@media(prefers-reduced-motion:reduce){
  .tc-hero.shimmer{animation:none}
  .tc-phase.active .dot{animation:none;box-shadow:0 0 0 5px rgba(23,138,80,.2)}
  .tc-card.urgent{animation:none}
}
@media(max-width:400px){
  .tc-hero .city{font-size:18px}
  .tc-cabin{grid-template-columns:1fr}
}

/* ================================================================
   [CSS] NAV APP — fullscreen MapLibre navigator (merged from shari-nav-prototype)
   All selectors scoped under #view-nav to avoid clashes with bus-site styles.
================================================================ */
#view-nav{position:fixed;inset:0;z-index:100;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans Devanagari',sans-serif;
  /* [SECTION 1] Premium Deep-Navy + Saffron-Gold palette (was purple/orange). Scoped to
     #view-nav — no bleed to the booking site. --sn saffron action, --sg gold highlight,
     --sp navy secondary, --si deep-navy base, --sx navy glass, --sk near-white, --sm soft grey-blue. */
  --sn:#E8891C;--sp:#1E3A5F;--si:#0A1628;--sg:#F5C869;--sk:#EAF1FB;--sm:#93A4BF;
  --sl:rgba(255,255,255,.08);--sx:rgba(12,22,40,.82);color:var(--sk);background:var(--si)}
#view-nav *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
#sn-map{position:absolute;inset:0}
#view-nav .sn-back{position:absolute;top:14px;left:14px;z-index:22;width:40px;height:40px;border-radius:12px;
  background:var(--sx);backdrop-filter:blur(14px);border:1px solid var(--sl);color:var(--sk);font-size:18px;
  cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 22px rgba(0,0,0,.4)}
#view-nav .sn-banner{display:none;position:absolute;top:14px;left:70px;right:14px;z-index:21;align-items:center;gap:12px;
  background:linear-gradient(135deg,#0b3d3a,#0f4a46);border:1px solid rgba(255,255,255,.14);border-radius:14px;
  padding:12px 16px;box-shadow:0 8px 30px rgba(0,0,0,.45);color:#fff}
#view-nav .sn-banner.show{display:flex}
#view-nav .sn-banner .sb-ico{font-size:26px;flex:none;filter:drop-shadow(0 2px 3px rgba(0,0,0,.4))}
#view-nav .sn-banner .sb-txt{flex:1;min-width:0;line-height:1.25}
#view-nav .sn-banner .sb-txt b{display:block;font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#view-nav .sn-banner .sb-txt small{display:block;font-size:12.5px;color:rgba(255,255,255,.75);margin-top:2px;font-variant-numeric:tabular-nums}
#view-nav .sn-banner .sb-eco{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right}
#view-nav .sn-banner .sb-eta,#view-nav .sn-banner .sb-rem{font-size:12.5px;font-weight:700;line-height:1.1;white-space:nowrap;font-variant-numeric:tabular-nums;padding:2px 8px;border-radius:8px}
#view-nav .sn-banner .sb-eta{color:#fff;background:rgba(255,255,255,.16)}
#view-nav .sn-banner .sb-rem{color:var(--sg,#7fe7c4);background:rgba(255,255,255,.08)}
#view-nav .sn-banner .sb-mic{flex:none;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.24);color:#fff;
  width:36px;height:36px;border-radius:10px;font-size:16px;cursor:pointer}
#view-nav .sn-banner .sb-mic.off{opacity:.4}
#view-nav .sn-banner .sb-lang{flex:none;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.24);
  color:#fff;height:36px;min-width:36px;padding:0 8px;border-radius:10px;font-size:12px;font-weight:800;letter-spacing:.3px;cursor:pointer}
@media(max-width:640px){#view-nav .sn-banner{left:60px;padding:9px 12px;gap:9px}
  #view-nav .sn-banner .sb-txt b{font-size:13.5px}#view-nav .sn-banner .sb-ico{font-size:21px}
  #view-nav .sn-banner .sb-eta,#view-nav .sn-banner .sb-rem{font-size:11px;padding:2px 6px}}
#view-nav .sn-top{position:absolute;top:0;left:60px;right:0;z-index:20;display:flex;gap:10px;align-items:center;padding:12px 14px 12px 0;pointer-events:none}
#view-nav .sn-brand{pointer-events:auto;display:flex;align-items:center;gap:9px;background:var(--sx);
  backdrop-filter:blur(14px);border:1px solid var(--sl);border-radius:14px;padding:8px 14px;flex:none;box-shadow:0 8px 30px rgba(0,0,0,.35)}
#view-nav .sn-brand .om{font-size:22px;filter:drop-shadow(0 2px 4px rgba(255,107,0,.5))}
#view-nav .sn-brand b{font-family:'Tiro Devanagari Hindi','Cinzel',serif;font-size:17px;line-height:1;background:linear-gradient(90deg,var(--sn),var(--sg));-webkit-background-clip:text;background-clip:text;color:transparent}
#view-nav .sn-brand small{display:block;font-size:10px;color:var(--sm);margin-top:2px;letter-spacing:.4px}
#view-nav .sn-search{pointer-events:auto;position:relative;flex:1;max-width:520px}
#view-nav .sn-sbar{width:100%;display:flex;align-items:center;gap:8px;background:var(--sx);backdrop-filter:blur(14px);
  border:1px solid var(--sl);border-radius:14px;padding:10px 14px;box-shadow:0 8px 30px rgba(0,0,0,.35)}
#view-nav .sn-sbar input{flex:1;background:none;border:none;outline:none;color:var(--sk);font-size:14.5px;font-family:inherit}
#view-nav .sn-sbar input::placeholder{color:var(--sm)}
#view-nav .sn-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--sx);backdrop-filter:blur(16px);
  border:1px solid var(--sl);border-radius:14px;overflow:hidden;box-shadow:0 16px 44px rgba(0,0,0,.5);display:none}
#view-nav .sn-results.show{display:block}
#view-nav .sn-results .row{padding:11px 14px;cursor:pointer;border-bottom:1px solid var(--sl);font-size:13.5px;line-height:1.35;transition:background .12s}
#view-nav .sn-results .row:last-child{border-bottom:none}
#view-nav .sn-results .row:hover{background:rgba(232,137,28,.16)}
#view-nav .sn-results .row b{color:var(--sk);font-weight:600}
#view-nav .sn-results .row span{color:var(--sm);font-size:12px}
#view-nav .sn-rstack{position:absolute;right:14px;top:78px;z-index:15;display:flex;flex-direction:column;gap:8px}
#view-nav .sn-cb{width:44px;height:44px;border-radius:13px;background:var(--sx);backdrop-filter:blur(14px);
  border:1px solid var(--sl);color:var(--sk);font-size:18px;cursor:pointer;display:flex;align-items:center;
  justify-content:center;box-shadow:0 6px 22px rgba(0,0,0,.4);transition:transform .12s,background .15s,border-color .15s;position:relative}
#view-nav .sn-cb:hover{transform:scale(1.06)}
#view-nav .sn-cb.on{background:linear-gradient(135deg,var(--sn),#ff8a33);border-color:var(--sn);color:#fff}
#view-nav .sn-cb small{position:absolute;font-size:8px;bottom:4px;font-weight:700;letter-spacing:.5px}
#view-nav .sn-zgrp{display:flex;flex-direction:column;border-radius:13px;overflow:hidden;box-shadow:0 6px 22px rgba(0,0,0,.4)}
#view-nav .sn-zgrp .sn-cb{border-radius:0;box-shadow:none;border-bottom:none}
#view-nav .sn-zgrp .sn-cb:last-child{border-bottom:1px solid var(--sl)}
#view-nav[data-nav-mode="motorcycle"] .sn-cb{width:50px;height:50px;font-size:20px}
#view-nav .sn-needle{transition:transform .2s ease}
#view-nav .sn-ss{position:absolute;left:60px;top:78px;z-index:15;display:flex;gap:4px;background:var(--sx);
  backdrop-filter:blur(14px);border:1px solid var(--sl);border-radius:13px;padding:4px;box-shadow:0 6px 22px rgba(0,0,0,.4)}
#view-nav .sn-ss button{border:none;background:none;color:var(--sm);font-family:inherit;font-size:12.5px;font-weight:600;
  padding:7px 12px;border-radius:9px;cursor:pointer;transition:.15s}
#view-nav .sn-ss button.on{background:linear-gradient(135deg,var(--sp),var(--sn));color:#fff}
#view-nav .sn-hud{position:absolute;left:14px;bottom:120px;z-index:15;background:var(--sx);backdrop-filter:blur(14px);
  border:1px solid var(--sl);border-radius:14px;padding:10px 12px;box-shadow:0 8px 30px rgba(0,0,0,.4);
  display:grid;grid-template-columns:auto auto;gap:6px 16px;min-width:186px}
#view-nav .sn-hud .big{grid-column:1/-1;display:flex;align-items:baseline;gap:6px;margin-bottom:2px}
#view-nav .sn-hud .big b{font-size:26px;font-weight:800;color:var(--sg);font-variant-numeric:tabular-nums;line-height:1}
#view-nav .sn-hud .big span{font-size:11px;color:var(--sm)}
#view-nav .sn-hud .cell b{display:block;font-size:13px;font-weight:700;color:var(--sk);font-variant-numeric:tabular-nums}
#view-nav .sn-hud .cell span{font-size:9.5px;color:var(--sm);letter-spacing:.4px;text-transform:uppercase}
#view-nav .sn-hud.off{opacity:.55}
#view-nav .sn-dock{position:absolute;left:0;right:0;bottom:0;z-index:18;padding:0 14px 14px;pointer-events:none}
#view-nav .sn-panel{pointer-events:auto;max-width:640px;margin:0 auto;background:var(--sx);backdrop-filter:blur(18px);
  border:1px solid var(--sl);border-radius:18px 18px 14px 14px;box-shadow:0 -6px 40px rgba(0,0,0,.5);overflow:hidden}
#view-nav .sn-modes{display:flex;gap:6px;padding:12px 12px 8px;overflow-x:auto}
#view-nav .sn-mode{flex:none;display:flex;flex-direction:column;align-items:center;gap:3px;background:rgba(255,255,255,.05);
  border:1px solid var(--sl);border-radius:12px;padding:8px 13px;cursor:pointer;color:var(--sm);font-size:10.5px;
  font-weight:600;min-width:58px;transition:.15s}
#view-nav .sn-mode .em{font-size:19px}
#view-nav .sn-mode.on{background:linear-gradient(135deg,var(--sn),#ff8a33);border-color:var(--sn);color:#fff}
#view-nav .sn-ab{display:flex;flex-direction:column;gap:7px;padding:4px 12px 10px}
#view-nav .sn-fld{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.05);border:1px solid var(--sl);border-radius:11px;padding:9px 12px}
#view-nav .sn-fld .pin{font-size:14px;width:18px;text-align:center}
#view-nav .sn-fld input{flex:1;background:none;border:none;outline:none;color:var(--sk);font-family:inherit;font-size:13.5px}
#view-nav .sn-fld input::placeholder{color:var(--sm)}
#view-nav .sn-fld .mini{background:none;border:1px solid var(--sl);color:var(--sm);border-radius:8px;padding:4px 8px;
  font-size:11px;cursor:pointer;font-family:inherit;white-space:nowrap}
#view-nav .sn-fld .mini:hover{color:var(--sk);border-color:var(--sn)}
#view-nav .sn-qd{display:none;align-items:center;gap:9px;margin:0 12px 10px;padding:9px 12px;
  background:rgba(255,215,0,.08);border:1px solid rgba(255,215,0,.25);border-radius:11px;font-size:12.5px;color:var(--sk)}
#view-nav .sn-qd.show{display:flex}
#view-nav .sn-qd .qd-ico{font-size:15px;flex:none}
#view-nav .sn-qd .qd-txt b{color:var(--sg);font-variant-numeric:tabular-nums}
#view-nav .sn-livebar{display:flex;gap:8px;padding:10px 12px 0}
#view-nav .sn-livebtn{flex:1;background:rgba(255,255,255,.05);border:1px solid var(--sl);color:var(--sm);border-radius:10px;
  padding:8px 6px;font-family:inherit;font-weight:600;font-size:11.5px;cursor:pointer}
#view-nav .sn-livebtn.on{background:linear-gradient(135deg,#178A50,#22b06a);border-color:#22b06a;color:#fff}
#view-nav .sn-trackcard{display:none;margin:10px 12px 12px;padding:11px 13px;border-radius:12px;
  background:linear-gradient(135deg,rgba(23,138,80,.14),rgba(34,176,106,.06));border:1px solid rgba(34,176,106,.35)}
#view-nav .sn-trackcard.show{display:block}
#view-nav .sn-trackcard .ttl{font-size:12.5px;font-weight:700;color:var(--sk);display:flex;justify-content:space-between;align-items:center;gap:8px}
#view-nav .sn-trackcard .ttl small{font-weight:500;color:var(--sm);font-size:10.5px}
#view-nav .sn-trackcard .row{display:flex;gap:18px;margin-top:8px}
#view-nav .sn-trackcard .cell b{display:block;font-size:18px;color:#22b06a;font-variant-numeric:tabular-nums}
#view-nav .sn-trackcard .cell span{font-size:10px;color:var(--sm);text-transform:uppercase;letter-spacing:.4px}
#view-nav .sn-trackcard .row+.row{margin-top:6px}
#view-nav .sn-trackcard .cell.stop{flex:1;min-width:0}
#view-nav .sn-trackcard .cell.stop b{font-size:13.5px;color:var(--sg);font-variant-numeric:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#view-nav .sn-bus-m{font-size:22px;filter:drop-shadow(0 2px 5px rgba(0,0,0,.5))}
#view-nav .sn-rowbtns{display:flex;gap:8px;padding:0 12px 12px}
#view-nav .sn-go{flex:1;background:linear-gradient(135deg,var(--sn),#ff7a1a);border:none;color:#fff;font-family:inherit;
  font-weight:800;font-size:14px;padding:12px;border-radius:12px;cursor:pointer;box-shadow:0 6px 20px rgba(255,107,0,.4)}
#view-nav .sn-go:disabled{opacity:.5;box-shadow:none;cursor:default}
#view-nav .sn-ghost{background:rgba(255,255,255,.06);border:1px solid var(--sl);color:var(--sm);border-radius:12px;
  padding:12px 16px;font-family:inherit;font-weight:600;font-size:13px;cursor:pointer}
#view-nav .sn-ghost:hover{color:var(--sk)}
#view-nav .sn-sum{display:none;padding:0 14px 8px}
#view-nav .sn-sum.show{display:block}
#view-nav .sn-sum .head{display:flex;align-items:center;gap:14px;padding:6px 0 10px;border-top:1px solid var(--sl);margin-top:2px}
#view-nav .sn-sum .head .t{font-size:24px;font-weight:800;color:var(--sg);font-variant-numeric:tabular-nums;line-height:1}
#view-nav .sn-sum .head .d{font-size:14px;color:var(--sm);font-weight:600}
#view-nav .sn-sum .head .via{margin-left:auto;font-size:11px;color:var(--sm);text-align:right;max-width:150px;line-height:1.3}
#view-nav .sn-steps{max-height:34vh;overflow-y:auto;padding-bottom:4px}
#view-nav .sn-step{display:flex;gap:12px;align-items:flex-start;padding:10px 2px;border-bottom:1px solid var(--sl)}
#view-nav .sn-step:last-child{border-bottom:none}
#view-nav .sn-step .man{font-size:17px;width:26px;text-align:center;flex:none;margin-top:1px}
#view-nav .sn-step .txt{flex:1;font-size:13.5px;line-height:1.4}
#view-nav .sn-step .txt small{display:block;color:var(--sm);font-size:11.5px;margin-top:2px;font-variant-numeric:tabular-nums}
#view-nav .sn-toast{position:absolute;left:50%;top:74px;transform:translateX(-50%);z-index:40;background:var(--sx);
  backdrop-filter:blur(14px);border:1px solid var(--sl);border-radius:12px;padding:10px 16px;font-size:13px;
  box-shadow:0 10px 34px rgba(0,0,0,.5);opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;max-width:80vw;text-align:center}
#view-nav .sn-toast.show{opacity:1}
#view-nav .sn-me{width:40px;height:40px;position:relative}
#view-nav .sn-me-pulse{position:absolute;left:50%;top:50%;width:20px;height:20px;border-radius:50%;
  transform:translate(-50%,-50%);animation:snPulse 1.8s ease-out infinite;pointer-events:none}
@keyframes snPulse{0%{transform:translate(-50%,-50%) scale(1);opacity:.5}100%{transform:translate(-50%,-50%) scale(3);opacity:0}}
@media(prefers-reduced-motion:reduce){#view-nav .sn-me-pulse{animation:none;opacity:0}}
#view-nav .sn-me-cone{position:absolute;left:50%;top:50%;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;
  border-bottom:24px solid;transform:translate(-50%,-115%);opacity:0;transition:opacity .3s}
#view-nav .sn-me-icon{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:32px;height:32px;
  border-radius:50%;display:flex;align-items:center;justify-content:center;border:3px solid #fff;
  box-shadow:0 0 0 2px rgba(0,0,0,.15),0 2px 8px rgba(0,0,0,.4);transition:background .3s}
#view-nav .sn-me-icon svg{width:18px;height:18px;fill:#fff}
#view-nav .sn-temple-m{cursor:pointer}
#view-nav .sn-temple-ico{display:block;line-height:0;filter:drop-shadow(0 2px 5px rgba(0,0,0,.5));transition:transform .15s}
#view-nav .sn-temple-ico svg{width:26px;height:32px;display:block;overflow:visible}
/* Sanatan Mode — saffron pin + temple silhouette; category tints stay inside the saffron family (elegant, not rainbow) */
#view-nav .sn-temple-ico .sn-pin-body{fill:#FF6B00}
#view-nav .sn-temple-ico .sn-pin-glyph{fill:#FFF6E9}
#view-nav .sn-temple-m.sn-cat-shiva .sn-pin-body{fill:#E85A00}
#view-nav .sn-temple-m.sn-cat-shakti .sn-pin-body{fill:#D64500}
#view-nav .sn-temple-m.sn-cat-ram .sn-pin-body{fill:#F5810F}
#view-nav .sn-temple-m.sn-cat-krishna .sn-pin-body{fill:#FF8A1E}
#view-nav .sn-temple-m:hover .sn-temple-ico{transform:scale(1.3)!important}
#view-nav .tc{width:224px;font-family:var(--f-body)}
#view-nav .tc-img{width:100%;height:128px;object-fit:cover;border-radius:10px;margin-bottom:8px;background:#efeaf6}
#view-nav .tc h3{margin:0 0 6px;font-size:15px;color:#1a1030;line-height:1.25}
#view-nav .tc-deity{display:inline-block;background:#FFF3E0;color:#C2410C;font-size:11px;font-weight:700;padding:2px 10px;border-radius:20px}
#view-nav .tc p{margin:7px 0 10px;font-size:12.5px;line-height:1.5;color:#4a4a55}
#view-nav .tc-nav{width:100%;background:linear-gradient(135deg,#FF6B00,#ff7a1a);color:#fff;border:none;border-radius:9px;padding:9px;font-weight:700;font-size:12.5px;cursor:pointer;font-family:inherit}
#view-nav .sn-home-m{display:none;flex-direction:column;align-items:center;pointer-events:none}
#view-nav .sn-home-ico{font-size:17px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4))}
#view-nav .sn-home-lbl{margin-top:1px;font-size:9.5px;font-weight:600;color:#5b4636;background:rgba(255,255,255,.82);
  padding:1px 6px;border-radius:6px;white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.18)}
#view-nav .sn-load{position:absolute;inset:0;z-index:50;background:var(--si);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}
#view-nav .sn-load .spin{width:40px;height:40px;border:3px solid var(--sl);border-top-color:var(--sn);border-radius:50%;animation:snSpin .8s linear infinite}
@keyframes snSpin{to{transform:rotate(360deg)}}
#view-nav .sn-load p{color:var(--sm);font-size:14px}
#view-nav .maplibregl-popup-content{border-radius:14px!important;padding:12px!important;box-shadow:0 14px 44px rgba(0,0,0,.32)!important}
#view-nav .maplibregl-ctrl-attrib{font-size:10px!important;background:rgba(26,10,46,.6)!important;color:var(--sm)!important}
#view-nav .maplibregl-ctrl-attrib a{color:var(--sm)!important}
@media(max-width:640px){#view-nav .sn-brand small{display:none}
  #view-nav .sn-hud{bottom:auto;top:132px;min-width:0;grid-template-columns:auto auto auto}
  #view-nav .sn-hud .big{grid-column:1/-1}
  #view-nav .sn-ss button{padding:7px 9px;font-size:11.5px}}

/* ====== [SECTION 4] FOCUS NAVIGATION MODE — Apple-Maps-style clean turn-by-turn.
   All hiding is purely CSS scoped to #view-nav.sn-focus so NOTHING is destroyed and
   exit (remove class) fully restores the planner. Only the route, #snBanner and the
   compact #snFocusCard remain visible. ====== */
#view-nav .sn-focuscard{display:none;position:absolute;left:14px;right:14px;bottom:calc(16px + env(safe-area-inset-bottom));
  z-index:19;max-width:440px;margin:0 auto;background:var(--sx);backdrop-filter:blur(18px);border:1px solid var(--sl);
  border-radius:18px;padding:14px 16px 13px;box-shadow:0 -6px 40px rgba(0,0,0,.5)}
#view-nav .sn-focuscard .fc-city{display:flex;align-items:center;gap:7px;margin-bottom:3px;padding-right:64px}
#view-nav .sn-focuscard .fc-cityico{font-size:15px;flex:none}
#view-nav .sn-focuscard .fc-city b{font-size:16px;font-weight:800;color:var(--sk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#view-nav .sn-focuscard .fc-road{font-size:12px;color:var(--sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:9px}
#view-nav .sn-focuscard .fc-row{display:flex;gap:22px}
#view-nav .sn-focuscard .fc-cell b{display:block;font-size:20px;font-weight:800;color:var(--sg);font-variant-numeric:tabular-nums;line-height:1}
#view-nav .sn-focuscard .fc-cell span{font-size:9.5px;color:var(--sm);letter-spacing:.4px;text-transform:uppercase}
#view-nav .sn-focuscard .fc-exit{position:absolute;top:11px;right:12px;background:var(--sl);border:1px solid var(--sl);
  color:var(--sk);font-family:inherit;font-size:11.5px;font-weight:700;padding:5px 11px;border-radius:20px;cursor:pointer}
#view-nav .sn-focuscard .fc-exit:hover{color:#fff;border-color:var(--sn)}
#view-nav.sn-focus .sn-top{display:none}
#view-nav.sn-focus .sn-ss{display:none}
#view-nav.sn-focus #snTemples,#view-nav.sn-focus #snLayers,#view-nav.sn-focus #snShare{display:none}
#view-nav.sn-focus #snLayersPanel{display:none}
#view-nav.sn-focus .sn-dock{display:none}
#view-nav.sn-focus .sn-navcard{display:none!important}
#view-nav.sn-focus .sn-hud{display:none!important}
#view-nav.sn-focus .sn-focuscard{display:block}

/* ====== [OFFLINE] connectivity badge + saved-map affordance ====== */
#view-nav .sn-offline{display:none;position:absolute;left:50%;top:118px;transform:translateX(-50%);z-index:24;
  align-items:center;gap:7px;background:rgba(176,58,20,.94);border:1px solid rgba(255,150,90,.5);color:#fff;
  border-radius:20px;padding:6px 14px;font-size:12px;font-weight:700;box-shadow:0 8px 24px rgba(0,0,0,.45);white-space:nowrap}
#view-nav .sn-offline .dot{width:8px;height:8px;border-radius:50%;background:#ffd28a;animation:snPulse2 1.4s ease-in-out infinite}
@keyframes snPulse2{0%,100%{opacity:1}50%{opacity:.35}}
#view-nav.is-offline .sn-offline{display:flex}
#view-nav .sn-cb.saving{opacity:.6;pointer-events:none}

/* ====== UPGRADE: Nav Info Card (#26) ====== */
#view-nav .sn-navcard{display:none;position:absolute;left:14px;right:70px;bottom:120px;z-index:16;max-width:340px;
  background:var(--sx);backdrop-filter:blur(16px);border:1px solid var(--sl);border-radius:16px;padding:14px 16px;box-shadow:0 8px 30px rgba(0,0,0,.45)}
#view-nav .sn-navcard.show{display:block}
#view-nav .sn-nc-top{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}
#view-nav .sn-nc-eta{font-size:26px;font-weight:800;color:var(--sg);font-variant-numeric:tabular-nums;line-height:1}
#view-nav .sn-nc-dist{font-size:13px;color:var(--sm);font-weight:600}
#view-nav .sn-nc-road{font-size:12px;color:var(--sk);opacity:.65;margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#view-nav .sn-nc-next{display:flex;align-items:center;gap:10px;padding:9px 12px;background:rgba(255,255,255,.06);border-radius:11px}
#view-nav .sn-nc-next .nico{font-size:20px;flex:none}
#view-nav .sn-nc-next .ntxt{flex:1;font-size:12.5px;color:var(--sk);line-height:1.3}
#view-nav .sn-nc-next .ndist{font-size:11.5px;color:var(--sm);flex:none;font-variant-numeric:tabular-nums}
/* ====== UPGRADE: Search History + Categories (#27) ====== */
#view-nav .sn-results .sr-cat{font-size:14px;margin-right:5px}
#view-nav .sn-results .sr-hist-hd{padding:7px 14px;font-size:10px;color:var(--sm);text-transform:uppercase;letter-spacing:.6px;
  display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--sl)}
#view-nav .sn-results .sr-hist-hd button{background:none;border:none;color:var(--sn);font-size:10px;cursor:pointer;font-family:inherit}
#view-nav .sn-results .row.hist-row{opacity:.85}
/* ====== UPGRADE: Arrival Overlay (#28) ====== */
#view-nav .sn-arrival{display:none;position:absolute;inset:0;z-index:30;background:rgba(26,10,46,.92);backdrop-filter:blur(14px);
  flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:40px}
#view-nav .sn-arrival.show{display:flex}
#view-nav .sn-arrival .arr-ico{font-size:56px;animation:snArrPop .8s ease}
@keyframes snArrPop{0%{transform:scale(0) rotate(-20deg);opacity:0}60%{transform:scale(1.2) rotate(5deg)}100%{transform:scale(1) rotate(0)}}
#view-nav .sn-arrival h2{font-size:22px;font-weight:800;color:var(--sg);font-family:'Cinzel',serif}
#view-nav .sn-arrival p{font-size:13px;color:var(--sm);max-width:280px;line-height:1.5}
#view-nav .sn-arrival .arr-btn{margin-top:8px;background:linear-gradient(135deg,var(--sn),#ff8a33);border:none;color:#fff;
  padding:12px 28px;border-radius:12px;font-weight:700;font-size:14px;cursor:pointer;font-family:inherit}
/* ====== UPGRADE: Alt Routes (#28) ====== */
#view-nav .sn-altbar{display:none;gap:6px;padding:8px 12px;margin:8px 12px 0;background:rgba(255,255,255,.04);border:1px solid var(--sl);border-radius:12px}
#view-nav .sn-altbar.show{display:flex}
#view-nav .sn-altbtn{flex:1;background:rgba(255,255,255,.06);border:1px solid var(--sl);color:var(--sm);border-radius:9px;
  padding:7px 4px;font-family:inherit;font-size:10.5px;cursor:pointer;text-align:center;transition:.15s}
#view-nav .sn-altbtn.on{background:linear-gradient(135deg,var(--sn),#ff8a33);border-color:var(--sn);color:#fff}
#view-nav .sn-altbtn b{display:block;font-size:12px;font-weight:700;margin-bottom:1px}
@media(max-width:640px){#view-nav .sn-navcard{right:14px;bottom:110px;max-width:none}}

/* ====== UPGRADE: Explore POI Chips (#30) ====== */
#view-nav .sn-explore{padding:10px 12px 6px;border-bottom:1px solid var(--sl)}
#view-nav .sn-ex-hd{font-size:10px;color:var(--sm);text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px;font-weight:600}
#view-nav .sn-ex-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;-webkit-overflow-scrolling:touch}
#view-nav .sn-ex-chips::-webkit-scrollbar{display:none}
#view-nav .sn-chip{flex:none;display:flex;align-items:center;gap:5px;background:rgba(255,255,255,.06);border:1px solid var(--sl);
  color:var(--sk);border-radius:20px;padding:7px 13px;font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;
  transition:background .15s,border-color .15s,transform .12s;white-space:nowrap}
#view-nav .sn-chip span{font-size:14px}
#view-nav .sn-chip:hover{transform:scale(1.04)}
#view-nav .sn-chip.on{background:linear-gradient(135deg,var(--sn),#ff8a33);border-color:var(--sn);color:#fff}
#view-nav .sn-chip.loading{opacity:.6;pointer-events:none}
/* ====== FAVORITES: Saved Places chips (Home / Office / ★) ====== */
#view-nav .sn-favs{padding:10px 12px 6px;border-bottom:1px solid var(--sl)}
#view-nav .sn-fav-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;-webkit-overflow-scrolling:touch}
#view-nav .sn-fav-chips::-webkit-scrollbar{display:none}
#view-nav .sn-fav-chip{flex:none;display:flex;align-items:center;gap:5px;background:rgba(255,255,255,.06);border:1px solid var(--sl);
  color:var(--sk);border-radius:20px;padding:7px 13px;font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;
  transition:background .15s,border-color .15s,transform .12s;white-space:nowrap;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}
#view-nav .sn-fav-chip span{font-size:14px}
#view-nav .sn-fav-chip:hover{transform:scale(1.04)}
#view-nav .sn-fav-chip:active{background:linear-gradient(135deg,var(--sn),#ff8a33);border-color:var(--sn);color:#fff}
/* ====== UPGRADE: Layers Panel (#31) ====== */
#view-nav .sn-layers{display:none;position:absolute;right:14px;top:78px;z-index:25;background:var(--sx);backdrop-filter:blur(16px);
  border:1px solid var(--sl);border-radius:14px;padding:10px 14px;box-shadow:0 12px 36px rgba(0,0,0,.5);min-width:170px}
#view-nav .sn-layers.show{display:block}
#view-nav .sn-ly-hd{font-size:10px;color:var(--sm);text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px;font-weight:600;
  padding-bottom:6px;border-bottom:1px solid var(--sl)}
#view-nav .sn-ly{display:flex;align-items:center;gap:9px;padding:7px 0;font-size:13px;color:var(--sk);cursor:pointer;
  border-bottom:1px solid rgba(255,255,255,.04)}
#view-nav .sn-ly:last-child{border-bottom:none}
#view-nav .sn-ly input[type=checkbox]{accent-color:var(--sn);width:16px;height:16px;cursor:pointer}
#view-nav .sn-ly span{font-size:15px}
/* ====== UPGRADE: POI markers (#32) ====== */
#view-nav .sn-poi-m{cursor:pointer;font-size:18px;line-height:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5));
  transition:transform .15s}
#view-nav .sn-poi-m:hover{transform:scale(1.3)}
#view-nav .sn-poi-card{width:210px;font-family:var(--f-body)}
#view-nav .sn-poi-card h4{margin:0 0 4px;font-size:13.5px;color:#1a1030;line-height:1.25}
#view-nav .sn-poi-card p{margin:0;font-size:11.5px;color:#666;line-height:1.4}
#view-nav .sn-poi-card .sn-pc-cat{display:inline-block;background:#E8F5E9;color:#2e7d32;font-size:10px;font-weight:700;
  padding:2px 8px;border-radius:12px;margin-bottom:6px}
#view-nav .sn-poi-card .sn-pc-nav{width:100%;background:linear-gradient(135deg,#4285F4,#5a95f5);color:#fff;border:none;
  border-radius:8px;padding:7px;font-weight:700;font-size:11.5px;cursor:pointer;font-family:inherit;margin-top:8px}
/* ====== UPGRADE: Reverse geocode popup (#33) ====== */
#view-nav .sn-revgeo{position:absolute;left:50%;bottom:180px;transform:translateX(-50%);z-index:17;background:var(--sx);
  backdrop-filter:blur(14px);border:1px solid var(--sl);border-radius:14px;padding:10px 16px;
  box-shadow:0 10px 34px rgba(0,0,0,.5);display:none;max-width:320px;text-align:center}
#view-nav .sn-revgeo.show{display:block;animation:snRevIn .25s ease}
@keyframes snRevIn{from{opacity:0;transform:translateX(-50%) translateY(8px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
#view-nav .sn-revgeo .rg-name{font-size:14px;font-weight:700;color:var(--sk);margin-bottom:2px}
#view-nav .sn-revgeo .rg-addr{font-size:11.5px;color:var(--sm);line-height:1.4}
#view-nav .sn-revgeo .rg-btns{display:flex;gap:6px;margin-top:8px}
#view-nav .sn-revgeo .rg-btns button{flex:1;border:none;border-radius:8px;padding:7px 4px;font-family:inherit;font-weight:700;
  font-size:11px;cursor:pointer}
#view-nav .sn-revgeo .rg-start{background:#4285F4;color:#fff}
#view-nav .sn-revgeo .rg-dest{background:linear-gradient(135deg,var(--sn),#ff8a33);color:#fff}
#view-nav .sn-revgeo .rg-close{background:rgba(255,255,255,.08);color:var(--sm)}

/* ================================================================
   V5 UPGRADE — premium polish + lean checkout (Aug 2026).
   Purely additive: every rule layers on existing classes; nothing
   above is removed. Dark-mode variants included where needed.
   ================================================================ */

/* ---- Search card: softer corners, more lift, clearer focus ---- */
.search-card{border-radius:26px !important;box-shadow:0 22px 60px rgba(18,38,78,.20),0 4px 16px rgba(18,38,78,.10) !important}
.search-card .s-field .box{transition:border-color .2s var(--ease-standard),box-shadow .2s var(--ease-standard),background .2s}
.search-card .s-field .box:focus-within{border-color:var(--blue) !important;box-shadow:0 0 0 4px rgba(46,95,168,.12) !important}
@media (max-width:760px){
  .search-card .btn-orange[type="submit"]{width:100% !important;padding:16px !important;font-size:16px !important;border-radius:16px !important}
}

/* ---- Results: bus card lifts a touch more on hover ---- */
.bus-card{border-radius:22px !important}
.bus-card:hover{box-shadow:var(--shadow-lg) !important}

/* ---- Seat map: subtle premium hover (state colours untouched) ---- */
.seat:not(:disabled):not(.bkd):not(.hold):hover{transform:translateY(-2px) scale(1.06);box-shadow:0 6px 16px rgba(46,95,168,.18)}

/* ---- Lean passenger rows: name is primary, age/gender optional ---- */
.pax-row{background:var(--blue-50);border:1.5px solid var(--blue-100);border-radius:16px;padding:12px 14px !important;transition:border-color .2s,box-shadow .2s,background .2s}
.pax-row:focus-within{border-color:var(--blue);box-shadow:0 0 0 4px rgba(46,95,168,.10);background:#fff}
.pax-row .field-optional>label::after{content:'· optional';font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-left:6px}
:root[data-theme="dark"] .pax-row{background:rgba(46,95,168,.10);border-color:#3B4E75}
:root[data-theme="dark"] .pax-row:focus-within{background:rgba(46,95,168,.16)}

/* ---- Payment method: premium tappable cards (UPI · eSewa · Cash) ---- */
.pm-tabs{display:grid !important;grid-template-columns:1fr 1fr 1fr;gap:10px !important}
.pm-tabs #payMethodLink{display:none !important}   /* Link Pay moved into the UPI panel */
.pm-tab{flex:none !important;display:flex;align-items:center;justify-content:center;text-align:center;min-height:60px;padding:12px 8px !important;border:2px solid var(--line) !important;border-radius:16px !important;background:#fff !important;font-weight:800 !important;font-size:13px !important;line-height:1.2;color:var(--ink) !important;cursor:pointer;transition:border-color .2s,box-shadow .2s,transform .15s,background .2s}
.pm-tab:hover{border-color:var(--blue-100) !important;background:var(--blue-50) !important;transform:translateY(-2px)}
.pm-tab.on{border-color:var(--orange) !important;background:linear-gradient(160deg,#FFF7EF,#fff) !important;box-shadow:0 4px 18px rgba(240,124,31,.18) !important;transform:translateY(-2px)}
@media (max-width:400px){.pm-tab{font-size:12px !important;min-height:56px;padding:10px 5px !important}}
:root[data-theme="dark"] .pm-tab{background:var(--card) !important;color:#CFE0F8 !important;border-color:#3B4E75 !important}
:root[data-theme="dark"] .pm-tab:hover{background:#1A2947 !important}
:root[data-theme="dark"] .pm-tab.on{background:linear-gradient(160deg,rgba(240,124,31,.18),var(--card)) !important;border-color:var(--orange) !important}

/* Link-pay stays reachable as a subtle hint inside the UPI panel */
.upi-linkpay-hint{display:inline-flex;align-items:center;gap:6px;margin:12px auto 0;background:transparent;border:1px dashed var(--blue-100);border-radius:999px;padding:7px 14px;font-size:12.5px;font-weight:700;color:var(--blue-800);cursor:pointer;transition:background .2s,border-color .2s;font-family:var(--f-body)}
.upi-linkpay-hint:hover{background:var(--blue-50);border-color:var(--blue)}

/* eSewa: the same QR also accepts a bank transfer */
.esewa-bank-note{display:flex;align-items:center;gap:8px;background:#F0FFF4;border:1px solid #B8E8CA;border-radius:12px;padding:10px 14px;font-size:12.5px;font-weight:700;color:#1B6B3A;margin-bottom:14px;line-height:1.45}
:root[data-theme="dark"] .esewa-bank-note{background:rgba(23,138,80,.12);border-color:#1F6B44;color:#7FE0A6}

/* ---- Bottom nav: active-item dot ---- */
.bn-item.on::after{content:'';display:block;width:5px;height:5px;border-radius:50%;background:var(--orange);margin:3px auto 0}

/* ---- Submit button: spinner while submitting (text already toggles) ---- */
#submitBookingBtn.loading{opacity:.85;pointer-events:none}
#submitBookingBtn.loading::after{content:'';display:inline-block;width:16px;height:16px;margin-left:10px;border:2.5px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;vertical-align:middle;animation:v5BtnSpin .7s linear infinite}
@keyframes v5BtnSpin{to{transform:rotate(360deg)}}



/* ================================================================
   SPLASH v2 — clean white, app-style cold launch.
   The first six rules are byte-identical to the critical block inlined in
   app.template.html's <head>; the rest only refine what lands later, so the
   splash never moves between the first frame and the stylesheet arriving.
================================================================ */
.splash{position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  background:#FFFFFF;
  background-image:radial-gradient(115% 78% at 50% -8%,#FFF4E7 0%,#FFFFFF 58%)}
.splash .float-hero-wrap,.splash .intro-scenes{display:none!important}
.splash-content{position:relative;z-index:1;text-align:center;padding:0 24px;max-width:520px;opacity:0;transform:translateY(14px);animation:splashContentIn .28s .02s cubic-bezier(.4,0,.2,1) forwards}
.splash-brand{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px}
.splash-logo{width:min(44vw,164px);height:auto;flex:0 0 auto;object-fit:contain;opacity:1;
  filter:drop-shadow(0 16px 34px rgba(18,38,78,.18))}
.splash-title{font-family:var(--f-display),'Cinzel',Georgia,serif;font-size:clamp(26px,7vw,42px);font-weight:800;color:#12264E;letter-spacing:.015em;line-height:1.06;text-align:center;opacity:1;transform:none}
.splash-title .ltr{display:inline-block}
.splash-title .gold{color:#F07C1F}
.splash-tagline{margin-top:14px;font-size:13.5px;color:#5B6B85;letter-spacing:.07em;font-weight:600;opacity:1;transform:none}
.splash-ceo{margin-top:18px;display:flex;flex-direction:column;gap:3px;align-items:center;line-height:1.3}
.splash-ceo b{font-family:var(--f-display),'Cinzel',Georgia,serif;font-size:17px;font-weight:700;color:#12264E;letter-spacing:.02em}
.splash-ceo span{font-size:12px;font-weight:600;color:#8794AB;letter-spacing:.05em}
.splash-phone{background:#FFF1E4;border:1px solid rgba(240,124,31,.34);color:#C25E10}
.splash-phone:hover{background:#FFE6CE;border-color:rgba(240,124,31,.6);color:#A64F0A}

/* Splash dot texture: barely-there on white instead of white-on-navy. */
.splash::before{background-image:radial-gradient(rgba(18,38,78,.16) 1px,transparent 1.6px);opacity:.22}

/* Staff strip — quiet on a light ground. */
.splash-portal{margin-top:20px}
.sp-hint{color:#7A879E}
.sp-hint b{color:#C25E10}
.sp-pill{background:#FFFFFF;border:1px solid #E4E9F2;color:#12264E;box-shadow:0 2px 8px rgba(18,38,78,.06)}
.sp-pill:hover,.sp-pill:focus-visible{background:#F07C1F;border-color:#F07C1F;color:#fff}
.sp-feats li{color:#5B6B85}
.sp-feats b{color:#C25E10}
.sp-pill-go{background:#F07C1F;border-color:#F07C1F;color:#fff;box-shadow:0 4px 14px rgba(240,124,31,.32)}
.sp-track{background:#EDF1F7}
.sp-track i{background:linear-gradient(90deg,#FFB25E,#F07C1F)}
.splash-skip{border:1px solid #E4E9F2;color:#8794AB}
.splash-skip:hover{background:#F5F7FB;color:#12264E;border-color:#CFD8E6}

/* Dark theme keeps the same layout, just an ink ground instead of white, so
   a phone set to dark does not get a full-screen white flash at 5am. */
[data-theme="dark"] .splash{background:#0B1424;background-image:radial-gradient(115% 78% at 50% -8%,#16233C 0%,#0B1424 58%)}
[data-theme="dark"] .splash::before{background-image:radial-gradient(rgba(255,255,255,.10) 1px,transparent 1.6px)}
[data-theme="dark"] .splash-logo{filter:drop-shadow(0 16px 34px rgba(0,0,0,.55))}
[data-theme="dark"] .splash-title,[data-theme="dark"] .splash-ceo b{color:#EAF2FF}
[data-theme="dark"] .splash-tagline{color:#9FB0CC}
[data-theme="dark"] .splash-ceo span{color:#7F8FA8}
[data-theme="dark"] .sp-pill{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16);color:#EAF2FF;box-shadow:none}
[data-theme="dark"] .sp-feats li{color:#9FB0CC}
[data-theme="dark"] .sp-feats b{color:#FFD9A8}
[data-theme="dark"] .sp-pill-go{background:#F07C1F;border-color:#F07C1F;color:#fff}
[data-theme="dark"] .sp-track{background:rgba(255,255,255,.14)}


/* ---------- [CSS] CONTACT NUMBERS STRIP ----------
   A single scrollable row of tappable numbers under the leadership ribbon.
   It scrolls sideways rather than wrapping, so eight numbers never push the
   booking card below the fold on a phone - the thing people came for stays
   the first thing they see. */
.num-strip{background:linear-gradient(90deg,#12264E,#1A3A6A 55%,#12264E);border-bottom:1px solid rgba(255,217,168,.18)}
.num-strip[hidden]{display:none}
.num-inner{display:flex;gap:8px;align-items:center;padding:7px 0;
  overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
.num-inner::-webkit-scrollbar{display:none}
.num-pill{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;scroll-snap-align:start;
  padding:6px 13px;border-radius:999px;background:rgba(255,255,255,.09);
  border:1px solid rgba(255,217,168,.24);color:#fff;text-decoration:none;
  font-size:12.5px;font-weight:700;line-height:1.2;white-space:nowrap;
  min-height:44px;touch-action:manipulation;
  transition:background .18s ease,border-color .18s ease,transform .15s ease}
.num-pill:hover,.num-pill:focus-visible{background:rgba(240,124,31,.92);border-color:#F07C1F;transform:translateY(-1px)}
.num-pill.wa:hover,.num-pill.wa:focus-visible{background:#25D366;border-color:#25D366;color:#06301A}
.np-ic{font-size:13px}
.np-lbl{color:rgba(255,217,168,.9);font-weight:600}
.np-lbl::after{content:' b7';margin-left:7px;opacity:.5}
.np-num{font-variant-numeric:tabular-nums;letter-spacing:.01em}
@media (max-width:760px){
  .num-inner{padding:6px 0}
  .num-pill{font-size:12px;padding:6px 11px}
  /* On a narrow screen the label is the first thing to go - the number is
     what gets tapped, the label only says which office it rings. */
  .np-lbl{display:none}
}

/* Admin editor rows for the same list. */
.num-admin{display:flex;flex-direction:column;gap:8px}
.num-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto auto;gap:8px;align-items:center}
.num-row input[type=text],.num-row .num-lbl,.num-row .num-val{
  width:100%;padding:9px 11px;border:1.5px solid var(--line);border-radius:10px;background:#FBFCFE}
.num-ck{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
@media (max-width:700px){
  .num-row{grid-template-columns:1fr 1fr;grid-template-areas:'lbl lbl' 'val val' 'wa show'}
  .num-row .num-lbl{grid-area:lbl}
  .num-row .num-val{grid-area:val}
}
:root[data-theme="dark"] .num-row .num-lbl,:root[data-theme="dark"] .num-row .num-val{
  background:#0A0E1A;border-color:#1A2240;color:var(--ink)}


/* ---------- [CSS] MINIMAL HOME — collapsible brochure toggle ---------- */
.home-more-bar{margin:22px auto 0}
.home-more-btn{width:100%;display:flex;align-items:center;gap:12px;padding:14px 18px;
  border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--ink);
  cursor:pointer;text-align:left;min-height:44px;touch-action:manipulation;
  box-shadow:0 2px 10px rgba(18,38,78,.05);transition:border-color .18s ease,box-shadow .2s ease,transform .15s ease}
.home-more-btn:hover,.home-more-btn:focus-visible{border-color:var(--orange);box-shadow:0 6px 18px rgba(240,124,31,.14)}
.home-more-btn:active{transform:scale(.995)}
.home-more-btn .hm-ic{font-size:20px;flex:0 0 auto}
.home-more-btn .hm-tx{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.home-more-btn .hm-tx b{font-size:14.5px;font-weight:800}
.home-more-btn .hm-tx small{font-size:12px;color:var(--muted);font-weight:600}
.home-more-btn .hm-ch{font-size:20px;flex:0 0 auto;color:var(--muted);transition:transform .25s ease}
.home-more-btn.open .hm-ch{transform:rotate(180deg)}
.home-more[hidden]{display:none}
/* When open, a gentle fade so it does not jump in. */
.home-more{animation:homeMoreIn .3s ease}
@keyframes homeMoreIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.home-more{animation:none}.home-more-btn .hm-ch{transition:none}}
:root[data-theme="dark"] .home-more-btn{background:#0A0E1A;border-color:#1A2240}


/* ---------- [CSS] TRIP — prominent Zomato-style arrival ETA ---------- */
.lt-eta-hero{display:flex;align-items:center;gap:14px;margin:10px 0 4px;padding:14px 16px;
  border-radius:16px;background:linear-gradient(135deg,rgba(46,95,168,.12),rgba(240,124,31,.12));
  border:1px solid rgba(46,95,168,.2)}
.lt-eta-hero .leh-ic{font-size:30px;line-height:1;flex:0 0 auto;animation:lehBob 1.6s ease-in-out infinite}
@keyframes lehBob{0%,100%{transform:translateX(0)}50%{transform:translateX(4px)}}
@media (prefers-reduced-motion:reduce){.lt-eta-hero .leh-ic{animation:none}}
.lt-eta-hero .leh-tx{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.15}
.lt-eta-hero .leh-tx small{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.02em}
.lt-eta-hero .leh-tx b{font-size:26px;font-weight:900;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:.01em}
.lt-eta-hero .leh-dest{flex:0 0 auto;font-size:12.5px;font-weight:800;color:var(--blue);
  background:rgba(46,95,168,.12);padding:5px 11px;border-radius:999px;max-width:40%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:root[data-theme="dark"] .lt-eta-hero{background:linear-gradient(135deg,rgba(80,150,255,.14),rgba(255,140,40,.12));border-color:rgba(80,150,255,.22)}
:root[data-theme="dark"] .lt-eta-hero .leh-tx b{color:#EAF2FF}


/* ---------- [CSS] Highlight 5% OFF badge ---------- */
.hl-off-badge{display:inline-flex;align-items:center;gap:7px;margin:6px auto 10px;
  padding:7px 16px;border-radius:999px;font-size:13.5px;font-weight:800;letter-spacing:.01em;
  color:#fff;background:linear-gradient(135deg,#F07C1F,#FF9E45);
  box-shadow:0 4px 14px rgba(240,124,31,.34);animation:hlOffPulse 2.6s ease-in-out infinite}
.hl-off-badge b{font-weight:900;font-size:15px}
@keyframes hlOffPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}
@media (prefers-reduced-motion:reduce){.hl-off-badge{animation:none}}


/* ---------- [CSS] TRIP — admin live-position banner ---------- */
.tc-livebus{display:flex;align-items:center;gap:12px;margin:0 0 12px;padding:12px 15px;border-radius:14px;
  background:linear-gradient(135deg,#0a6b3b,#12894e);color:#fff;
  box-shadow:0 4px 16px rgba(10,107,59,.3)}
.tc-livebus[hidden]{display:none}
.tc-livebus .tlb-ic{font-size:24px;flex:0 0 auto;animation:tlbBob 1.4s ease-in-out infinite}
@keyframes tlbBob{0%,100%{transform:translateX(0)}50%{transform:translateX(4px)}}
@media (prefers-reduced-motion:reduce){.tc-livebus .tlb-ic{animation:none}}
.tc-livebus .tlb-tx{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.tc-livebus .tlb-tx b{font-size:15px;font-weight:800}
.tc-livebus .tlb-tx small{font-size:12px;opacity:.9;font-weight:600}
.tc-livebus .tlb-ago{flex:0 0 auto;font-size:11px;font-weight:700;background:rgba(255,255,255,.2);padding:3px 9px;border-radius:999px;white-space:nowrap}
