@import url('https://use.typekit.net/oly4kpp.css');
@import url('animations.css');
@import url('reset.css');

:root {
	--body-font: "montserrat", "Helvetica Neue",  Helvetica, Arial, sans-serif;
	--heading-font:  "montserrat", "Helvetica Neue",  Helvetica, Arial, sans-serif;
	--body-bg-color: #efefef;
	--fieldset-bg-color: #fff;
	--border-color:  #ddd;
	--control-bg-color: #f8f8f8;
	--control-active-color: #dedede;
	--safe-action-bg-color: #5cb85c;
	--safe-action-hover-color: #4cae4c;
	--safe-action-active-color: #357935;
	--safe-action-text-color: #fff;
	--unsafe-action-bg-color: #d9534f;
	--unsafe-action-hover-color: #c9302c;
	--unsafe-action-active-color: #8c211e;
	--unsafe-action-text-color: #fff;
	--fieldset-shadow:0 4px 6px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08); /* Subtle 3D shadow */
	--button-shadow:0 4px 6px rgba(0, 0, 0, 0.2), 0 1px 3px rgba(0, 0, 0, 0.1); /* Subtle 3D shadow */
	--testmode-bg-color: #ff9800;
	--testmode-text-color: #000;
}

/* Test Mode Banner */
.testmode-banner {
	background-color: var(--testmode-bg-color);
	color: var(--testmode-text-color);
	text-align: center;
	padding: 0.5em 1em;
	font-weight: 600;
	font-size: 0.9em;
	position: sticky;
	top: 0;
	z-index: 1000;
}

body {
	font-family: var(--body-font);
	background-color: var(--body-bg-color); 
}

h1, h2, h3, h4, h5, h6 {
	font-family: var(--heading-font);
	font-weight: 600;
}

h1 {
	font-size: 1.4em
}

h2 {
	font-size: 1.2em
}

header {
	text-align: center;
	margin-block-end: 1em;
	padding-block-start: 1em;
}

header h1 {
	margin-block-end: .2em;
}

main {
	margin-inline: auto;
/* 	margin-block-end: 5em; */
}

footer {
	display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    text-align: center;
    position: fixed;
    bottom: 0;
    width: 100%;
    padding-inline: 2%;
    padding-block: 0.6em;
    background-color: var(--fieldset-bg-color);
    justify-content: space-around;
    align-items: center;
    box-shadow: var(--fieldset-shadow);
}

footer span {
	font-size: .9em;
	font-weight: 600
}

/* Two-column layout: Attendee cards (left) + Invoice sidebar (right) */
#step2 main,
#attendeeForm {
	display: flex;
	gap: 2%;
}

/* Attendee cards come first visually (left) */
#attendeesContainer {
	order: 1;
}

/* Invoice sidebar comes second visually (right) */
#invoiceSection {
	order: 2;
}

/* Invoice Sidebar (right, 25%) */
#invoiceSection {
	width: 25%;
	flex-shrink: 0;
	position: sticky;
	top: 80px;
	align-self: flex-start;
	max-height: calc(100vh - 120px);
	overflow-y: auto;
	font-size: 0.85em;
	background: var(--fieldset-bg-color);
	padding: 1.5em;
	border-radius: 0.5em;
	box-shadow: var(--fieldset-shadow);
}

/* Large total at top - Stripe style */
#invoiceSection .invoice-total {
	font-size: 2.2em;
	font-weight: 600;
	margin-bottom: 1em;
	color: var(--text-color);
}

#invoiceSection > section {
	margin-bottom: 0;
}

#invoiceSummarySection {
	margin-bottom: 0;
}

/* Stripe-style invoice table */
#invoiceSummary table {
	width: 100%;
	border-collapse: collapse;
}

#invoiceSummary tr {
	border-bottom: 1px solid var(--border-color);
}

#invoiceSummary tr:last-child {
	border-bottom: none;
}

#invoiceSummary td {
	padding: 0.75em 0;
	vertical-align: top;
}

#invoiceSummary td:last-child {
	text-align: right;
	white-space: nowrap;
}

#invoiceSummary .item-name {
	font-weight: 500;
}

#invoiceSummary .item-detail {
	font-size: 0.85em;
	color: #666;
	margin-top: 0.2em;
}

#invoiceSummary .summary-row td {
	padding: 0.4em 0;
	border-bottom: none;
}

#invoiceSummary .total-row {
	font-weight: 600;
}

#invoiceSummary .total-row td {
	padding-top: 0.75em;
	border-top: 1px solid var(--border-color);
}

