#ft_background {
	background-image: url("../../img/organiser/74002502aea049f9a643a376c1ec6399/template/background.jpg");
}

#ft_headerLogo {
	width: 135px;
	height: 55px;
	background-image: url("../../img/organiser/74002502aea049f9a643a376c1ec6399/template/logo_header.png");
	background-repeat: no-repeat;
	background-size: 135px 55px;
}


#ft_introLogo {
	width: 300px;
	height: 300px;
	background-image: url("../../img/organiser/74002502aea049f9a643a376c1ec6399/template/logo_intro.png");
	background-repeat: no-repeat;
	background-position: 50% 50%;
}


@media print {
	h1:before {
		position: relative;
		top: -50px;
		margin-right: -65px;
		content: url("../../img/organiser/74002502aea049f9a643a376c1ec6399/logo_header.png");
	}
}


/* -- Custom CSS -- */
/* ============================================================================
 * TYPEFACES
 *
 * The two faces the streaming app uses, so a customer moving from
 * play.infinityenm.com to a booking page is not handed a different product.
 * From onplay/app/src/app.css: Space Grotesk for headings (`--display`),
 * Archivo for everything else (`--sans`).
 *
 * This replaces Work Sans, which nothing here references any more. Same
 * delivery as before — the CSS Google Fonts serves, pasted in, because the
 * organiser stylesheet is the only file we control on this host and it cannot
 * add a <link> to the page head.
 *
 * All three subsets, latin / latin-ext / vietnamese, and the last of those is
 * not optional: the catalogue is Vietnamese-language titles, and NHÀ BÀ NỮ and
 * CÔ DÂU HÀO MÔN have to come out of the same font as the row they sit in.
 * ========================================================================== */
/* vietnamese */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLySOxK-vA.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLyTOxK-vA.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLydOxI.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLySOxK-vA.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLyTOxK-vA.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLydOxI.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLySOxK-vA.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLyTOxK-vA.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLydOxI.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLySOxK-vA.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLyTOxK-vA.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLydOxI.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPb54C-s0.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPb94C-s0.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPbF4Cw.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPb54C-s0.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPb94C-s0.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPbF4Cw.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* ============================================================================
 * PALETTE
 *
 * Lifted from OnPlay's `:root` (onplay/app/src/app.css) so the ticketing site,
 * the streaming app and the gradient mark in the main site's logo all speak the
 * same colour. Ferve's red came in with the VEOnline white-label and matched
 * none of them.
 *
 * Three inks, one violet for anything you can click, and the brand gradient for
 * the handful of moments worth spending it on: the primary button, the tile
 * edges, the numbers. Prefixed `--ie-` so nothing Ferve or Bootstrap defines
 * can collide with it.
 *
 * Four steps of dark rather than one. A page this sparse has almost nothing on
 * it, so what stops it reading as a blank canvas is not more colour — it is
 * having planes at all: page, then the sheet the content sits on, then a card
 * on the sheet, then whatever is raised off the card. Each step is the one
 * below it with a little more light and a little more violet in it, so they
 * separate as depth rather than as four greys.
 * ========================================================================== */
:root {
	color-scheme: dark;

	--ie-bg: #08070f;        /* the page itself */
	--ie-panel: #110f1e;     /* the sheet the content sits on */
	--ie-surface: #1b1930;   /* a card on that sheet */
	--ie-surface-2: #262240; /* raised off the card: inputs, hover, headers */

	--ie-ink: #f4f2fa;
	--ie-ink-mid: rgba(244, 242, 250, 0.62);
	--ie-ink-dim: rgba(244, 242, 250, 0.38);

	--ie-line: rgba(244, 242, 250, 0.10);
	--ie-line-strong: rgba(244, 242, 250, 0.24);

	/* The lit top edge that makes a dark plane look like a surface catching
	   light rather than a hole cut in the one behind it. */
	--ie-sheen: inset 0 1px 0 rgba(255, 255, 255, 0.055);

	/*
	 * The light card, and its ink. OnPlay's light theme, not an invented white
	 * — `--bg` / `--ink` / `--ink-mid` from the `[data-theme='light']` block of
	 * the same file the dark values come from. Used where a card is meant to
	 * read as a card cut out of the page rather than a slightly lighter part of
	 * it: the Account Main tiles, which are the whole of that page.
	 */
	--ie-card: #f7f5fc;
	--ie-card-ink: #0e0c18;
	--ie-card-ink-mid: rgba(14, 12, 24, 0.62);
	--ie-card-line: rgba(14, 12, 24, 0.10);

	--ie-accent: #8b5cf6;
	--ie-accent-2: #e5117b;
	--ie-accent-3: #22b8e8;
	--ie-accent-ink: #0b0714;

	/*
	 * `--ie-accent` is the brand violet and it is the right colour for a fill —
	 * a button, a bar, a focus ring. As *text* on a background this dark it is
	 * only about 3.9:1, which is under the 4.5 a link or a heading needs and
	 * reads exactly as reported: dark, and not separating from the page. This
	 * is the same hue two steps up (violet-400), at 7.1:1. Anywhere the accent
	 * is set on type rather than behind it, it is this one.
	 */
	--ie-accent-text: #a78bfa;

	--ie-grad: linear-gradient(103deg, #c026d3 0%, #8b5cf6 45%, #3b82f6 78%, #22b8e8 100%);
}

/* DO NOT ALLOW EXCHANGE TO OTHER SESSIONS */
#ft_exchangeManual {
	display: none
}

body, #ft_container {
	font-family: 'Archivo', 'Manrope', system-ui, -apple-system, sans-serif !important;
}

/*
 * The page is dark, and it stays dark — the light comes from two places that
 * are deliberately not the same.
 *
 * Here, on `body` and `fixed`: a slow wash keyed to the viewport rather than to
 * the document, so a two-screen booking list gets the same light as a
 * one-screen dashboard instead of scrolling out of its own lighting and going
 * dead flat at the bottom. It never gets bright enough to be a colour; it is
 * there so no part of the page is the same value as any other part.
 *
 * The colour you actually notice is on `#ft_mainContent` further down, which
 * scrolls, and is anchored to the top of the content where the eye starts.
 *
 * `html body`, not `body`. This stylesheet is loaded BEFORE Bootstrap in the
 * page head, so a bare element selector loses every tie — Bootstrap's own
 * `body { color: #333; background-color: #fff }` would win and the page would
 * come up white. Same reason the `a` and `hr` rules below are written the way
 * they are. (It is also why `.table-striped` needs its `!important`.)
 */
