@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');

/* Disabling font boosting in Chrome on Android */

html * {
    font-family: Tahoma, Arial, sans-serif;
    text-size-adjust: none;
    max-height: 1000000px;
    -webkit-text-size-adjust: none;
    -moz-text-size-adjust: none;
    -ms-text-size-adjust: none;
}

html, body {
    font-size: 12px;
    padding-top: 3px;
    line-height: 1.2;
}

p { 
    padding: 5px; 
}

.control-cell { 
    padding: 2px; 
}

.item-info-label {
    font-weight: bold;
    font-size: 1.1em;
    letter-spacing: 0.5px;
    letter-spacing: 1px;
}

.control-cell.item-info {
    border-style: solid;
    border-width: 1.5px;
    border-radius: 0.5em;
    margin-bottom: 5px;
}

.item-info-text {
    font-size:1.2em;
    text-align: center;
}

.item-info-label.warning {
    color: #8b0000;
}

.control-cell.item-info.warning {
    background-color: #f9ecec;
    border-color: #8b0000;
}

.item-info-label.suggestion {
    color: #006400;
}
    
.control-cell.item-info.suggestion {
    background-color: #ECFCEC;
    border-color: #006400;
}

.item-info-label.information {
    color: #000000;
}

.control-cell.item-info.information {
    background-color: #EDEDED;
    border-color: #000000;
}

.item-info-label.curiosity {
    color: #83358f;
}

.item-info-label-header {
    text-align: center;
}

.control-cell.item-info.curiosity {
    background-color: #E6E6FA;
    border-color: #83358f;
}

img.item-info-icon {
    width: 30px;
    margin-right: 10px;
}

.control-row {
    /* nothing yet */
}

.control-label {
    text-align: center;
    justify-content: right;
    margin-top: auto;
    margin-bottom: auto;
    padding-right: 8px;
    padding-left: 2px;
}

.control-label.is-invalid {
    border-color: #dc3545;
}

.control-label-value {
    text-align: left;
    display: block;
    width: 100%;
    padding: 0.375rem 0.75rem;
    font-size: 1.2em;
    font-weight: 400;
    line-height: 1.5;
    color: #212529;
}

.dropdown-control {
    border: 1px solid #ced4da;
    background-color: white;
}

.dropdown-control.disabled {
    background-color: #e9ecef;
    color: #BBBBBB;
}

.dropdown-icon {
    height: 20px;
    margin-right: 15px;
    margin-bottom: 3px;
    vertical-align: middle;
    min-width: 20px;
}

.smaller-font { font-size: 0.9em; }

.radio-control-parent { display: table; }

.radio-control {
    height: 2.5em;
    text-align: center;
    vertical-align: middle;
    display: table-cell;
}

