
/* **************************************************
	global parameters
************************************************** */

* {
	margin: 0;
	padding: 0;
	border: 0;
	box-sizing: border-box;
}

* {
	font-family: "Helvetica Neue Regular", sans-serif !important;
	font-weight: 100;
	text-decoration: none !important;
}

*:focus,
*:hover {
	outline: none;
}

*:disabled {
	pointer-events: none;
	opacity: 0.5;
}

img {
	filter: none !important;
}

:root {
	--colour-site: #603bc0;
	--colour-light: #ffffff;
	--colour-mid: #4c4c4c;
    --colour-dark: #000000;
	--font-large: 13pt;
	--font-medium: 11pt;
	--font-small: 9pt;
	--scrollbar-width: 6pt;
}

/* **************************************************
	scrolling
************************************************** */

scrollbar,
::-webkit-scrollbar {
	width: var(--scrollbar-width);
}

scrollbar-track,
::-webkit-scrollbar-track,
scrollbar-corner,
::-webkit-scrollbar-corner {
	border-radius: 3pt;
	box-shadow: inset 0 0 3pt rgba(0, 0, 0, 0.4);
	background: rgba(169, 169, 169, 0.1);
}

scrollbar-thumb,
::-webkit-scrollbar-thumb {
	border-radius: 3pt;
	box-shadow: inset 0 0 3pt rgba(0, 0, 0, 0.6);
	background: rgba(169, 169, 169, 0.5);
}

scrollbar-thumb:hover,
::-webkit-scrollbar-thumb:hover {
	background: rgba(169, 169, 169, 0.9);
}

scrollbar-thumb:window-inactive,
::-webkit-scrollbar-thumb:window-inactive {
	background: rgba(99, 99, 99, 0.3);
}

/* **************************************************
	typography
************************************************** */

h1 {
	display: grid;
	font-size: var(--font-large);
	color: var(--colour-light);
	margin-left: 15pt;
	padding: 3pt;
}

h2 {
	display: grid;
	font-size: var(--font-medium);
	color: var(--colour-light);
	margin-bottom: 6pt;
	padding: 3pt;
}

h3 {
	display: grid;
	font-size: var(--font-small);
	color: var(--colour-light);
	margin-top: 12pt;
	margin-bottom: 6pt;
	padding: 3pt;
}

h4 {
	display: grid;
	font-size: var(--font-small);
	font-weight: 400 !important;
	color: var(--colour-dark);
	margin: 6pt 0 6pt 6pt;
	padding: 3pt;
}

p {
	font-size: var(--font-small);
	color: var(--colour-light);
	padding: 1.5pt 0 1.5pt 0;
}

.underscore {
	border-bottom: 1pt groove var(--colour-mid);
}

.uppercase {
	text-transform: uppercase;
}

.bold {
	font-weight: 500;
}

hr {
	border: 0.25pt solid var(--colour-mid);
	width: 100%;
}

hr:last-of-type {
	display: none;
}

code {
	color: chartreuse;
}

.mismatch {
	color: red;
}

/* **************************************************
	response data table
************************************************** */

table {
	table-layout: fixed;
	width: 100%;
	border-spacing: 3pt 3pt;
}

tr.blank {
	height: 3pt;
}

td {
	font-size: var(--font-small);
	white-space: nowrap;
	text-wrap: wrap;
	vertical-align: middle;
}

td > img {
	width: 12pt;
	height: 12pt;
	display: block;
}

td > a > img {
	width: 15pt;
	height: 13pt;
}

td.numeric {
	text-align: right;
	justify-content: right;
}

.col-12pt {
	width: 12pt;
}

.col-40pc {
	width: 40%;
}

.col-60pc {
	width: 60%;
}

/* **************************************************
	form & input
************************************************** */

form {
	display: grid;
	grid-template-columns: 1fr;
	grid-template-rows: 1fr;
	margin: 0;
	padding: 9pt 3pt 3pt 3pt;
}

form > label {
	font-size: 9pt;
}

.form {
	border-top: 1pt solid var(--colour-mid);
}

label {
	display: grid;
	color: var(--colour-light);
	font-size: var(--font-small);
	padding: 0 0 3pt 0;
}

label > span > img.mandatory {
	display: inline-block;
}

img.mandatory {
	width: 9pt;
	height: 9pt;
}