html body {
	background:
		radial-gradient(1100px 680px at 4% 6%, rgba(192, 38, 211, 0.13), transparent 60%),
		radial-gradient(900px 560px at 98% 14%, rgba(34, 184, 232, 0.10), transparent 58%),
		radial-gradient(1200px 760px at 50% 106%, rgba(139, 92, 246, 0.14), transparent 62%),
		var(--ie-bg);
	background-attachment: fixed;
	background-repeat: no-repeat;
	color: var(--ie-ink);

	/* Every page here is light-on-dark, which thickens stems and closes
	   counters. Greyscale smoothing is what keeps the face at the weight it was
	   drawn at. Both of these are on `html, body` in the streaming app too. */
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

/*
 * Ferve sets 14px/normal on the panel and leaves line-height to the browser, so
 * body copy ran at about 1.15 — fine for a form label, too tight for the
 * synopsis, the restrictions list or a wrapped booking title. 15/1.55 is the
 * step the streaming app uses for the same kind of copy.
 */
.ft_panelWhite, .ft_panelGrey {
	font-size: 15px;
	line-height: 1.55;
}

/*
 * Headings, on the streaming app's terms: Space Grotesk at 700 with the
 * tracking pulled in and the leading closed up, which is the `h1, h2, h3` rule
 * from onplay/app/src/app.css verbatim.
 *
 * `!important` on the family because ferve.css declares
 * `h1 { font-family: "Muli" !important }` as well as on body, so without it
 * every page heading stayed Muli while its own body copy changed underneath.
 * Same reason `#ft_eventTitle` names the font again further down.
 *
 * And a colour, which they did not have: a heading was whatever it inherited,
 * which on the pages where that was the accent violet came out at about 3.9:1
 * — dark, and not far enough off the background. Light by default; where a
 * heading is meant to carry the brand instead, it takes `--ie-accent-text` or
 * the cyan, both of which clear 7:1.
 */
h1, h2, h3 {
	font-family: 'Space Grotesk', 'Archivo', system-ui, sans-serif !important;
	font-weight: 700;
	letter-spacing: -0.032em;
	line-height: 1.05;
	color: var(--ie-ink);
	text-wrap: balance;
}

/*
 * Link colour, and the one rule in this file that has never actually worked:
 * it was a bare `a` at (0,0,1), and Bootstrap — which loads after this sheet —
 * carries `a { color: #337ab7 }` at the same weight. Every link on the site has
 * been Bootstrap blue this whole time, not the colour named here.
 *
 * Scoped to the content panels rather than fixed with a bare `a:link`. Ferve
 * colours its own links white where they sit on something coloured — the
 * Browse Program tile, the footer, the account tiles — all at (0,1,1), and a
 * global `a:link` is also (0,1,1) and would win on order and turn those
 * violet-on-blue. Inside a panel there is nothing but page background, so this
 * is where a link should take the brand colour and nowhere else.
 */
.ft_panelWhite a:link, .ft_panelWhite a:visited,
.ft_accountContent a:link, .ft_accountContent a:visited,
.ft_accountPlayDetail a:link, .ft_accountPlayDetail a:visited {
	color: var(--ie-accent-text);
	text-decoration: none;
}

.ft_panelWhite a:hover,
.ft_accountContent a:hover,
.ft_accountPlayDetail a:hover {
	color: var(--ie-accent-3);
	text-decoration: none;
}

#ft_logo {
  pointer-events: none; /* don't allow clicking on the logo */
}

/*
 * The panel is a surface again. It was transparent, which let the wash run
 * edge to edge behind everything — and with nothing under the content, three
 * tiles and a heading had nothing to sit on and read as objects floating in a
 * void. A dark sheet is still dark; it just has an edge.
 */
.ft_panelWhite,
#ft_checkoutRight {
	color: var(--ie-ink) !important;
	background: var(--ie-panel) !important;
}

/*
 * On an account page that panel is also `.ft_panelContent` — one element,
 * capped at 1115px and centred — so it is the sheet the whole page sits on and
 * it gets treated as one: an edge, a corner radius, a lit top edge, and a
 * shadow deep enough to separate it from a background this dark.
 *
 * account.css also puts `overflow: hidden` on this panel. It used to be
 * harmless — nothing overflowed — but the per-row actions menu on the booking
 * and ticket tables (Receipt / Exchange Tickets / Watch) opens downwards from
 * its row, and from the last row it has to hang past the panel's bottom edge;
 * the clip cut it off, and on an account with a single booking that row *is*
 * the last row, which left the customer with no reachable Watch at all. The
 * tiles clip themselves and the tables round their own corner cells (both
 * below), so nothing needs the panel to clip for it any more. `!important`
 * because account.css reaches the panel through a chain of `:not(#id)`s whose
 * specificity no plain selector can match.
 */
body[id^="ft_account"] .ft_panelWhite.ft_panelContent,
body[id^="ft_browse"] .ft_panelWhite.ft_panelContent,
body[id^="ft_browse"] .ft_panelWhite.ft_panelItems {
	border: 1px solid var(--ie-line);
	border-radius: 16px;
	box-shadow:
		0 30px 70px rgba(0, 0, 0, 0.55),
		var(--ie-sheen);
	min-height: calc(100vh - 260px);
	margin-bottom: 70px !important;
}

body[id^="ft_account"] .ft_panelWhite.ft_panelContent {
	overflow: visible !important;
}

/* Full width at Ferve's own bottom breakpoint, where a floating sheet with
   corners would be a 16px radius against the edge of the screen. */
@media (max-width: 736px) {
	body[id^="ft_account"] .ft_panelWhite.ft_panelContent,
	body[id^="ft_browse"] .ft_panelWhite.ft_panelContent,
	body[id^="ft_browse"] .ft_panelWhite.ft_panelItems {
		border-left: 0;
		border-right: 0;
		border-radius: 0;
		margin-bottom: 0 !important;
	}
}

/*
 * Ferve's login form puts `col-md-offset-3` and `col-md-12` on the same div —
 * a 25% margin plus a 100% width, which is 125% of its row and hangs 70px off
 * the right of every desktop viewport. It is Ferve's markup and it does this on
 * the live site too; it is one line to stop the page scrolling sideways.
 */
@media (min-width: 992px) {
	.ft_loginForm .col-md-offset-3.col-md-12 {
		width: 75%;
	}
}

/*
 * Ferve gives the heading a white bar the full width of the panel, which on a
 * dark page was a white bar.
 *
 * `!important` on the size because ferve.css carries a bare
 * `h1 { font-size: 28px !important }`, which no amount of specificity gets
 * past — the clamp here has been inert since it was written, and every page
 * title has come out 28px regardless of window width.
 *
 * px and vw rather than rem: Ferve sets `html { font-size: 10px }`, so a value
 * in rem is five eighths of what it reads as, and `1.35rem + 1vw` came out at
 * 28px on a 1440 window — the same size it was replacing.
 */
body[id^="ft_account"] h1,
body[id^="ft_browse"] h1 {
	background: none;
	font-size: clamp(27px, 20px + 1.25vw, 40px) !important;
	letter-spacing: -0.032em;
}

/*
 * A short gradient rule under the page title — the section mark the streaming
 * app puts above its rails. On pages this sparse it is the one thing standing
 * between a heading and a very short list. Not on `#ft_eventTitle`: a film
 * title already has a synopsis and a Play button under it.
 */
body[id^="ft_account"] h1:not(#ft_eventTitle)::after {
	content: '';
	display: block;
	width: 54px;
	height: 3px;
	margin-top: 14px;
	border-radius: 2px;
	background: var(--ie-grad);
}

/* HEADERS  */

/*
 * A solid black bar. `#ft_header` is a fixed overlay across the top of every
 * page — `.ft_v2` gives it `background-color: #ffffff`, which is a white band
 * across the top of a dark site. This was a scrim that faded out by its own
 * bottom edge; a bar it is fixed over scrolling content either way, and solid
 * black keeps the icons and cart legible over anything that passes under it.
 *
 * `background`, not `background-color`: the shorthand is what resets Ferve's.
 */
#ft_header {
	background: #000000 !important;
	box-shadow: none !important;
	padding: 0px !important;
}

/*
 * The icons are dark PNGs, so they have to be inverted. This filter used to sit
 * on `#ft_navigation` itself, which inverted everything inside it — including
 * the cart total, which is why that came out light. Scoped to the glyphs, so
 * text in the header can be given a colour rather than an inversion of one.
 */
#ft_menuToggle [class*="fticon-"],
#ft_navigation [class*="fticon-"],
.fticon-menu {
	filter: invert(1) brightness(2) !important;
}

