:root {
    /* App Palette */
    /* 1s */
    --app-color-palette-outline-1: #C4C4C4FF;
    --app-color-palette-outline-1-active: #979797;
    --app-color-palette-background-1: #C4C4C4FF;
    --app-color-palette-background-1-active: #eeeeee;
    --app-color-palette-1: #ffffff;
    /* 2s */
    --app-color-palette-background-2: #eeeeee;
    --app-color-palette-background-2-active: #e0e0e0;
    --app-color-palette-2: #3f3f3f;
    --app-color-palette-2-active: #3f3f3f;
    /* Common */
    --app-color-palette-accept: #3ca356;
    --app-color-palette-cancel: #ec4f4f;
    --app-color-palette-cancel-active: #d13737;
    --app-color-palette-cancel-text: white;
    --app-color-palette-focus-element-outline: #7fb2ff91;
    --app-page-background: #f2f4f8;
    --app-primary-linear-gradient: linear-gradient(90deg, #1e90ff, #00356e);
    /* Text */
    --app-color-palette-primary: #222222;
    --app-color-palette-secondary: #696969;
    /* APP Theme */
    --app-color-palette-primary-color: rgb(0, 123, 255);
    --app-color-palette-button-primary-color: #00356e;
    --app-color-palette-button-primary-color-active: #0056b3;
    --app-color-palette-button-primary-color-active-light: #0d71ff12;
    --app-color-palette-button-primary-color-disabled: #6e7e8f;
    --app-color-palette-warning: #fdf1ac;
    /* App Variables */
    --app-border-radius: 2em;
    --app-sharp-border-radius: 8px;
    --app-form-background: white;
}

html * {
    font-family: 'Roboto', sans-serif !important;
}


html, body {
    padding: 0;
    margin: 0;
    
    min-width: 400px;
}


.appNoMargin {
    margin: 0;
}


.app_page {
    width: 100%;
    box-sizing: border-box;
    background: var(--app-page-background);
    padding: 1em;
    display: flex;
}

.app_warning {
    background: var(--app-color-palette-warning);
    padding: 1em 2em;
    border-radius: var(--app-sharp-border-radius);
}

.app_button {
    box-sizing: border-box;
    padding: 1em 2em;
    text-decoration: none;
}

.appButton_primaryButton {
    outline: none;
    border: none;
    background: var(--app-color-palette-primary-color);
    color: white;
    border-radius: var(--app-sharp-border-radius);
    cursor: pointer;
}

.appButton_secondaryButton {
    outline: none;
    border: none;
    background: #3a3a3a;
    color: white;
    cursor: pointer;
    border-radius: var(--app-sharp-border-radius);
    padding: .5em 1em;
}

.appButton_secondaryButton:hover {
    background-color: #545b62;
    transform: translateY(-1px);
    color: white;
}

.appButton_secondaryButton:focus {
    outline: 2px solid var(--app-color-palette-focus-element-outline);
}

.appButton_style_1 {
    color: var(--app-color-palette-button-primary-color);
    padding: .5em 1em;
    text-underline-offset: .3em;
    text-decoration-color: currentColor;
    border: none;
    text-decoration: none;
    outline: none;
    background: none;
    width: fit-content;
    display: inline-block;
}

.appButton_style_1:focus {
    text-decoration: underline;
    outline: 3px solid var(--app-color-palette-focus-element-outline);
}

.appButton_style_1:hover {
    text-decoration: underline;
}


.appButton_iconButton {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    column-gap: 1.5em;
}

.appButton_iconButton img {
    width: .75em;
    height: .75em;
}

.appButton_primaryButton:disabled, .appButton_primaryButton:hover:disabled {
    background: var(--app-color-palette-button-primary-color-disabled);
    color: white;
}


.appButton_primaryButton:focus, .appButton_primaryButton:hover {
    background: var(--app-color-palette-button-primary-color-active);
    transform: translateY(-1px);
}

.appButton_primaryButton:focus {
    outline: 2px solid var(--app-color-palette-focus-element-outline);
}









.appButton_noBorder {
    outline: none;
    border: none;
    background: none;
    padding: .5em 1em;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    column-gap: .5em;
    color: var(--app-color-palette-secondary);
    cursor: pointer;
    border-radius: var(--app-border-radius);
    text-decoration: none;
}

.appButton_noBorder img {
    width: .75em;
    height: .75em;
}
.appButton_noBorder:hover {
    background: var(--app-color-palette-background-1-active);
}

.appButton_noBorder:focus {
    outline: 2px solid var(--app-color-palette-focus-element-outline);

}


.appButton_noBorder_filled {
    outline: none;
    border: none;
    background: var(--app-color-palette-background-2);
    padding: .5em 1em;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    column-gap: .5em;
    color: var(--app-color-palette-2);
    cursor: pointer;
    border-radius: var(--app-border-radius);
}

.appButton_noBorder_filled img {
    width: .75em;
    height: .75em;
}

.appButton_noBorder_filled:hover {
    background: var(--app-color-palette-background-2-active);
    color: var(--app-color-palette-2-active);
}

.appButton_noBorder_filled:focus {
    outline: 2px solid var(--app-color-palette-focus-element-outline);
}




.appButton_cancel {
    color: var(--app-color-palette-cancel-text);
    background-color: var(--app-color-palette-cancel) !important;
}

.appButton_cancel:hover {
    color: var(--app-color-palette-cancel-text) !important;
    background-color: var(--app-color-palette-cancel-active) !important;
}

.appButton_no_border_style {
    border-radius: var(--app-border-radius);
    border: none;
}

.validationErrorText {
    color: var(--app-color-palette-cancel) !important;
    font-size: .85em !important;
    margin-left: 1em !important;
    width: 100% !important;
    box-sizing: border-box !important;
    position: relative !important;
}

.cancelText {
    color: var(--app-color-palette-cancel) !important;
}


.validationErrorBox {
    background: #fff1c3;
    padding: 1em;
    border-radius: var(--app-sharp-border-radius);
}

.app_hide {
    display: none !important;
}


.app_required_text {
    color: var(--app-color-palette-cancel);
    margin: 0 .5em;
}

.app_secondary_text {
    font-size: .85em;
    color: var(--app-color-palette-secondary);
}

.app_important_text {
    color: var(--app-color-palette-primary-color);
    font-weight: 500;
}

.appButton_link {
    text-decoration: underline;
    background: none;
    outline: none;
    border: none;
    display: inline-block;
    width: fit-content;
    border-radius: var(--app-sharp-border-radius);
    padding: .5em 1em;
}


.appButton_link:focus, .appButton_link:hover {
     outline: 3px solid var(--app-color-palette-focus-element-outline);
}


.ellipsis {
    display: inline-block; /* or block */
    max-width: 180px; /* or any width you need */
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}


.typing-animation-2 {
    white-space: nowrap; /* Prevents text from wrapping */
    overflow: hidden; /* Hides text beyond the current width */
    border-right: 0.15em solid #3498db; /* Initial blinking cursor */
    width: 0; /* Start with no width, text is hidden */
    margin: 0 auto; /* Center the text */
    /* Combined animations:
       1. typing-2: Controls the width expansion to reveal text. Starts after 1s delay.
       2. blink-caret-2: Makes the cursor blink during the typing phase. Starts immediately.
       3. hide-cursor-2: Starts after typing-2 finishes, quickly makes the cursor transparent.
    */
    animation: typing-2 1.5s steps(30, end) forwards 1s, /* Type the text (30 characters), starts after 1s delay */
    blink-caret-2 0.75s step-end infinite, /* Blinking cursor, starts immediately */
    hide-cursor-2 0.1s forwards 2.5s; /* Hide cursor after 3.5s (typing duration) + 1s (delay) = 4.5s */
}

/* Keyframes for the typing animation (revealing text) */
@keyframes typing-2 {
    from {
        width: 0
    }
    /* Start with zero width */
    to {
        width: 100%
    }
    /* Expand to full width, revealing text */
}

/* Keyframes for the blinking cursor */
@keyframes blink-caret-2 {
    from, to {
        border-color: transparent
    }
    /* Cursor off */
    50% {
        border-color: #3498db;
    }
    /* Cursor on */
}

/* Keyframes to hide the cursor after typing is complete */
@keyframes hide-cursor-2 {
    to {
        border-color: transparent;
    }
    /* Make border transparent */
}

select {
    margin: auto;
    max-width: 250px;
    width: 100%;
    padding: 10px 12px;
    border: 1px solid #ccc;
    border-radius: 5px;
    background-color: #fff;
    font-size: 1em;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-6.6%200-13%202.9-17.6%208.7L146.3%20247.3c4.7%205.8%2011.6%209%2018.9%209s14.2-3.2%2018.9-9z%22%2F%3E%3C%2Fsvg%3E");
    background-repeat: no-repeat;
    background-position: right 10px top 50%;
    background-size: 12px auto;
    cursor: pointer;
    transition: border-color 0.3s ease;
}

select:focus {
    border-color: #007bff;
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25);
}