/* Promo section below invoice items */
#promoSection {
	margin-top: 1.5em;
	padding-top: 1.5em;
	border-top: 1px solid var(--border-color);
}

#promoSection h2 {
	font-size: 0.95em;
	font-weight: 600;
	margin-bottom: 0.5em;
}

#promoSection label {
	font-size: 0.85em;
}

/* Sidebar finalise button */
.sidebar-finalise-btn {
	display: block;
	width: 100%;
	margin-top: 1.5em;
	padding: 0.75em 1em;
	background-color: var(--safe-action-bg-color);
	color: var(--safe-action-text-color);
	border: none;
	border-radius: 0.25em;
	font-size: 1em;
	font-weight: 500;
	cursor: pointer;
	transition: background-color 0.2s, transform 0.1s;
}

.sidebar-finalise-btn:hover {
	background-color: var(--safe-action-hover-color);
	transform: translateY(-1px);
}

.sidebar-finalise-btn:active {
	background-color: var(--safe-action-active-color);
	transform: translateY(0);
}

/* Attendee cards - fit 3 per row in 73% area */
.attendee {
	position: relative;
	display: flex;
	flex-direction: column;
	width: 31%;
	padding: 1em;
	padding-top: 2em;
	background-color: var(--fieldset-bg-color);
	box-shadow: var(--fieldset-shadow);
	border-radius: 0.5em;
	font-size: 0.9em;
}

/* Name fields on same row */
.name-row {
	display: flex;
	gap: 0.5em;
}

.name-row .half {
	flex: 1;
	margin-block: 0.2em;
}

.name-row input {
	width: 100%;
}

/* Tighter field spacing in cards */
.attendee p {
	margin-block: 0.2em;
}

.attendee label {
	font-size: 0.9em;
	margin-block-end: 0.2em;
}

selects {
	appearance: none;
	
}

input, select, option {
	font-family: var(--body-font);
	font-size: 90%;
	width: 98%;
	margin-inline: auto;
	border: solid thin var(--border-color);
	padding: .4em
}

select {
	width: 100%
}

label {
	display: block;
	font-weight: 600;
	font-size: .9em;
	margin-block-end: .4em;
}

.required {
	vertical-align: super;
	font-size: 1.1em;
	font-weight: 500;

}

.inline-input {
	display: flex;
	column-gap: 2%
}

.inline-input label {
	flex: 0 0 70%;
	text-align: right
}

select, button, input[type='submit'] {
	font-family: var(--body-font);
	color: #333; /* Text color */
	background-color: var(--control-bg-color); /* Background color */
	border: thin solid var(--border-color); /* Border properties */
	padding: .4em .4em; /* Padding inside the select box */
	border-radius: 5px; /* Rounded corners */
	box-shadow: var(--button-shadow);
}

button, input[type='submit'] {
	font-size: 1em;
	font-weight: 600;
	cursor: pointer;
}

select:hover, button:hover, select:active, button:active, input[type='submit']:hover, nput[type='submit']:active  {
  background-color: var(--control-active-color); /* Background color */

}

#contactForm {
	display: flex;
	flex-direction: row;
	gap: 1%;
	flex-wrap: wrap;
	justify-content: center;
	padding-block-start: 1em;
}

#contactForm > fieldset {
	display: flex;
	flex-direction: column;
	width: 45%;
	padding: 1em 2%;
	background-color: var(--fieldset-bg-color);
	box-shadow: var(--fieldset-shadow);
	border-radius: .5em;
	margin-block-end: 4em; /* Space for fixed footer */
}

#contactForm > fieldset  > fieldset {
	width: 100%
}

#contactForm button[type='submit'] {
	width: fit-content;
	margin-inline: auto;
	display: block;
	margin-block: 1em;
	padding: .5em 1em;
	background-color: var(--safe-action-bg-color);
	color: var(--safe-action-text-color)
}

#contactForm button[type='submit']:hover, #attendeeForm button[type='submit']:hover {
	background-color: var(--safe-action-hover-color);

}

#contactForm button[type='submit']:active, #attendeeForm button[type='submit']:active {
	background-color: var(--safe-action-active-color);

}



/* Attendee cards area (left, ~73%) */
div#attendeesContainer {
	width: 73%;
	flex: 1;
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	column-gap: 2%;
	row-gap: 1em;
	justify-content: flex-start;
	align-content: flex-start;
	padding: 0;
	padding-inline-start: 1em;
	font-size: 1em;
}

fieldset {
    width: 30%;
    margin: 0;
    padding: 0;
    border: none;
}