/*
 * And the cart total and account name, which `.ft_v2` sets to #000000 for the
 * white header it expects. Ferve reaches them at (0,3,2,1) — three ids and two
 * classes — so this has to name the same chain to get near it; at a tie this
 * sheet wins on order. Nothing shorter than this touches them.
 */
.ft_v2 header #ft_header #ft_shoppingControls .ft_shoppingItem #ft_cart,
.ft_v2 header #ft_header #ft_shoppingControls .ft_shoppingItem #ft_account,
.ft_v2 header #ft_header.ft_scrolled #ft_shoppingControls .ft_shoppingItem #ft_cart,
.ft_v2 header #ft_header.ft_scrolled #ft_shoppingControls .ft_shoppingItem #ft_account {
	color: var(--ie-ink);
	font-variant-numeric: tabular-nums;
	letter-spacing: 0.02em;
}

#ft_logo {
	padding-top: 20px !important;
	margin-left: 35px !important;
}

#ft_eventDetailsCenter {
  padding-top: 20px !important;
}

/* COLORS */
#ft_ferveFooter,
footer,
.ft_progress-container-small,
.ft_eventStatus, .fticon-location {
	display: none !important;
}

/*
 * The colour, and the only place on the page that gets a real dose of it.
 *
 * On the content rather than on `body`, so it scrolls: it is anchored to the
 * top of the page where the eye starts and where the header scrim fades out,
 * and it runs out about a screen down. Magenta in from the left, cyan from the
 * right, the two ends of the brand gradient — the same light OnPlay gets for
 * free from a hero still, on pages that have no still to give it.
 */
#ft_mainContent {
	background:
		radial-gradient(1000px 460px at 14% -60px, rgba(192, 38, 211, 0.30), transparent 62%),
		radial-gradient(880px 420px at 88% -20px, rgba(34, 184, 232, 0.20), transparent 60%),
		linear-gradient(180deg, rgba(139, 92, 246, 0.16) 0%, rgba(139, 92, 246, 0) 560px);
	background-repeat: no-repeat;
}

#ft_timer {
	background: var(--ie-surface-2);
	color: var(--ie-ink);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.06em;
	font-variant-numeric: tabular-nums;
	text-align: center;
	padding: 6px 0;
	box-shadow: inset 0 -1px 0 var(--ie-line);
}

input {
	max-width: 100%;
    color: var(--ie-ink) !important;
}

/* ferve.css names the font again on this one, `!important`, so the `h1, h2, h3`
   rule above cannot reach it. */
#ft_eventTitle {
	font-family: 'Space Grotesk', 'Archivo', system-ui, sans-serif !important;
	font-weight: 700;
}

/* A subhead, one step under a page title and well over body copy — it was
   16px/600, which at 15px body was barely a heading at all. */
h2 {
	background: none !important;
	font-size: 19px;
}

#ft_checkout_account h2 {
	margin-left: 0 !important;
}

.form-control,
.ft_loginForm input {
	background-color: var(--ie-surface-2) !important;
	color: var(--ie-ink);
	border: 1px solid var(--ie-line-strong) !important;
	border-radius: 8px;
	box-shadow: none;
	transition: border-color .2s ease, box-shadow .2s ease;
}

/*
 * Bootstrap's focus state is a blue glow it draws with `box-shadow`, which on
 * this palette was the one piece of #66afe9 left in the product. A field you
 * are typing in is worth more than a border colour, so it takes a ring as well
 * — and the ring is what carries it for anyone who cannot see the hue change.
 */
.form-control:focus,
.ft_loginForm input:focus {
	border-color: var(--ie-accent) !important;
	box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.28);
	outline: none;
}

.form-control::placeholder,
.ft_loginForm input::placeholder {
	color: var(--ie-ink-dim);
}

/*
 * Ferve flags a required field with a 45° corner triangle in coral — the last
 * of the old red left on a form. Its JS writes that gradient as an inline
 * style, so `!important` is the only way to reach it; the position and size
 * come from the same inline style and are left alone.
 */
.form-control:required,
.ft_loginForm input:required {
	background-image: linear-gradient(45deg, transparent calc(50% - 1px), var(--ie-accent-2) 50%) !important;
}

.ft_eventType {
  display: none !important
}

/* The three cards a checkout is made of. Same surface, same radius, same lit
   top edge as every other card on the site. */
#ft_bookingSummary,
#ft_paymentMethod-content,
#ft_bookingItems .ft_fcItem {
	background-color: var(--ie-surface) !important;
	border: none;
	border-radius: 12px !important;
	box-shadow: var(--ie-sheen), 0 0 0 1px var(--ie-line);
}

#ft_paymentMethod-content {
	padding: 12px 16px;
}

.ft_bookingSummaryCurrency,
.ft_bookingSummaryVoucher {
	display: none/*Prices are displayed in AUD*/
}

/* Cyan rather than the violet: violet is what you can click on this site, and
   a total is not a link. */
.ft_bookingSummaryTotal .ft_bookingSummaryLineRight {
	color: var(--ie-accent-3)
}

.ft_bookingSummaryLine {
	padding-top: 5px;
	padding-bottom: 5px;
}

.ft_bookingSummaryLineLeft {
	width: 70%;
	text-align: left;
}
.ft_bookingSummaryLineRight {
	width: 30%;
	text-align: right;
}

#ft_paymentCard-new-card {
	background-color: inherit !important;
	border: 0;
	border-radius: 4px;
}

#ft_paymentCard-new {
	display: none
}

.ft_help-input-lock span {
	width: 10px
}

#ft_contactNumberType {
	display: none
}

#ft_contactNumber {
	margin-left: 15px;
}

#ft_checkout-questions label,
#ft_checkout-processing,
#ft_voucher p,
.ft_passwordMessage,
#ft_checkout_emailLists label {
	font-weight: 400;
	color: var(--ie-ink-mid);
}

#ft_voucher p,
#ft_checkout_emailLists label,
#ft_checkout-authorisation label {
	font-size: 12px;
}

#ft_voucher .list-group-item {
	border: 1px solid var(--ie-line);
	border-radius: 10px;
	box-sizing: border-box;
	line-height: 1.5;
	color: var(--ie-ink);
	background: var(--ie-surface);
	box-shadow: var(--ie-sheen);
}

#ft_voucher u {
	color: var(--ie-ink) !important;
	text-decoration: none;
}

@media (min-width: 768px) {
	#ft_voucher .col-sm-3,
	#ft_checkout-questions .col-md-8 {
		width: unset;
	}
}

#ft_checkout-questions img {
	display: none
}

#ft_checkout_emailLists .form-control-static {
	display: none
}

#ft_voucher > p {
	margin-top: 0
}

/*
 * The primary button is where the brand gradient is worth spending: it is the
 * one element on a checkout or a login that anyone is looking for, and it is
 * the same shape the streaming app uses for Play. Near-black label rather than
 * white, because white over the violet end of the gradient is only about 3.4:1
 * and this text is 14px — `--ie-accent-ink` is what the palette carries the
 * colour with, and it clears 7:1 across the whole sweep.
 *
 * The gradient is oversized and slides on hover, so the button has somewhere to
 * go without changing colour.
 */
#ft_checkoutApplyButton-code,
#ft_confirmBooking,
#ft_checkoutDoneButton,
button.btn-primary,
.ft_loginForm-guest button {
	border: 0;
	border-radius: 6px;
	font-weight: 700;
	letter-spacing: 0.04em;
	line-height: 1;
	white-space: nowrap;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--ie-accent-ink);
	background-image: var(--ie-grad);
	background-size: 160% 100%;
	background-position: 0% 0;
	transition: background-position .45s ease, box-shadow .3s, opacity .4s;
	display: block;
	box-sizing: border-box;
	text-align: center;
	font-size: 14px;
	width: 100% !important;
}