label.disabled { color: #BBBBBB; }

div.form-check-inline.disabled { color: #BBBBBB; }

select.disabled {
    color: #BBBBBB;
    background-image: none; /* caret disappear */
}

span.disabled { color: #BBBBBB; }

input.disabled { color: #BBBBBB; }

.icon-button:hover { cursor: pointer; }

.first-letter { font-size: 1.3em; }

/* --------------------------------------------------------*/
/* SPECIAL */
/* --------------------------------------------------------*/

/* 
    Remove arrows in number only text boxes
    https://www.w3schools.com/howto/howto_css_hide_arrow_number.asp 
*/

/* Chrome, Safari, Edge, Opera */

input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

/* Firefox */

input[type=number] { -moz-appearance: textfield; }

#add-module-button {
    position: fixed;
    bottom: 5px;
    left: 5px;
    z-index: 9000;
}

/* --------------------------------------------------------*/
/* BOOTSTRAP */
/* --------------------------------------------------------*/

.container {
    max-width: 1600px;
}

.dropdown-menu a:hover { cursor: pointer; }

.dropdown-item a:hover { cursor: pointer; }

/* --------------------------------------------------------*/
/* MODALS */
/* --------------------------------------------------------*/

.modal-body p {
    margin: 10px;
    font-size: 1.2em;
}

.modal-warning {
    color: #8b0000;
    font-weight: bold;
    font-size: 1.3em;
}

.modal-content {
    border: white 10px solid;
    background-color: #EEEEEE;
    border-radius: 0.5em;
}

.modal-title {
    font-size: 2.4em;
    font-weight: bold;
    font-variant-caps: petite-caps;
    letter-spacing: 1px;
    word-spacing: 2px;
}

.modal-footer .btn { font-size: 1.2em; }

.modal-header button.btn-close {
    font-size: 2em;
    padding: 0 20px 0 0;
    outline: none;
}

/* --------------------------------------------------------*/
/* FORM */
/* --------------------------------------------------------*/

form { 
    justify-content: space-evenly; 
}

div.help-icon {
    background-color: #fcfcfc;
    border-radius: 12px;
    padding: 3px;
    margin: auto auto auto 5px;
    border: #aaaaaa solid 1px;
    max-height: 25px;
}

img.help-icon {
    margin: auto;
    height: 1.2em;
}

div.form-group {
    padding: 0;
    margin-top: 7px;
    margin-bottom: 7px;
}

.input-group-text {
    font-size: 0.9em;
    padding: 0 7px 0 7px;
    color: #777;
}

.form-control { 
    font-size: 1.2em; 
}

.form-control:focus {
    color: black;
    font-weight: 600;
}

.form-control.is-invalid {
    color: #DC3545;
    font-weight: 600;
}

.form-control-error {
    color: #DC3545;
    font-size: 1.1em;
    font-weight: bold;
    text-align: left;
    margin-bottom: 10px;
    margin-top: 5px;
}

/* --------------------------------------------------------*/
/* LAYOUT */
/* --------------------------------------------------------*/

.module-side-column {
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    align-content: center;
    justify-content: space-evenly;
    align-items: center;
}

/* --------------------------------------------------------*/
/* RADIO BUTTONS */
/* --------------------------------------------------------*/

.radio-label {
    font-size:1.2em;
}

/* --------------------------------------------------------*/
/* CHECK BOXES */
/* --------------------------------------------------------*/

.checkbox-module-toggle {
    font-size: 1.8em;
    cursor: pointer;
    padding: 0;
}

.checkbox-module-toggle:checked { background-color: #555555; }

.checkbox-simple {
    width: 24px;
    height: 24px;
    vertical-align: middle;
    margin-bottom: 6px;
    margin-top: 4px;
    opacity: 0.8;
}

.checkbox-simple.disabled:hover {
    cursor: auto;
}

.checkbox-simple:hover {
    cursor: pointer;
    opacity: 1.0;
}

.checkbox-simple.no-hover-effect:hover { cursor: auto; }

.checkbox-simple-small {
    width: 18px; /* Making this bigger will spoil the text boxes */
    height: 18px; /* Making this bigger will spoil the text boxes */
    vertical-align: middle;
    opacity: 0.8;
}

.checkbox-simple-small:hover {
    cursor: pointer;
    opacity: 1.0;
}

.checkbox-simple-small.no-hover-effect:hover { cursor: auto; }

.checkbox-simple-large {
    width: 28px;
    height: 28px;
    vertical-align: middle;
    opacity: 0.8;
}

.checkbox-simple-large:hover {
    cursor: pointer;
    opacity: 1.0;
}

.checkbox-simple-large.no-hover-effect:hover { cursor: auto; }

.checkbox-simple-very-large:hover {
    cursor: pointer;
    opacity: 1.0;
}

.checkbox-simple-very-large.no-hover-effect:hover { cursor: auto; }

/* --------------------------------------------------------*/
/* CHEVRONS */
/* --------------------------------------------------------*/

.chevron { margin-right: 10px; }

.chevron::before {
    border-style: solid;
    border-width: 0.16em 0.16em 0 0;
    content: '';
    display: inline-block;
    height: 0.75em;
    width: 0.75em;
    left: 0.15em;
    right: 0.55em;
    top: 0.3em;
    position: relative;
    transform: rotate(-45deg);
    vertical-align: top;
}

.chevron.right:before {
    left: 0;
    transform: rotate(45deg);
}

.chevron.bottom:before {
    top: 0.2em;
    transform: rotate(135deg);
}

.chevron.left:before {
    left: 0.25em;
    transform: rotate(-135deg);
}

/* --------------------------------------------------------*/
/* ARROWS */
/* --------------------------------------------------------*/

.arrow {
    height: 0;
    width: 0;
    border-style: solid;
}

.arror.left {
    border-color: transparent black;
    border-width: 0.8em 0.8em 0.8em 0;
}

.arrow.right {
    border-color: transparent black;
    border-width: 0.8em 0 0.8em 0.8em;
}

.arrow.down {
    border-color: black transparent;
    border-width: 0.8em 0.8em 0 0.8em;
}

.arrow.down.red { border-color: darkred transparent; }

.arrow.up {
    border-color: black transparent;
    border-width: 0 0.8em 0.8em 0.8em;
}

.arrow.up.green { border-color: darkgreen transparent; }

/* --------------------------------------------------------*/
/* RESULTS SUMMARY BOX */
/* --------------------------------------------------------*/

.result-summary {
    color: #333333;
    padding: 8px;
    border-style: solid;
    border-width: 1px;
    border-color: #E5E7E9;
}

.result-summary.green { background-color: #EAFAF1; }

.result-summary.red { background-color: #FDEDEC; }

/* --------------------------------------------------------*/
/* GENERAL CONTROL */
/* --------------------------------------------------------*/

button.btn { font-weight: 500; }

.label-link {
    border-radius: 0.5rem;
    background-color: white;
    border: 1px solid #ccc;
    width: 100%;
}

.label-link-active:hover {
    cursor: pointer;
    box-shadow: 0 0 0 0.25rem #CED9FE;
    transition: box-shadow 0.2s;
}

.is-invalid.label-link-active:hover {
    cursor: pointer;
    box-shadow: 0 0 0 0.25rem #f3bbc0;
    transition: box-shadow 0.2s;
}

/* --------------------------------------------------------*/
/* MENU */
/* --------------------------------------------------------*/

.nav-link {
    color: #888888;
    font-size: 1.6em;
}

.nav-tabs {
    background-color: white;
    opacity: 0.85;
}

.nav-tabs .nav-link.active {
    color: black;
    background-color: #F9F9F9;
    opacity: 1;
}

.nav-tabs .nav-link.active:hover { 
    cursor: default; 
}

a.active {
    font-weight: bold;
}

/* --------------------------------------------------------*/
/* USER MODE TOGGLE */
/* --------------------------------------------------------*/

.user-mode-toggle-bar {
    display: flex;
    justify-content: center;
    padding: 6px 0 10px 0;
    margin-top: 15px;
    font-size: 1.2em;
}

.user-mode-toggle {
    display: inline-flex;
    border: 1px solid #ddd;
    border-radius: 20px;
    overflow: hidden;
}

.user-mode-pill {
    border: none;
    background: transparent;
    padding: 3px 14px;
    font-size: 1.4em;
    color: #888;
    cursor: pointer;
    transition: background-color 0.15s, color 0.15s;
}

.user-mode-pill:hover:not(:disabled) {
    background-color: #f0f0f0;
    color: #555;
}

.user-mode-pill-active {
    background-color: #000;
    color: white;
    cursor: default;
}

.user-mode-pill-active:hover {
    background-color: #000;
    color: white;
}

.user-mode-badge {
    font-size: 0.6em;
    color: #aaa;
    font-weight: normal;
    margin-left: 2px;
    vertical-align: middle;
}

/* --------------------------------------------------------*/
/* ITEMS */
/* --------------------------------------------------------*/

.help-page-link {
    
    border-bottom: 1px solid black;
}

.help-page-link:hover {
    cursor: pointer;
    border-bottom-color: #0d6efd;
    color: #0d6efd;
}

/* --------------------------------------------------------*/
/* MODULES */
/* --------------------------------------------------------*/

.curveMiniChart {
    margin-top: 5px;
    margin-bottom: 15px;
}

@keyframes module-enter {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes module-leave {
    from { opacity: 1; }
    to { opacity: 0; }
}

.module {
    border-radius: 15px;
    border-style: solid;
    border-width: 1px;
    border-color: #BBBBBB;
    margin-top: 10px;
    padding: 1.2em;
    animation: module-enter 0.3s ease-out;
}

.module-leaving {
    animation: module-leave 0.25s ease-out forwards;
    pointer-events: none;
}

.module-view {
    color: #444444;
    background-color: #FAFAFA;
    border-width: 1px;
}

.module-view.disabled {
    color: #BBBBBB;
    border-style: dashed;
    background-color: #FCFCFC;
}

.module-view:hover {
    background-color: #F0F8FF;
    box-shadow: 0 0 0 0.25rem #dbe9f4;
    transition: box-shadow 0.2s;
}

.module-view.disabled:hover {
    box-shadow: 0 0 0 0.25rem #EEEEEE;
    background-color: #FCFCFC;
}

.module-edit {
    background-color: #F0F8FF;
    box-shadow: 0 0 0 0.25rem #dbe9f4;
}

.module-edit.disabled {
    box-shadow: 0 0 0 0.25rem #EEEEEE;
    background-color: #FCFCFC;
    color: #BBBBBB;
}

.module-description {
    margin-top: 7px;
    margin-bottom: 2px;
    font-size: 1.1em;
    text-align: center;
    word-break: break-all;
    font-weight: bold;
}

.module-explanation {
    padding-top: 10px;
    padding-bottom: 10px;
    padding-right: 80px;
    padding-left: 80px;
    font-size: 1.4em;
    text-align: center;
    color: #777777;
}

.module-chart-section {
    margin: 15px;
    text-align: center;
    min-height: 150px;
    border: 1px solid #dddddd;
    background-color: #fefefe;
    border-radius: 1em;
}

.module-group {
    margin: 10px;
    text-align: center;
    font-size: 1.4em;
    padding: 15px;
    border: #AAA solid 1px;
    color: black;
    border-radius: 7px;
    background-color: #dbe9f4;
    text-transform: uppercase;
    letter-spacing: 2px;
    font-weight: bold;
}

.module-group-menu {
    text-align: center;
    margin-bottom: 25px;
}

.module-group-menu-item {
    padding: 10px;
    margin: 2px;
    border-radius: 4px;
    font-size: 1.4em;
    background-color: #dbe9f4;
    text-transform: uppercase;
    border: #AAA solid 1px;
}

.module-group-menu-item-on {
    color: black;
    font-weight: bold;
    border-color: #555;
    border-width: 2px;
    display: inline;
    cursor: default;
    background-color: #b0c4de;
}

.module-group-menu-item-off {
    font-weight: normal;
    color: #999;
}

.module-group-menu-item-off:hover {
    font-weight: normal;
    color: black;
    border-color: black;
}

.module-chart-section:hover {
    cursor: pointer;
    box-shadow: 0 0 0 0.25rem #F1F1F1;
}

.module-chart-section:hover .module-chart-title {
    color: black;
    border-bottom-color: black;
}

.module-chart-title {
    text-align: center;
    margin-bottom: 10px;
    font-size: 1.4em;
    font-weight: bold;
    display: inline-block;
    border-bottom: 2px solid transparent;
}

.module-chart-parent { margin: auto; }

.module-chart-wrapper { padding: 20px 20px 0 20px; }

.module-chart { width: 100%; }

.module-summary {
    color: #555555;
    margin: 5px;
    font-weight: 400;
    font-size: 1.3em;
    display: flex;
    justify-content: center;
}

.module-summary-icon {
    height: 25px;
    margin: 8px;
    opacity: 0.7;
}

.module-summary-box {
    margin: 0 5px;
    padding: 2px 8px;
    border-radius: 10px;
    background-color: #f2f2f2;
    border: 1px solid #CCC;
}

.module-summary-description { font-size: 0.9em; }

.module-summary-number {
    color: black;
    font-weight: bold;
    font-size: 1.1em;
    white-space: nowrap;
}

.module-summary-number.blue { color: #3063A5; }

@keyframes summary-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

.module-summary-box { animation: summary-fade-in 0.3s ease-out; }

@keyframes summary-dot-pulse {
    0%, 100% { opacity: 0.25; }
    50% { opacity: 0.9; }
}

.module-summary-loading {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 5px;
    gap: 4px;
    height: 41px;
}

.module-summary-loading-dot {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background-color: #AAA;
    animation: summary-dot-pulse 1s ease-in-out infinite;
}

.module-summary-loading-dot:nth-child(2) { animation-delay: 0.2s; }

.module-summary-loading-dot:nth-child(3) { animation-delay: 0.4s; }

.module-summary-number.red { color: #8B0000; }

.module-body:hover {
    cursor: pointer;
    color: black;
}

.module-name {
    padding-bottom: 1px;
}

.module-body:hover .module-name {
    cursor: pointer;
    border-bottom: 2px solid black;
}

.module-body:hover .module-name.disabled {
    cursor: pointer;
    border-bottom: 2px solid #DDDDDD;
}

.module-title {
    padding-bottom: 5px;
    margin-top: 3px;
    margin-bottom: 10px;
    display: flex;
    justify-content: center;
}

.module-title .module-name {
    font-weight: bold;
    font-size: 2.3em;
}

.module-block {
    border-radius: 8px;
    border-color: #CCCCCC;
    border-width: 1px;
    border-style: solid;
    margin-top: 10px;
    margin-bottom: 5px;
    padding: 10px;
    max-width: 500px;
    width: 100%;
}

.module-block.disabled { border-color: #DDDDDD; }

.module-block.even { background-color: #F7F9F9; }

.module-block.odd { background-color: #F0F3F4; }

.module-block-header {
    font-weight: bold;
    text-align: center;
    color: #333333;
    font-size: 18px;
    margin-top: 10px;
    margin-bottom: 10px;
}

.module-block-header-text {
    border-bottom: 1px solid transparent;
    letter-spacing: 1px;
}

.module-block-header-text:hover {
    border-bottom: 1px solid black;
    cursor: pointer;
}

.module-block-header-text.disabled:hover {
    border-bottom: 1px solid #BBBBBB;
    cursor: pointer;
}

.module-block-header-icon {
    margin-left: 10px;
    color: #444;
    font-size: 1.1em;
}

.module-block-header-icon.disabled { color: #DDDDDD; }

.module-block-header-title {
    display: inline-flex;
    margin-left: 8px;
    font-size: 18px;
}

.module-block-help {
    font-size: 1.4em;
    color: #BBBBBB;
    margin: 10px;
    text-align: center;
    letter-spacing: 0.5px;
}

.module-block-help.disabled { color: #CCCCCC; }

.module-block-summary {
    border-top: #CCCCCC 1px solid;
    font-size: 1.3em;
    margin-top: 10px;
    text-align: center;
    padding: 10px;
    line-height: 160%;
}

.module-block-summary .time {
    margin-bottom: 5px;
    color: #BBBBBB;
}

.module-block-summary.disabled { color: #CCCCCC; }

.module-block-header.disabled { color: #CCCCCC; }

.module-block-link {
    font-size: 18px;
    text-align: center;
    color: #007bff;
}

.module-block-link:hover {
    text-decoration: underline;
    cursor: pointer;
}

.btn-close:focus {
    box-shadow: none;
    outline: none;
}

.project-switcher {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 15px;
    flex-wrap: wrap;
    font-size: 1.5em;
}

.project-switcher-arrow {
    font-weight: bold;
    font-size: 1.3em;
}

.project-action-separator {
    white-space: nowrap;
}

.project-action-separator::before {
    content: "|";
    color: #ccc;
    margin-right: 6px;
}

.project-action {
    cursor: pointer;
}

.project-action:hover {
    text-decoration: underline;
}

.description-placeholder {
    color: #999;
    font-style: italic;
    padding: 10px 0;
    font-size: 1.4em;
}

.description-readonly {
    white-space: pre-wrap;
    word-break: break-word;
    padding: 10px 0;
    font-size: 1.4em;
}

.description-textarea {
    resize: vertical;
    min-height: 120px;
    font-size: 1.4em;
}

.description-counter {
    text-align: right;
    font-size: 0.85em;
    color: #666;
    margin-top: 4px;
}

.description-counter-over {
    color: #dc3545;
    font-weight: bold;
}

.flag-icon {
    width: 1.33333em;
    height: 1em;
    vertical-align: middle;
    margin-right: 5px;
    object-fit: contain;
}

.workspace-dropdown {
    position: relative;
    display: inline-block;
}

.workspace-dropdown-selected {
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 1px 8px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-weight: bold;
    white-space: nowrap;
}

.workspace-dropdown-selected:hover {
    border-color: #999;
}

.workspace-dropdown-chevron {
    font-size: 0.6em;
    margin-left: 2px;
}

.workspace-dropdown-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 999;
}

.workspace-dropdown-options {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 1000;
    background: white;
    border: 1px solid #ccc;
    border-radius: 4px;
    margin-top: 2px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    min-width: 100%;
}

.workspace-dropdown-option {
    padding: 4px 10px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

.workspace-dropdown-option:hover {
    background: #f0f0f0;
}

.workspace-dropdown-option:first-child {
    border-radius: 4px 4px 0 0;
}

.workspace-dropdown-option:last-child {
    border-radius: 0 0 4px 4px;
}

.workspace-dropdown-option-selected {
    background: #e8f0fe;
}

.switcher-select {
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 1px 4px;
    font-size: inherit;
    cursor: pointer;
    font-weight: bold;
}

.country-dropdown {
    position: relative;
    display: inline-block;
    margin-left: 8px;
}

.country-dropdown-selected {
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 2px 8px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
}

.country-dropdown-selected:hover {
    border-color: #999;
}

.country-dropdown-chevron {
    font-size: 0.6em;
    margin-left: 2px;
}

.country-dropdown-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 999;
}

.country-dropdown-options {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 1000;
    background: white;
    border: 1px solid #ccc;
    border-radius: 4px;
    margin-top: 2px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    min-width: 100%;
}

.country-dropdown-option {
    padding: 4px 10px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

.country-dropdown-option:hover {
    background: #f0f0f0;
}

.country-dropdown-option:first-child {
    border-radius: 4px 4px 0 0;
}

.country-dropdown-option:last-child {
    border-radius: 0 0 4px 4px;
}

.country-dropdown-option-selected {
    background: #e8f0fe;
}

.module-buttons {
    display: flex;
    flex-wrap: wrap;
    padding: 10px;
    justify-content: center;
}

.add-module-button {
    min-width: 100px;
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    align-content: center;
    justify-content: space-evenly;
    align-items: center;
    margin: 5px;
}

.add-module-button .module-image {
    opacity: .4;
}

.add-module-description {
    color: #AAAAAA;
    margin-top: 7px;
    margin-bottom: 2px;
    font-size: 1.3em;
    text-align: center;
    word-break: break-all;
    font-weight: bold;
}

.add-module-button:hover {
    cursor: pointer;
    color: black;
}

.add-module-button:hover .module-image {
    opacity: 1;
}

.add-module-button:hover .add-module-description {
    color: black;
}

/* --------------------------------------------------------*/
/* CONTINGENCIES */
/* --------------------------------------------------------*/

.contingencies {
    display: flex;
    justify-content: center;
    font-size: 1.2em;
    padding: 10px;
    margin-bottom: 5px;
}

.contingency {
    margin: 5px;
    text-align: center;
    min-height: 150px;
    border: 1px solid #666666;
    background-color: white;
    border-radius: 0.5em;
    padding: 10px;
    width: 400px;
}

.contingency-date {
    padding-top: 10px;
    padding-bottom: 5px;
    font-size: 1.3em;
}

.contingency-time-info {
    padding-bottom: 12px;
    border-bottom: black solid 1px;
}

.contingency-header {
    padding: 10px;
    font-size: 1.2em;
    font-weight: bold;
    border-bottom: black solid 3px;
    border-top: black solid 3px;
    letter-spacing: 1px;
}

.contingency-header.information {
    color: #000000;
    border-color: #000000;
    background-color: #EDEDED;
}

.contingency-header.curiosity {
    color: yellow;
    border-color: yellow;
    background-color: #fffdd0;
}

.contingency-header.curiosity {
    color: #83358f;
    border-color: #83358f;
    background-color: #E6E6FA;
}

.contingency-header.warning {
    color: #8b0000;
    border-color: #8b0000;
    background-color: #f9ecec;
}

.contingency-header.suggestion {
    color: #006400;
    background-color: #ECFCEC;
    border-color: #006400;
}

.contingency-header.event {
    color: #CC5500;
    border-color: #CC5500;
    background-color: #fff4e9;
}

.contingency-header.action {
    color: #3063A5;
    border-color: #3063A5;
    background-color: #F0F8FF;
}

.contingency-icon {
    height: 35px;
    margin-right: 10px;
}

.contingency-name {
    margin-top: 5px;
    padding: 5px;
    font-size: 1.4em;
    font-weight: bold;
}

.contingency-description {
    padding: 5px;
    font-size: 1.1em;
}

.contingency-information {
    font-size: 1.1em;
    padding: 5px;
    color: #333333;
    line-height: 1.4em;
}

/* --------------------------------------------------------*/
/* RESULTS */
/* --------------------------------------------------------*/

/* To avoid Google charts flickering when hovering the tooltips */
svg > g > g:last-child {
    pointer-events: none
}

.div-graph-mini { margin-bottom: 3px; }

.div-graph { margin-top: 25px; }

.div-graph-title {
    text-align: center;
    font-size: 1.4em;
    font-weight: bold;
    margin-top: 10px;
}

.div-graph-description {
    text-align: center;
    color: #666666;
    font-size: 1.2em;
    margin-top: 10px;
    margin-bottom: 20px;
}

table.details-table {
    margin-left: auto;
    margin-right: auto;
}

.details-table {
    align-self: center;
    line-height: 1.5;
    margin-top: 20px;
    padding: 0;
    border-collapse: collapse;
    border-style: solid;
    border: lightgray;
}

.details-table td { padding: 0 8px; }

.details-table td.separator {
    border-right-style: solid;
    border-right-width: 1px;
    border-right-color: #DDDDDD;
}

.right { text-align: right; }

.right-no-wrap {
    text-align: right;
    white-space: nowrap;
}

.details-table td.bold { font-weight: bold; }

.details-table th.bold { font-weight: bold; }

.details-table td.larger { font-size: 1.2em; }

.details-table th {
    font-size: 1.3em;
    padding: 4px 6px;
    background-color: #000000;
    color: white;
    text-align: center;
    vertical-align: middle;
    font-weight: bold;
    border-color: #DDDDDD;
    border-width: 1px;
    border-style: solid;
}

.navigation-arrow-div {
    margin-left: 5px;
    margin-right: 5px;
    display: initial;
    opacity: 0.2;
}

.navigation-arrow-img { height: 1.3em; }

.navigation-arrow-div:hover {
    cursor: pointer;
    color: black;
    opacity: 1;
}

.details-table .red { color: #8B0000; }

.details-table .green { color: black; }

.details-table tr { border: 1px solid #ddd; }

.details-table tr.odd { background-color: #F7F9F9; }

.details-table tr.decade {
    background-color: white;
    font-size: 1.1em;
}

td.key {
    text-align: left;
    font-weight: bold;
    font-size: 1.2em;
}

span.decimal {
    font-size: 0.7em;
    font-weight: normal;
}

tr.row-total {
    font-weight: bold;
    border-top-color: black;
    border-top-width: 2px;
}

.table-hover tbody:hover { cursor: pointer; }

.hovering-effects:hover {
    cursor: pointer;
    text-decoration: underline;
}

.details-header {
    font-size: 1.2em;
    border-radius: 8px;
    margin-top: 15px;
    margin-bottom: 5px;
    text-align: center;
    border-style: solid;
    padding: 7px;
    border-color: #AAAAAA;
    border-width: 1px;
    background-color: #EFEFEF;
}

.details-type {
    font-weight: bold;
    font-size: 1.5em;
}

.details-title { font-size: 1.2em; }

.details-title-separator {
    color: lightgray;
    padding: 0px 5px;
}

.details-breadcrumbs {
    padding: 5px;
    margin-top: 7px;
    color: #888888;
    font-weight: normal;
    font-size: 1.2em;
    border-top: #ccc solid 1px;
}

.breadcrumbs:hover { color: #444444; }

span.separator {
    color: lightgray;
    margin-left: 10px;
    margin-right: 10px;
}

.report-image {
    margin: 3px;
    height: 30px;
    margin-right: 10px;
    vertical-align: middle;
}

.module-image {
    width: 100%;
    max-width: 55px;
    opacity: 0.6;
    vertical-align: middle;
    margin-top: 10px;
    -webkit-transform: rotate(14deg);
    -moz-transform: rotate(14deg);
    -ms-transform: rotate(14deg);
    -o-transform: rotate(14deg);
    transform: rotate(14deg);
}

.module-edit .module-image { opacity: 1; }

.module-view:hover .module-image { opacity: 1; }

.module-view:hover .disabled.module-image { opacity: 0.2; }

.module-image.disabled { opacity: 0.2; }

.flow-snapshot {
    font-size: 1.3em;
    margin-top: 25px;
    margin-bottom: 25px;
}

.flow-snapshot-table {
    margin-left: auto;
    margin-right: auto;
}

.flow-snapshot-row {
    /* still empty */
}

.flow-snapshot-name {
    font-weight: bold;
    text-align: right;
    padding-right: 20px;
}

.flow-snapshot-values {
    display: flex;
    flex-wrap: nowrap;
    align-content: space-around;
    justify-content: flex-start;
    align-items: stretch;
    flex-direction: row;
}

.flow-snapshot-value {
    border-width: 1px;
    border-color: black;
    border-style: solid;
    padding: 5px 10px;
    margin: 5px;
    border-radius: 4px;
    color: white;
}

.flow-snapshot-yield {
    background-color: #3063a5;
}

.flow-snapshot-consume {
    background-color: #cc0000;
}

.flow-snapshot-give {
    background-color: #333333;
 }

.flow-snapshot-receive {
    background-color: #333333;
}

/* --------------------------------------------------------*/
/* TRIGGER */
/* --------------------------------------------------------*/

.action-description {
    padding: 10px;
    font-size: 1.3em;
    border: solid 1px black;
    margin: 0 0 10px 0;
    border-radius: 0.5em;
    background-color: white;
}

.trigger-explanation {
    padding: 10px;
    font-size: 1.3em;
    text-align: center;
}

.trigger-contingency-description {
    margin-bottom: 10px;
    margin-top: 10px;
    font-size: 1.3em;
    text-align: center;
}

.trigger-text {
    text-align: center;
    color: white;
    border-width: 1px;
    border-radius: 0.4em;
    font-size: 1.3em;
    background-color: black;
    font-weight: bold;
    margin: 20px 0 20px 0;
    padding: 5px 0 5px 0;
}

.trigger-text-as-icon {
    font-weight: 800;
    font-family: monospace;
    font-size: 1.3em;
    letter-spacing: -2px;
}

.trigger-select-highlight {
    color: #3063A5;
    font-weight: 700;
    font-size: 1.1em;
}

/* --------------------------------------------------------*/
/* TAX */
/* --------------------------------------------------------*/

.tax-details-module {
    display: flex;
    justify-content: center;
}

.tax-details-table {
    line-height: 1.5;
    padding: 0;
    border-collapse: collapse;
    width: 100%;
}

.tax-details-table td {
    padding: 1px 2px;
    vertical-align: top;
}

.tax-details-table td.total {
    height: 3px;
    border-top: 1px solid black;
}

td.tax-key {
    text-align: right;
    font-weight: bold;
    font-size: 1.3em;
    height: 40px;
}

td.tax-sub-key {
    text-align: right;
    padding-left: 10px;
}

tr.tax-flow-row {
    font-size: 0.9em;
    color: #888888;
}

.tax-details {
    margin-top: 15px;
    padding: 10px;
    border-style: solid;
    border-width: 1px;
    border-color: #999999;
    background-color: #f1f1f1;
}

.tax-details-title {
    padding: 5px;
    text-align: center;
    color: white;
    background-color: #333333;
    font-weight: bold;
    font-size: 1.4em;
}

.tax-section {
    padding: 10px;
    border-style: solid;
    border-width: 0 1px 1px 1px;
    border-color: #444444;
}

.tax-section-title {
    margin-top: 10px;
    padding: 5px;
    text-align: center;
    color: black;
    font-size: 1.2em;
    font-weight: bold;
    border-color: #444444;
    border-width: 1px;
    border-style: solid;
}

.tax-unit { margin-top: 10px; }

.tax-unit-title {
    padding: 5px;
    text-align: center;
    color: black;
    font-weight: bold;
    border-color: #444444;
    border-width: 1px;
    border-style: solid;
}

.tax-calculation { margin-top: 5px; }

.tax-flow-group { margin-top: 10px; }

.tax-flow-group-title { font-weight: bold; }

.tax-flow-group-table { margin-top: 5px; }

/* --------------------------------------------------------*/
/* TOOLTIP */
/* --------------------------------------------------------*/

div[data-description] {
    position: relative;
}

div[data-description]:hover { 
    cursor: help; 
}

div[data-description]:hover::after,
div[data-description]:focus::after {
    content: attr(data-description);
    position: absolute;
    top: 45px;
    left: -20px;
    min-width: 300px;
    border: 1px #BBBBBB solid;
    border-radius: 10px;
    background-color: #f9f9f9;
    padding: 10px;
    color: #444444;
    font-size: 1.2em;
    opacity: 0.9;
    z-index: 1000000;
}

u.dotted {
    text-decoration: none;
    margin: auto;
}

/* --------------------------------------------------------*/
/* PROFILE */
/* --------------------------------------------------------*/

.info {
    word-break: break-all;
    margin-top: 20px;
    padding: 10px;
    border-collapse: collapse;
    background-color: #F7F9F9;
    border-style: solid;
    border-width: 1px;
    border-color: #ddd;
    border-radius: 10px;
}

.info-title {
    font-weight: bold;
    padding-top: 5px;
    font-size: 2em;
    text-align: center;
}

.info-text {
    padding-bottom: 5px;
    padding-top: 3px;
    font-size: 1.1em;
}

.info-text div { padding: 5px; }

.info-text p {
    font-size: 1.2em;
    word-break: normal;
    line-height: 1.4;
}

.info-text a.link {
    font-size: 1.2em;
    font-weight: bold;
}

.info-separator {
    border-bottom-color: #ddd;
    border-bottom-style: solid;
    border-bottom-width: 1px;
    margin-top: 10px;
    margin-bottom: 10px;
}

.btn-google-signin {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background-color: #1a1a1a;
    color: #fff;
    border: none;
    border-radius: 4px;
    padding: 10px 20px;
    font-size: 1.1em;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.2s;
}

.btn-google-signin:hover {
    background-color: #333;
    color: #fff;
}

.btn-google-signin:disabled {
    background-color: #555;
    cursor: not-allowed;
    opacity: 0.7;
}

.btn-google-signin img {
    width: 20px;
    height: 20px;
}

/* --------------------------------------------------------*/
/* PRICE BOX */
/* --------------------------------------------------------*/

.price-box {
    border-radius: 8px;
    font-size: 1.3em;
    position: fixed;
    bottom: 5px;
    left: 5px;
    color: #CCCCCC;
    padding: 10px;
    border-style: none;
    border-width: 3px;
    z-index: 9000;
    background-color: #0D1021;
    box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;
}

.price-box-charts {
    border-radius: 8px;
    padding: 3px;
}

.price-box:hover { cursor: pointer; }

.price-box.blue { border-color: #3063A5; }

.price-box.red { border-color: #8B0000; }

.price-box .price-title { text-align: left; }

.price-box .small-info {
    font-size: .7em;
    padding-top: 5px;
}

.price-box .price-result {
    font-weight: bold;
    text-align: right;
}

.price-box .price-result.blue { color: #009EFF; }

.price-box .price-result.red { color: #E60000; }

.price-box td { padding: 2px 4px; }

.comparison-pricebox-row {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    position: fixed;
    bottom: 5px;
    left: 5px;
    right: 5px;
    z-index: 9000;
    pointer-events: none;
}

.comparison-pricebox-side {
    pointer-events: auto;
}

.comparison-pricebox-right {
    margin-left: auto;
}

.comparison-pricebox-side .price-box {
    position: static;
    z-index: auto;
    width: auto;
    box-sizing: border-box;
}

/* --------------------------------------------------------*/
/* SPECIAL */
/* --------------------------------------------------------*/

#cover-spin {
    position: fixed;
    width: 100%;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    background-color: #ffffff;
    background-color: rgba(255, 255, 255, 0.7);
    z-index: 9998;
}

#logo-text {
    border-radius: 10px;
    border-color: #444444;
    border-width: 1px;
    border-style: dotted;
    background-color: #EFEFEF;
    padding: 20px;
    text-align: center;
    font-size: 1.7em;
    margin-top: 50px;
    margin-bottom: 10px;
    color: black;
    font-weight: bold;
    position: relative;
    z-index: 9999;
}

#logo {
    height: 64px;
    width: 64px;
    overflow: hidden;
    display: block;
    position: absolute;
    top: 30%;
    left: 50%;
    margin: -32px 0 0 -32px;
    z-index: 9999;
}

img.logo-normal {
    height: 65px;
    width: 65px;
    overflow: hidden;
    display: block;
    margin-left: auto;
    margin-right: auto;
}

img.logo-small {
    height: 30px;
    width: 30px;
    overflow: hidden;
    display: block;
    margin-left: auto;
    margin-right: auto;
}

img.logo-mini {
    height: 16px;
    width: 16px;
    overflow: hidden;
    display: inline;
    margin: 0;
}

#footer-results {
    padding: 10px;
    margin-top: 20px;
}

#footer-page {
    margin: 15px;
    color: #555555;
    font-size: 1.4em;
    text-align: center;
    letter-spacing: 1px;
    border-top: 1px solid #DDD;
    padding: 10px;
}

#about {
    font-size: 1.3em;
    text-align: center;
}

#about h2 {
    padding-bottom: 10px;
    margin-top: 50px;
    margin-bottom: 20px;
    border-bottom: #DDDDDD solid 1px;
}

/* --------------------------------------------------------*/
/* STORAGE CONSENT BANNER */
/* --------------------------------------------------------*/

#storage-consent-banner {
    text-align: center;
    padding: 15px 20px;
    color: #555555;
    font-size: 0.95em;
}

#storage-consent-banner .btn {
    margin-left: 10px;
}

/* --------------------------------------------------------*/
/* WARNING TOP BANNER */
/* --------------------------------------------------------*/

.warning-top-banner {
    text-align: center;
    padding: 12px 20px;
    color: #856404;
    background-color: #fff3cd;
    border-top: 2px solid #ffc107;
    border-bottom: 2px solid #ffc107;
    font-size: 1.6em;
    font-weight: bold;
}

/* --------------------------------------------------------*/
/* FRAMES */
/* --------------------------------------------------------*/

.keyFrameMaxHeight {
    animation: keyFrameMaxHeightDefinition 3s;
}

@keyframes keyFrameMaxHeightDefinition {
    from {
        max-height: 0;
    }

    to {
        max-height: 10000px;
    }
}

/* --------------------------------------------------------*/
/* FOOTER LEGAL LINKS */
/* --------------------------------------------------------*/

.footer-legal-link {
    cursor: pointer;
    color: #888;
    text-decoration: none;
}

.footer-legal-link:hover {
    text-decoration: underline;
    cursor: pointer;
}

/* --------------------------------------------------------*/
/* COMPARISON LAYOUT */
/* --------------------------------------------------------*/

.comparison-container {
    display: flex;
    gap: 0;
    width: 100%;
}

.comparison-side {
    flex: 1;
    min-width: 0;
    overflow-x: hidden;
}

.comparison-divider {
    display: flex;
    align-items: flex-start;
    padding: 12px 6px 0 6px;
    font-size: 2em;
    color: #999;
    cursor: default;
    user-select: none;
}

.compare-label {
    color: #888;
}

.settings-diff-banner {
    background-color: #fff3cd;
    color: #856404;
    border: 1px solid #ffc107;
    border-radius: 4px;
    padding: 8px 15px;
    margin: 5px 15px;
    font-size: 1.3em;
}

.comparison-no-match {
    background-color: #fff3cd;
    color: #856404;
    border: 1px solid #ffc107;
    border-radius: 4px;
    padding: 15px;
    margin: 15px;
    font-size: 1.3em;
    font-weight: bold;
    text-align: center;
}

/* Narrow-screen comparison toggle */
.comparison-toggle {
    display: none;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 6px 0;
    font-size: 1.8em;
    margin-top: 5px;
    margin-bottom: 5px;
}

.comparison-toggle-name {
    cursor: pointer;
    color: #888;
}

.comparison-toggle-name:hover {
    text-decoration: underline;
}

.comparison-toggle-name-active {
    font-weight: bold;
    color: inherit;
}

.comparison-toggle-icon {
    color: #999;
    user-select: none;
}

@media (max-width: 1199px) {
    .comparison-container {
        display: block;
    }

    .comparison-side-hidden {
        display: none;
    }

    .comparison-divider {
        display: none;
    }

    .comparison-toggle {
        display: flex;
    }
}

/* --------------------------------------------------------*/
/* PDF EXPORT MODAL */
/* --------------------------------------------------------*/

.pdf-export-options {
    padding: 10px;
}

.pdf-export-options p {
    font-size: 1.2em;
    margin-bottom: 15px;
}

.pdf-export-option {
    border: 1px solid #ddd;
    border-radius: 6px;
    padding: 12px 15px;
    margin-bottom: 10px;
    cursor: pointer;
    transition: border-color 0.15s, background-color 0.15s;
}

.pdf-export-option:hover {
    border-color: #999;
    background-color: #fafafa;
}

.pdf-export-option-selected {
    border-color: #333;
    background-color: #f0f0f0;
}

.pdf-export-option label {
    cursor: pointer;
    font-size: 1.15em;
}

.pdf-export-option-description {
    color: #666;
    font-size: 1.1em;
    margin-top: 4px;
    padding-left: 22px;
}

.pdf-export-generating {
    text-align: center;
    padding: 30px 20px;
}

.pdf-export-spinner {
    color: #333;
    margin-bottom: 15px;
}

.pdf-export-status {
    font-size: 1.2em;
    color: #666;
}

.pdf-export-error {
    font-size: 1.2em;
    color: #8b0000;
    font-weight: bold;
}