fieldset > p {
	margin-block: .4em; 
}

/* Icon button base styles */
.icon-btn {
	width: 32px;
	height: 32px;
	border-radius: 50%;
	border: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 2px 4px rgba(0,0,0,0.2);
	transition: transform 0.15s, background-color 0.15s;
	padding: 0;
}

.icon-btn:hover {
	transform: scale(1.1);
}

.icon-btn:active {
	transform: scale(0.95);
}

/* Delete button - positioned in bottom right of card */
.delete-icon-btn {
	position: absolute;
	top: 0.5em;
	right: 0.5em;
	width: 22px;
	height: 22px;
	background-color: var(--unsafe-action-bg-color);
	color: var(--unsafe-action-text-color);
}

.delete-icon-btn:hover {
	background-color: var(--unsafe-action-hover-color);
}

.delete-icon-btn:active {
	background-color: var(--unsafe-action-active-color);
}

/* Add attendee card - clickable card with centered icon */
.add-attendee-card {
	width: 31%;
	min-height: 180px;
	display: flex;
	align-items: center;
	justify-content: center;
	background-color: var(--fieldset-bg-color);
	border: 2px dashed var(--border-color);
	border-radius: 0.5em;
	cursor: pointer;
	transition: border-color 0.2s, background-color 0.2s;
}

.add-attendee-card:hover {
	border-color: var(--safe-action-bg-color);
	background-color: rgba(92, 184, 92, 0.08);
}

.add-attendee-card:focus {
	outline: 2px solid var(--safe-action-bg-color);
	outline-offset: 2px;
}

.add-icon-btn {
	width: 48px;
	height: 48px;
	background-color: var(--safe-action-bg-color);
	color: var(--safe-action-text-color);
	pointer-events: none;
}

.add-attendee-card:hover .add-icon-btn {
	background-color: var(--safe-action-hover-color);
}

/* Placeholder/incomplete attendee state */
.attendee.placeholder {
	border: 2px solid #4a6fa5;
}

.attendee.placeholder::before {
	content: 'leave blank to provide later';
	position: absolute;
	top: -0.6em;
	left: 0.75em;
	background: #4a6fa5;
	color: white;
	font-size: 0.65em;
	font-weight: 600;
	padding: 0.15em 0.5em;
	border-radius: 3px;
	z-index: 1;
}

#promotional {
	display: flex;
	flex-direction: row;
	flex-wrap: no-wrap;
}

#promotional > fieldset {
	width: 50%
}

#promotional > fieldset:first-child {
	width: 25%;
	margin-inline: auto
}

#promoCodeDescription {
	margin-block-start: .4em;
	font-size: .75em;
	min-height: 1.2em;
	line-height: 1.3;
	padding: 0.4em;
	border-radius: 4px;
	transition: background-color 0.2s, color 0.2s;
	box-sizing: border-box;
	/* Always visible but transparent when empty */
	background-color: transparent;
}

#promoCodeDescription:empty {
	min-height: 0;
	padding: 0;
}

#promoCodeDescription.loading {
	color: #666;
	font-style: italic;
}

#promoCodeDescription.loading::before {
	content: '';
	display: inline-block;
	width: 12px;
	height: 12px;
	border: 2px solid #ccc;
	border-top-color: #666;
	border-radius: 50%;
	animation: spin 0.8s linear infinite;
	margin-right: 0.5em;
	vertical-align: middle;
}

#promoCodeDescription.success {
	background-color: #d4edda;
	color: #155724;
}

#promoCodeDescription.error {
	background-color: #f8d7da;
	color: #721c24;
}

/* Promo code pills - displayed below the input */
#promoCodePills {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5em;
	margin-block: 0.5em;
}

#promoCodePills:empty {
	display: none;
}

.promo-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.2em;
	background-color: #d4edda;
	color: #155724;
	padding: 0.2em 0.4em 0.2em 0.5em;
	border-radius: 1em;
	font-size: 0.7em;
	font-weight: 500;
	animation: pillAppear 0.2s ease-out;
}

@keyframes pillAppear {
	from {
		opacity: 0;
		transform: scale(0.8);
	}
	to {
		opacity: 1;
		transform: scale(1);
	}
}

.promo-pill .pill-code {
	max-width: none;
	white-space: nowrap;
}

.promo-pill .pill-remove {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.2em;
	height: 1.2em;
	border: none;
	background: rgba(0,0,0,0.15);
	color: inherit;
	border-radius: 50%;
	cursor: pointer;
	font-size: 0.9em;
	line-height: 1;
	padding: 0;
	transition: background-color 0.15s;
	box-shadow: none;
}