#ft_checkoutApplyButton-code:hover,
#ft_confirmBooking:hover,
#ft_checkoutDoneButton:hover,
button.btn-primary:hover,
.ft_loginForm-guest button:hover {
	background-position: 100% 0;
	box-shadow: 0 6px 22px rgba(139, 92, 246, 0.35);
	color: var(--ie-accent-ink);
}

.ft_login-single .ft_loginForm-submit-button,
.ft_loginForm-guest {
	overflow: visible;
	margin-top: 0px;
}

#ft_checkoutDoneButton {
	padding: 5px
}

#ft_checkoutApplyButton-code,
#ft_confirmBooking {
	padding: 16px 24px;
	margin-top: 16px;
}

/* ****************************** BROWSE LISTINGS (cards + list) ****************************** */

/*
 * The filter bar above every listing: an #eee block with white controls, and
 * the last light thing left on the site once the grid below it went dark.
 *
 * It was left alone until now because it is not a colour change. Ferve draws
 * the select caret and the search magnifier as dark PNGs set as
 * `background-image` on the control itself — so the moment the control goes
 * dark the glyph disappears into it, and it cannot be inverted with a filter
 * either, because the filter would take the label with it. They are replaced
 * below with inline SVG in the ink colour: same two shapes, drawn light, and no
 * new asset to host.
 */
#ft_browseOptions {
	background: rgba(244, 242, 250, 0.03);
	border: 1px solid var(--ie-line);
	border-radius: 12px;
	padding: 16px 16px 18px;
}

#ft_browseOptions a {
	color: var(--ie-ink-mid);
}

#ft_browseOptions a:hover {
	color: var(--ie-ink);
}

#ft_browseOptions .ft_selected {
	color: var(--ie-accent-text);
}

#ft_browseOptions hr {
	border-top-color: var(--ie-line);
}

.ft_menuBox,
.ft_textBox {
	border: 1px solid var(--ie-line-strong);
	border-radius: 8px;
	background: var(--ie-surface-2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='13' viewBox='0 0 13 13'%3E%3Cpath d='M3 5 6.5 8.5 10 5' fill='none' stroke='%23f4f2fa' stroke-opacity='.62' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 8px center no-repeat;
	color: var(--ie-ink);
	transition: border-color .2s ease;
}

.ft_menuBox:hover,
.ft_textBox:hover {
	border-color: var(--ie-line-strong);
}

/* Ferve sets this one `!important`, for a white control. */
.ft_menuBox a {
	color: var(--ie-ink) !important;
}

/* The search field has no caret — it has the magnifier, on the input rather
   than on the box, and the box behind it must not draw one too. */
.ft_textBox {
	background-image: none;
}

.ft_textBox input {
	background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 15 15'%3E%3Ccircle cx='6.3' cy='6.3' r='4.3' fill='none' stroke='%23f4f2fa' stroke-opacity='.62' stroke-width='1.5'/%3E%3Cpath d='M9.5 9.5 13 13' stroke='%23f4f2fa' stroke-opacity='.62' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") left center no-repeat;
	color: var(--ie-ink);
}

.ft_textBox input::placeholder {
	color: var(--ie-ink-dim);
}

/* Bootstrap's unscoped placeholder rule is #666, which is the same value as
   this page's background. */
::-webkit-input-placeholder {
	color: var(--ie-ink-dim);
}

#ft_callouts {
	border-bottom-color: var(--ie-line);
}

/*
 * The listing grid was never carried into the dark theme. `.ft_gray` is a
 * #f1f1f1 band, every card inside it is #fff, and `.ft_panelWhite` around them
 * sets `color: white !important` — so any card text outside the card's own <a>
 * was white on white. On Demand and Browse Program both opened as a light panel
 * dropped into a dark page.
 *
 * `background: none` rather than a colour: the same class also wraps the home
 * page's "Browse Program" strip, and letting both inherit means one rule covers
 * a listing panel and a landing strip without either naming a colour.
 */
.ft_gray {
	background: none;
}

/*
 * `.ft_panelGrey` is the strip that holds it, still on Ferve's #f1f1f1 — the
 * last light block on the site once the listings went dark, and it was sitting
 * on the landing page.
 */
.ft_panelGrey {
	background: none;
	color: var(--ie-ink);
}

/*
 * And the button inside it, still Ferve's stock #338cb9. `background-color`
 * only: the document glyph beside the label is the shorthand's image layer and
 * has to survive.
 */
.ft_buttonProgram {
	background-color: var(--ie-surface-2);
	border: 1px solid var(--ie-line);
	border-radius: 6px;
	transition: border-color .3s, background-color .3s, box-shadow .3s;
}

.ft_buttonProgram:hover {
	background-color: var(--ie-surface-2);
	border-color: var(--ie-accent);
	box-shadow: 0 10px 28px rgba(139, 92, 246, 0.22);
	text-decoration: none;
}

/*
 * A ring rather than a border: a grid2 card is a fixed 300x176 with
 * `overflow: hidden` around a 280px image in a 10px padding box, so a real
 * border would take two pixels off the image and clip it.
 */
.ft_grid1 .ft_event,
.ft_grid2 .ft_event,
.ft_grid3 .ft_event,
.ft_grid4 .ft_event,
.ft_grid5 .ft_event {
	background: var(--ie-surface);
	border-radius: 6px;
	box-shadow: 0 0 0 1px var(--ie-line);
	transition: box-shadow .22s ease, transform .22s ease, background-color .22s;
}

/* Lifts and picks up the accent, so a listing behaves like something you browse
   rather than a table of results. */
.ft_grid1 .ft_event:hover,
.ft_grid2 .ft_event:hover,
.ft_grid3 .ft_event:hover,
.ft_grid4 .ft_event:hover,
.ft_grid5 .ft_event:hover {
	background-color: var(--ie-surface-2);
	box-shadow:
		0 0 0 1px var(--ie-accent),
		0 12px 30px rgba(139, 92, 246, 0.22);
	transform: translateY(-3px);
}

/*
 * Behind the artwork rather than instead of it. Ferve's card markup carries an
 * `onerror` that hides the <img>, so a title with no image left a hole in the
 * card; it now leaves a gradient tile, which is what the streaming app shows
 * for a title it has no poster for.
 */
.ft_grid1 .ft_event .ft_image,
.ft_grid2 .ft_event .ft_image,
.ft_grid3 .ft_event .ft_image,
.ft_grid4 .ft_event .ft_image,
.ft_grid5 .ft_event .ft_image {
	background-image: var(--ie-grad);
	border-radius: 3px;
	overflow: hidden;
}

/* Ferve's card link colour is #404040, for a white card. */
.ft_grid1 .ft_event a,
.ft_grid2 .ft_event a,
.ft_grid3 .ft_event a,
.ft_grid4 .ft_event a,
.ft_grid5 .ft_event a,
.ft_list .ft_event a {
	color: var(--ie-ink);
}

/* The title is the line you are scanning for; everything beside it is context
   and reads dimmer, the same as the reference numbers in the booking table. */
.ft_event .ft_title {
	color: var(--ie-ink);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: -0.005em;
	line-height: 1.35;
}

.ft_event .ft_venue,
.ft_event .ft_date,
.ft_event .ft_runtime,
.ft_event .ft_code {
	font-size: 12px;
	letter-spacing: 0.01em;
}

.ft_event .ft_venue,
.ft_event .ft_date,
.ft_event .ft_runtime,
.ft_event .ft_description,
.ft_event .ft_code {
	color: var(--ie-ink-mid);
}