.switch {
  position: relative;
  display: inline-block;
  width: 60px !important;
  height: 34px;
}

.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.switch input:focus + .slider {
  outline: 2px solid var(--app-color-palette-focus-element-outline);
  outline-offset: 2px;  /* optional for some spacing */
}

.slider {
  position: absolute;
  cursor: pointer;
  top: 0; left: 0; right: 0; bottom: 0;
  background-color: #ccc;
  transition: 0.4s;
  border-radius: 34px;
}


.slider:before {
  position: absolute;
  content: "";
  height: 26px; width: 26px;
  left: 4px; bottom: 4px;
  background-color: white;
  transition: 0.4s;
  border-radius: 50%;
}

input:checked + .slider {
  background-color: #4caf50; /* green for yes */
}

input:checked + .slider:before {
  transform: translateX(26px);
}



hr {
    width: 100%;
    height: 1px;
    border: none;
    outline: none;
    background-color: rgba(90, 90, 90, 0.115);
}


a:focus {
    outline: 2px solid var(--app-color-palette-focus-element-outline);
}


.errorStatusBox {
    background-color: var(--app-color-palette-cancel);
    color: white;
}

.successStatusBox {
    background-color: #87ff87;
    color: var(--app-color-palette-primary);
}
.status-box {
    position: fixed;
    bottom: 30px;
    left: 50%;
    transform: translateX(-50%);
    padding: 1.5em 2em;
    border-radius: 8px;
    font-size: 14px;
    display: flex;
    align-items: center;
    gap: 16px; /* increased spacing between icon and text */
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
    opacity: 0;
    pointer-events: none;
    animation: fadeInOut 4s forwards;
}

.status-box .icon {
    width: 30px;
    height: 30px;
    color: #55ff55 
}

@keyframes fadeInOut {
    0% {
        opacity: 0;
        transform: translate(-50%, 20px);
    }

    10% {
        opacity: 1;
        transform: translate(-50%, 0);
    }

    80% {
        opacity: 1;
        transform: translate(-50%, 0);
    }

    100% {
        opacity: 0;
        transform: translate(-50%, 20px);
    }
}


@media screen and (min-width: 800px) {
    .status-box {
        font-size: 20px;
    }

}

@media screen and (min-width: 1100px) {

}