/*
Copyright 2025
Stilianos Louca
*/


/* define some recurring CSS values */
:root {
	--outer_border_color: #113861;
	--header_color_left: #073161;
	--header_color_right: #285f9e;
	--button_background: linear-gradient(0deg, #134175, #1c589c);
	--button_background_hover: linear-gradient(0deg, #1f4d80, #2d71ba);
	--button_background_active: linear-gradient(0deg, #285f9e, #327bc9);
	--special_button_background: linear-gradient(0deg, #5c0f5e, #871782);
	--special_button_background_hover: linear-gradient(0deg, #79137d, #a31f9f);
	--special_button_background_active: linear-gradient(0deg, #8a188f, #b823b0);
	--large_button_background: linear-gradient(135deg, #FDFDFD, #E6E6E6);
	--large_button_background_hover: linear-gradient(135deg, #F7F7F7, #E2E2E2);
	--large_button_background_active: linear-gradient(135deg, #F2F2F2, #DADADA);
	--h2_font_size: 1.35rem;
	--secondary_text_color: #717171;
	--inactive_record_color: #A0A0A0;
	--green_color: #00730d;
	--error_color: #e60202;
	--warning_color: #a1009e;
	--success_color: #15417a;
	--attention_color: #e60202;
	--homepage_card_width: 24ch;
	--section_box_color: #F9F9F9;
}

html {
  font-size: 13px; /* note that all other font sizes are defined relative to this font size (via rem units) */
}

/* disable font resizing in mobile browsers */
html, body, *, *::before, *::after {
  -webkit-text-size-adjust: 100%;
  -moz-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body.full {
	font-family: Helvetica;
	background-color: #F5F5F5;
}

body.print {
	font-family: Helvetica;
}


/* Settings for all links */
a {
	text-decoration:none; /* remove underline */
}
a:hover {
	cursor:pointer;
}

.code_display {
	border-radius: 5px;
	border: 1px solid #A0A0A0;
	background-color: #F8F8F8;
	padding: 0 1ch 0 1ch;
	font-size: inherit;
}

/* CSS for outer table, including webpage header and menu bard */
table.outer {	
	box-shadow: 0px 2px 5px 2px #909090;
	border-spacing: 0;
	border: 0.5px solid var(--outer_border_color);
	background-color: #FFFFFF;
}
.outer_header {	
	font-size: 2.5rem; 
/*	background-color: var(--header_color); */
	background: linear-gradient(135deg, var(--header_color_left) 0%, var(--header_color_right) 70%);
	color: #FFFFFF;
	width: 100%;
}
.outer_header a {
	display: flex;
	text-decoration: none;
	color: inherit;
}
tr.outer_menubar {
	font-size: 1.25rem; 
	background-color: var(--header_color_left);
	color: #FFFFFF;
}
.outer_menubar td {
	border-top: 1px solid var(--outer_border_color);
	border-bottom: 1px solid var(--outer_border_color);
	padding: 2px 5px;
}
.outer_menubar button {	
	display: inline-block;
	font-family: Helvetica; 
	font-size: 1.25rem; 
	border-radius: 4px; 
	background: var(--button_background);
	color:white;
	white-space: nowrap;
	border: 1px solid #537fad; 
	padding: 4px 6px; 
	margin: 2px 2px 2px 2px;
	cursor: pointer;
}
.outer_menubar button:hover {
	background: var(--button_background_hover);
}
.outer_menubar button:active {
	background: var(--button_background_active);
}

tr.outer_footer {
	font-size: 1rem;
	background: linear-gradient(135deg, var(--header_color_left) 0%, var(--header_color_right) 70%);
	color: #FFFFFF;
	text-align:center;
}
tr.outer_footer a {
	color: #FFFFFF;
	text-decoration: none;
}
tr.outer_footer a:hover {
	text-decoration: underline;
}
.outer_footer td {
	border-top: 1px solid var(--outer_border_color);
	padding: 0.4rem 0.8rem;
	line-height: 16px;
}

/* CSS for analyses catalog */
table.catalog_item {
	border-radius: 0.5rem;
	border: 1px solid #C0C0C0;
	padding: 2px 2px;
	background-color: #F6F6F6;
	width: 100%;
}
table.catalog_item:hover {
	border-color: #707070;
	box-shadow: 0px 0px 5px 1px rgb(0,0,0,0.5);
}
table.catalog_item:active {
	filter: brightness(90%);
}
img.catalog {
	width:4.5rem;
	border-radius: 0.5rem;
	border: 1px solid #A0A0A0;
}
tr.catalog_spacing {
	height: 0.3rem;
}
td.catalog_item_title {
	font-weight: bold;
	font-size: 1rem;
	vertical-align: bottom;
	padding-left: 0.4rem;
	width: 100%;
}
td.catalog_item_subtitle {
	font-size: 1rem;
	vertical-align: top;
	padding-left: 0.4rem;
}
td.catalog_item_footnote {
	font-size: 0.95rem;
	vertical-align: top;
	padding-left: 0.4rem;
	color: var(--secondary_text_color);
}


/* Drop-down button link menus */
.dropdown_button_menu {
	position: absolute;
	display: none;
	overflow: auto;
	padding: 5px;
	box-shadow: 0px 2px 5px 2px rgba(0,0,0,0.5);
	z-index: 10;
	border: 1px solid #202020;
}
.dropdown_button_menu a {
	display: block;
	text-decoration: none;
}


/* Hope page analysis cards */
table.homepage_card {
	border-radius: 10px;
	border: 1px solid #606060;
	border-spacing:0;
	cursor: pointer;
	background-color: #FFFFFF;
}
table.homepage_card:hover {
	border-color: #404040;
	box-shadow: 0px 0px 5px 3px rgb(0,0,0,0.5);
	transition: box-shadow .2s ease; /* slow down the appearance of shadow */
}
table.homepage_card:active {
	filter: brightness(90%);
}
.homepage_card col {
	width: var(--homepage_card_width);
}
.homepage_card img {
	width: var(--homepage_card_width);
	border-radius: 10px 10px 0 0;
	border-bottom: 1px solid #A0A0A0;
}
td.homepage_card_title {
	padding: 1rem 10px 0 10px;
	height: 3.5rem;
	vertical-align: top;
	font-size: 1.1rem;
	font-weight: bold;
}
td.homepage_card_subtitle {
	padding: 0.5rem 10px 0.5rem 10px;
	height:4.5em;
	font-size: 1rem;
	vertical-align: top;
	color: #505050;
}
td.homepage_card_price {
	padding: 0.5rem 10px 0.5rem 10px;
	height:3.5rem;
	font-size: 0.9rem;
	vertical-align:top;
	color: #808080;
}
.homepage_card a {
	display: flex;
	text-decoration: none;
	color: inherit;
}



/* Forms */
table.form {
	padding: 10px;
	width:100%;
	text-align:left;
	border: 1px solid #A0A0A0;
	background-color : var(--section_box_color); 
	border-radius: 5px;
}
.form td {
	vertical-align: center;
}
.input_title {
	font-weight: normal;
	font-size: 1rem;
	white-space: nowrap; /* prevent line wrapping */
}
.input_details_inline {
	color: var(--secondary_text_color);
	font-size: 0.9rem;
}
.input_note {
	color: var(--secondary_text_color);
	font-size: 0.9rem;
	padding: 1px 0px;
}
.input_heading {
	font-weight: bold;
	font-size: 1.1rem;
}
.input_warning {
	color: var(--warning_color);
	font-size: 0.9rem;
	padding: 1px 0px;
}
.input_error {
	color: var(--error_color);
	font-size: 0.9rem;
	padding: 1px 0px;
}
/* 
td.input_passage {
	font-size: 1rem;
}
 */
.input_checks {
	color: var(--secondary_text_color);
	font-size: 0.9rem;
}
input.textbox {
	border-radius: 4px;
	border: 1px solid #A0A0A0; 
	padding: 3px;
	font-size: 1rem;
}
textarea {
	border-radius: 4px;
	border: 1px solid #A0A0A0; 
	padding: 3px;
	font-size: 1rem;
}
input.number {
	font-size: 1rem;
}
input.erroneous{
	border: 1px solid var(--error_color); 
}
td.radio_button {
	font-size: 1rem;
}
td.radio_button_undernote {
	color: var(--secondary_text_color);
	font-size: 0.9rem;
	padding-left: 1.5rem;
}
td.form_input_spacer {
	padding: 6px;
}
img.analysis_thumbnail {
	height:150px;
}
td.analysis_option_separator {
	height:0;
	vertical-align: bottom;
	border-bottom: solid 1px #D8D8D8;
}

/* Report of a single record */
table.record_report {
	padding: 10px;
	width:100%;
	text-align:left;
	border: 1px solid #A0A0A0;
	background-color : var(--section_box_color); 
	border-radius: 4px;
}
.record_report td {
	font-size: 1rem;
}

/* General text headings & fonts */
h1 {
	font-size: 1.6rem;
	font-weight: bold;
	color: #202020;
	margin: 0px;
	padding-bottom: 0.2em;
}	
h2 {
	font-size: var(--h2_font_size);
	font-weight: bold;
	color: #202020;
	margin: 0px;
	padding-top: 0.5em;
	padding-bottom: 0.3em;
}
h3 {
	font-size: 1.15rem;
	font-weight: bold;
	color: #202020;
	margin: 0px;
	padding-top: 0.5em;
	padding-bottom: 0.3em;
}


.section_headnote {
	font-size: 1rem; 
	color:#707070;
	padding-bottom: 0.1em;
}
.section_warning {
	font-size: 1rem; 
	color: var(--warning_color);
	padding-bottom: 0.1em;
}
.section_error {
	font-size: 1rem; 
	color: var(--error_color);
	padding-bottom: 0.1em;
}
.section_footnote {
	font-size: 0.9rem;
	color:#707070;
}
.passage{ 
	font-size: 1rem;
	vertical-align: top;
}
ul {
	padding-left: 3ch;
	margin-bottom: 1ch;
	margin-top: 1ch;
}
ul ul {
	padding-left: 5ch;
}
ol {
	padding-left: 3ch;
	margin-bottom: 1ch;
	margin-top: 1ch;
}
ol ol {
	padding-left: 5ch;
}
li {
	padding-bottom: 0.5ch;
}

div.quote{
	font-size: inherit;
	font-style: italic;
	padding: 1ch 0 1ch 2ch;
}


/* discrete links, i.e., that blend in with the surrounding text and only stick out when hovered or clicked on */
a.discrete:link{
	color:inherit;
	text-decoration: none;
}
a.discrete:visited{
	color:inherit;
}
a.discrete:hover{
	text-decoration:underline;
}
a.discrete:active{
	color:blue;
}



/* collapsable sections */
.collapsed_section_title, .expanded_section_title {
	font-size: 1.2rem;
	font-weight: bold;
	border-radius: 5px;
	padding: 3px;
	cursor:default;
	margin-top: 6px;
	margin-bottom: 8px;
}
.collapsed_section_title {
	border: 1px solid #A0A0A0;
	background-color : #F0F0F0; 
}
.collapsed_section_title:hover {
	background-color : #E5E5E5; 
}
.collapsed_section_title:active {
	background-color : #D6D6D6; 
}
.expanded_section_title {
	border: 1px solid #2d8cc4;
	background-color : #cfecff; 
}
.expanded_section_title:hover {
	background-color : #bde4fc; 
}
.expanded_section_title:active {
	background-color : #82cbf5; 
}


/* section boxes for regular text */
table.section_box {
	border-radius: 8px;
	border: 1px solid #A0A0A0;
	background-color: var(--section_box_color);
	width: 100%;
	padding: 0 1ch 0 1ch;
	font-size: inherit;
}
table.section_box > tbody > tr > th {
	font-size: var(--h2_font_size);
	font-weight: bold;
	border-bottom: 1px solid #BBBBBB;
	padding: 1ch 0 1ch 0;
	text-align: left;
}
table.section_box > tbody > tr > td {
	font-size: 1rem;
	vertical-align: top;
	padding: 1ch 0 1ch 0;
}
.section_box_spacing {
	height: 1em;
}
.section_box_heading {
	font-size: var(--h2_font_size);
	font-weight: bold;
	color: #202020;
	margin: 0px;
	padding-bottom: 0.2em;
}



a.inline {
	text-decoration:none;
	color: #1d5cb5;
}
a.inline:hover {
	color: #0b2947;
}


/* small buttons next to input for showing/hiding details, footnotes etc */
button.show_hide_text {
	display: inline;
	font-size: 0.9rem; 
	border-radius: 4px; 
 	background: linear-gradient(0deg, #E4E4E4, #FCFCFC);
	color:#505050; 
	border: 1px solid #A0A0A0;
	padding: 1px 5px;
	cursor: pointer;
}
button.show_hide_text:hover {
 	background: linear-gradient(0deg, #DCDCDC, #F0F0F0);
}
button.show_hide_text:active {
	background: linear-gradient(0deg, #CCCCCC, #DDDDDD);;
}


/* small round buttons next to input with a question mark */
button.question_mark {
	display: inline;
	font-size: 0.9rem; 
	border-radius: 50%; 
 	background: linear-gradient(0deg, #E4E4E4, #FCFCFC);
	color:#505050; 
	border: 1px solid #A0A0A0;
	width: 2.2ch;
	height: 2.2ch;
	padding:0;
	text-align:center;
	font-weight:bold;
	cursor: pointer;
}
button.question_mark:hover {
 	background: linear-gradient(0deg, #DCDCDC, #F0F0F0);
}
button.question_mark:active {
	background: linear-gradient(0deg, #CCCCCC, #DDDDDD);;
}

/******************************/
/* Displayed blue link buttons */

.link_button, .link_button_iconed, .special_link_button, .special_link_button_iconed { 
	font-size: 1rem;
	display: inline-block;
	border-radius: 4px; 
	color:white; 
	white-space: nowrap;
	border: 1px solid #202020; 
	padding: 4px 6px; 
	margin: 8px 4px 2px 0px;
	cursor: pointer;
}
.link_button, .link_button_iconed { 
	--color_background: var(--button_background);
}
.special_link_button, .special_link_button_iconed { 
	--color_background: var(--special_button_background);
}
.link_button, .special_link_button {
	background-image: var(--color_background);
}
.link_button_iconed, .special_link_button_iconed {
	/* this CSS class simply reserves space for the image inside the icon and manages various properties of the two background elements (the icon and the color-background)
	The icon should be defined individually for each button by setting style='background-image: url(path_to_image), var(--color_background);' */
	padding-left: 3.3ch;
	background-repeat: no-repeat, repeat;
	background-size: 1.5ch, cover;
 	background-position: 0.8ch 50%, 0 0;
}
.link_button_iconed:hover, .link_button:hover {
	--color_background: var(--button_background_hover); /* only modify the background color gradient, not the icon */
}
.link_button_iconed:active, .link_button:active {
	--color_background: var(--button_background_active); /* only modify the background color gradient, not the icon */
}
.special_link_button_iconed:hover, .special_link_button:hover {
	--color_background: var(--special_button_background_hover); /* only modify the background color gradient, not the icon */
}
.special_link_button_iconed:active, .special_link_button:active {
	--color_background: var(--special_button_background_active); /* only modify the background color gradient, not the icon */
}


/******************************/
/* Large square grey link buttons */

.large_button, .large_button_iconed, .large_button_disabled, .large_button_iconed_disabled {
	display: inline-block;
	width:80px;
	height:80px;
	border:1.5px solid #606060;
	border-radius:7px;
	font-size:1rem;
	color:#484848;
	font-weight:bold;
	margin: 8px 4px 2px 0px;
	--color_background: var(--large_button_background);
}
.large_button_disabled, .large_button_iconed_disabled {
	opacity: 0.5;
	cursor: default;
}

.large_button, .large_button_disabled {
	background-image: var(--color_background);
	padding:0;
}
.large_button_iconed, .large_button_iconed_disabled {
	/* this CSS class simply reserves space for the image inside the icon and manages various properties of the two background elements (the icon and the color-background)
	The icon should be defined individually for each button by setting style='background-image: url(path_to_image), var(--color_background);' */
	padding-bottom: 40px;
	background-repeat: no-repeat, repeat;
	background-size: auto 30px, cover;
 	background-position: 50% 80%, 0 0;
}

.large_button:hover, .large_button_iconed:hover {
 	--color_background: var(--large_button_background_hover); /* only modify the background color gradient, not the icon */
	color:#000000;
	border:2.5px solid #505050;
	cursor:	pointer;
}

.large_button:active, .large_button_iconed:active {
	--color_background: var(--large_button_background_active); /* only modify the background color gradient, not the icon */
	color:#000000;
	border:2.5px solid #303030;
	cursor:	pointer;
}



/* class for visually marking a button as 'default', by showing a ring around it */
.default_button {
	outline:1.5px solid #004878;
	outline-offset:1.5px;
	outline-radius:5px;
    font-weight: bold;
}

.disabled_button{
	pointer-events: none;
	cursor: not-allowed;
	opacity: 0.65;
	filter: alpha(opacity=65);
	box-shadow: none;
}
	
	
	
/*********************************/
/* small discrete inline button */

.inline_button {
	display: inline;
	font-size: 0.9rem; 
	border-radius: 4px; 
 	background: linear-gradient(0deg, #E4E4E4, #FCFCFC);
	color:#505050; 
	border: 1px solid #A0A0A0;
	padding: 0px 5px;
	margin: 1px;
}
.inline_button:hover {
 	background: linear-gradient(0deg, #DCDCDC, #F0F0F0);
}
.inline_button:active {
	background: linear-gradient(0deg, #CCCCCC, #DDDDDD);;
}

/*********************************/
/* Message boxes */

span.error_box, span.warning_box, span.success_box, span.note_box {
	font-size: 1rem;
	text-align: center;
	border-radius: 5px; 
	background-color: var(--section_box_color);
	opacity: 1;
	padding: 10px;
	display: inline-block;
	justify-content: center;
}
span.error_box {
	color: var(--error_color);
	border: 2px solid var(--error_color);
}
span.warning_box {
	color: var(--warning_color);
	border: 2px solid var(--warning_color);
}
span.success_box, span.note_box {
	color: var(--success_color);
	border: 2px solid var(--success_color);
}


/*********************************/
/* Message modals */

div.error_modal, div.warning_modal, div.success_modal, div.note_modal {
	font-size: 1.15rem;
	text-align: center;
	position: absolute; 
	left: 50%; 
	top: 150px;
	padding: 25px;
	border-radius: 8px;
	background: #FFFFFF;
	opacity:1; 
	transform: translate(-50%, -50%);
	box-shadow: 0px 0px 4px 3px rgb(0,0,0,0.5);
    cursor: default;
    z-index: 100;
}
div.error_modal {
	color: var(--error_color);
	border: 1px solid var(--error_color);
}
div.warning_modal {
	color: var(--warning_color);
	border: 1px solid var(--warning_color);
}
div.success_modal, div.note_modal {
	color: var(--success_color);
	border: 1px solid var(--success_color);
}


/*********************************/
/* Data download tables */

table.data_downloads {
	border-radius: 5px;
	border-spacing: 0;
	border: 1px solid #A0A0A0;
	width: 100%;
}
table.data_downloads td {
	padding: 3px 3px;
	font-size: 0.9rem;
	color: #303030;
}	
table.data_downloads img {
	height: 20;
}	
table.data_downloads tr:nth-of-type(even) {
	background-color:#f0f8ff;
}

.smooth_transition {
	transition: all 1s;	
}

.section_separator_line {
	border-bottom:1.5px solid #A0A0A0;
	width:100%;
	margin-top:10px;
	margin-bottom:10px;
}


/****************************************/
/* Modal images */

/* The Modal (background) */
.modal_div {
    display: none; /* Hidden by default */
    position: fixed; /* Stay in place */
    z-index: 100; /* Sit on top */
    padding-top: 50px; /* Location of the box */
    left: 0;
    top: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.85); /* Black w/ opacity */
}

/* The <img> in modal display */
.modal_img {
    margin: auto;
    display: block;
    width: 80%;
    max-width: 700px;
}

.modal_caption {
	margin: auto;
	display: block;
	width: 80%;
	max-width: 700px;
	text-align: center;
	color: #ccc;
	padding: 10px 0;
	height: 150px;
}

/* Add Animation - Zoom in the Modal */
.modal_content, #caption { 
    animation-name: zoom;
    animation-duration: 0.4s;
}

@keyframes zoom {
    from {transform:scale(0)} 
    to {transform:scale(1)}
}

/* The Close Button */
.modal_close {
    position: absolute;
    top: 15px;
    right: 35px;
    color: #f1f1f1;
    font-size: 40px;
    font-weight: bold;
    transition: 0.3s;
}

.modal_close:hover,
.modal_close:focus {
    color: #bbb;
    text-decoration: none;
    cursor: default;
}

/* 100% Image Width on Smaller Screens */
@media only screen and (max-width: 700px){
    .modal_content {
        width: 100%;
    }
}

.modal_left, .modal_right {
	position: absolute;
	top: 50%;
	translateY(-50%);
	color: #f1f1f1;
	font-size: 40px;
    font-weight: bold;
	border-radius: 10px;
}
.modal_left {
	left: 35px;
}
.modal_right {
	right: 35px;
}
.modal_left:hover, .modal_right:hover, .modal_left:focus, .modal_right:focus {
    color: #bbb;
    text-decoration: none;
    cursor: default;
}


/*************************************/
/* Spinning wheels */

/* Example HTML code for large modal spinning wheel:
	<div class='large_spinner_modal' id='".$form_id.".spinner'><div class='large_spinner'></div></div>
   Example HTML code for small inline spinning wheel:
    <span class='small_spinner'></span>
*/

/* class for modal div containing the larg spinner */
div.large_spinner_modal {
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(0, 0, 0, 0.5);
	position: absolute;
	display: none; /* to show the modal and its contents, set display to "flex" */
	justify-content: center;
	align-items: top;
	padding-top: 10em; /* this essentially sets the distance of the spinning wheel from the page top */
}

/* large spinning wheel, typically placed inside a large_spinner_modal */
.large_spinner {
	width: 50px;
	height: 50px;
	border-radius: 50%;
	border: 10px solid #EEEEEE;
	border-top-color: #134175;
	animation-name: spin;
	animation-duration: 1.3s;
	animation-iteration-count: infinite;
	animation-timing-function: linear;
}

@keyframes spin {
	to {
		transform: rotate(360deg);
	}
}

/* small spinning wheel, for inline placements mainly */
.small_spinner {
	width: 20px;
	height: 20px;
	border-radius: 50%;
	border: 5px solid #D0D0D0;
	border-top-color: #134175;
	display: none; /* to show the spinner, set display to "block" */
	animation-name: spin;
	animation-duration: 1.3s;
	animation-iteration-count: infinite;
	animation-timing-function: linear;
}


/*********************************************/
/* Tables for displaying records */

table.records {
	font-size: 1rem;
	border-spacing: 0;
	padding:0;
	border: 1px solid #A0A0A0;
	width: 100%;
	border-radius: 5px;
}

table.records th {
	border-bottom: #A0A0A0 solid 1px;
	padding: 5px 5px;
	background-color: #F0F0F0;
	text-align:left;
	vertical-align:top;
}

table.scrollable {
	border: none;
}

table.scrollable th {
	position: sticky;
	top: 0;
	z-index: 1;
}

table.sortable th {
	cursor:default;
}

table.records td {
	padding: 5px 5px;
	white-space: nowrap;
}

table.records tr:nth-of-type(even) {
	background-color:#f0f8ff;
}
table.records tr:nth-of-type(odd) {
	background-color:#FFFFFF;
}

table.records tr:hover {
	background: #afcce3 !important;
}

/* container div for making content such as tables vertically scrollable */
div.vscroller {
	overflow: auto;
	border: 1px solid #A0A0A0;
	border-radius: 5px;
	overscroll-behavior: none; /* prevent scroll-bounces */
}

/* container div for making content such as tables horizontally scrollable */
div.hscroller {
	overflow-x: auto;
	border: 1px solid #A0A0A0;
	border-radius: 5px;
	overscroll-behavior: none; /* prevent scroll-bounces */
}


/******************************************/
/* Bills and receipts */

.bill_section {
	border-radius: 5px;
	border: 1px solid #A0A0A0;
	background-color: #F7F7F7;
	padding: 1ch;
	font-size: 1rem;
	width:100%;
}
.bill_section th {
	text-align: left;
	font-weight: bold;
	font-size: 1.1rem;
}
.bill_section td {
	vertical-align:top;
}
/* 
.bill_page {
	border: 2px solid #A0A0A0;
	background-color: #FCFCFC;
	border-radius: 5px;
	padding: 2ch;
	width:800px;
}
 */



/******************************************/
/* Custom confirmation dialog */


.link_confirmation_overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.50);
    z-index: 999999
}
.link_confirmation_window {
    width: 400px;
	margin: auto;
	position: relative;
	top: 20%;
    background-color: #FFFFFF;
    box-shadow: 0 0 20px rgba(0,0,0,.8);
    border: 1px solid #303030;
    border-radius: 5px;
    overflow: hidden;
    padding: 1em;
}
.link_confirmation_title {
	font-size: 1.2rem;
	font-weight: bold;
	border-bottom:1 px solid #E0E0E0;
}


/******************************************/
/* Generic modal window */


.generic_modal_overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.50);
    z-index: 999999
}
.generic_modal_window {
    width: fit-content;
	margin: auto;
	position: relative;
	top: 50%;
	transform: translate(0, -50%); /* vertically shift the modal window so that it's position anchor is in its center, not its top edge */
    background-color: #FFFFFF;
    border: 1px solid #303030;
    box-shadow: 0 0 20px rgba(0,0,0,.8);
    border-radius: 5px;
    overflow: hidden;
    padding: 1em;
}


/*******************************************/
/* Tooltips over regular HTML elements (e.g., <span> or <div>) other than buttons */

.tooltip_anchor { 
	position: relative; 
}

.tooltip { 
	display: none;
	position: absolute;
	z-index: 100;
	border: 1px;
	background-color: white;
	border: 1px solid #909090;
	border-radius: 5px;
	padding: 1ch;
	color: #303030; 
	font-size: 0.9rem;
	top: 1em;
	left: 2em;
} 

.tooltip_anchor:hover .tooltip { 
	display:block; 
}


/*******************************************/
/* SVG chevron arrows for progress bars */
/* Note that this CSS refers to some SVG <defs> from an external file styles.svg, which must be imported into the HTML as well */

.chevron_done polygon, .chevron_done_linked polygon {
	fill:				url(#chevron_done_gradient);
	stroke:				#005580;
	stroke-linejoin:	round;
	cursor:				default;
}

.chevron_active polygon, .chevron_active_linked polygon {
 	fill: 				url(#chevron_active_gradient);
	stroke:				#006110;
	stroke-linejoin:	round;
	cursor:				default;
}

.chevron_pending polygon, .chevron_pending_linked polygon {
	fill:				url(#chevron_pending_gradient);
	stroke:				#606060;
	stroke-linejoin:	round;
	cursor:				default;
}

.chevron_done_linked:hover polygon {
	fill: 	url(#chevron_done_gradient_darker);
	stroke:	#013f5e;
	cursor:	pointer;
}

.chevron_active_linked:hover polygon {
	fill: 	url(#chevron_active_gradient_darker);
	stroke:	#01450d;
	cursor:	pointer;
}

.chevron_pending_linked:hover polygon {
	fill: 	url(#chevron_pending_gradient_darker);
	stroke:	#404040;
	cursor:	pointer;
}

.chevron_done, .chevron_done_linked text, .chevron_pending text, .chevron_pending_linked text, .chevron_active text, .chevron_active_linked text {
	fill:	#303030;
	font-size: 0.9rem;
}



/*********************************************/
/* Linear Flow: Animation of flow between consecutive boxes, from left to right */
/* To be used in combination with the JavaScript function create_linear_flow_animation() */

.linear_flow_animation_wrapper {
	position: relative;
	width: 100%;
	display: flex;
	justify-content: center;
}

.linear_flow_animation_container {
	position: relative;
}

.linear_flow_box {
	font-family: sans-serif;
	font-weight: bold;
	position: absolute;
	border-radius: 20%;
	display: flex;
	justify-content: center;
	align-items: center;
	z-index: 1;
	line-height:1.2;
	padding: 1ch;
	transition: transform 0.2s ease;
	box-sizing: border-box;
	text-align: center;
	white-space: normal;
	word-break: break-word;
	flex-direction: column; /* Stack icon + text vertically */
	overflow: hidden;       /* Keep contents inside circle */
}


.linear_flow_box img {
  max-width: 50%;
  max-height: 35%;
  margin-top: 5%;
}


.linear_flow_line {
	position: absolute;
	transform: scaleX(0);
	transform-origin: left;
	z-index: 0;
}


/******************************************/
/* Hover note boxes */

.hnb_container {
	display: flex;
	text-align:center;
	width: fit-content;
	margin:0 auto;
}


.hnb_box_wrapper {
	text-align: center;
	outline: none;
	position: relative;
}

.hnb_box {
	width: 100%;
	height: 100%;
	border-radius: 10px;
	background: #76b6e3;
	color: white;
	font-size: 1rem;
	font-weight: bold;
	cursor: pointer;
	display: flex;
	justify-content: center;
	flex-direction: column; /* stack text & images vertically */
	align-items: center;
	border-width: 2px;
	border-style: solid;
	box-sizing: border-box;
	transition: transform 0.2s ease, background 0.2s ease, border-width 0.2s ease, border-color 0.2s ease;
}


/* Hover effects */
.hnb_box_wrapper:hover .hnb_box {
	border-width: 3px;
	filter: brightness(97%);
}

.hnb_popup {
	position: absolute;
	top: 100%;
	margin-top: 5px; /* the vertical distance between the popup and the box */
	left: 50%;
	transform: translateX(-50%) scale(0.95);
	background: white;
	color: #333;
	font-size: 1rem;
	padding: 12px 20px;
	border-radius: 10px;
	box-shadow: 0 4px 8px rgba(0,0,0,0.4);
	border: 1px solid #707070;
	white-space: nowrap;
	opacity: 0;
	visibility: hidden;
	transition: all 0.3s ease;
}

/* small triangle on top of popup */
.hnb_popup::before {
  content: '';
  position: absolute;
  top: -5px;                  /* Place above popup */
  left: 50%;
  transform: translateX(-50%);
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 5px solid #404040;  /* Triangle color (matches popup bg) */
}

/* Show popup on hover or focus */
.hnb_box_wrapper:hover .hnb_popup {
	opacity: 1;
	visibility: visible;
	transform: translateX(-50%) scale(1);
}