input {
	display: inline-grid;
	background-color: var(--colour-light);
	border: 0.5pt solid var(--colour-mid);
	border-radius: 3pt;
	box-shadow: 1pt 1pt 1pt rgba(169, 169, 169, 0.9);
	color: var(--colour-dark);
	font-size: var(--font-small);
	margin: 3pt auto 9pt auto;
	max-width: inherit !important;
	opacity: 1;
	width: 95%;
	height: 18pt;
	min-height: calc(var(--font-small) + 7pt);
	appearance: none;
	padding: 0 6pt 0 6pt;
}

input::placeholder {
	opacity: 50% !important;
}

input[type=checkbox] {
	width: 18pt;
	margin: 3pt auto 9pt 3pt;
	place-content: center;
	font-size: var(--font-small) !important;
}

input[type=checkbox]:checked::before {
	content: '√';
}

input[type=text]:valid,
input[type=password]:valid {
	background: url('image/site/input-valid-64-00ff00.png') no-repeat 99% 50% var(--colour-light);
	background-size: 9pt;
}

input[type=text]:invalid,
input[type=password]:invalid {
	background: url('image/site/input-invalid-64-ff0000.png') no-repeat 99% 50% var(--colour-light);
	background-size: 9pt;

}

input[type=file] {
	display: none;
}

/* **************************************************
	select
************************************************** */

select {
	display: inline-flex;
	background-color: var(--colour-light);
	border: 0.5pt solid var(--colour-mid);
	border-radius: 3pt;
	box-shadow: 1pt 1pt 1pt rgba(169, 169, 169, 0.9);
	color: var(--colour-dark);
	font-size: var(--font-small);
	margin: 3pt auto 6pt auto;
	max-width: inherit !important;
	opacity: 1;
	width: 95%;
	height: 18pt;
	min-height: calc(var(--font-small) + 7pt);
	transition: 0.5s;
	justify-content: left;
	align-items: center;
}

select > button {
	all: revert !important;
}

select,
::picker(select) {
	appearance: base-select;
}

select::picker-icon {
	margin-right: 9pt;
	color: var(--colour-mid) !important;
	transition: 0.5s rotate;
}

select:open::picker-icon {
	rotate: 180deg;
}

::picker(select) {
	border: none;
	border-radius: 3pt;
	opacity: 0;
	transition: all 0.5s allow-discrete;
	top: calc(anchor(bottom) + 2pt);
	max-block-size: 80% !important;
	background-color: var(--colour-dark);
	overflow: auto !important;
}

:open::picker(select) {
	opacity: 1;
}

@starting-style {
	:open::picker(select) {
		opacity: 0;
	}
}

.prefix {
	padding-left: 6pt;
}

optgroup {
	background-color: var(--colour-dark);
	border: 0.25pt solid var(--colour-mid);
	width: calc(100% - var(--scrollbar-width)) !important;
}

optgroup:first-of-type {
	border-radius: 3pt 3pt 0 0;
}

optgroup:last-of-type {
	border-radius: 0 0 3pt 3pt;
}

option:last-of-type {
	padding-bottom: 9pt;
}

option {
	background-color: var(--colour-dark);
	color: var(--colour-light);
	padding: 3pt;
	transition: 0.5s;
}

option::checkmark {
	margin-left: 3pt;
	margin-right: 6pt;
	content: "√";
}

legend {
	color: var(--colour-light);
	opacity: 50%;
	padding: 6pt 0 3pt 6pt;
	cursor: none !important;
}

/* **************************************************
	control
************************************************** */

button {
	display: grid;
	width: 64pt;
	height: 18pt;
	resize: none;
	background: none;
	align-content: center;
	justify-content: center;
	cursor: pointer !important;
	font-size: var(--font-small);
	color: var(--colour-light);
	border: 1pt solid var(--colour-site);
	border-radius: 3pt;
	margin: 3pt;
}

button > img,
a > img {
	width: 12pt;
	height: 12pt;
}

a img {
	font-size: var(--font-small);
	color: var(--colour-mid);
	padding-right: 6pt;
}

p > a {
	font-weight: 600;
	color: var(--colour-site);
}

a:hover {
	color: var(--colour-site);
}

/* **************************************************
	layout
************************************************** */

html {
	-webkit-user-select: none !important;
	user-select: none !important;
	width: 100%;
	height: 100%;
}

