/* PPS Hero Window — background fills the whole screen; window + pass fill --fill % of the space between header and footer */
.pps-hw{
  --fill:95;
  --bar:56px;
  --h:calc(100dvh - var(--pps-hdr,0px) - var(--bar));
  --edge:40px; /* space between outer windows and screen edge */
  --u:min(calc(var(--h) * var(--fill) / 9600),calc((100vw - var(--edge) * 2) / 234));
  --pass-w:470px;
  --p:min(max(calc(var(--u)*1.52),calc(var(--pass-w) / 66)),calc(54vw / 66)); /* pass is never narrower than --pass-w */ /* boarding pass unit (smaller than window) */
  --navy:#141b4d; --accent:#d9821c; --accent-soft:#f0a94a; --paper:#fbfaf7; --muted:#7a7c90;
  --bg-notch:#dcd3c4;
  position:relative; box-sizing:border-box; width:100%; height:100vh; height:100dvh; padding-top:var(--pps-hdr,0px); padding-bottom:var(--bar); overflow:hidden;
  background:radial-gradient(120% 90% at 80% 20%,#f3efe8 0%,#e6dfd3 45%,#d4cabb 100%);
  font-family:'Archivo',sans-serif; color:var(--navy);
  display:flex; align-items:center; justify-content:center; user-select:none;
  touch-action:none;
}
.pps-hw::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(60% 55% at 50% 48%,rgba(80,60,30,.14),rgba(0,0,0,0) 70%)}
html.pps-hw-locked,html.pps-hw-locked body{overflow:hidden;height:100%;overscroll-behavior:none}
/* Live site: hero is a full-screen layer; header sits on top, site footer hidden */
.pps-hw.is-fixed{position:fixed!important;inset:0;width:100vw;height:100vh;height:100dvh;margin:0!important;z-index:1}
html.pps-hw-locked .elementor-location-header{position:relative;z-index:20}
html.pps-hw-locked .elementor-location-footer,html.pps-hw-locked footer.site-footer,html.pps-hw-locked #colophon{display:none!important}
html.pps-hw-clear-header .elementor-location-header,
html.pps-hw-clear-header .elementor-location-header>.e-con,
html.pps-hw-clear-header .elementor-location-header>.elementor-section,
html.pps-hw-clear-header .elementor-location-header>.elementor-element{background:transparent!important;box-shadow:none!important}
/* Break out of theme/Elementor container widths and padding */
.pps-hw{width:100vw;max-width:none;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.elementor-widget-shortcode:has(.pps-hw),.elementor-widget-shortcode:has(.pps-hw) .elementor-widget-container,.elementor-shortcode:has(.pps-hw){width:100%;max-width:none;padding:0;margin:0}
.pps-hw *{box-sizing:border-box}
/* Remove Elementor container/widget spacing around the hero */
.elementor-widget:has(.pps-hw){margin:0!important;--kit-widget-spacing:0px}
.e-con:has(.pps-hw),.e-con-inner:has(.pps-hw),.elementor-column-wrap:has(.pps-hw),.elementor-widget-wrap:has(.pps-hw){padding-top:0!important;padding-bottom:0!important;--padding-top:0px;--padding-bottom:0px}
/* Neutralise theme button styles */
.pps-hw button.pps-hw__dot,.pps-hw button.pps-hw__arrow{-webkit-appearance:none;appearance:none;margin:0;padding:0!important;border:0!important;box-shadow:none!important;min-height:0;line-height:0;font-size:0;letter-spacing:0;text-transform:none;text-shadow:none}
.pps-hw button.pps-hw__arrow,.pps-hw button.pps-hw__arrow:hover,.pps-hw button.pps-hw__arrow:focus{background:none!important}
/* Hidden until sized, prevents the first-load jump */
.pps-hw__stage{position:relative;display:flex;flex-direction:column;align-items:center;opacity:0;transition:opacity .35s ease}
.pps-hw.is-ready .pps-hw__stage{opacity:1}

/* Windows: highlighted centre + previous/next on the sides (cropped by the screen edge) */
.pps-hw__windows{position:relative}
.pps-hw__window--side{position:absolute!important;top:0;left:0;cursor:pointer;z-index:0;
  transition:transform .6s cubic-bezier(.2,.7,.2,1),filter .3s;filter:saturate(.7) brightness(.97)}
.pps-hw__window--side[data-offset="-1"]{transform:translateX(calc(-100% - var(--u)*8)) scale(.94)}
.pps-hw__window--side[data-offset="1"]{transform:translateX(calc(100% + var(--u)*8)) scale(.94)}
.pps-hw__window--side .pps-hw__glass::after{content:"";position:absolute;inset:0;background:rgba(230,223,211,.28);transition:opacity .3s;pointer-events:none}
.pps-hw__window--side:hover{filter:none}
.pps-hw__window--side:hover .pps-hw__glass::after{opacity:0}
.pps-hw__window--side[data-offset="-1"]:hover{transform:translateX(calc(-100% - var(--u)*7.5)) scale(.95)}
.pps-hw__window--side[data-offset="1"]:hover{transform:translateX(calc(100% + var(--u)*7.5)) scale(.95)}
.pps-hw__windows>.pps-hw__window:not(.pps-hw__window--side){z-index:1}

/* Window */
.pps-hw__window{position:relative;width:calc(var(--u)*74);height:calc(var(--u)*94.2);border-radius:44%/34%;
  background:linear-gradient(160deg,#f7f2e7 0%,#eae1cf 55%,#d8ccb4 100%);
  box-shadow:0 calc(var(--u)*3) calc(var(--u)*6) rgba(70,50,20,.22),0 calc(var(--u)*.6) calc(var(--u)*1.2) rgba(70,50,20,.15),inset 0 calc(var(--u)*.4) calc(var(--u)*.6) rgba(255,255,255,.9),inset 0 calc(var(--u)*-.6) var(--u) rgba(120,95,55,.25)}
.pps-hw__recess{position:absolute;inset:5.5%;border-radius:42%/32%;background:linear-gradient(200deg,#efe6d4 0%,#ddd0b8 100%);
  box-shadow:inset 0 var(--u) calc(var(--u)*2) rgba(90,70,35,.28),inset 0 calc(var(--u)*-.4) calc(var(--u)*.6) rgba(255,255,255,.7)}
.pps-hw__glass{position:absolute;inset:11%;border-radius:40%/30%;overflow:hidden;
  background:linear-gradient(180deg,#8fb6d8 0%,#c9dbe8 60%,#eef1f0 100%);
  box-shadow:inset 0 0 0 calc(var(--u)*.3) rgba(255,255,255,.35),0 0 0 calc(var(--u)*.5) #d3c6ac}
.pps-hw__pane{position:absolute;inset:0;opacity:0;transform:scale(1.08);transition:opacity .7s ease,transform 1.1s cubic-bezier(.2,.7,.2,1)}
.pps-hw__pane.is-active{opacity:1;transform:scale(1)}
.pps-hw__pane img,.pps-hw__img{width:100%!important;height:100%!important;max-width:none!important;object-fit:cover;display:block}
.pps-hw__glare{position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,rgba(255,255,255,.22) 0%,rgba(255,255,255,0) 35%,rgba(255,255,255,0) 70%,rgba(255,255,255,.1) 100%)}
.pps-hw__shade{position:absolute;left:0;right:0;top:0;height:9%;pointer-events:none;background:linear-gradient(180deg,#f1eadb 0%,#e4d9c3 100%);
  box-shadow:0 calc(var(--u)*.4) calc(var(--u)*.8) rgba(60,45,20,.25);transition:height .5s cubic-bezier(.5,0,.2,1)}
.pps-hw__shade span{position:absolute;left:28%;right:28%;bottom:calc(var(--u)*.9);height:calc(var(--u)*.9);border-radius:var(--u);background:#d6c9b0;box-shadow:inset 0 calc(var(--u)*.2) calc(var(--u)*.3) rgba(80,60,30,.3)}
.pps-hw.is-closing .pps-hw__window:not(.pps-hw__window--side) .pps-hw__shade{height:100%}

/* Row */
.pps-hw__row{position:relative;z-index:3;margin-top:calc(var(--u)*-15);display:flex;align-items:center;gap:calc(var(--u)*3)}
.pps-hw__arrow{width:calc(var(--u)*6);height:calc(var(--u)*6);min-width:44px;border:0;background:none;padding:0;cursor:pointer;color:rgba(20,27,77,.4);display:flex;align-items:center;justify-content:center;transition:color .2s,transform .2s}
.pps-hw__arrow svg{width:70%;height:70%;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.pps-hw__arrow:hover,.pps-hw__arrow:focus-visible{color:var(--navy);background:none}
.pps-hw__arrow[data-dir="-1"]:hover{transform:translateX(calc(var(--u)*-.4))}
.pps-hw__arrow[data-dir="1"]:hover{transform:translateX(calc(var(--u)*.4))}

/* Boarding pass */
.pps-hw__pass{position:relative;width:calc(var(--p)*82.5);height:auto;min-height:calc(var(--p)*22);display:flex;background:var(--paper);border-radius:calc(var(--p)*1.4);overflow:hidden;
  box-shadow:0 calc(var(--p)*2.4) calc(var(--p)*4) rgba(60,45,20,.25),0 0 0 1px rgba(217,130,28,.55)}
.pps-hw__qrcol{position:relative;width:27%;display:grid;place-items:center;border-right:1.5px dashed rgba(217,130,28,.7)}
.pps-hw__qr{grid-area:1/1;width:calc(var(--p)*12.5);aspect-ratio:1;opacity:0;pointer-events:none;transition:opacity .5s ease,transform .2s}
.pps-hw__qr.is-active{opacity:1;pointer-events:auto}
.pps-hw__qr:hover{transform:scale(1.04)}
.pps-hw__qr svg{width:100%;height:100%;display:block}
.pps-hw__qrcap{display:none}
.pps-hw__info{flex:1;display:grid;padding:calc(var(--p)*2.2) calc(var(--p)*2.4);min-width:0}
.pps-hw__card{grid-area:1/1;display:flex;flex-direction:column;justify-content:center;gap:calc(var(--p)*1.8);min-width:0;opacity:0;transform:translateY(calc(var(--p)*1.2));pointer-events:none;transition:opacity .5s ease,transform .6s cubic-bezier(.2,.7,.2,1)}
.pps-hw__card.is-before{transform:translateY(calc(var(--p)*-1.2))}
.pps-hw__card.is-active{opacity:1;transform:none;pointer-events:auto}
.pps-hw__route{display:flex;align-items:flex-start;justify-content:space-between;gap:calc(var(--p)*1.5)}
.pps-hw__city{display:flex;flex-direction:column;gap:calc(var(--p)*.3);min-width:0;flex:0 1 auto}
.pps-hw__city--to{text-align:right;align-items:flex-end}
.pps-hw__name{font-size:calc(var(--p)*1.3);font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:22ch}
.pps-hw__code{font-size:calc(var(--p)*4.6);font-weight:800;letter-spacing:-.02em;line-height:1}
.pps-hw__time{font-family:'IBM Plex Mono',monospace;font-size:calc(var(--p)*1.3);color:#6d6f86}
.pps-hw__path{flex:1;min-width:calc(var(--p)*6);display:flex;align-items:center;gap:calc(var(--p)*.8);margin-top:calc(var(--p)*3.1)}
.pps-hw__path i{flex:1;border-top:1.5px dotted rgba(20,27,77,.35)}
.pps-hw__path svg{width:calc(var(--p)*2);height:calc(var(--p)*2);fill:var(--navy)}
.pps-hw__meta{display:grid;grid-template-columns:1.6fr 1.2fr .7fr .6fr 1fr;gap:var(--p)}
.pps-hw__meta>div{display:flex;flex-direction:column;gap:calc(var(--p)*.2);min-width:0}
.pps-hw__meta span{font-size:calc(var(--p)*1.3);color:var(--muted)}
.pps-hw__meta b,.pps-hw__meta a{font-size:calc(var(--p)*1.25);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pps-hw__meta a{color:var(--accent);text-decoration:none}
.pps-hw__meta a:hover{color:var(--navy)}
.pps-hw__end{align-items:flex-end}
.pps-hw__stub{width:7%;background:var(--navy);color:var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:calc(var(--p)*1.6) 0}
.pps-hw__stub>span{writing-mode:vertical-rl;font-size:calc(var(--p)*1.1);font-weight:500;letter-spacing:.04em}
.pps-hw__count{font-family:'IBM Plex Mono',monospace;letter-spacing:.12em!important;color:var(--accent-soft)}
.pps-hw__notch{position:absolute;left:27%;width:calc(var(--p)*2);height:calc(var(--p)*2);border-radius:50%;transform:translate(-50%,-50%)}
/* Heading stripe over the info column (not the QR side) */
.pps-hw__info{grid-template-rows:auto 1fr}
.pps-hw__info>.pps-hw__card{grid-area:2/1}
.pps-hw__passhead{grid-area:1/1;display:flex;align-items:baseline;flex-wrap:wrap;gap:calc(var(--p)*.6) calc(var(--p)*1.6);margin:calc(var(--p)*-2.2) calc(var(--p)*-2.4) calc(var(--p)*1.6);padding:calc(var(--p)*1.3) calc(var(--p)*2.4);background:var(--navy);color:var(--paper)}
.pps-hw__passhead strong{font-size:calc(var(--p)*1.7);font-weight:800;letter-spacing:.08em;text-transform:uppercase;line-height:1}
.pps-hw__hint{font-family:'IBM Plex Mono',monospace;font-size:calc(var(--p)*1.15);letter-spacing:.06em;color:var(--accent-soft);line-height:1;white-space:nowrap}
.pps-hw__passhead{padding:calc(var(--p)*1.1) calc(var(--p)*2.4)}
.pps-hw__hint-m{display:none}
.pps-hw__notch--top{top:0;background:var(--bg-notch);box-shadow:inset 0 0 0 1px rgba(217,130,28,.55)}
.pps-hw__notch--bottom{bottom:0;background:var(--accent);transform:translate(-50%,50%)}

/* Dots */
.pps-hw__dots{margin-top:calc(var(--u)*2);display:flex;gap:var(--u);align-items:center}
.pps-hw .pps-hw__dot{position:relative;outline-offset:3px;width:calc(var(--u)*.8);height:calc(var(--u)*.8);min-width:6px;min-height:6px;border-radius:99px;cursor:pointer;background:rgba(20,27,77,.25)!important;transition:width .4s ease,background .3s}
.pps-hw .pps-hw__dot::before{content:"";position:absolute;inset:-12px -4px}
.pps-hw .pps-hw__dot.is-active{width:calc(var(--u)*3.2);background:var(--navy)!important}
.pps-hw .pps-hw__dot:hover{background:rgba(20,27,77,.5)!important}
.pps-hw .pps-hw__dot.is-active:hover{background:var(--navy)!important}

.pps-hw[data-nav="arrows"] .pps-hw__dots{display:none}

/* Bottom bar: copyright left, social right (logo navy) */
.pps-hw__bar{position:absolute;left:0;right:0;bottom:0;height:var(--bar);z-index:5;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 clamp(16px,3vw,48px);color:var(--logo,var(--navy))}
.pps-hw__copy{margin:0;font-family:'Archivo',sans-serif;font-size:12px;font-weight:500;letter-spacing:.01em;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pps-hw__social{display:flex;align-items:center;gap:18px;list-style:none;margin:0;padding:0}
.pps-hw__social a{display:block;width:18px;height:18px;color:inherit!important;opacity:1;transition:opacity .2s,transform .2s}
.pps-hw__social a:hover{opacity:.65;transform:translateY(-1px)}
.pps-hw__social svg{width:100%;height:100%;display:block;fill:currentColor}

/* Phones (portrait): large window, horizontal pass spanning the screen */
.pps-hw .pps-hw__arrow{display:none!important}
@media (max-width:767px),(max-height:500px) and (orientation:landscape){ .pps-hw__window--side{display:none} }
@media (max-width:767px){
  .pps-hw{--bar:44px}
  .pps-hw__bar{padding:0 16px calc(env(safe-area-inset-bottom)) 16px}
  .pps-hw__copy{font-size:10px}
  .pps-hw__social{gap:12px}
  .pps-hw__social a{width:16px;height:16px}
}
@media (max-width:767px) and (orientation:portrait){
  .pps-hw{align-items:flex-start;padding-top:calc(var(--pps-hdr,0px) + var(--h)*.045);padding-bottom:calc(var(--bar) + env(safe-area-inset-bottom));--p:min(1.4vw,calc(var(--h) / 72))}
  /* Stage fills the space: window takes what's left, pass pinned to the bottom */
  .pps-hw{padding-bottom:calc(var(--bar) + env(safe-area-inset-bottom) + 8px)}
  .pps-hw__stage{width:100%;height:100%;justify-content:flex-end}
  .pps-hw__windows{flex:1 1 auto;min-height:0;width:100%;display:flex;align-items:center;justify-content:center}
  .pps-hw{--mw:min(90vw,calc(var(--h)*.52))}
  .pps-hw__window{width:var(--mw);height:auto;aspect-ratio:53/67.5}
  .pps-hw__row{flex:none;margin-top:1em;gap:0}
  /* Pass: near full width, auto height, fixed legible type sizes */
  /* Pass matches the window width; only route, service and View case shown */
  .pps-hw__pass{width:calc(100vw - 2em);height:auto;border-radius:12px}
  .pps-hw__qrcol,.pps-hw__notch,.pps-hw__time{display:none}
  .pps-hw__info{padding:10px 14px 11px}
  .pps-hw__card{gap:6px}
  .pps-hw__route{gap:6px}
  .pps-hw__path{margin-top:24px;gap:4px}
  .pps-hw__path svg{width:14px;height:14px}
  .pps-hw__name{font-size:12px;line-height:1.15}
  .pps-hw__code{font-size:clamp(26px,8.5vw,36px)}
  .pps-hw__meta{grid-template-columns:1fr auto;gap:10px;align-items:end}
  .pps-hw__meta>div:nth-child(1),.pps-hw__meta>div:nth-child(3),.pps-hw__meta>div:nth-child(4){display:none}
  .pps-hw__meta span{font-size:12px;color:#5f6178}
  .pps-hw__meta b,.pps-hw__meta a{font-size:15px}
  .pps-hw__stub{width:30px;padding:8px 0;border-left:1.5px dashed rgba(217,130,28,.7)}
  .pps-hw__stub>span{font-size:11px}
  .pps-hw__passhead{margin:-10px -14px 8px;padding:9px 14px;gap:4px 10px;justify-content:space-between}
  .pps-hw__passhead strong{font-size:14px}
  .pps-hw__hint{font-size:11px}
  .pps-hw__hint-d{display:none}.pps-hw__hint-m{display:inline}
  .pps-hw__dots,.pps-hw[data-nav="arrows"] .pps-hw__dots{display:flex;margin-top:12px;gap:6px}
  .pps-hw .pps-hw__dot{width:6px;height:6px;min-width:6px;min-height:6px}
  .pps-hw .pps-hw__dot.is-active{width:18px}
}

/* Phones (landscape) / very short screens: window beside the pass */
@media (max-height:500px) and (orientation:landscape){
  .pps-hw{--u:min(calc(var(--h) / 52),.9vw);--p:calc(var(--u)*.88)}
  .pps-hw__stage{flex-direction:row;align-items:center;gap:calc(var(--u)*4)}
  .pps-hw__window{height:calc(var(--h)*.84);width:auto;aspect-ratio:53/67.5}
  .pps-hw__row{margin-top:0;flex-direction:column;gap:12px}
  .pps-hw__row>.pps-hw__arrow{display:none}
  .pps-hw__dots,.pps-hw[data-nav="arrows"] .pps-hw__dots{display:flex;position:absolute;left:0;right:0;bottom:-28px;justify-content:center;margin:0}
  .pps-hw__name,.pps-hw__time,.pps-hw__meta span,.pps-hw__stub>span{font-size:max(9px,calc(var(--p)*1.1))}
  .pps-hw__meta b,.pps-hw__meta a{font-size:max(10px,calc(var(--p)*1.25))}
}

@media (prefers-reduced-motion:reduce){.pps-hw *{transition-duration:.01ms!important}}
