PageSourceSearch

https://bluetrain.co.za/chunk-NBD4ZWU5.js

js bluetrain.co.za collected 2026-10-02 04:38:12 UTC 25,148 bytes, 1 lines download raw bytes

1import{a as $}from"./chunk-NNYPB6YD.js";import{b as T,c as A,d as m,e as G,f as R,j as K,l as W,m as U,q as z,r as V,s as Y,t as H}from"./chunk-GUHNXJPP.js";import{h as L,i as N}from"./chunk-3PACKEEH.js";import{c as F}from"./chunk-QE3L7F27.js";import{$ as y,Ab as S,Cb as h,Eb as f,Ec as D,Ic as w,Na as e,Nb as k,Qb as a,Rb as d,Sb as b,V as O,a as P,aa as C,ab as I,b as M,bc as l,cc as p,hc as s,ja as E,nb as x,ob as u,sa as B,tb as g,ub as o,vb as i,wb as v}from"./chunk-7I7CLC6Q.js";function X(c,n){if(c&1&&(o(0,"span",16),a(1),i()),c&2){let t=f();e(),d(t.getFieldError("nameOnCard"))}}function Z(c,n){if(c&1&&(o(0,"span",16),a(1),i()),c&2){let t=f();e(),d(t.getFieldError("cardNumber"))}}function J(c,n){if(c&1&&(o(0,"span",16),a(1),i()),c&2){let t=f();e(),d(t.getFieldError("expiryMonth")||t.getFieldError("expiryYear"))}}function Q(c,n){if(c&1&&(o(0,"span",16),a(1),i()),c&2){let t=f();e(),d(t.getFieldError("cvv"))}}function ee(c,n){if(c&1&&(o(0,"span",16),a(1),i()),c&2){let t=f();e(),d(t.getFieldError("disclaimerAccepted"))}}function te(c,n){if(c&1&&(o(0,"p",49),a(1),l(2,"translate"),o(3,"strong"),a(4),i()()),c&2){let t,r=f(2);e(),b(" ",p(2,2,"BOOKING_FLOW.BOOKING_REFERENCE")," "),e(3),d((t=r.bookingData())==null?null:t.reference)}}function ne(c,n){if(c&1){let t=S();o(0,"div",43),h("click",function(){y(t);let _=f();return C(_.onCloseModal())}),o(1,"div",44),h("click",function(_){return y(t),C(_.stopPropagation())}),o(2,"div",45)(3,"h2",46),a(4),l(5,"translate"),i()(),o(6,"div",47)(7,"p",48),a(8),l(9,"translate"),i(),x(10,te,5,4,"p",49),i(),o(11,"div",50)(12,"button",51),h("click",function(){y(t);let _=f();return C(_.onCloseModal())}),a(13),l(14,"translate"),i()()()()}if(c&2){let t,r=f();e(4),d(p(5,4,"BOOKING_FLOW.BOOKING_CONFIRMED")),e(4),b(" ",p(9,6,"BOOKING_FLOW.BOOKING_CONFIRMED_MESSAGE")," "),e(2),u((t=r.bookingData())!=null&&t.reference?10:-1),e(3),b(" ",p(14,8,"BOOKING_FLOW.OK")," ")}}var q=class c{router=O(L);fb=O(V);bookingState=O($);isBrowser=w(O(B));routeInfo=[{code:"durban-cpt",display:"Durban to Cape Town"},{code:"pta-cpt",display:"Pretoria to Cape Town"},{code:"pta-hds",display:"Pretoria to Hoedspruit"},{code:"knp-cpt",display:"Kruger National Park to Cape Town"},{code:"pta-vfa",display:"Pretoria to Victoria Falls"},{code:"cpt-pta",display:"Cape Town to Pretoria"}];bookingData=E(null);paymentForm;formSubmitted=E(!1);showConfirmationModal=E(!1);constructor(){this.paymentForm=this.fb.group({nameOnCard:["",m.required],cardNumber:["",[m.required,m.pattern(/^\d{13,19}$/)]],expiryMonth:["",[m.required,m.pattern(/^(0[1-9]|1[0-2])$/)]],expiryYear:["",[m.required,m.pattern(/^\d{2}$/)]],cvv:["",[m.required,m.pattern(/^\d{3,4}$/)]],disclaimerAccepted:[!1,m.requiredTrue]})}ngOnInit(){this.isBrowser&&window.scrollTo({top:0,behavior:"smooth"});let n=this.bookingState.booking();if(!n){this.router.navigate(["/book"]);return}this.bookingData.set(n)}suiteType=s(()=>{let n=this.bookingData();return n?.suiteType&&n.suiteType.toUpperCase()==="LUXURY"?"LUXURY SUITE":"DE LUXE SUITE"});routeDisplay=s(()=>{let n=this.bookingData();if(!n?.route)return"\u2014";let t=this.routeInfo.find(r=>r.code===n.route);return t?t.display.toUpperCase():n.route.toUpperCase()});departureDate=s(()=>{let n=this.bookingData();return n?.departureDate?n.departureDate:"\u2014"});arrivalDate=s(()=>{let n=this.bookingData();return n?.arrivalDate?n.arrivalDate:"\u2014"});passengersDisplay=s(()=>{let t=this.bookingData()?.adults||0;return t>1?`${t} Adults`:`${t} Adult`});otherPassengers=s(()=>{let n=this.bookingData();return((n?.child6to11||0)+(n?.child0to5||0)).toString()});child6to11Display=s(()=>{let t=this.bookingData()?.child6to11||0;return t>1?`${t} Children`:`${t} Child`});child0to5Display=s(()=>{let t=this.bookingData()?.child0to5||0;return t>1?`${t} Infants`:`${t} Infant`});othersDisplay=s(()=>this.bookingData()?.bathPreference?"DOUBLE BED WITH BATH TUB":"DOU
1BLE BED WITH BATH");totalDisplay=s(()=>{let n=this.bookingData();return n?.grandTotal?`R${n.grandTotal.toLocaleString("en-ZA",{minimumFractionDigits:2,maximumFractionDigits:2})}`:"R0,00"});onGoBack(){this.router.navigate(["/booking/personal-details"])}onEdit(){this.router.navigate(["/book"],{queryParams:{scrollToForm:"true"}})}onSubmit(){if(this.formSubmitted.set(!0),this.paymentForm.valid){console.log("Processing payment:",this.paymentForm.value);let n=this.bookingState.booking();if(!n){this.router.navigate(["/book"]);return}let t=M(P({},n),{reference:n.reference||this.generateBookingReference()});this.bookingState.setBooking(t),this.sendConfirmationEmail(t),this.showConfirmationModal.set(!0)}else Object.keys(this.paymentForm.controls).forEach(n=>{let t=this.paymentForm.get(n);t&&t.invalid&&t.markAsTouched()})}onCloseModal(){this.showConfirmationModal.set(!1),this.bookingState.clearBooking(),this.router.navigate(["/"])}isFieldInvalid(n){let t=this.paymentForm.get(n);return!!(t&&t.invalid&&(t.touched||this.formSubmitted()))}getFieldError(n){let t=this.paymentForm.get(n);if(t&&t.invalid&&(t.touched||this.formSubmitted())){if(t.errors?.required)return"This field is required";if(t.errors?.requiredTrue)return"You must accept before paying.";if(t.errors?.pattern){if(n==="cardNumber")return"Please enter a valid card number";if(n==="expiryMonth"||n==="expiryYear")return"Please enter a valid expiry date";if(n==="cvv")return"Please enter a valid CVV"}}return""}sendConfirmationEmail(n){console.log("Sending confirmation email to:",n.email),console.log("Booking Reference:",n.reference)}generateBookingReference(){let n=new Date,t=n.getFullYear().toString().slice(-2),r=(n.getMonth()+1).toString().padStart(2,"0"),_=n.getDate().toString().padStart(2,"0"),j=Math.floor(1e3+Math.random()*9e3);return`BTR-${t}${r}${_}-${j}`}static \u0275fac=function(t){return new(t||c)};static \u0275cmp=I({type:c,selectors:[["app-booking-payment"]],decls:143,vars:112,consts:[[1,"payment-page"],[1,"steps-banner"],[1,"steps-banner__container"],[1,"steps-banner__list"],[1,"steps-banner__item","steps-banner__item--active"],[1,"steps-banner__number"],[1,"steps-banner__text"],[1,"steps-banner__item"],[1,"main-content"],[1,"main-content__container"],[1,"payment-form"],[1,"payment-form__heading"],[1,"card-form",3,"ngSubmit","formGroup"],[1,"card-form__field"],["for","nameOnCard"],["id","nameOnCard","type","text","formControlName","nameOnCard",3,"placeholder"],[1,"card-form__error"],["for","cardNumber"],["id","cardNumber","type","text","formControlName","cardNumber","maxlength","19",3,"placeholder"],[1,"card-form__row"],[1,"card-form__field","card-form__field--half"],["for","expiryMonth"],[1,"card-form__expiry-row"],["id","expiryMonth","type","text","formControlName","expiryMonth","maxlength","2",3,"placeholder"],["id","expiryYear","type","text","formControlName","expiryYear","maxlength","2",3,"placeholder"],["for","cvv"],["id","cvv","type","text","formControlName","cvv","maxlength","4",3,"placeholder"],[1,"ticket-details"],[1,"ticket-details__go-back-btn",3,"click"],[1,"ticket-details__card"],[1,"ticket-details__title"],[1,"ticket-details__content"],[1,"ticket-details__train-name"],[1,"ticket-details__row"],[1,"ticket-details__label"],[1,"ticket-details__value"],[1,"ticket-details__row","ticket-details__row--total"],[1,"card-form__field","card-form__field--disclaimer",3,"formGroup"],[1,"checkbox-field"],["type","checkbox","formControlName","disclaimerAccepted"],["routerLink","/about-us/terms-and-cons","target","_blank"],[1,"ticket-details__pay-btn",3,"click","disabled"],[1,"confirmation-modal"],[1,"confirmation-modal",3,"click"],[1,"confirmation-modal__content",3,"click"],[1,"confirmation-modal__header"],[1,"confirmation-modal__title"],[1,"confirmation-modal__body"],[1,"confirmation-modal__message"],[1,"confirmation-modal__reference"],[1,"confirmation-modal__footer"],[1,"confirmation-modal__button",3,"click"]],template:function(t,r){t&1&&(o(0,"div",0)(1,"div",1)(2,"div",2)(3,"ol",3)(4,"li",4)(5,"span",5),a(6,"1"),i(),o(7,"span",6),a(8),l(9,"translate"),i()(),o(10,"li",4)(11,"span",5),a(12,"2"),i(),o(13,"span",6),a(14),l(15,"translate"),i()(),o(16,"li",4)(17,"span",5),a(18,"3"),i(),o(19,"span",6),a(20),l(21,"translate"),i()(),o(22,"li",7)(23,"span",5),a(24,"4"),i(),o(25,"span",6),a(26),l(27,"translate"),i()()()()(),o(28,"div",8)(29,"div",9)(30,"div",10)(31,"h1",11),a(32),l(33,"translate"),i(),o(34,"form",12),h("ngSubmit",function(){return r.onSubmit()}),o(35,"div",13)(36,"label",14),a(37),l(38,"translate"),i(),v(39,"input",15),l(40,"translate"),x(41,X,2,1,"span",16),i(),o(42,"div",13)(43,"label",17),a(44),l(45,"translate"),i(),v(46,"input",18),l(47,"translate"),x(48,Z,2,1,"span",16),i(),o(49,"div",19)(50,"div",20)(51,"label",21),a(52),l(53,"translate"),i(),o(54,"div",22),v(55,"input",23),l(56,"translate"),v(57,"input",24),l(58,"translate"),i(),x(59,J,2,1,"span",16),i(),o(60,"div",20)(61,"label",25),a(62),l(63,"translate"),i(),v(64,"input",26),l(65,"translate"),x(66,Q,2,1,"span",16),i()()()(),o(67,"div",27)(68,"button",28),h("click",function(){return r.onGoBack()}),a(69),l(70,"translate"),i(),o(71,"div",29)(72,"h3",30),a(73),l(74,"translate"),i(),o(75,"div",31)(76,"p",32),a(77),l(78,"translate"),i(),o(79,"div",33)(80,"span",34),a(81),l(82,"translate"),i(),o(83,"span",35),a(84),i()(),o(85,"div",33)(86,"span",34),a(87),l(88,"translate"),i(),o(89,"span",35),a(90),i()(),o(91,"div",33)(92,"span",34),a(93),l(94,"translate"),i(),o(95,"span",35),a(96),i()(),o(97,"div",33)(98,"span",34),a(99),l(100,"translate"),i(),o(101,"span",35),a(102),i()(),o(103,"div",33)(104,"span",34),a(105),l(106,"translate"),i(),o(107,"span",35),a(108),i()(),o(109,"div",33)(110,"span",34),a(111),l(112,"translate"),i(),o(113,"span",35),a(114),i()(),o(115,"div",33)(116,"span",34),a(117),l(118,"translate"),i(),o(119,"span",35),a(120),i()(),o(121,"div",36)(122,"span",34),a(123),l(124,"translate"),i(),o(125,"span",35),a(126),i()()()(),o(127,"div",37)(128,"label",38),v(129,"input",39),o(130,"span"),a(131),l(132,"translate"),o(133,"a",40),a(134),l(135,"translate"),i(),a(136),l(137,"translate"),i()(),x(138,ee,2,1,"span",16),i(),o(139,"button",41),h("click",function(){return r.onSubmit()}),a(140),l(141,"translate"),i()()()(),x(142,ne,15,10,"div",42),i()),t&2&&(e(8),d(p(9,54,"BOOKING_FLOW.STEP_SUITE")),e(6),d(p(15,56,"BOOKING_FLOW.STEP_YOUR_DETAILS")),e(6),d(p(21,58,"BOOKING_FLOW.STEP_PAYMENT")),e(6),d(p(27,60,"BOOKING_FLOW.STEP_CONFIRMATION")),e(6),d(p(33,62,"BOOKING_FLOW.HEADING_ADD_NEW_CARD")),e(2),g("formGroup",r.paymentForm),e(),k("card-form__field--error",r.isFieldInvalid("nameOnCard")),e(2),d(p(38,64,"BOOKING_FLOW.LABEL_NAME_ON_CARD")),e(2),g("placeholder",p(40,66,"BOOKING_FLOW.PLACEHOLDER_NAME_ON_CARD")),e(2),u(r.isFieldInvalid("nameOnCard")?41:-1),e(),k("card-form__field--error",r.isFieldInvalid("cardNumber")),e(2),d(p(45,68,"BOOKING_FLOW.LABEL_CARD_NUMBER")),e(2),g("placeholder",p(47,70,"BOOKING_FLOW.PLACEHOLDER_CARD_NUMBER")),e(2),u(r.isFieldInvalid("cardNumber")?48:-1),e(2),k("card-form__field--error",r.isFieldInvalid("expiryMonth")),e(2),d(p(53,72,"BOOKING_FLOW.LABEL_EXPIRY_DATE")),e(3),g("placeholder",p(56,74,"BOOKING_FLOW.PLACEHOLDER_MONTH")),e(2),g("placeholder",p(58,76,"BOOKING_FLOW.PLACEHOLDER_YEAR")),e(2),u(r.isFieldInvalid("expiryMonth")||r.isFieldInvalid("expiryYear")?59:-1),e(),k("card-form__field--error",r.isFieldInvalid("cvv")),e(2),d(p(63,78,"BOOKING_FLOW.LABEL_CVV")),e(2),g("placeholder",p(65,80,"BOOKING_FLOW.PLACEHOLDER_CVV")),e(2),u(r.isFieldInvalid("cvv")?66:-1),e(3),b(" ",p(70,82,"BOOKING_FLOW.GO_BACK")," "),e(4),d(p(74,84,"BOOKING_FLOW.TICKET_DETAILS_TITLE")),e(4),d(p(78,8
16,"BOOKING_FLOW.THE_BLUE_TRAIN")),e(4),d(p(82,88,"BOOKING_FLOW.LABEL_ROUTE")),e(3),d(r.routeDisplay()),e(3),d(p(88,90,"BOOKING_FLOW.LABEL_DEPARTURE_DATE")),e(3),d(r.departureDate()),e(3),d(p(94,92,"BOOKING_FLOW.LABEL_ARRIVAL_DATE")),e(3),d(r.arrivalDate()),e(3),d(p(100,94,"BOOKING_FLOW.LABEL_PASSENGERS")),e(3),d(r.passengersDisplay()),e(3),d(p(106,96,"BOOKING_FLOW.LABEL_OTHER_PASSENGERS")),e(3),d(r.otherPassengers()),e(3),d(p(112,98,"BOOKING_FLOW.LABEL_SUITE_TYPE")),e(3),d(r.suiteType()),e(3),d(p(118,100,"BOOKING_FLOW.LABEL_DOUBLE_BED")),e(3),d(r.othersDisplay()),e(3),d(p(124,102,"BOOKING_FLOW.LABEL_TOTAL")),e(3),d(r.totalDisplay()),e(),g("formGroup",r.paymentForm),e(4),b(" ",p(132,104,"BOOKING_FLOW.DISCLAIMER_PRE_TERMS")," "),e(3),d(p(135,106,"BOOKING_FLOW.DISCLAIMER_TERMS_LINK")),e(2),b(" ",p(137,108,"BOOKING_FLOW.DISCLAIMER_POST_TERMS")," "),e(2),u(r.isFieldInvalid("disclaimerAccepted")?138:-1),e(),g("disabled",r.paymentForm.invalid),e(),b(" ",p(141,110,"BOOKING_FLOW.PAY_WITH_CARD")," "),e(2),u(r.showConfirmationModal()?142:-1))},dependencies:[D,H,K,A,T,G,R,z,W,U,Y,N,F],styles:['.payment-page[_ngcontent-%COMP%]{min-height:100vh;background:#fff;transition:background-color .3s ease}  .dark-mode .payment-page{background:var(--color-bg-primary)}.steps-banner[_ngcontent-%COMP%]{background:#fff;border-bottom:1px solid rgba(0,0,0,.1);padding:225px 0 20px;margin-bottom:40px;transition:background-color .3s ease,border-color .3s ease}  .dark-mode .steps-banner{background:var(--color-bg-primary);border-bottom-color:#ffffff1a}.steps-banner__container[_ngcontent-%COMP%]{max-width:1200px;margin:0 auto;padding:0 20px}.steps-banner__list[_ngcontent-%COMP%]{display:flex;list-style:none;margin:0;padding:0;gap:0;justify-content:flex-start;align-items:center;position:relative}.steps-banner__item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;position:relative;font-family:var(--font-family-heading);font-weight:400;font-size:24px;color:#1a1a1a;text-transform:uppercase;padding-right:40px;padding-bottom:20px;border-bottom:2px solid rgba(0,0,0,.2);transition:color .3s ease,border-color .3s ease}  .dark-mode .steps-banner__item{color:var(--color-text-primary);border-bottom-color:#fff3}.steps-banner__item--active[_ngcontent-%COMP%]{border-bottom-color:#1a1a1a}  .dark-mode .steps-banner__item--active{border-bottom-color:var(--color-gold-primary)}.steps-banner__item[_ngcontent-%COMP%]:not(:last-child):before{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);width:379px;height:1px;background:#0003;transition:background-color .3s ease}  .dark-mode .steps-banner__item:not(:last-child):before{background:#fff3}.steps-banner__number[_ngcontent-%COMP%]{font-weight:400;font-size:24px;color:#1a1a1a;transition:color .3s ease}  .dark-mode .steps-banner__number{color:var(--color-text-primary)}.steps-banner__text[_ngcontent-%COMP%]{font-weight:400;font-size:24px;color:#1a1a1a;transition:color .3s ease}  .dark-mode .steps-banner__text{color:var(--color-text-primary)}.main-content[_ngcontent-%COMP%]{padding:40px 20px 80px}.main-content__container[_ngcontent-%COMP%]{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:1fr 510px;gap:60px;align-items:start}.payment-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:30px;padding:20px 0}.payment-form__heading[_ngcontent-%COMP%]{font-family:var(--font-family-heading);font-weight:400;font-size:40px;line-height:normal;color:#0f0f0f;text-align:left;margin:0;text-transform:uppercase;transition:color .3s ease}  .dark-mode .payment-form__heading{color:var(--color-text-primary)}.card-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:20px}.card-form__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:20px}.card-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.card-form__field[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-family:var(--font-family-primary);font-weight:400;font-size:17px;line-height:normal;color:#0f0f0f;text-transform:uppercase;transition:color .3s ease}  .dark-mode .card-form__field label{color:var(--color-text-primary)}.card-form__field.card-form__field--disclaimer[_ngcontent-%COMP%]   .checkbox-field[_ngcontent-%COMP%]{display:grid!important;grid-template-columns:20px 1fr;align-items:start;gap:10px;width:100%!important;margin:0!important;text-transform:none!important;font-size:14px!important;font-weight:400!important;line-height:1.4!important;color:inherit!important;cursor:pointer;text-align:left}.card-form__field.card-form__field--disclaimer[_ngcontent-%COMP%]   .checkbox-field[_ngcontent-%COMP%]   input[type=checkbox][_ngcontent-%COMP%]{width:18px!important;height:18px!important;min-width:18px!important;max-width:18px!important;margin:2px 0 0!important;padding:0!important;border:1px solid rgba(0,0,0,.4)!important;border-radius:3px!important;background:#fff!important;cursor:pointer;align-self:start;justify-self:start;flex:none;appearance:auto;-webkit-appearance:checkbox}.card-form__field.card-form__field--disclaimer[_ngcontent-%COMP%]   .checkbox-field[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{align-self:start}.card-form__field[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{font-family:var(--font-family-primary);font-weight:300;font-size:17px;line-height:normal;color:#0f0f0f;padding:12px 16px;border:1px solid rgba(0,0,0,.2);border-radius:var(--radius-base);background:#fff;transition:border-color .3s ease,background-color .3s ease,color .3s ease;width:100%}  .dark-mode .card-form__field input{background:var(--color-bg-secondary);border-color:#fff3;color:var(--color-text-primary)}  .dark-mode .card-form__field input::placeholder{color:#fff6}  .dark-mode .card-form__field input:focus{border-color:var(--color-gold-primary);outline:none}.card-form__field[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]:focus{outline:none;border-color:#001c50}.card-form__field[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]::placeholder{color:#0006}.card-form__field--error[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{border-color:#dc3545;border-width:2px}.card-form__field--error[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]:focus{border-color:#dc3545;outline:2px solid rgba(220,53,69,.25)}.card-form__expiry-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.card-form__error[_ngcontent-%COMP%]{font-family:var(--font-family-primary);font-weight:300;font-size:14px;line-height:normal;color:#dc3545;margin-top:-4px}.ticket-details[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:20px;position:sticky;top:20px;padding:20px 0}.ticket-details__go-back-btn[_ngcontent-%COMP%], .ticket-details__pay-btn[_ngcontent-%COMP%]{font-family:var(--font-family-heading);font-weight:400;font-size:20px;line-height:normal;text-transform:uppercase;color:#fff;background:var(--color-navy-dark);border:none;border-radius:var(--radius-base);padding:0 24px;
1cursor:pointer;transition:background-color .3s ease,transform .2s ease,box-shadow .3s ease;width:100%;height:44px;display:flex;align-items:center;justify-content:center}.ticket-details__go-back-btn[_ngcontent-%COMP%]:hover:not(:disabled), .ticket-details__pay-btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-navy-medium);transform:translateY(-2px);box-shadow:0 4px 12px #0003}.ticket-details__go-back-btn[_ngcontent-%COMP%]:active:not(:disabled), .ticket-details__pay-btn[_ngcontent-%COMP%]:active:not(:disabled){background:#001830}.ticket-details__go-back-btn[_ngcontent-%COMP%]:disabled, .ticket-details__pay-btn[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}  .dark-mode .ticket-details__go-back-btn,   .dark-mode .ticket-details__pay-btn{background:#ffffff1a;color:#fff}  .dark-mode .ticket-details__go-back-btn:hover:not(:disabled),   .dark-mode .ticket-details__pay-btn:hover:not(:disabled){background:#fff3;box-shadow:0 4px 12px #0003}  .dark-mode .ticket-details__go-back-btn:active:not(:disabled),   .dark-mode .ticket-details__pay-btn:active:not(:disabled){background:#ffffff26}.ticket-details__card[_ngcontent-%COMP%]{background:var(--color-navy-dark);color:#fff;border-radius:var(--radius-base);padding:24px;width:510px;min-height:612px;display:flex;flex-direction:column;gap:20px;transition:background-color .3s ease,box-shadow .3s ease,border .3s ease}  .dark-mode .ticket-details__card{background:#ffffff1a;box-shadow:0 4px 12px #0000004d;border:1px solid rgba(255,255,255,.2)}.ticket-details__title[_ngcontent-%COMP%]{font-family:var(--font-family-heading);font-weight:400;font-size:20px;line-height:normal;color:#fff;margin:0 0 10px;transition:color .3s ease}.ticket-details__content[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:20px}.ticket-details__train-name[_ngcontent-%COMP%]{font-family:var(--font-family-heading);font-weight:300;font-size:20px;line-height:normal;color:#fff;margin:0 0 10px;transition:color .3s ease}.ticket-details__row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:20px;padding-bottom:20px;border-bottom:1px solid rgba(255,255,255,.2);transition:border-color .3s ease}.ticket-details__row[_ngcontent-%COMP%]:last-of-type{border-bottom:none}.ticket-details__row--total[_ngcontent-%COMP%]{margin-top:20px;padding-top:20px;border-top:2px solid rgba(255,255,255,.2);font-weight:400;transition:border-color .3s ease}.ticket-details__label[_ngcontent-%COMP%]{font-family:var(--font-family-primary);font-weight:300;font-size:17px;line-height:normal;color:#ffffffd9;flex-shrink:0;transition:color .3s ease}.ticket-details__value[_ngcontent-%COMP%]{font-family:var(--font-family-primary);font-weight:300;font-size:17px;line-height:normal;color:#fff;text-align:right;flex:1;transition:color .3s ease}.ticket-details__row--total[_ngcontent-%COMP%]   .ticket-details__label[_ngcontent-%COMP%], .ticket-details__row--total[_ngcontent-%COMP%]   .ticket-details__value[_ngcontent-%COMP%]{font-weight:400;font-size:17px}.confirmation-modal[_ngcontent-%COMP%]{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;padding:20px;transition:background-color .3s ease}  .dark-mode .confirmation-modal{background:#000c}.confirmation-modal__content[_ngcontent-%COMP%]{background:#fff;border-radius:var(--radius-container);max-width:500px;width:100%;box-shadow:0 10px 40px #0003;overflow:hidden;transition:background-color .3s ease,box-shadow .3s ease}  .dark-mode .confirmation-modal__content{background:var(--color-bg-secondary);box-shadow:0 10px 40px #000000e6}.confirmation-modal__header[_ngcontent-%COMP%]{padding:30px 30px 20px;text-align:center;border-bottom:1px solid rgba(0,0,0,.1);transition:border-color .3s ease}  .dark-mode .confirmation-modal__header{border-bottom-color:#ffffff1a}.confirmation-modal__title[_ngcontent-%COMP%]{font-family:var(--font-family-heading);font-weight:400;font-size:32px;line-height:normal;color:#0f0f0f;margin:0;text-transform:uppercase;transition:color .3s ease}  .dark-mode .confirmation-modal__title{color:var(--color-text-primary)}.confirmation-modal__body[_ngcontent-%COMP%]{padding:30px;text-align:center}.confirmation-modal__message[_ngcontent-%COMP%]{font-family:var(--font-family-primary);font-weight:300;font-size:17px;line-height:1.6;
1color:#1a1a1a;margin:0 0 20px;transition:color .3s ease}  .dark-mode .confirmation-modal__message{color:var(--color-text-secondary)}.confirmation-modal__reference[_ngcontent-%COMP%]{font-family:var(--font-family-primary);font-weight:300;font-size:15px;line-height:1.6;color:#1a1a1a;margin:0;transition:color .3s ease}  .dark-mode .confirmation-modal__reference{color:var(--color-text-secondary)}.confirmation-modal__reference[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{font-weight:400;color:#001c50;transition:color .3s ease}  .dark-mode .confirmation-modal__reference strong{color:var(--color-gold-primary)}.confirmation-modal__footer[_ngcontent-%COMP%]{padding:20px 30px 30px;text-align:center}.confirmation-modal__button[_ngcontent-%COMP%]{font-family:var(--font-family-heading);font-weight:400;font-size:18px;line-height:normal;text-transform:uppercase;color:#fff;background:var(--color-navy-dark);border:none;border-radius:var(--radius-base);padding:15px 60px;cursor:pointer;transition:background-color .3s ease,transform .2s ease,box-shadow .3s ease}.confirmation-modal__button[_ngcontent-%COMP%]:hover{background:var(--color-navy-medium);transform:translateY(-2px);box-shadow:0 4px 12px #0003}.confirmation-modal__button[_ngcontent-%COMP%]:active{background:#001830}  .dark-mode .confirmation-modal__button{background:#ffffff1a;color:#fff}  .dark-mode .confirmation-modal__button:hover{background:#fff3;box-shadow:0 4px 12px #0003}  .dark-mode .confirmation-modal__button:active{background:#ffffff26}@media (max-width: 1024px){.main-content__container[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:40px}.ticket-details[_ngcontent-%COMP%]{position:static}.ticket-details__card[_ngcontent-%COMP%]{width:100%;max-width:510px;height:auto;min-height:612px}.card-form__row[_ngcontent-%COMP%]{grid-template-columns:1fr}}@media (max-width: 991px){.steps-banner[_ngcontent-%COMP%]{padding-top:80px}}@media (max-width: 768px){.steps-banner__list[_ngcontent-%COMP%]{flex-wrap:wrap;gap:20px}.steps-banner__item[_ngcontent-%COMP%]{font-size:18px}.payment-form__heading[_ngcontent-%COMP%]{font-size:32px}.ticket-details__go-back-btn[_ngcontent-%COMP%], .ticket-details__pay-btn[_ngcontent-%COMP%]{padding:20px;font-size:18px}.confirmation-modal__content[_ngcontent-%COMP%]{max-width:100%}}'],changeDetection:0})};export{q as BookingPaymentComponent};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.