body {
	display: grid;
	grid-template-columns: 1fr;
	grid-template-rows: 96pt auto auto;
	background-color: var(--colour-dark);
	background-size: 100% 100%;
	width: 100%;
	height: 100%;
	padding: 3pt;
}

/* **************************************************
	header
************************************************** */

header {
	display: grid;
	grid-template-columns: 96pt auto 160pt;
	grid-template-rows: 96pt;
	opacity: 100%;
 	background-color: var(--colour-dark);
	border-bottom: 1pt groove var(--colour-mid);
	top: 0;
	position: fixed;
	max-height: 96pt !important;
	width: 100%;
	padding: 3pt;
	align-content: center;
	z-index: 1;
}

header > img {
	width: 90pt;
	height: 90pt;
}

header > h1 {
	margin-top: 16pt;
}

nav {
	display: grid;
	grid-template-columns: 2fr 24pt 24pt 1fr;
	grid-template-rows: auto;
	justify-content: center;
	align-content: center;
	margin-top: 16pt;
}

nav > .blank {
	height: 12pt;
}

#appLogoutSubmit,
#appIdleCountdown {
	display: grid;
	visibility: hidden;
}

#appIdleCountdown {
	justify-content: center;
	align-content: center;
}

#appPanelReset,
#appPanelPrevious,
#appPanelNext {
	display: grid;
	justify-content: center;
	align-content: center;
	margin: 0;
	padding: 0;
}

#appPanelPrevious,
#appPanelNext {
	width: 18pt;
}

/* **************************************************
	footer
************************************************** */

footer {
	left: 0;
	bottom: 0;
	position: fixed;
	width: 0;
	height: 0;
}

/* **************************************************
	hint
************************************************** */

[data-hint-left]:after,
[data-hint-right]:after {
	position: absolute;
	max-width: 80pt;
	height: auto;
	padding: 3pt;
	border: 1pt solid var(--colour-mid) !important;
	border-radius: 3pt;
	background-color: var(--colour-dark);
	color: var(--colour-light);
	text-align: center;
	cursor: auto;
	visibility: hidden;
	opacity: 0;
	-webkit-transition: all 3s ease;
	transition: all 3s ease;
	transition: all 3s ease allow-discrete;
}

[data-hint-left]:after {
	content: attr(data-hint-left);
	margin: 15pt 0 0 -50pt;
}

[data-hint-right]:after {
	content: attr(data-hint-right);
	margin: 15pt 0 0 5pt;
}

[data-hint-left]:hover::after,
[data-hint-right]:hover::after {
	visibility: visible;
	opacity: 1;
}

/* **************************************************
	main
************************************************** */

main {
	left: 0;
	top: 96pt;
	position: fixed;
	width: 100vw;
	height: calc(100vh - 96pt);
	overflow: scroll;
	z-index: 0;
}

/* **************************************************
	panel
************************************************** */

.panel {
	display: grid;
	grid-template-columns: 1fr;
	grid-template-rows: 24pt auto;
	grid-template-rows: 1fr;
	position: absolute;
	border: 1pt solid var(--colour-mid);
	border-radius: 1pt;
	background-color: var(--colour-dark);
	box-shadow: 2pt 2pt 2pt var(--colour-mid);
	padding: 3pt;
}

.title {
	display: grid;
	grid-template-columns: auto 18pt;
	grid-template-rows: 24pt;
	align-items: center;
	padding: 0 3pt 0 3pt;
	cursor: move !important;
}

.title > button {
	justify-content: center;
	align-items: center;
	width: 18pt;
	min-width: 18pt;
	margin: 0 0 3pt 0;
	padding: 0;
}

.content {
	display: grid;
	grid-template-columns: 1fr;
	grid-template-rows: auto;
	top: 24pt;
	left: 0;
	padding: 3pt;
	align-items: self-start;
}

.aside {
	display: grid;
	grid-template-columns: 1fr;
	grid-template-rows: auto;
	padding: 3pt;
}

.input {
	display: grid;
	grid-template-columns: 1fr 1fr;
	grid-template-rows: auto;
	padding: 3pt;
}

.control {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr 1fr;
	grid-template-rows: auto;
	margin-top: 5pt;
	padding: 3pt;
}

/* **************************************************
	modal
************************************************** */