/*
 * The "Selling Fast" flag, which this file has hidden site-wide since before
 * the rebrand — but it hides `.ft_eventStatus`, and a browse card wraps the
 * same icon in `.ft_status` instead. So every card carried an unexplained
 * orange dot in its bottom right corner: the one part of a feature that is
 * switched off everywhere else.
 */
.ft_event .ft_status {
	display: none;
}

/* List view — reachable from the grid/list toggle on every listing page. */
.ft_list .ft_event {
	border-bottom-color: var(--ie-line);
}

.ft_list h3 {
	color: var(--ie-ink);
}

/* *************************************** ACCOUNT VIEW *************************************** */
/* These sit inside the sheet, so they take its colour rather than another one:
   the sheet is the plane, and a plane wants one value across it. */
.ft_accountMain, .ft_accountContent, #ft_headerFixed {
	background: transparent !important;
}

#ft_accountNavigation {
	display: none !important;
}

/*
 * ...but Ferve still reserves the 160px column that navigation used to sit
 * in, on every account page, so the content sat an eighth of the window
 * off-centre with nothing in the gap — and below about 900px the reserved
 * strip squeezed the tables until `.ft_panelContent`'s `overflow:hidden`
 * clipped their last column off the screen. `.ft_panelContent` already
 * centres on a 1115px cap, so there is nothing to replace it with.
 */
.ft_accountContent, .ft_accountMain {
	margin-left: 0;
	margin-right: 0;
	padding: 30px 34px 44px;
}

.ft_details, .ft_today, .ft_wishlist, .ft_passes {
	display: none;
}

/* ── Account Main: the dashboard tiles ── */

/*
 * Ferve ships these as flood-filled cards, a gradient each, and this file used
 * to swap the gradients for three flat colours — orange, pink, magenta. Three
 * saturated blocks were the only thing on the page, and none of the three was a
 * brand colour.
 *
 * The colour moves to a 3px bar across the top and to the 72px number, both
 * drawn from the brand gradient at a different point along its sweep so the
 * tiles still tell themselves apart. `.ft_accountBox` is already
 * `position: relative` and `overflow: hidden` in account.css, which is what
 * lets the bar be a pseudo-element and follow the corner radius.
 *
 * And the card is light. Account Main is three tiles and a heading, and against
 * the sheet a dark card on a dark panel is a difference of a few points of
 * luminance — the tiles were there, but they were not objects. Cut out of the
 * page in the streaming app's own light-theme ink, they are the page.
 *
 * No border: at this contrast an edge is drawn by the value change itself, and
 * a line would only muddy it. The lift comes from the shadow, and the sheen
 * (which is a white inset highlight) comes off, because there is nothing for a
 * white highlight to do on white.
 */
.ft_accountBox {
	height: 185px;
	background: var(--ie-card);
	border: 0;
	color: var(--ie-card-ink);
	box-shadow: 0 12px 30px rgba(0, 0, 0, 0.45);
	transition: transform .22s ease, box-shadow .22s ease;
}

.ft_accountBox::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 3px;
	background: var(--ie-grad);
}

.ft_accountBox:hover {
	transform: translateY(-3px);
	box-shadow: 0 20px 44px rgba(139, 92, 246, 0.35);
}

