/* Homepage boarding-pass lead popup. Built by /js/home-boarding-pass.js; the only static markup is the hero button #bp-open.
   Self-contained tokens (mirrors index.html :root). Animation classes: .bpm-on (iris) -> .bpm-land (card bloom) -> .bpm-ready; .bpm-leaving (closing). */
.bp-open{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin-top:14px;padding:14px 18px;font-family:var(--fbn);font-weight:700;font-size:15px;color:var(--gold-hi);background:transparent;border:1px solid var(--gold);cursor:pointer;transition:background .2s,color .2s}
.bp-open:hover{background:var(--gold);color:#16120a}
.bp-open:focus-visible{outline:2px solid var(--gold-hi);outline-offset:3px}

.bpm{--gold:#b08d57;--gold-hi:#cba76f;--gold-dim:rgba(176,141,87,.32);--maroon:#8A2432;--maroon-hi:#A02A3A;--ink:#111114;--hi:#F7F7F8;--mid:#B7B7C0;--lo:#85858F;--line:#34343d;
  position:fixed;inset:0;z-index:100000;overflow-y:auto;overscroll-behavior:contain;display:flex;font-family:var(--fbn,'Hind Siliguri',sans-serif);color:var(--hi);-webkit-font-smoothing:antialiased}
.bpm[hidden]{display:none}
.bpm *{box-sizing:border-box}
.bpm-backdrop{position:fixed;inset:0;background:radial-gradient(120% 90% at 50% 0%,rgba(46,22,30,.92),rgba(10,10,13,.96) 70%);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.bpm-stage{position:relative;z-index:3;margin:auto;width:100%;padding:64px 14px 92px;display:flex;justify-content:center;perspective:1600px}
.bpm-card{position:relative;width:100%;display:flex;justify-content:center;transform-style:preserve-3d}
.bpm-step[hidden]{display:none}
.bpm-step{width:100%;display:flex;flex-direction:column;align-items:center}

/* ---------- flight layer (plane + dotted trail are driven by JS) ---------- */
.bpm-flight{position:fixed;inset:0;z-index:6;pointer-events:none;overflow:hidden}
.bpm-jet{position:absolute;left:0;top:0;width:46px;height:46px;color:var(--gold-hi);will-change:transform;filter:drop-shadow(0 0 14px rgba(203,167,111,.85)) drop-shadow(0 0 3px rgba(255,236,190,.9))}
.bpm-jet svg{display:block;width:100%;height:100%}
.bpm-dot{position:absolute;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--gold-hi);box-shadow:0 0 8px rgba(203,167,111,.9);animation:bpm-dot 1s ease-out forwards}
@keyframes bpm-dot{0%{opacity:.95;transform:scale(1)}100%{opacity:0;transform:scale(.2)}}
.bpm-ring{position:fixed;left:50%;top:50%;z-index:1;width:140px;height:140px;margin:-70px 0 0 -70px;border-radius:50%;border:2px solid var(--gold-hi);pointer-events:none;opacity:0;animation:bpm-ring 1s ease-out both}
.bpm-ring.r2{animation-delay:.14s;border-width:1px}
@keyframes bpm-ring{0%{opacity:.9;transform:scale(.25)}100%{opacity:0;transform:scale(9)}}

/* ---------- shared panel (check-in + plot twist) ---------- */
.bpm-panel{position:relative;width:min(520px,100%);padding:24px 26px 22px;background:linear-gradient(165deg,#26262e 0%,#15151a 60%);border:1px solid var(--gold-dim);box-shadow:0 50px 100px rgba(0,0,0,.65),inset 0 1px 0 rgba(255,255,255,.07)}
.bpm-panel::before{content:"";position:absolute;left:-1px;right:-1px;top:-1px;height:2px;background:linear-gradient(90deg,transparent,var(--gold-hi),transparent)}
.bpm-brand{display:flex;align-items:center;gap:12px;margin:0 0 18px}
.bpm-logo{flex:0 0 auto;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-family:var(--fdisp,'Bebas Neue',sans-serif);font-size:17px;letter-spacing:.06em;color:#1a1305;background:linear-gradient(145deg,#e7cd93,#b08d57 55%,#8c6c3b)}
.bpm-brand b{font-family:var(--fdisp,'Bebas Neue',sans-serif);font-weight:400;font-size:15px;letter-spacing:.2em;color:var(--gold-hi)}
.bpm-dots{margin-left:auto;display:flex;gap:6px}
.bpm-dots i{width:22px;height:3px;background:#3a3a44}
.bpm-dots i.on{background:var(--gold-hi)}
.bpm-eyebrow{font-family:var(--fdisp,'Bebas Neue',sans-serif);font-size:15px;letter-spacing:.22em;color:var(--gold);margin:0 0 6px}
.bpm-title{font-weight:700;font-size:clamp(22px,3.2vw,28px);line-height:1.22;margin:0 0 8px;color:#fff}
.bpm-sub{font-size:14px;line-height:1.6;color:var(--mid);margin:0 0 16px}
.bpm-label{display:block;font-family:var(--fbody,'Lato',sans-serif);font-size:10px;letter-spacing:.15em;color:var(--lo);margin:0 0 6px;text-transform:uppercase}
.bpm-chips{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 8px}
.bpm-chip{font:inherit;font-size:13.5px;line-height:1.2;color:var(--mid);background:#1c1c23;border:1px solid var(--line);padding:8px 12px;cursor:pointer;transition:border-color .15s,color .15s,background .15s}
.bpm-chip:hover{border-color:var(--gold-dim);color:#fff}
.bpm-chip[aria-pressed="true"]{border-color:var(--gold);color:var(--gold-hi);background:#272019}
.bpm-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 10px}
.bpm-field{min-width:0}
.bpm-field.full{grid-column:1/-1}
.bpm-input{width:100%;height:44px;background:#1c1c23;color:#fff;border:1px solid var(--line);padding:0 12px;font:inherit;font-size:14.5px;border-radius:0;transition:border-color .15s}
.bpm-input:hover{border-color:#4b4b57}
.bpm-input::placeholder{color:var(--lo)}
select.bpm-input{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--lo) 50%),linear-gradient(135deg,var(--lo) 50%,transparent 50%);background-position:calc(100% - 17px) 19px,calc(100% - 12px) 19px;background-size:5px 5px;background-repeat:no-repeat;padding-right:30px}
.bpm-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.bpm-err{color:#f4908f;font-size:13px;min-height:19px;margin:0 0 6px}
.bpm-btn{font:inherit;font-weight:700;font-size:15.5px;display:inline-flex;align-items:center;justify-content:center;gap:9px;height:48px;padding:0 22px;border:1px solid transparent;cursor:pointer;text-align:center;text-decoration:none;transition:background .18s,border-color .18s,color .18s}
.bpm-btn.solid{background:var(--maroon);color:#fff}
.bpm-btn.solid:hover{background:var(--maroon-hi);color:#fff}
.bpm-btn.ghost{background:transparent;color:var(--hi);border-color:#52525e;font-weight:600}
.bpm-btn.ghost:hover{border-color:var(--gold);color:var(--gold-hi)}
.bpm-btn.block{width:100%}
.bpm-btn svg{width:18px;height:18px;flex:0 0 auto}
.bpm-fine{font-size:11.5px;line-height:1.55;color:var(--lo);margin:12px 0 0}
.bpm-gaps{display:grid;gap:8px;margin:0 0 16px}
.bpm-gap{display:flex;gap:14px;align-items:baseline;background:#1c1c23;border-left:2px solid var(--gold);padding:11px 14px;font-size:14px;color:var(--hi)}
.bpm-gap b{font-family:var(--fdisp,'Bebas Neue',sans-serif);font-weight:400;font-size:17px;letter-spacing:.1em;color:var(--gold-hi);flex:0 0 26px}
.bpm-actions{display:grid;gap:10px}
.bpm-link{display:inline-block;margin-top:14px;font-size:14px;color:var(--gold-hi);border-bottom:1px solid var(--gold-dim);text-decoration:none}
.bpm-link:hover{color:#fff}

/* ---------- language switch (top right) + skip (bottom right) ---------- */
.bpm-lang{position:fixed;right:max(16px,env(safe-area-inset-right));top:max(14px,env(safe-area-inset-top));z-index:5;display:inline-flex;border:1px solid #4a4a56;border-radius:999px;overflow:hidden;background:rgba(20,20,26,.78);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.bpm-lang button{font:inherit;font-size:13px;font-weight:700;min-width:54px;height:36px;padding:0 14px;color:var(--mid);background:transparent;border:0;cursor:pointer;transition:background .15s,color .15s}
.bpm-lang button:hover{color:#fff}
.bpm-lang button[aria-pressed="true"]{background:var(--gold);color:#1a1305}
.bpm-on .bpm-lang{animation:bpm-fade .5s .9s both}
.bpm-skip{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:5;display:inline-flex;align-items:center;gap:9px;height:42px;padding:0 16px 0 18px;font:inherit;font-size:14px;font-weight:600;color:var(--mid);background:rgba(20,20,26,.78);border:1px solid #4a4a56;border-radius:999px;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:color .15s,border-color .15s,background .15s}
.bpm-skip:hover{color:#fff;border-color:var(--gold);background:rgba(30,26,20,.9)}
.bpm-skip svg{width:14px;height:14px}
.bpm button:focus-visible,.bpm a:focus-visible,.bpm input:focus-visible,.bpm select:focus-visible{outline:2px solid var(--gold-hi);outline-offset:2px}

/* ---------- the ticket ---------- */
.bpm-ticketwrap{position:relative;width:min(800px,100%);filter:drop-shadow(0 38px 46px rgba(0,0,0,.6))}
.tk{--nx:168px;--sh:150px;position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) var(--nx);color:#1b1b20;font-family:var(--fbody,'Lato',sans-serif);
  background:linear-gradient(112deg,rgba(255,255,255,.7) 0%,rgba(255,255,255,0) 38%),repeating-linear-gradient(0deg,rgba(120,100,60,.035) 0 1px,transparent 1px 3px),#f4eddd;
  -webkit-mask:radial-gradient(circle 13px at calc(100% - var(--nx)) 0,#0000 97%,#000) top/100% 51% no-repeat,radial-gradient(circle 13px at calc(100% - var(--nx)) 100%,#0000 97%,#000) bottom/100% 51% no-repeat;
  mask:radial-gradient(circle 13px at calc(100% - var(--nx)) 0,#0000 97%,#000) top/100% 51% no-repeat,radial-gradient(circle 13px at calc(100% - var(--nx)) 100%,#0000 97%,#000) bottom/100% 51% no-repeat}
.tk::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.55) 50%,transparent 65%);transform:translateX(-120%)}
.tk-main{padding:0 0 18px;min-width:0;position:relative}
.tk-bar{display:flex;align-items:center;gap:12px;padding:12px 22px;background:linear-gradient(100deg,#6e1a28,#8A2432 55%,#7a1f2d);color:#fff}
.tk-bar .bpm-logo{width:28px;height:28px;font-size:14px}
.tk-air{font-family:var(--fdisp,'Bebas Neue',sans-serif);font-size:17px;letter-spacing:.2em;background:linear-gradient(90deg,#f0d9a2,#cba76f,#f0d9a2);-webkit-background-clip:text;background-clip:text;color:transparent}
.tk-kind{margin-left:auto;font-size:10.5px;letter-spacing:.2em;color:#f0d9b8;white-space:nowrap}
.tk-route{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:20px 22px 6px}
.tk-ap small,.tk-cell small,.tk-st small{display:block;font-size:9.5px;letter-spacing:.18em;color:#8a7e62;margin-bottom:2px}
.tk-ap b{display:block;font-family:var(--fdisp,'Bebas Neue',sans-serif);font-weight:400;font-size:clamp(46px,8vw,68px);line-height:.9;letter-spacing:.03em;color:#17171c}
.tk-ap span{display:block;font-size:12px;color:#5a5a62;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px}
.tk-ap.r{text-align:right}
.tk-ap.r span{margin-left:auto}
.tk-fl{position:relative;display:flex;align-items:center;justify-content:center;color:#8A2432;height:40px}
.tk-fl::before{content:"";position:absolute;left:0;right:0;top:50%;border-top:2px dotted #b9ab86}
.tk-fl svg{position:relative;width:28px;height:28px;background:#f4eddd;padding:0 5px;box-sizing:content-box}
.tk-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 12px;padding:12px 22px 4px}
.tk-cell b{display:block;font-family:var(--fbn,'Hind Siliguri',sans-serif);font-weight:700;font-size:15px;letter-spacing:.04em;color:#17171c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tk-cell.hl b{color:#8A2432}
.tk-cell.w2{grid-column:span 2}
.tk-foot{display:flex;align-items:center;gap:14px;padding:14px 22px 0}
.tk-bars{flex:1;height:40px;min-width:0}
.tk-bars svg{display:block;width:100%;height:100%;fill:#17171c}
.tk-legal{font-size:9.5px;letter-spacing:.14em;color:#8a7e62;max-width:150px;line-height:1.4}
.tk-stub{position:relative;padding:18px 16px 18px 18px;border-left:2px dashed #c7b98f;display:flex;flex-direction:column;gap:12px;min-width:0}
.tk-st b{display:block;font-family:var(--fdisp,'Bebas Neue',sans-serif);font-weight:400;font-size:30px;letter-spacing:.05em;line-height:1;color:#17171c}
.tk-st em{display:block;font-style:normal;font-weight:700;font-size:13px;color:#17171c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tk-stub .tk-bars{flex:0 0 auto;height:44px;margin-top:auto}
.tk-stamp{position:absolute;left:calc((100% - 168px)/2 - 96px);top:44px;z-index:3;pointer-events:none;mix-blend-mode:multiply;opacity:0;transform:rotate(-13deg);-webkit-filter:url(#bpm-rough);filter:url(#bpm-rough)}
.tk-stamp div{border:3px double #1f7a52;color:#1f7a52;padding:5px 14px 6px;text-align:center;background:rgba(244,237,221,.35)}
.tk-stamp b{display:block;font-family:var(--fdisp,'Bebas Neue',sans-serif);font-weight:400;font-size:30px;letter-spacing:.12em;line-height:1}
.tk-stamp small{display:block;font-size:9.5px;letter-spacing:.24em;margin-top:2px;font-weight:700}
.tk-stamp i{display:block;font-style:normal;font-size:9px;letter-spacing:.2em;border-top:1px solid #1f7a52;margin-top:4px;padding-top:3px}
.bpm-slot{height:3px;width:min(820px,100%);margin:0 0 10px;background:linear-gradient(90deg,transparent,var(--gold-hi),transparent);box-shadow:0 0 22px 3px rgba(203,167,111,.55);transform:scaleX(0);opacity:0}
.bpm-after{margin-top:22px;text-align:center;width:min(420px,100%);opacity:0}
.bpm-after p{margin:0 0 14px;font-size:16px;color:var(--hi);text-shadow:0 2px 12px rgba(0,0,0,.6)}

/* ---------- opening: iris opens -> plane swoops in -> card blooms where it lands ---------- */
.bpm-on .bpm-backdrop{animation:bpm-iris-in .8s cubic-bezier(.3,.7,.2,1) both}
.bpm-on:not(.bpm-land) .bpm-card{opacity:0}
.bpm-land:not(.bpm-ready) .bpm-card{animation:bpm-bloom .8s cubic-bezier(.2,1.05,.3,1) both}
.bpm-on .bpm-skip{animation:bpm-fade .5s .9s both}
@keyframes bpm-fade{from{opacity:0}to{opacity:1}}
@keyframes bpm-iris-in{from{clip-path:circle(0% at 50% 50%);opacity:.4}to{clip-path:circle(150% at 50% 50%);opacity:1}}
@keyframes bpm-bloom{0%{opacity:0;transform:translateY(28px) scale(.7) rotateX(24deg);filter:blur(10px)}55%{opacity:1;filter:blur(0)}78%{transform:translateY(-4px) scale(1.025) rotateX(0)}100%{opacity:1;transform:none;filter:none}}
/* panel children rise in one after another whenever a panel step becomes visible */
.bpm-land .bpm-panel>*{animation:bpm-up .55s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0)*55ms + 90ms)}
.bpm-land .bpm-panel>*:nth-child(2){--i:1}.bpm-land .bpm-panel>*:nth-child(3){--i:2}.bpm-land .bpm-panel>*:nth-child(4){--i:3}.bpm-land .bpm-panel>*:nth-child(5){--i:4}.bpm-land .bpm-panel>*:nth-child(6){--i:5}.bpm-land .bpm-panel>*:nth-child(7){--i:6}.bpm-land .bpm-panel>*:nth-child(8){--i:7}.bpm-land .bpm-panel>*:nth-child(9){--i:8}.bpm-land .bpm-panel>*:nth-child(10){--i:9}.bpm-land .bpm-panel>*:nth-child(11){--i:10}.bpm-land .bpm-panel>*:nth-child(12){--i:11}
@keyframes bpm-up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* ---------- closing: card folds away -> plane takes off from where it was -> iris closes ---------- */
.bpm-leaving .bpm-card{animation:bpm-collapse .5s cubic-bezier(.55,0,.8,.4) both}
.bpm-leaving .bpm-backdrop{animation:bpm-iris-out .85s .4s cubic-bezier(.6,0,.3,1) both}
.bpm-leaving .bpm-skip,.bpm-leaving .bpm-lang{animation:bpm-fadeout .25s both}
@keyframes bpm-fadeout{from{opacity:1}to{opacity:0}}
@keyframes bpm-collapse{0%{opacity:1;transform:none;filter:none}100%{opacity:0;transform:translateY(-10px) scale(.55) rotateX(-18deg);filter:blur(8px)}}
@keyframes bpm-iris-out{from{clip-path:circle(150% at 50% 50%);opacity:1}to{clip-path:circle(0% at 50% 50%);opacity:.5}}

/* ---------- step transitions ---------- */
.bpm-card.is-out{animation:bpm-flipout .22s ease-in both}
.bpm-card.is-in{animation:bpm-flipin .42s cubic-bezier(.2,.9,.3,1) both}
@keyframes bpm-flipout{to{opacity:0;transform:rotateY(88deg) scale(.96)}}
@keyframes bpm-flipin{from{opacity:0;transform:rotateY(-88deg) scale(.96)}to{opacity:1;transform:none}}
.bpm-card.is-fade{animation:bpm-fade-out2 .25s ease-in both}
@keyframes bpm-fade-out2{to{opacity:0;transform:scale(.97)}}

/* printing + stamp (only when the ticket step is active) */
.bpm-printing .tk{animation:bpm-print 1.05s .1s cubic-bezier(.3,.7,.2,1) both}
.bpm-printing .tk::after{animation:bpm-sheen 1.4s 1.1s ease-out both}
.bpm-printing .bpm-slot{animation:bpm-slot 1.5s both}
.bpm-printing .tk-stamp{animation:bpm-stamp .5s 1.35s cubic-bezier(.2,.8,.3,1) both}
.bpm-printing .bpm-ticketwrap{animation:bpm-jolt .3s 1.65s ease-out both}
.bpm-printing .bpm-after{animation:bpm-fade .6s 2.1s both}
@keyframes bpm-print{from{clip-path:inset(0 0 100% 0);transform:translateY(-34px)}to{clip-path:inset(0 0 0 0);transform:none}}
@keyframes bpm-slot{0%{opacity:0;transform:scaleX(0)}15%{opacity:1;transform:scaleX(1)}80%{opacity:1}100%{opacity:0;transform:scaleX(1)}}
@keyframes bpm-sheen{to{transform:translateX(120%)}}
@keyframes bpm-stamp{0%{opacity:0;transform:rotate(-13deg) scale(2.6)}55%{opacity:.95;transform:rotate(-13deg) scale(.92)}100%{opacity:.9;transform:rotate(-13deg) scale(1)}}
@keyframes bpm-jolt{0%{transform:translateY(0)}35%{transform:translateY(4px)}70%{transform:translateY(-1px)}100%{transform:none}}
.bpm-static .tk-stamp{opacity:.9}
.bpm-static .bpm-after{opacity:1}

/* ---------- small screens: ticket stacks, perforation turns horizontal ---------- */
@media (max-width:660px){
  .bpm-stage{padding:60px 12px 84px}
  .bpm-panel{padding:20px 18px 18px}
  .bpm-row{grid-template-columns:1fr}
  .tk{grid-template-columns:1fr;
    -webkit-mask:radial-gradient(circle 13px at 0 calc(100% - var(--sh)),#0000 97%,#000) left/51% 100% no-repeat,radial-gradient(circle 13px at 100% calc(100% - var(--sh)),#0000 97%,#000) right/51% 100% no-repeat;
    mask:radial-gradient(circle 13px at 0 calc(100% - var(--sh)),#0000 97%,#000) left/51% 100% no-repeat,radial-gradient(circle 13px at 100% calc(100% - var(--sh)),#0000 97%,#000) right/51% 100% no-repeat}
  .tk-stub{border-left:0;border-top:2px dashed #c7b98f;flex-direction:row;flex-wrap:wrap;align-items:flex-end;gap:10px 22px;padding:14px 18px;min-height:var(--sh)}
  .tk-stub .tk-bars{flex:1 0 100%;margin-top:0;height:38px}
  .tk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tk-route{gap:8px;padding:16px 16px 4px}
  .tk-ap span{max-width:120px}
  .tk-bar,.tk-grid,.tk-foot{padding-left:16px;padding-right:16px}
  .tk-legal{display:none}
  .tk-stamp{left:auto;top:auto;right:10px;bottom:138px}
  .tk-stamp b{font-size:24px}
  .tk-kind{display:none}
}
@media (prefers-reduced-motion:reduce){
  .bpm *,.bpm *::before,.bpm *::after{animation-duration:1ms!important;animation-delay:0s!important}
  .bpm-flight,.bpm-ring{display:none}
  .tk-stamp{opacity:.9}.bpm-after{opacity:1}
}