.promo-pill .pill-remove:hover {
	background: rgba(0,0,0,0.3);
}

#attendeeForm {
	column-gap: 2%;
	margin-block-end: 4em;
	
}

#attendeeForm input[type='submit'] {
	display: block;
	width: 33%;
	margin-inline: 0 auto;
	color: var(--safe-action-text-color);
	background-color: var(--safe-action-bg-color);
	display: none
}

/* 
#attendeeForm input[type='submit']:hover, #attendeeForm input[type='submit']:active {
	background-color: var(--safe-action-hover-color)
}
 */

p > input[type='submit'], footer input[type='submit'], footer button#openConfirmDialog {
	display: inline-block;
	width: fit-content;
	padding: .4em 1em;
	color: var(--safe-action-text-color);
	background-color: var(--safe-action-bg-color);
	margin-inline: auto 0;
	margin-inline: 0;
	border: none;
	font-size: 1em;
	cursor: pointer;
}

p > input[type='submit']:hover, footer input[type='submit']:hover, footer button#openConfirmDialog:hover{
	background-color: var(--safe-action-hover-color)
}

p > input[type='submit']:active, footer input[type='submit']:active, footer button#openConfirmDialog:active{
	background-color: var(--safe-action-active-color)
}

#invoiceSummary table {
	width: 100%;
	margin-inline: auto;
	border-collapse: collapse;
}

#invoiceSummary tr:nth-child(odd) {
/* 	background-color: var(--body-bg-color) */
}

#invoiceSummary td {
	padding: 0.25em 0;
	vertical-align: baseline;
}

#invoiceSummary td:first-of-type {
	font-weight: 600;
	text-align: right;
	padding-right: 0.75em;
}

#invoiceSummary td:last-of-type {
	text-align: right;
	/* Tabular figures for number alignment */
	font-variant-numeric: tabular-nums;
	font-feature-settings: "tnum";
	white-space: nowrap;
}

#invoiceSummary .price-original {
	color: #999;
	font-size: 0.85em;
	text-decoration: line-through;
	margin-right: 0.5em;
}

#invoiceSummary .price-discounted {
	color: #155724;
}

#invoiceSummary .savings-row {
	color: #155724;
}

#invoiceSummary .total-row td {
	font-weight: 700;
	padding-top: 0.5em;
	border-top: 1px solid var(--border-color);
}

	header {
		position: sticky;
		width: 100%;
		top: 0;
		left: 0;
		background-color: var(--fieldset-bg-color);
		padding-block-end: .6em;
		box-shadow: var(--fieldset-shadow);
		isolation: isolate;
		z-index: 100;
	}
	
/* for the message page for blocked stripe */

    .message-container {
      background-color: var(--fieldset-bg-color);
      box-shadow: var(--fieldset-shadow);
      border-radius: 0.5em;
      max-width: 600px;
      margin: 2em auto;
      padding: 2em;
      text-align: center;
    }

    .message-container h2 {
      margin-bottom: 0.5em;
      font-size: 1.2em;
    }

    .message-container p {
      margin: 1em 0;
      font-size: 1em;
    }

    .message-container a {
      color: #0077cc;
      text-decoration: underline;
      font-weight: 600;
    }

    .message-container a:hover {
      text-decoration: none;
    }
    
    .button-actions {
      max-width: 600px;
      margin: 0 auto;
	  display: flex;
      justify-content: center;
      gap: 1em
    }
    
/* Core button styling */
.button-actions .button {
  display: inline-block;
  padding: 0.75em 1.5em;
  font-size: 1rem;
  font-weight: 600;
  text-align: center;
  text-decoration: none;
  border-radius: 0.375em;
  transition:
    background-color 0.2s ease,
    color 0.2s ease,
    border 0.2s ease,
    transform 0.1s ease;
  cursor: pointer;
  border: none;
  line-height: 1.2;
}