/* Magenta end of the sweep. */
.ft_bookings::before {
	background: linear-gradient(90deg, #e5117b 0%, #c026d3 100%);
}

/* Middle. */
.ft_vouchers::before {
	background: linear-gradient(90deg, #c026d3 0%, #8b5cf6 100%);
}

/* Cyan end. */
.ft_cards::before {
	background: linear-gradient(90deg, #3b82f6 0%, #22b8e8 100%);
}

/*
 * The number takes the same gradient, clipped to the glyphs — the mechanism
 * OnPlay uses for its gradient text. `color: transparent` is the fallback if a
 * browser ignores the clip, so the digit is invisible rather than wrong; every
 * browser Ferve supports has had `background-clip: text` for years.
 *
 * The three below are not the same three as the bars above them. A bar is a
 * fill and can be as bright as it likes; a number is type, and the cyan end of
 * the sweep comes to about 2:1 on a card this light. Each number takes the dark
 * half of its own bar instead, which holds the tiles apart and still clears the
 * 3:1 that display-size type needs.
 */
.ft_accountBoxNumber {
	background-image: var(--ie-grad);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	letter-spacing: -0.045em;
	line-height: 1;
	top: 8px;
}

.ft_bookings .ft_accountBoxNumber {
	background-image: linear-gradient(135deg, #e5117b 0%, #c026d3 100%);
}

.ft_vouchers .ft_accountBoxNumber {
	background-image: linear-gradient(135deg, #c026d3 0%, #7c3aed 100%);
}

.ft_cards .ft_accountBoxNumber {
	background-image: linear-gradient(135deg, #2563eb 0%, #0284c7 100%);
}

/*
 * Everything written on the tile, now that the tile is light. `.ft_panelWhite`
 * sets `color: var(--ie-ink) !important` on the sheet, so anything that does
 * not name a colour here inherits near-white and disappears; the card sets its
 * own ink and each of these takes a step off it.
 *
 * `:link` on the link rules to match the weight of the panel link rule near the
 * top of this file, which is otherwise more specific than a bare
 * `.ft_accountBox a` and would win.
 */
.ft_accountBox a:link, .ft_accountBox a:visited {
	color: var(--ie-card-ink-mid);
}

.ft_accountBox a:hover {
	color: var(--ie-card-ink);
}

/* The two at the foot of a tile are its actions, not its small print. */
.ft_accountBoxFooterLeft a:link, .ft_accountBoxFooterLeft a:visited,
.ft_accountBoxFooterRight a:link, .ft_accountBoxFooterRight a:visited {
	color: var(--ie-card-ink);
	font-weight: 600;
}

.ft_accountBoxFooterLeft a:hover,
.ft_accountBoxFooterRight a:hover {
	color: var(--ie-accent);
}

/*
 * The tile heading is the label, not the content — the number is the content —
 * so it stays a small uppercase mark rather than a heading, and it takes the
 * tile's own colour so the label and the bar above it say the same thing.
 * Overrides the global `h1, h2, h3` colour, which is set for a dark page.
 */
.ft_accountBox h3 {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.10em;
	line-height: 1.2;
	text-transform: uppercase;
	color: var(--ie-card-ink-mid);
}

.ft_bookings h3 { color: #c026d3; }
.ft_vouchers h3 { color: #7c3aed; }
.ft_cards h3    { color: #2563eb; }

/* An empty tile is saying nothing happened, so it should not say it in the
   same voice as the tile that has something to report. */
.ft_accountBox > span {
	color: var(--ie-card-ink-mid);
}

.ft_vouchers .ft_accountBoxItem {
	background: none !important;
}

/* The zebra inside a tile's item list is #f6f7f9 — near enough to the card
   colour to keep, as an overlay so it tracks whatever the card is. */
.ft_accountBoxItem:nth-child(even) {
	background: rgba(14, 12, 24, 0.05);
}

/* ── Account tables: bookings, tickets ── */
.table-striped>tbody>tr:nth-of-type(odd) {
    background-color: var(--ie-surface) !important;
}

/*
 * On the account tables the stripe moves from the row to its cells: the table
 * no longer clips its children to the radius (see the actions-menu note on the
 * `.table` rule below), and a `<tr>` background is a plain rectangle that
 * would square off the corners the corner cells now round. A cell background
 * follows the cell's own radius, and at `border-spacing: 0` the cells cover
 * the row edge to edge, so nothing shows through from behind them. The header
 * row's cells are `<th>` and keep their own colour from the header rule.
 */
.ft_accountContent .table-striped>tbody>tr:nth-of-type(odd) {
	background-color: transparent !important;
}

.ft_accountContent .table-striped>tbody>tr:nth-of-type(odd)>td {
	background-color: var(--ie-surface);
}

/*
 * Bootstrap's `.table-bordered` draws a #ddd grid, which over a dark page is a
 * white cage around every cell. Same hairline the voucher and payment panels
 * use — and only between the rows. A booking is a row; the columns are its
 * fields, and ruling them off boxed every field separately and made seven
 * columns look like forty-nine cells.
 */
.ft_accountContent .table>tbody>tr>th,
.ft_accountContent .table>tbody>tr>td,
.ft_accountContent .table>thead>tr>th {
	border-color: var(--ie-line);
	/* Bottom only. `border-collapse: separate` below means each cell draws its
	   own four sides, so anything else here doubles every rule. */
	border-width: 0 0 1px 0;
}

/* The last row's rule is the table's own edge, and the ring draws that. */
.ft_accountContent .table>tbody>tr:last-child>td {
	border-bottom-width: 0;
}

/*
 * Rounded, so a table reads as one object sitting on the sheet rather than as
 * a slab running off both edges of it. The ring is a shadow rather than a
 * border for the usual reason: it costs no layout, so the column widths
 * measured for the narrow breakpoints below still hold.
 *
 * No `overflow: hidden` here, though it is the obvious way to clip the rows to
 * the radius: the per-row actions menu (Receipt / Exchange Tickets / Watch) is
 * a Bootstrap dropdown positioned inside the last cell, and a clip on the
 * table cut it off at the table's bottom edge. From the last row the menu has
 * nowhere to open but past that edge — and on an account with one booking the
 * only row is the last row, so the customer could not reach Watch at all. The
 * corner cells carry the radius themselves instead, just below.
 */
.ft_accountContent .table {
	border: 0;
	border-radius: 10px;
	border-collapse: separate;
	border-spacing: 0;
	background: var(--ie-panel);
	box-shadow: 0 0 0 1px var(--ie-line);
	/* Back to 14 from the panel's 15. A table is scanned rather than read, and
	   the seven columns were measured at this size — a point of body copy costs
	   about 40px across the row and starts wrapping dates onto two lines. */
	font-size: 14px;
}

/* `>:first-child` rather than `>th` / `>td`: the bookings table's first row is
   headers and the tickets table's is not, and the last row is data on both. */
.ft_accountContent .table>tbody>tr:first-child>:first-child { border-top-left-radius: 10px; }
.ft_accountContent .table>tbody>tr:first-child>:last-child { border-top-right-radius: 10px; }
.ft_accountContent .table>tbody>tr:last-child>:first-child { border-bottom-left-radius: 10px; }
.ft_accountContent .table>tbody>tr:last-child>:last-child { border-bottom-right-radius: 10px; }

/*
 * Ferve emits the header row inside `<tbody>`, so the zebra stripe above
 * painted it like data and it stopped reading as a header. The colour goes on
 * the cells rather than the row, which leaves the Tickets page's accent
 * `tr.active` / `tr.info` headers below to win as before.
 *
 * A solid rule rather than the gradient: a `<th>` paints per cell, so a
 * gradient here would restart in every column and read as seven small rainbows
 * instead of one sweep.
 */
.ft_accountContent .table>tbody>tr>th {
	background-color: var(--ie-surface-2);
	border-bottom: 2px solid var(--ie-accent);
	padding: 11px 10px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	white-space: nowrap;
	vertical-align: middle;
}

.ft_accountContent .table>tbody>tr>td {
	padding: 12px 10px;
	vertical-align: top;
}

.ft_accountContent .table>tbody>tr:hover>td {
	background-color: var(--ie-surface-2);
}

/* The reference number under the card is a lookup value, not something you
   read down the column, so it stops competing with the card itself. */
#ft_bookingList .small {
	display: block;
	margin-top: 2px;
	color: var(--ie-ink-mid);
	font-size: 11px;
}

/* Amounts are the one column you scan down: they line up on the right and on
   a fixed digit width so the cents stay in a column. */
#bookingsTable th:nth-child(5),
#bookingsTable td:nth-child(5) {
	text-align: right;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

/* Titles are the reason anyone opens this page, so the column that holds them
   is the one allowed to take the slack out of the others. */
#bookingsTable td:nth-child(6) {
	width: 32%;
	overflow-wrap: break-word;
}

/*Ticket list options*/
#view, #viewICS, #email {
	display: none
}

#ft_headerFixed {
	position:absolute !important;	
}

#ft_ticketList {
	padding-top: 0px;
}

tr.active>th {
	background-color: var(--ie-accent) !important;
}
tr.info>th {
	background-color: var(--ie-accent) !important;
}

.ft_accountContent > div {
	width:100%;
}

/* ── Account tables: the per-row actions menu ── */

/*
 * The menu button is an empty `<div class="fticon-menu">` whose glyph comes
 * from a `content:` URL. Ferve gives that icon a box in the header and in the
 * account navigation but nowhere inside a table, so in a booking row it
 * computed to 0x0 — Receipt, Tickets, Google Wallet, Exchange Tickets and
 * Watch were all present in the markup and reachable only by clicking a spot
 * you could not see. It needs a box, and a target big enough for a thumb.
 */
.ft_accountContent .dropdown-toggle {
	display: inline-block;
	width: 32px;
	height: 32px;
	line-height: 32px;
	text-align: center;
	border-radius: 4px;
	transition: background-color .2s;
}

.ft_accountContent .dropdown-toggle:hover,
.ft_accountContent .open>.dropdown-toggle {
	background-color: var(--ie-surface-2);
}

.ft_accountContent .dropdown-toggle .fticon-menu {
	width: 15px;
	height: 15px;
	vertical-align: middle;
}

/*
 * The button sits in the last column, so the menu opens inwards: Bootstrap's
 * default left alignment hangs it off the right edge of the page.
 */
.ft_accountContent .dropdown-menu {
	left: auto;
	right: 0;
	min-width: 150px;
	padding: 4px 0;
	border: 1px solid var(--ie-line);
	border-radius: 4px;
	background-color: var(--ie-surface);
	box-shadow: 0 8px 24px rgba(0, 0, 0, .55);
}

/*
 * `.ft_panelWhite` sets `color: white !important`, which the menu inherited
 * while keeping Bootstrap's white background: every item was white on white.
 */
.ft_accountContent .dropdown-menu>li>a {
	padding: 7px 14px;
	color: var(--ie-ink);
	font-size: 13px;
	white-space: nowrap;
}

.ft_accountContent .dropdown-menu>li>a:hover,
.ft_accountContent .dropdown-menu>li>a:focus {
	background-color: var(--ie-surface-2);
	color: var(--ie-ink);
}

/* Ferve emits an empty `<li>` where a booking has no ticket action; left alone
   it draws as a blank line in the middle of the menu. */
.ft_accountContent .dropdown-menu>li:empty {
	display: none;
}

/* ── Account tables: the filter box ── */

/*
 * Ferve's filter is a bare `input[type=search]` — no `.form-control`, so the
 * dark-input rule above never reached it and it rendered white text on a white
 * field at half opacity. What you typed was invisible until you selected it.
 */
.ft_tableSearch input[type="search"] {
	-webkit-appearance: none;
	appearance: none;
	box-sizing: border-box;
	width: 260px;
	height: 38px;
	padding: 0 14px;
	border: 1px solid var(--ie-line-strong);
	border-radius: 8px;
	background-color: var(--ie-surface-2);
	color: var(--ie-ink);
	font-size: 14px;
	opacity: 1;
	transition: border-color .2s ease, box-shadow .2s ease;
}

.ft_tableSearch input[type="search"]::placeholder {
	color: var(--ie-ink-dim);
}

.ft_tableSearch input[type="search"]:focus {
	border-color: var(--ie-accent);
	box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.28);
	outline: none;
}

.ft_tableSearch label {
	color: var(--ie-ink-mid);
	font-weight: 400;
}

.ft_tableSearch input[type="checkbox"] {
	accent-color: var(--ie-accent);
}

form.ft_tableSearch label a {
	color: var(--ie-ink) !important;
}

#ft_tableSearch {
	margin: 10px 0;
}

#ft_ticketList {
	margin-top: 80px !important;
}

/* ── Account tables: narrow screens ── */

/*
 * Ferve drops Location and Payment Method at 570px, but the seven columns stop
 * fitting at about 820. In between, the table ran wider than the panel and
 * `.ft_panelContent`'s `overflow: hidden` cut it off — and the column that
 * fell off the end was the actions menu. Same idea as Ferve's own rule, moved
 * to where the table actually breaks. Location reads "Web (Mobile)" on every
 * row and the card is printed on the receipt, so neither is why you came here.
 */
@media (max-width: 820px) {
	#bookingsTable th:nth-child(3), #bookingsTable td:nth-child(3),
	#bookingsTable th:nth-child(4), #bookingsTable td:nth-child(4) {
		display: none;
	}
}