.modal {
    display: none;
	grid-template-columns: 1fr;
	grid-template-rows: 24pt 1fr;
	position: sticky;
	padding: 3pt;
	border: 1pt groove var(--colour-mid);
	border-radius: 1pt;
	background-color: var(--colour-dark);
	box-shadow: 2pt 2pt 2pt var(--colour-mid);
	z-index: 100;
}

.modal > .title {
	cursor: auto !important;
}

#appModalMask {
	display: none;
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: var(--colour-dark);
	transition: all 0.5s allow-discrete;
	opacity: 0;
	z-index: 99;
}

#appModalMask.on {
	display: block;
	opacity: 0.5;
}

/* **************************************************
	multi factor authentication
************************************************** */

#appMfaModal {
	width: 220pt;
	height: 160pt;
	left: calc(50% - (220pt / 2));
	top: calc(50% - (160pt / 2));
}

/* **************************************************
	logon
************************************************** */

#appLogonPanel {
	display: unset;
	width: 240pt;
}

/* **************************************************
	response
************************************************** */

#appResponsePanel {
	width: 300pt;
	max-height: 350pt;
}

#appResponseContent {
	overflow: auto !important;
}

#appResponseOutput {
	background-color: var(--colour-light);
	border-radius: 2pt;
	box-shadow: 3pt 3pt 3pt rgba(169, 169, 169, 0.9);
	margin: 3pt;
	padding: 3pt;
	min-height: 75pt;
	font-size: var(--font-small);
	color: var(--colour-dark);
}

/* **************************************************
	contact
************************************************** */

#appContactPanel {
	width: 180pt;
	max-height: 225pt;
}

#appContactContent {
	display: none;
	overflow: auto !important;
}

#appContactEmail {
	width: 80pt !important;
}

#appContactAddress {
	grid-template-columns: 1fr;
	grid-template-rows: auto;
}

#appContactLegal {
	grid-template-columns: 1fr;
	grid-template-rows: auto;
}

#appContactAddress > p,
#appContactLegal > p {
	padding: 0;
}

/* **************************************************
	privacy policy & terms of use
************************************************** */

#appPrivacyPanel {
	width: 225pt;
	max-height: 375pt;
}

#appPrivacyContent {
	display: none;
	overflow: auto !important;
}

/* **************************************************
	process
************************************************** */

#appProcessPanel {
	display: none;
	width: 330pt;
	max-height: 350pt;
}

#appProcessContent {
	border-top: none;
	overflow: auto !important;
}

/* **************************************************
	profile: operations
************************************************** */

#proCreateModal {
	display: none;
	width: 300pt;
	height: 400pt;
	left: calc(50% - (300pt / 2));
	top: calc(50% - (400pt / 2));
}

#proCreateModal > .content {
	border-top: none;
	overflow: auto !important;
}

#proUpdateForm,
#proDeleteForm {
	display: none;
	overflow: auto !important;
}

#proCreateForm > .input > .blank,
#proUpdateForm > .input > .blank,
#proDeleteForm > .input > .blank {
	height: 18pt;
}

/* **************************************************
	create & update entities: operations
************************************************** */

#stxCreateEntityForm,
#stxUpdateEntityForm,
#comCreateEntityForm,
#comUpdateEntityForm,
#ctxCreateEntityForm,
#ctxUpdateEntityForm {
	display: none;
}

/* **************************************************
	sales tax: operations
************************************************** */

#stxRequestObligationsForm,
#stxFileReturnForm,
#stxRequestReturnsForm,
#stxRequestLiabilitiesForm,
#stxRequestPaymentsForm {
	display: none;
}

/* **************************************************
	sales tax: authorisation
************************************************** */

#stxAuthorisationModal {
	width: 220pt;
	height: 280pt;
	left: calc(50% - (220pt / 2));
	top: calc(50% - (280pt / 2));
}

/* **************************************************
	companies house: operations
************************************************** */

#comCreateAccountsForm,
#comFileAccountsForm,
#comRequestAcknowledgementForm,
#comRequestStatusForm {
	display: none;
}

/* **************************************************
	corporation tax: operations
************************************************** */

#ctxCreateReturnForm,
#ctxFileReturnForm {
	display: none;
}

/* **************************************************
	media: printing
************************************************** */

@media only print {

	html {
		display: none;
	}

}
