/* Athens SEO Tickets: front end. Everything is scoped to .ast so the theme stays untouched.
   Type comes from the theme's global typography: headings are h1-h3, small labels carry nectar-inherit-h6,
   buttons nectar-inherit-h4, and copy inherits the body text. Only the price, the countdown digits' box
   and the floating ticket illustration set sizes of their own. */

.ast {
	--ast-navy: #081428;
	--ast-navy2: #13244a;
	--ast-mint: #28e7c5;
	--ast-purple: #6942e2;
	--ast-purple-d: #4e3cae;
	--ast-lav: #f5f4ff;
	--ast-muted: #4a5571;
	--ast-bg: var(--ast-lav);
	--ast-max: 1240px;
	--ast-disp: 'all-round-gothic-dem', 'all-round-gothic', 'Sora', system-ui, sans-serif;
	--ast-mono: ui-monospace, 'SFMono-Regular', 'JetBrains Mono', Menlo, Consolas, monospace;
	container-type: inline-size;
	container-name: ast;
	position: relative;
	color: var(--ast-navy);
	-webkit-font-smoothing: antialiased;
	text-align: left;
}
.ast *,
.ast *::before,
.ast *::after { box-sizing: border-box; }

/* Theme resets (Salient styles bare headings, paragraphs, lists and buttons). */
.ast h1, .ast h2, .ast h3, .ast p, .ast ul, .ast li { margin: 0; padding: 0; text-transform: none; }
.ast ul { list-style: none; }
.ast li::before { content: none; }
.ast button { margin: 0; text-shadow: none; letter-spacing: normal; }
.ast [hidden] { display: none !important; }
.ast .ast-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.ast .ast-ico { flex: none; display: block; }

/* Full-bleed sections (hero + lavender canvas). 100cqw is the column the shortcode sits in. */
.ast--bleed .ast-hero,
.ast--bleed .ast-canvas { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
/* The bleed margins reach past the scrollbar; the page clips them. The body class is set by the shortcode's inline script for browsers without :has(). */
body:has(.ast--bleed), body.ast-bleed-page { overflow-x: clip; }
/* Spacing set on the element. While the theme shows its compact mobile header (.ast--small-head, set by script
   from the theme's header breakpoint), the phone values apply. */
.ast { --ast-space-top-now: var(--ast-space-top, 0px); --ast-space-bottom-now: var(--ast-space-bottom, 0px); }
.ast.ast--small-head { --ast-space-top-now: var(--ast-space-top-m, var(--ast-space-top, 0px)); --ast-space-bottom-now: var(--ast-space-bottom-m, var(--ast-space-bottom, 0px)); }
.ast.ast--nohero { padding-top: var(--ast-space-top-now); }
.ast .ast-canvas { background: var(--ast-bg); padding-bottom: calc(96px + var(--ast-space-bottom-now)); }
.ast .ast-wrap,
.ast .ast-hero-in { width: 100%; max-width: min(100cqw, var(--ast-max)); margin-left: auto; margin-right: auto; }
.ast:not(.ast--bleed) .ast-canvas { border-radius: 28px; padding-left: 28px; padding-right: 28px; }
.ast:not(.ast--bleed) .ast-hero { border-radius: 28px; padding-left: 40px; padding-right: 40px; }

/* Buttons */
.ast .ast-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 50px; padding: 0 26px; border: 0; border-radius: 999px; text-decoration: none; cursor: pointer; transition: transform .25s cubic-bezier(.3,1.5,.5,1), box-shadow .25s, background .25s, color .25s; }
.ast .ast-btn--mint { background: var(--ast-mint); color: var(--ast-navy); }
/* Lift, tilt, shine and un-dim effects run only where there is a mouse: on a touch screen a tap would
   leave them stuck. Hover colours are outside these blocks on purpose (some cancel the theme's own). */