/* Below this the remaining five do not fit either. The booking number goes
   next: it is a reference for the receipt, and the receipt is one tap away in
   the row menu. */
@media (max-width: 560px) {
	#bookingsTable th:nth-child(2), #bookingsTable td:nth-child(2) {
		display: none;
	}

	.ft_accountContent .table>tbody>tr>th,
	.ft_accountContent .table>tbody>tr>td {
		padding: 10px 8px;
	}

	.ft_accountContent, .ft_accountMain {
		padding-left: 15px;
		padding-right: 15px;
	}

	.ft_tableSearch input[type="search"] {
		width: 100%;
	}

	/* With three columns left the title should be the widest of them, not the
	   narrowest — the date wraps to two lines either way. */
	#bookingsTable td:nth-child(6) {
		width: 45%;
	}

	/* account.css stops floating the tiles here and centres them, but leaves
	   them at their desktop 290px — so on a 390px phone a card sat in the
	   middle of the sheet with 35px of nothing either side of it. */
	.ft_accountBox {
		width: 100%;
	}
}

/* A 320px phone is 30px short of the four remaining columns, and there is no
   fifth column worth dropping — date, total and title are the row. It buys the
   width back out of the padding instead. */
@media (max-width: 380px) {
	.ft_accountContent .table>tbody>tr>th,
	.ft_accountContent .table>tbody>tr>td {
		padding: 9px 5px;
		font-size: 12px;
	}

	.ft_accountContent .table>tbody>tr>th {
		font-size: 10px;
	}

	.ft_accountContent .dropdown-toggle {
		width: 26px;
		height: 26px;
		line-height: 26px;
	}
}

/* ****************************** ON DEMAND: THE DETAIL PAGE ****************************** */

/*
 * This page is the one a customer reaches after paying, to watch the film, and
 * it was unreadable: `.ft_accountPlayDetail` is not a `.ft_panelWhite`, so the
 * `color: white !important` that carries the rest of the account section never
 * reached it and every word on the page was Bootstrap's body #333 over #121212
 * — about 1.3:1. The title, the viewing restrictions, the booking reference,
 * the synopsis: all of it.
 *
 * `.ft_accountPlayDetail` has no rule of its own anywhere in Ferve's CSS, so
 * setting the colour here governs whatever the ancestor turns out to be.
 */
/*
 * The hero image steps down through fixed widths of its own — 1205, 1060, 985,
 * 935, then full-bleed — and on the ticket event page `#ft_eventContainer`
 * steps down with it, which is what keeps that page aligned. An on-demand page
 * has no such container, so the hero was centred over content that started at
 * the window edge. These are Ferve's own numbers, mirrored.
 */
.ft_accountPlayDetail {
	max-width: 1205px;
	margin: 0 auto;
	color: var(--ie-ink);
}

@media (max-width: 1220px) {
	.ft_accountPlayDetail { max-width: 1060px; }
}

@media (max-width: 1100px) {
	.ft_accountPlayDetail { max-width: 985px; }
}

@media (max-width: 1030px) {
	.ft_accountPlayDetail { max-width: 935px; }
}

@media (max-width: 970px) {
	.ft_accountPlayDetail { max-width: none; }
}

/*
 * The hero. It is the one full-colour thing on any page in the account section
 * and it was landing as a bare rectangle with four hard edges — the still
 * simply stopped, mid-page, against the background. Rounding it and fading its
 * bottom edge out into the page is what the streaming app does with the same
 * image, and it is the difference between a picture on a page and a page that
 * opens with a picture.
 *
 * `#ft_eventImageContainer` is already `position: relative` with
 * `overflow: hidden` in event.css, so the scrim can be a pseudo-element and
 * still follow the radius.
 */
#ft_eventImageContainer {
	border-radius: 14px;
	box-shadow: 0 0 0 1px var(--ie-line), 0 26px 60px rgba(0, 0, 0, 0.55);
}

#ft_eventImageContainer::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 45%;
	pointer-events: none;
	background: linear-gradient(180deg, rgba(8, 7, 15, 0) 0%, rgba(8, 7, 15, 0.62) 100%);
}

#ft_eventTitle,
#ft_eventDetailsRight h3,
#ft_eventDetailsRight strong {
	color: var(--ie-ink);
}

/*
 * The sidebar carries the restrictions, the booking reference and the second
 * Play button, and it had nothing behind it — three unrelated blocks of small
 * print stacked down the right of an empty page. As a card it reads as the one
 * panel it is.
 */
.ft_accountPlayDetail #ft_eventDetailsRight {
	box-sizing: border-box;
	padding: 20px;
	border-radius: 12px;
	background: var(--ie-surface);
	box-shadow: var(--ie-sheen), 0 0 0 1px var(--ie-line);
	line-height: 1.6;
}

/* event.css puts 25px above every h3 in this column, which inside a card leaves
   a gap over the first one and none under the rule above the next. */
.ft_accountPlayDetail #ft_eventDetailsRight h3:first-child {
	margin-top: 0;
}

.ft_accountPlayDetail #ft_eventDetailsRight ul {
	padding-left: 18px;
	margin-bottom: 0;
}

/*
 * account.css pulls every account h1 20px to the left so its (now removed)
 * white bar could bleed to the panel edge. Here the heading sits inside a
 * padded column rather than against a panel, and the offset only broke the
 * title away from the synopsis and the button under it. By id because the rule
 * it has to beat is `body[id^="ft_account"] h1` and it is `!important`.
 */
#ft_eventTitle {
	margin-left: 0 !important;
	padding-left: 0 !important;
}

.ft_eventVenue,
.ft_eventDateTime,
#ft_eventDetailsRight li,
#ft_eventDetailsRight i {
	color: var(--ie-ink-mid);
}

/*
 * Play is the whole point of the page and it was arriving as Bootstrap's stock
 * `.btn-info` — cyan, 14px, weight 400 — while the button the rest of the site
 * uses is the brand gradient. Same treatment as the primary buttons above,
 * minus their `width: 100% !important`: this one sits in a 550px column and
 * again in a 280px sidebar, and neither wants to be filled.
 */