/* Primary button */
.button.primary {
  background-color: var(--accent-color, #0077cc);
  color: #fff;
  border: 2px solid transparent;
}

.button.primary:hover,
.button.primary:focus {
  background-color: #005fa3;
}

.button.primary:active {
  background-color: #004c8a;
  transform: scale(0.98);
}

/* Secondary button (outline style) */
.button.secondary {
  background-color: #fff;
  color: var(--accent-color, #0077cc);
  border: 2px solid var(--accent-color, #0077cc);
}

.button.secondary:hover,
.button.secondary:focus {
  background-color: var(--accent-color, #0077cc);
  color: #fff;
  transform: translateY(-1px);
}

.button.secondary:active {
  background-color: #005fa3;
  transform: scale(0.98);
}

/* Optional full-width button for mobile */
.button.full {
  width: 100%;
  display: block;
}

/* Confirmation Dialog */
dialog#confirmDialog {
	border: none;
	border-radius: 0.5em;
	padding: 1.5em;
	max-width: 340px;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
	background-color: var(--fieldset-bg-color);
	opacity: 0;
	transform: scale(0.95);
	transition: opacity 100ms ease-out, transform 100ms ease-out, display 100ms ease-out allow-discrete, overlay 100ms ease-out allow-discrete;
}

dialog#confirmDialog[open] {
	opacity: 1;
	transform: scale(1);
}

/* Closing animation class */
dialog#confirmDialog.closing {
	opacity: 0;
	transform: scale(0.95);
}

@starting-style {
	dialog#confirmDialog[open] {
		opacity: 0;
		transform: scale(0.95);
	}
}

dialog#confirmDialog::backdrop {
	background-color: rgba(0, 0, 0, 0);
	transition: background-color 100ms ease-out, display 100ms ease-out allow-discrete, overlay 100ms ease-out allow-discrete;
}

dialog#confirmDialog[open]::backdrop {
	background-color: rgba(0, 0, 0, 0.5);
}

dialog#confirmDialog.closing::backdrop {
	background-color: rgba(0, 0, 0, 0);
}

@starting-style {
	dialog#confirmDialog[open]::backdrop {
		background-color: rgba(0, 0, 0, 0);
	}
}

dialog#confirmDialog h2 {
	margin: 0 0 0.75em 0;
	font-size: 1.1em;
	color: var(--text-color);
}

dialog#confirmDialog p {
	margin: 0 0 1.25em 0;
	font-size: 0.9em;
	color: var(--text-color);
	line-height: 1.4;
}

dialog#confirmDialog .dialog-buttons {
	display: flex;
	gap: 0.75em;
	justify-content: flex-end;
}

dialog#confirmDialog button {
	padding: 0.5em 1em;
	border: none;
	border-radius: 0.25em;
	font-size: 0.9em;
	cursor: pointer;
	transition: background-color 0.2s, transform 0.1s;
}

dialog#confirmDialog #cancelRegistration {
	background-color: #e0e0e0;
	color: #333;
}

dialog#confirmDialog #cancelRegistration:hover {
	background-color: #d0d0d0;
}

dialog#confirmDialog #confirmRegistration {
	background-color: var(--safe-action-bg-color);
	color: var(--safe-action-text-color);
}

dialog#confirmDialog #confirmRegistration:hover {
	background-color: var(--safe-action-hover-color);
	transform: translateY(-1px);
}

/* Medium screens - stack sidebar above cards */
@media (max-width: 1200px) {
	#step2 main,
	#attendeeForm {
		flex-direction: column;
	}

	#invoiceSection {
		width: 100%;
		position: static;
		max-height: none;
		margin-bottom: 1.5em;
	}

	div#attendeesContainer {
		width: 100%;
		justify-content: center;
	}

	.attendee, .add-attendee-card {
		width: 31%;
	}
}

/* Mobile - single column */
@media (max-width: 799px) {
	header > h1, header > p {
		text-align: center;
	}

	#step1 main {
		margin-block: 1em 5em;
	}

	#invoiceSection {
		padding: 1em;
	}

	#contactForm, div#attendeesContainer {
		flex-direction: column;
		gap: 1em;
		justify-content: center;
		align-items: center;
		align-content: center;
		margin: 0;
	}

	#contactForm > fieldset {
		width: 90%;
	}

	.attendee, .add-attendee-card {
		width: 94%;
		margin-inline: auto;
	}

	#invoiceSection {
		width: 94%;
		margin-inline: auto;
	}

	/* Stack name fields vertically on mobile */
	.name-row {
		flex-direction: column;
		gap: 0;
	}

	#contactForm button[type='submit'] {
		display: none;
		width: 90%;
	}

	p > input[type='submit'], footer > input[type='submit'], footer button#openConfirmDialog {
		display: block;
		width: fit-content;
		margin: 0.2em auto;
		padding: 0.4em 1em;
		color: var(--safe-action-text-color);
		background-color: var(--safe-action-bg-color);
	}

	footer {
		display: flex;
		column-gap: 2%;
		padding-block: 0.5em;
	}

	footer span {
		display: none;
	}

	.add-attendee-card {
		min-height: 80px;
	}

	.message-container {
		width: 94%;
		margin-inline: auto;
	}
}