.ast .ast-btn--mint:hover,
.ast .ast-btn--mint:focus-visible { color: var(--ast-navy); }
.ast .ast-btn--mint:focus-visible { transform: translateY(-2px); box-shadow: 0 12px 26px -10px rgba(40,231,197,.75); }
@media (hover: hover) { .ast .ast-btn--mint:hover { transform: translateY(-2px); box-shadow: 0 12px 26px -10px rgba(40,231,197,.75); } }
.ast .ast-btn .ast-ico { width: 18px; height: 18px; transition: transform .3s cubic-bezier(.3,1.5,.5,1); }
@media (hover: hover) { .ast .ast-btn:hover .ast-ico { transform: translateX(4px); } }
.ast :focus-visible { outline: 3px solid var(--ast-purple); outline-offset: 3px; }
.ast .ast-tk-stub :focus-visible,
.ast .ast-tk.is-feat .ast-tk-body :focus-visible { outline-color: #fff; }

/* Hero */
/* --ast-head-clear is how far the site's fixed header reaches over the hero (measured by script), so the title starts below it. */
.ast .ast-hero { position: relative; background: var(--ast-hero-bg, var(--ast-navy)); color: #fff; padding-top: calc(clamp(96px, 9vw, 128px) + var(--ast-head-clear, 0px) + var(--ast-space-top-now)); padding-bottom: 150px; overflow: hidden; }
.ast .ast-hero-in { position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: 40px; }
/* A photo behind the hero, covered with the hero colour so the white text stays readable; phones get the smaller file. */
.ast .ast-hero.has-img { background: linear-gradient(var(--ast-hero-shade), var(--ast-hero-shade)), var(--ast-hero-img) center / cover no-repeat var(--ast-hero-bg); }
@media (max-width: 1024px) {
	.ast .ast-hero.has-img { background-image: linear-gradient(var(--ast-hero-shade), var(--ast-hero-shade)), var(--ast-hero-img-s); }
}
.ast .ast-hero-copy { flex: 999 1 520px; min-width: 0; }
.ast .ast-eyebrow { display: inline-flex; align-items: center; gap: 12px; margin-bottom: 20px; letter-spacing: .06em; text-transform: uppercase; color: var(--ast-mint); }
.ast .ast-eyebrow::before { content: ''; width: 30px; height: 2px; background: currentColor; }
.ast .ast-eyebrow--dark { color: var(--ast-purple-d); margin-bottom: 18px; }
.ast .ast-hero h1.ast-h1 { max-width: 16em; margin: 0 0 28px; color: #fff; text-wrap: balance; }
.ast .ast-hl { position: relative; z-index: 0; display: inline-block; white-space: nowrap; }
.ast .ast-hl::after { content: ''; position: absolute; z-index: -1; left: -.12em; right: -.12em; bottom: .04em; height: .34em; background: var(--ast-mint); transform-origin: left; animation: ast-grow .9s .75s cubic-bezier(.7,0,.2,1) both; }
.ast .ast-meta { display: flex; flex-wrap: wrap; gap: 12px 30px; margin-bottom: 34px; color: rgba(255,255,255,.86); }
.ast .ast-meta span { display: inline-flex; align-items: center; gap: 10px; }
.ast .ast-meta .ast-ico { color: var(--ast-mint); }
.ast .ast-rise { animation: ast-rise .9s cubic-bezier(.2,.8,.2,1) both; }
.ast .ast-d1 { animation-delay: .08s; }
.ast .ast-d2 { animation-delay: .2s; }
.ast .ast-d3 { animation-delay: .32s; }

/* Early Bird chip + countdown */
.ast .ast-eb { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 14px 20px; padding: 14px 16px 14px 20px; border: 1px solid rgba(255,255,255,.16); border-radius: 20px; background: rgba(255,255,255,.06); color: #fff; }
.ast .ast-eb.is-urgent { border-color: var(--ast-mint); background: rgba(40,231,197,.08); }
.ast .ast-eb-l { display: flex; align-items: center; gap: 12px; }
.ast .ast-eb.is-urgent .ast-eb-l { color: var(--ast-mint); }
.ast .ast-eb.is-flat { color: rgba(255,255,255,.85); }
.ast .ast-cd { display: flex; gap: 8px; }
.ast .ast-cd-u { display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 64px; padding: 8px 10px 6px; border-radius: 12px; background: var(--ast-navy2); }
.ast .ast-cd-n { display: flex; color: #fff; font-variant-numeric: tabular-nums; }
.ast .ast-cd-lab { letter-spacing: .06em; text-transform: uppercase; color: rgba(255,255,255,.75); }
/* A countdown digit flips down into place when it changes. */
.ast .ast-dg { display: block; width: .62em; height: 1.1em; line-height: 1.1em; text-align: center; perspective: 120px; }
.ast .ast-dg-in { display: block; transform-origin: 50% 0; }
.ast .ast-dg-in.is-new { animation: ast-dg-flip .5s cubic-bezier(.2,1.4,.4,1) both; }

/* Rolling digits */
.ast .ast-odo { display: inline-block; height: 1.1em; width: .64em; overflow: hidden; transition: width .45s cubic-bezier(.2,.8,.2,1); }
.ast .ast-odo.is-blank { width: 0; }
.ast .ast-odo.is-mark { width: .3em; }
.ast .ast-odo-s { display: flex; flex-direction: column; transition: transform .75s cubic-bezier(.2,.9,.25,1.12); }
.ast .ast-odo-s span { display: block; height: 1.1em; line-height: 1.1em; text-align: center; }

/* Floating ticket fan. Its small print keeps the mono face: these imitate printed stubs. */
.ast .ast-fan { flex: 1 1 360px; position: relative; min-width: 0; height: 360px; }
.ast .ast-fan-s { position: absolute; inset: 0; }
.ast .ast-mt { position: absolute; left: 50%; top: 50%; display: flex; width: 330px; height: 158px; margin: -79px 0 0 -165px; border-radius: 16px;
	-webkit-mask: radial-gradient(circle at 240px 0, #0000 11px, #000 11.5px) top / 100% 51% no-repeat, radial-gradient(circle at 240px 100%, #0000 11px, #000 11.5px) bottom / 100% 51% no-repeat;
	mask: radial-gradient(circle at 240px 0, #0000 11px, #000 11.5px) top / 100% 51% no-repeat, radial-gradient(circle at 240px 100%, #0000 11px, #000 11.5px) bottom / 100% 51% no-repeat; }
.ast .ast-mt-b { display: flex; flex-direction: column; justify-content: space-between; width: 240px; padding: 18px 20px; }
.ast .ast-mt-k { font: 600 11px/1 var(--ast-mono); letter-spacing: .14em; text-transform: uppercase; opacity: .75; }
.ast .ast-mt-t { font: 700 21px/1.15 var(--ast-disp); letter-spacing: -.01em; }
.ast .ast-mt-t small { display: block; margin-top: 2px; font-size: 14px; font-weight: 600; opacity: .85; }
.ast .ast-mt-d { font: 600 12px/1 var(--ast-mono); letter-spacing: .06em; text-transform: uppercase; }
.ast .ast-mt-s { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; border-left: 2px dashed rgba(127,127,127,.45); }
.ast .ast-bar { width: 44px; height: 64px; opacity: .85; background: repeating-linear-gradient(90deg, currentColor 0 2px, transparent 2px 4px, currentColor 4px 5px, transparent 5px 8px, currentColor 8px 11px, transparent 11px 13px); }
.ast .ast-mt-code { font: 700 11px/1 var(--ast-mono); letter-spacing: .12em; }
.ast .ast-mt1 { background: var(--ast-purple); color: #fff; animation: ast-fan1 1s .35s cubic-bezier(.2,.8,.2,1) both, ast-float1 7s 1.4s ease-in-out 3; }
.ast .ast-mt2 { background: #fff; color: var(--ast-navy); animation: ast-fan2 1s .5s cubic-bezier(.2,.8,.2,1) both, ast-float2 6.2s 1.55s ease-in-out 3; }
.ast .ast-mt3 { background: var(--ast-mint); color: var(--ast-navy); animation: ast-fan3 1s .65s cubic-bezier(.2,.8,.2,1) both, ast-float3 6.6s 1.7s ease-in-out 3; }
/* A colour chosen under Tickets › Hero › Floating tickets, whatever the position. */
.ast .ast-mt.ast-mt--purple { background: var(--ast-purple); color: #fff; }
.ast .ast-mt.ast-mt--white { background: #fff; color: var(--ast-navy); }
.ast .ast-mt.ast-mt--mint { background: var(--ast-mint); color: var(--ast-navy); }
.ast .ast-mt.ast-mt--navy { background: var(--ast-navy2); color: #fff; box-shadow: inset 0 0 0 1px rgba(255,255,255,.25); }

/* Finder */
.ast .ast-finder { position: relative; z-index: 2; display: grid; gap: 20px; margin-top: 48px; padding: 30px 32px 26px; border-radius: 28px; background: #fff; border: 1px solid #8780c0; animation: ast-rise 1s .5s cubic-bezier(.2,.8,.2,1) both; }
.ast .ast-finder--lift { margin-top: -104px; }
.ast:not(.is-js) .ast-finder { display: none; }
.ast .ast-finder h2.ast-finder-t { color: var(--ast-navy); }
/* Equal chips, two to a row where they fit: at the theme's sizes a two-day chip needs about 440 px for its
   label beside the date squares. Narrower, the label wraps under the squares. */
.ast .ast-days { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(440px, 100%), 1fr)); gap: 12px; }
.ast .ast-days > .ast-day { min-width: 0; }
.ast .ast-day { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; min-height: 78px; padding: 12px 14px; border: 1.5px solid #8780c0; border-radius: 18px; background: #fff; color: var(--ast-navy); font: inherit; text-align: left; cursor: pointer; transition: border-color .25s, background .25s, color .25s, transform .35s cubic-bezier(.3,1.6,.5,1), box-shadow .3s; }
.ast .ast-day:hover { border-color: var(--ast-purple); }
@media (hover: hover) { .ast .ast-day:hover { transform: translateY(-3px); } }
.ast .ast-day-num { flex: none; display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 64px; min-height: 64px; padding: 4px 6px; border-radius: 14px; background: var(--ast-lav); color: var(--ast-purple); transition: transform .45s cubic-bezier(.3,1.7,.5,1), background .25s, color .25s; }
.ast .ast-day-m { letter-spacing: .06em; text-transform: uppercase; }
.ast .ast-day-num .ast-ico { width: 20px; height: 20px; }
.ast .ast-day-what { flex: 1 1 110px; min-width: 0; overflow-wrap: break-word; }
.ast .ast-day[aria-pressed="true"] { border-color: var(--ast-navy); background: var(--ast-navy); color: #fff; }
.ast .ast-day[aria-pressed="true"] .ast-day-num { background: var(--ast-mint); color: var(--ast-navy); transform: rotate(-8deg) scale(1.06); }
.ast .ast-day--alt[aria-pressed="true"] { border-color: var(--ast-purple); background: var(--ast-purple); }
.ast .ast-finder-f { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; margin-top: -8px; }
.ast .ast-finder-msg { margin: 0; min-height: 1.2em; color: var(--ast-muted); }
.ast .ast-clear { min-height: 44px; padding: 8px 4px; border: 0; background: none; color: var(--ast-purple-d); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }

/* Tickets */
.ast .ast-tix { display: grid; gap: 30px; padding-top: 56px; perspective: 1800px; }
/* The ticket is a lifted object on the page: the one card shadow on the page. */
.ast .ast-tk { position: relative; perspective: 1400px; transform: translateY(var(--ty, 0px)) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)); transition: transform .55s cubic-bezier(.2,.8,.2,1), opacity .5s, filter .5s; filter: drop-shadow(0 24px 30px rgba(8,20,40,.11)) drop-shadow(0 2px 4px rgba(8,20,40,.06)); }
@media (hover: hover) { .ast .ast-tk:hover { --ty: -6px; transition: transform .2s ease-out, opacity .5s, filter .5s; } }
.ast .ast-tk-in { display: flex; align-items: stretch; transform-origin: 50% 0; }
.ast.is-js .ast-tk:not(.is-in) .ast-tk-in { opacity: 0; }
/* Safety net: if the script never runs, show everything after 3 seconds. */
.ast.is-js:not(.is-ready) .ast-tk-in { animation: ast-show 0s 3s forwards; }
.ast.is-js:not(.is-ready) .ast-a { animation: ast-show-a 0s 3s forwards; }
.ast .ast-tk.is-in .ast-tk-in { animation: ast-tk-in 1s cubic-bezier(.2,.8,.2,1) both; animation-delay: calc(var(--stagger, 0) * 110ms); }

.ast .ast-tk-body { position: relative; flex: 1 1 auto; min-width: 0; padding: 30px 36px 32px; border-radius: 24px 0 0 24px; background: #fff;
	-webkit-mask: radial-gradient(circle at 100% 0, #0000 15px, #000 15.5px) top / 100% 51% no-repeat, radial-gradient(circle at 100% 100%, #0000 15px, #000 15.5px) bottom / 100% 51% no-repeat;
	mask: radial-gradient(circle at 100% 0, #0000 15px, #000 15.5px) top / 100% 51% no-repeat, radial-gradient(circle at 100% 100%, #0000 15px, #000 15.5px) bottom / 100% 51% no-repeat; }
.ast .ast-tk-body::before { content: ''; position: absolute; inset: 0; background: radial-gradient(520px circle at var(--mx, 30%) var(--my, 0%), rgba(105,66,226,.07), transparent 60%); opacity: 0; transition: opacity .4s; pointer-events: none; }
@media (hover: hover) { .ast .ast-tk:hover .ast-tk-body::before { opacity: 1; } }
.ast .ast-tk-stub { position: relative; flex: 0 0 360px; display: flex; flex-direction: column; gap: 14px; overflow: hidden; padding: 24px 28px 28px; border-radius: 0 24px 24px 0; background: var(--ast-navy); color: #fff; transform-origin: 0 100%; transition: transform .45s cubic-bezier(.3,1.5,.5,1);
	-webkit-mask: radial-gradient(circle at 0 0, #0000 15px, #000 15.5px) top / 100% 51% no-repeat, radial-gradient(circle at 0 100%, #0000 15px, #000 15.5px) bottom / 100% 51% no-repeat;
	mask: radial-gradient(circle at 0 0, #0000 15px, #000 15.5px) top / 100% 51% no-repeat, radial-gradient(circle at 0 100%, #0000 15px, #000 15.5px) bottom / 100% 51% no-repeat; }
.ast .ast-tk-stub::before { content: ''; position: absolute; left: 0; top: 22px; bottom: 22px; border-left: 2px dashed rgba(255,255,255,.3); }
.ast .ast-tk-stub::after { content: ''; position: absolute; inset: 0; background: linear-gradient(105deg, transparent 38%, rgba(255,255,255,.13) 50%, transparent 62%); transform: translateX(-130%); transition: transform 1s cubic-bezier(.2,.8,.2,1); pointer-events: none; }
@media (hover: hover) {
	.ast .ast-tk:hover .ast-tk-stub::after { transform: translateX(130%); }
	.ast .ast-tk-stub:has(.ast-buy:hover) { transform: translateX(7px) rotate(1.4deg); }
}

.ast .ast-tk-top { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 16px; }
.ast .ast-tk-top:not(:has(.ast-tag:not([hidden]))) { display: none; }
.ast .ast-tag { display: inline-flex; align-items: center; min-height: 32px; padding: 2px 14px; border-radius: 999px; letter-spacing: .04em; text-transform: uppercase; }
.ast .ast-tag--ribbon { background: var(--ast-purple); color: #fff; }
.ast .ast-tag--soon { background: var(--ast-lav); color: var(--ast-navy); }
.ast .ast-tag--best { background: var(--ast-navy); color: var(--ast-mint); animation: ast-pop .5s cubic-bezier(.3,1.7,.5,1) both; }
.ast .ast-tk h3.ast-tk-title { margin: 0 0 14px; color: inherit; }
.ast .ast-tk-sub { display: block; color: var(--ast-purple); }
.ast .ast-tk-desc { max-width: 70ch; margin-bottom: 22px; }
/* A long link or email wraps instead of being cut off. */
.ast .ast-tk-desc, .ast .ast-inv-c, .ast .ast-faq-side, .ast .ast-a-in { overflow-wrap: break-word; }
.ast .ast-tk-desc p { margin: 0 0 .7em; padding: 0; color: var(--ast-muted); text-wrap: pretty; }
.ast .ast-tk-desc p:last-child { margin-bottom: 0; }
/* Equal columns: a two-day box is no wider than a one-day box. */
.ast .ast-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 210px)); gap: 8px; }
.ast .ast-sd { display: flex; flex-direction: column; gap: 0; min-width: 0; padding: 10px 12px; border: 1.5px dashed #8780c0; border-radius: 12px; color: #5f6680; }
.ast .ast-day-nums { display: flex; flex: none; gap: 6px; }
.ast .ast-day--multi .ast-day-nums .ast-day-num:nth-child(2) { transition-delay: .05s; }
.ast .ast-day[aria-pressed="true"] .ast-day-nums .ast-day-num:nth-child(2) { transform: rotate(6deg) scale(1.06); }
.ast .ast-sd-n { letter-spacing: .03em; text-transform: uppercase; }
.ast .ast-sd.is-in { border: 1.5px solid var(--ast-navy); background: var(--ast-navy); color: #fff; }
.ast .ast-tk.is-in .ast-sd.is-in { animation: ast-sd-in .6s cubic-bezier(.3,1.6,.5,1) both; animation-delay: calc(var(--stagger, 0) * 110ms + 400ms + var(--j, 0) * 90ms); }
.ast .ast-sd.is-in .ast-sd-n { color: var(--ast-mint); }
.ast .ast-sd.is-online { border-color: var(--ast-purple); background: var(--ast-purple); }
.ast .ast-sd.is-online .ast-sd-n { color: #fff; }
.ast .ast-alert { display: inline-flex; align-items: center; gap: 9px; margin-top: 18px; padding: 6px 14px; border-radius: 10px; background: #fff3dd; color: #6e4300; }
.ast .ast-alert i { flex: none; width: 8px; height: 8px; border-radius: 50%; background: #e08a00; }

.ast .ast-price-row { display: flex; align-items: flex-end; gap: 14px; min-height: 70px; }
.ast .ast-price { display: flex; align-items: flex-start; font: 700 60px/1 var(--ast-disp); letter-spacing: -.02em; color: var(--ast-mint); font-variant-numeric: tabular-nums; }
.ast .ast-odo-wrap { display: flex; }
.ast .ast-cur { margin: .2em .1em 0 0; font-size: .42em; line-height: 1; }
.ast .ast-pm { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding-bottom: 4px; color: rgba(255,255,255,.8); }
.ast .ast-pm s { color: rgba(255,255,255,.62); }
.ast .ast-save { display: inline-flex; align-items: center; padding: 0 10px; border-radius: 999px; background: rgba(40,231,197,.16); color: var(--ast-mint); animation: ast-pop .45s cubic-bezier(.3,1.7,.5,1) both; }
.ast .ast-tiers { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ast .ast-tier { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 0; min-height: 58px; padding: 8px 12px; border: 1.5px solid rgba(255,255,255,.6); border-radius: 13px; background: rgba(255,255,255,.04); color: #fff; font: inherit; text-align: left; cursor: pointer; transition: border-color .25s, background .25s, transform .3s cubic-bezier(.3,1.6,.5,1); }
.ast .ast-tier:hover { border-color: #fff; background: rgba(255,255,255,.07); color: #fff; }
.ast .ast-tier:active { transform: scale(.97); }
.ast .ast-tier-n { color: rgba(255,255,255,.78); }
.ast .ast-tier.is-on { border-color: var(--ast-mint); background: rgba(40,231,197,.13); }
.ast .ast-tier.is-on::after { content: ''; position: absolute; top: 11px; right: 11px; width: 8px; height: 8px; border-radius: 50%; background: var(--ast-mint); animation: ast-pop .4s cubic-bezier(.3,1.7,.5,1) both; }
.ast .ast-tier:disabled { cursor: not-allowed; }
.ast .ast-tier.is-out { border-style: dashed; background: transparent; }
.ast .ast-tier.is-out .ast-tier-n { text-decoration: line-through; }
.ast .ast-tier.is-out .ast-tier-p { letter-spacing: .04em; text-transform: uppercase; color: var(--ast-mint); }
.ast .ast-eb-info { display: grid; gap: 6px; }
.ast .ast-eb-end { display: flex; align-items: center; gap: 8px; color: var(--ast-mint); animation: ast-rise .45s cubic-bezier(.2,.8,.2,1) both; }
.ast .ast-eb-end .ast-ico { width: 18px; height: 18px; }
.ast .ast-buy { width: 100%; margin-top: auto; min-height: 52px; }
.ast .ast-buy.is-off { background: rgba(255,255,255,.12); color: rgba(255,255,255,.7); cursor: default; }
.ast .ast-stamp { position: absolute; left: 50%; top: 42%; z-index: 3; padding: 10px 22px; border: 3px solid var(--ast-mint); border-radius: 8px; background: var(--ast-navy); color: var(--ast-mint); font: 800 28px/1 var(--ast-disp); letter-spacing: .14em; white-space: nowrap; box-shadow: 0 0 0 7px rgba(8,20,40,.55); transform: translate(-50%, -50%) rotate(-9deg); pointer-events: none; }
.ast .ast-tk.is-in .ast-stamp,
.ast:not(.is-js) .ast-stamp { animation: ast-stamp .6s cubic-bezier(.2,1.5,.4,1) both; animation-delay: calc(var(--stagger, 0) * 110ms + 500ms); }
.ast .ast-tk.is-sold .ast-price-row,
.ast .ast-tk.is-sold .ast-tiers { opacity: .5; }
.ast .ast-tk.is-hidden { opacity: .4; filter: grayscale(1); }

/* Featured ticket */
.ast .ast-tk.is-feat .ast-tk-body { background: var(--ast-navy); color: #fff; }
.ast .ast-tk.is-feat .ast-tk-body::before { background: radial-gradient(520px circle at var(--mx, 30%) var(--my, 0%), rgba(40,231,197,.1), transparent 60%); }
.ast .ast-tk.is-feat .ast-tk-desc p { color: rgba(255,255,255,.82); }
.ast .ast-tk.is-feat .ast-tk-sub { color: var(--ast-mint); }
.ast .ast-tk.is-feat .ast-sd { border-color: rgba(255,255,255,.28); color: rgba(255,255,255,.72); }
.ast .ast-tk.is-feat .ast-sd.is-in { border-color: var(--ast-mint); background: var(--ast-mint); color: var(--ast-navy); }
.ast .ast-tk.is-feat .ast-sd.is-in .ast-sd-n { color: var(--ast-navy); }
.ast .ast-tk.is-feat .ast-tk-stub { background: var(--ast-purple); }
.ast .ast-tk.is-feat .ast-tk-stub::before { border-left-color: rgba(255,255,255,.4); }
.ast .ast-tk.is-feat .ast-price { color: #fff; }
.ast .ast-tk.is-feat .ast-save { background: rgba(255,255,255,.16); color: #fff; }
.ast .ast-tk.is-feat .ast-tier { border-color: rgba(255,255,255,.6); background: rgba(255,255,255,.07); }
.ast .ast-tk.is-feat .ast-tier.is-on { border-color: var(--ast-mint); background: rgba(8,20,40,.28); }
.ast .ast-tk.is-feat .ast-tier-n,
.ast .ast-tk.is-feat .ast-pm,
.ast .ast-tk.is-feat .ast-pm s,
.ast .ast-tk.is-feat .ast-tier.is-out .ast-tier-p,
.ast .ast-tk.is-feat .ast-eb-end { color: rgba(255,255,255,.92); }

/* Day finder states */
.ast .ast-tk.is-dim { opacity: .72; filter: grayscale(.75) drop-shadow(0 10px 18px rgba(8,20,40,.05)); }
.ast .ast-tk.is-dim .ast-tk-body { box-shadow: inset 0 0 0 1px #8780c0; }
@media (hover: hover) { .ast .ast-tk.is-dim:hover { opacity: 1; } }
.ast .ast-tk.is-best { filter: drop-shadow(0 0 .6px var(--ast-mint)) drop-shadow(0 0 1px var(--ast-mint)) drop-shadow(0 0 1px var(--ast-mint)) drop-shadow(0 26px 36px rgba(8,20,40,.18)); }

/* Invoice, faq */

.ast .ast-inv { position: relative; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 22px 40px; margin-top: 56px; padding: 38px 48px; overflow: hidden; border-radius: 26px; background: var(--ast-purple); color: #fff;
	-webkit-mask: radial-gradient(circle at 0 50%, #0000 17px, #000 17.5px) left / 51% 100% no-repeat, radial-gradient(circle at 100% 50%, #0000 17px, #000 17.5px) right / 51% 100% no-repeat;
	mask: radial-gradient(circle at 0 50%, #0000 17px, #000 17.5px) left / 51% 100% no-repeat, radial-gradient(circle at 100% 50%, #0000 17px, #000 17.5px) right / 51% 100% no-repeat; }
.ast .ast-inv::before { content: ''; position: absolute; right: -60px; top: -80px; width: 280px; height: 280px; border: 42px solid rgba(255,255,255,.07); border-radius: 50%; pointer-events: none; }
.ast .ast-inv-c { position: relative; flex: 999 1 420px; min-width: 0; }
.ast .ast-inv h2 { margin-bottom: 12px; color: #fff; }
.ast .ast-inv p { max-width: 62ch; color: rgba(255,255,255,.9); }
.ast .ast-inv .ast-btn { position: relative; }

.ast .ast-faq { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 36px 56px; padding-top: 88px; }
.ast .ast-faq-side { flex: 1 1 280px; min-width: 0; }
.ast .ast-faq-side h2 { margin-bottom: 16px; color: var(--ast-navy); }
.ast .ast-faq-side p { color: var(--ast-muted); }
.ast .ast-faq-side a { color: var(--ast-purple-d); }
.ast .ast-faq-list { flex: 999 1 560px; display: grid; gap: 12px; min-width: 0; }
.ast .ast-qa { border: 1px solid #8780c0; border-radius: 18px; background: #fff; transition: border-color .35s; }
.ast .ast-qa.is-open { border-color: var(--ast-purple); }
.ast .ast-faq h3.ast-qh { margin: 0; color: var(--ast-navy); }
.ast .ast-q { display: flex; align-items: center; justify-content: space-between; gap: 18px; width: 100%; min-height: 64px; padding: 18px 20px 18px 24px; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.ast .ast-q:hover { color: var(--ast-purple-d); background: none; }
.ast .ast-qi { flex: none; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--ast-lav); color: var(--ast-purple); transition: transform .45s cubic-bezier(.3,1.5,.5,1), background .3s, color .3s; }
.ast .ast-qi .ast-ico { width: 16px; height: 16px; }
.ast .ast-qa.is-open .ast-qi { transform: rotate(135deg); background: var(--ast-purple); color: #fff; }
.ast .ast-a { display: grid; grid-template-rows: 1fr; }
.ast.is-js .ast-a { grid-template-rows: 0fr; visibility: hidden; transition: grid-template-rows .5s cubic-bezier(.2,.8,.2,1), visibility 0s .5s; }
.ast.is-js .ast-qa.is-open .ast-a { grid-template-rows: 1fr; visibility: visible; transition: grid-template-rows .5s cubic-bezier(.2,.8,.2,1), visibility 0s; }
.ast .ast-a-in { overflow: hidden; }
.ast .ast-a-in p { margin: 0 24px 14px; padding: 0; color: var(--ast-muted); }
.ast .ast-a-in p:last-child { margin-bottom: 24px; }
.ast .ast-a-in a { color: var(--ast-purple-d); }
/* Links to #faq land below the theme's fixed header. */
.ast .ast-faq { scroll-margin-top: 120px; }

/* FAQ element: the same FAQ on its own, in a lavender panel or on the row's own background. */
.ast.ast--faqonly .ast-canvas { padding: 64px 56px; }
.ast.ast--faqonly .ast-faq { padding-top: 0; }
.ast.ast--faqonly.ast--plain .ast-canvas { padding: 0; border-radius: 0; background: none; }
@container ast (max-width: 560px) {
	.ast.ast--faqonly:not(.ast--plain) .ast-canvas { padding: 36px 18px; }
}

/* Keyframes */
@keyframes ast-show { to { opacity: 1; } }
@keyframes ast-show-a { to { grid-template-rows: 1fr; visibility: visible; } }
@keyframes ast-rise { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
@keyframes ast-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes ast-dg-flip { from { opacity: 0; transform: rotateX(-100deg) translateY(-12%); } 55% { opacity: 1; } to { opacity: 1; transform: none; } }
@keyframes ast-tk-in { from { opacity: 0; transform: translateY(54px) rotateX(14deg) scale(.97); } to { opacity: 1; transform: none; } }
@keyframes ast-sd-in { from { opacity: 0; transform: scale(.7) rotate(-4deg); } to { opacity: 1; transform: none; } }
@keyframes ast-pop { from { opacity: 0; transform: scale(.4); } to { opacity: 1; transform: none; } }
@keyframes ast-stamp { 0% { opacity: 0; transform: translate(-50%, -50%) rotate(-26deg) scale(2.4); } 55% { opacity: 1; } 100% { opacity: 1; transform: translate(-50%, -50%) rotate(-9deg) scale(1); } }
@keyframes ast-fan1 { from { opacity: 0; transform: translate(0, 40px); } to { opacity: 1; transform: translate(-78px, -58px) rotate(-15deg); } }
@keyframes ast-fan2 { from { opacity: 0; transform: translate(0, 40px); } to { opacity: 1; transform: translate(-14px, -2px) rotate(-4deg); } }
@keyframes ast-fan3 { from { opacity: 0; transform: translate(0, 40px); } to { opacity: 1; transform: translate(52px, 62px) rotate(8deg); } }
@keyframes ast-float1 { 0%, 100% { transform: translate(-78px, -58px) rotate(-15deg); } 50% { transform: translate(-84px, -72px) rotate(-13deg); } }
@keyframes ast-float2 { 0%, 100% { transform: translate(-14px, -2px) rotate(-4deg); } 50% { transform: translate(-10px, -14px) rotate(-6deg); } }
@keyframes ast-float3 { 0%, 100% { transform: translate(52px, 62px) rotate(8deg); } 50% { transform: translate(58px, 50px) rotate(10deg); } }

/* Tablet & phone */
@container ast (max-width: 900px) {
	.ast .ast-hero { padding-top: calc(88px + var(--ast-head-clear, 0px) + var(--ast-space-top-now)); padding-bottom: 130px; }
	.ast .ast-fan { flex-basis: 100%; height: 280px; }
	.ast .ast-fan-s { transform: scale(.82); }
	.ast .ast-tk-in { flex-direction: column; }
	.ast .ast-tk-body { border-radius: 24px 24px 0 0;
		-webkit-mask: radial-gradient(circle at 0 100%, #0000 15px, #000 15.5px) left / 51% 100% no-repeat, radial-gradient(circle at 100% 100%, #0000 15px, #000 15.5px) right / 51% 100% no-repeat;
		mask: radial-gradient(circle at 0 100%, #0000 15px, #000 15.5px) left / 51% 100% no-repeat, radial-gradient(circle at 100% 100%, #0000 15px, #000 15.5px) right / 51% 100% no-repeat; }
	.ast .ast-tk-stub { flex: none; border-radius: 0 0 24px 24px;
		-webkit-mask: radial-gradient(circle at 0 0, #0000 15px, #000 15.5px) left / 51% 100% no-repeat, radial-gradient(circle at 100% 0, #0000 15px, #000 15.5px) right / 51% 100% no-repeat;
		mask: radial-gradient(circle at 0 0, #0000 15px, #000 15.5px) left / 51% 100% no-repeat, radial-gradient(circle at 100% 0, #0000 15px, #000 15.5px) right / 51% 100% no-repeat; }
	.ast .ast-tk-stub::before { left: 22px; right: 22px; top: 0; bottom: auto; border-left: 0; border-top: 2px dashed rgba(255,255,255,.3); }
	.ast .ast-tk-stub:has(.ast-buy:hover) { transform: none; }
}
@container ast (max-width: 560px) {
	.ast .ast-hero { padding-top: calc(76px + var(--ast-head-clear, 0px) + var(--ast-space-top-now)); }
	.ast .ast-fan { height: 230px; }
	.ast .ast-fan-s { transform: scale(.66); }
	.ast .ast-finder { padding: 22px 18px; border-radius: 22px; }
	.ast .ast-tk-body { padding: 24px 20px 26px; }
	.ast .ast-strip { grid-template-columns: minmax(0, 1fr); gap: 6px; }
	.ast .ast-sd { flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 0 10px; padding: 8px 12px; }
	.ast .ast-sd-n { flex: none; min-width: 6.6em; }
	.ast .ast-sd-w { flex: 1 1 110px; min-width: 0; overflow-wrap: break-word; }
	.ast .ast-tk-stub { padding: 22px 20px 24px; }
	.ast .ast-price { font-size: 52px; }
	.ast .ast-inv { padding: 30px 26px; }
	.ast .ast-cd-u { min-width: 50px; }
	.ast .ast-eb { padding: 12px; }
	.ast .ast-faq { padding-top: 64px; }
}
/* Full-bleed sections keep their content in line with the theme column, with a gutter on phones. */
.ast--bleed .ast-hero,
.ast--bleed .ast-canvas { padding-left: max(16px, calc((100vw - 100cqw) / 2)); padding-right: max(16px, calc((100vw - 100cqw) / 2)); }

@media (prefers-reduced-motion: reduce) {
	.ast *, .ast *::before, .ast *::after { animation: none !important; transition: none !important; }
	.ast.is-js .ast-tk:not(.is-in) .ast-tk-in { opacity: 1; }
	/* The 3-second safety net that opens the FAQ answers if the script never runs is a timer, not motion. */
	.ast.is-js:not(.is-ready) .ast-a { animation: ast-show-a 0s 3s forwards !important; }
}