#btnPlay, #btnPlay2 {
	padding: 15px 32px;
	border: 0;
	border-radius: 6px;
	background-image: var(--ie-grad);
	background-size: 160% 100%;
	background-position: 0% 0;
	color: var(--ie-accent-ink);
	font-size: 15px;
	font-weight: 700;
	line-height: 1;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	transition: background-position .45s ease, box-shadow .3s;
}

#btnPlay:hover, #btnPlay2:hover,
#btnPlay:focus, #btnPlay2:focus {
	background-position: 100% 0;
	box-shadow: 0 8px 26px rgba(139, 92, 246, 0.38);
	color: var(--ie-accent-ink);
}

/* The label above the restrictions list, set as a section mark rather than a
   heading — the same treatment the table headers get. */
#ft_eventDetailsRight h3 {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.12em;
	color: var(--ie-accent-3);
}

/*
 * The ticket event page has a poster column on the left of these two; an
 * on-demand page has none, so its content sat in the left two thirds under a
 * centred hero with a third of the row empty. Scoped to this wrapper and to
 * the width where Ferve still floats them side by side, so every one of its
 * own breakpoints below 971px behaves exactly as before.
 */
@media (min-width: 971px) {
	.ft_accountPlayDetail #ft_eventDetailsCenter {
		/* Everything the sidebar does not take, so the two columns together come
		   to exactly the width of the hero and line up on both edges. */
		width: calc(100% - 280px);
		padding-left: 0;
		padding-right: 40px;
	}
}

/* The sidebar itself narrows to 240px here. */
@media (min-width: 971px) and (max-width: 1100px) {
	.ft_accountPlayDetail #ft_eventDetailsCenter {
		width: calc(100% - 240px);
	}
}

/*
 * Below 971 Ferve stacks the sidebar under the synopsis but keeps
 * `margin-left: 240px` on it, the width of the poster column that a ticketed
 * event has and an on-demand one does not — so the viewing restrictions sat
 * indented into empty space. Both columns run full width and share one gutter
 * instead; the hero stays full-bleed above them.
 */
@media (max-width: 970px) {
	.ft_accountPlayDetail #ft_eventDetailsCenter,
	.ft_accountPlayDetail #ft_eventDetailsRight {
		width: 100%;
		margin-left: 0;
		padding-left: 20px;
		padding-right: 20px;
	}

	/* The sidebar is a card here, and a card wants the same gutter as the copy
	   beside it rather than running into both edges of the phone. */
	.ft_accountPlayDetail #ft_eventDetailsRight {
		width: calc(100% - 40px);
		margin: 0 20px 30px;
	}

	/* Ferve runs the hero full-bleed below this width. A 14px radius against
	   the edge of the screen is not a rounded card, it is a chipped corner. */
	#ft_eventImageContainer {
		border-radius: 0;
		box-shadow: none;
	}
}

/*
 * Ferve clamps the synopsis to a flat 62px, which does not divide by the line
 * height: on a narrow column you get a sliver of a fourth line showing under
 * three whole ones, which reads as a rendering fault rather than a clamp.
 * Clamping by lines lands on a boundary and ellipsises.
 */
#ft_eventDescription.ft_abbreviated {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	height: auto;
}

/* The expanded half of that toggle — `.ft_abbreviated` is `cursor: s-resize`
   because clicking the synopsis swaps it for this. Ferve gives it a white card
   with an #f4f5f8 border, which opened a white box in the middle of a dark one. */
.ft_full {
	background: var(--ie-surface);
	border-color: var(--ie-line);
}

/* Bootstrap's rule is #eee — a near-white line, wherever a page uses one. It
   also loads after this file, hence `html hr`. */
html hr {
	border-top-color: var(--ie-line);
}

/********************************** BOOK EVENT DIRECT PAGE **********************************/
#ft_eventContainer {
	/* --ie-surface at 0.8, so the page's colour wash glows through the card
	   instead of stopping dead at its edge. */
	background: rgba(27, 25, 48, 0.8);
	color: var(--ie-ink);
	border-radius: 16px;
	box-shadow: var(--ie-sheen), 0 0 0 1px var(--ie-line);
}

/* The container runs full-bleed below Ferve's bottom step (see the width
   ladder above) — corners and a ring against the screen edge read as chipped,
   same as the hero on the play-detail page. */
@media (max-width: 970px) {
	#ft_eventContainer {
		border-radius: 0;
		box-shadow: none;
	}
}

/* This was `color: white` on `background: white` — the rating was there the
   whole time and invisible. A classification badge wants to read as a stamp, so
   it keeps the pale chip and takes a dark label. */
#ft_eventClassification div {
  color: var(--ie-accent-ink) !important;
    background: var(--ie-ink) !important;
    padding: 10%;
    width: 50px;
    border-radius: 5px;
    margin-top: 5px;
}

#ft_eventDates2, #ft_eventSharing2, .ft_eventType, #ft_eventCode {
	display: none;
}

.form-control {
	color: var(--ie-ink) !important;
}

.ft_ep_priceRow .ft_ep_conditionsRow {
    color: var(--ie-ink-mid);
}

.ft_pricing {
    background: var(--ie-surface-2);
	color: var(--ie-ink);
	border: 1px solid var(--ie-line);
    padding: 1px 10px;
    border-radius: 8px;
	box-shadow: var(--ie-sheen);
}

#ft_eventSharing1 {
  display: none
}

.ft_eventDatesTimes a {
  color: var(--ie-ink) !important
}

.ft_eventDatesDays > .ft_grey {
  filter: invert(1) !important; /* Make the date icon white by overriding filter */
}

div[id^="ft_eventDates_"] {
    background: var(--ie-surface-2);
	color: var(--ie-ink);
	border: 1px solid var(--ie-line);
    padding: 1px 10px;
    border-radius: 8px;
	box-shadow: var(--ie-sheen);
    margin-bottom: 10px;
      display: block !important; /* NOTE: THE DATE/TIME CHOICE WILL REMAIN ON-SCREEN EVEN WHEN WAITLIST IS AVAILABLE */
}

.ft_ed_timeRow {
	height:70px !important;
}

/* 
.ft_ed_timeRowSelected {
	background: orange;
} */

.ft_ep_buttonRow .ft_button {
    border: 0;
    border-radius: 6px;
    font-weight: 700;
    letter-spacing: 0.04em;
    line-height: 1;
    white-space: nowrap;
    text-transform: uppercase;
    text-decoration: none;
    color: var(--ie-accent-ink);
    background-image: var(--ie-grad);
    background-size: 160% 100%;
    background-position: 0% 0;
    transition: background-position .45s ease, box-shadow .3s, opacity .4s;
    display: block;
    box-sizing: border-box;
    text-align: center;
    font-size: 14px;
    width: 100% !important;
	height: 40px;
}

.ft_ep_buttonRow .ft_button:hover {
	background-position: 100% 0;
	box-shadow: 0 6px 22px rgba(139, 92, 246, 0.35);
	color: var(--ie-accent-ink);
}

/* A full-width band, so the gradient gets to run its whole sweep once. */
.ft_ep_headerRow, .ft_ed_headerRow {
	display: flex;
    background-image: var(--ie-grad);
    color: var(--ie-accent-ink);
    align-items: center;
}

.ft_ep_text > input {
  width: 40% !important;
}

#ft_rsvpPricing #ft_allocated {
display: none !important;
}

#ft_calendar {
	background: none
}

.ft_ed_cal_row {
	color: var(--ie-ink) !important
}

.ft_ed_headerRow {
  height: 30px
}

.ft_ed_cal_times .ft_ed_dateTime {
  width: 80% !important
}
/* -- Custom CSS -- */
