/* Buttons and Badges */ 
:root {
    /* Button Styles */
    --bttn-text-size: .89rem;
    --bttn-icon-size: .9rem;
    --bttn-letter-spacing: var(--ls-base);
    --bttn-padding-y: .65rem;
    --bttn-padding-x: .8rem;
    --bttn-radius: .6rem;

    /* Badge Styles */ 
    --badge-padding-y: .15rem;
    --badge-padding-x: .45rem;
    
    /* Core colors - Light Theme */
    --bttn-black: #000000;
    --bttn-white: #ffffff;
    --bttn-brand: #0072ff;
    --bttn-gray-50: #F9FAFB;
    --bttn-gray-100: #F3F4F6;
    --bttn-gray-200: #f0f0f0; 
    --bttn-gray-300: #d4d4d4; 
    --bttn-gray-400: #a3a3a3; 
    --bttn-gray-600: #525252; 
    --bttn-gray-700: #404040;
    --bttn-gray-800: #27272a;
    --bttn-gray-900: #202020;
    --bttn-red: #DC2626;

    /* Pulse Indicator */
    --color-online: #3b82f6;
    --color-online-pulse: rgba(59, 130, 246, 0);

    /* Component Colors - Light Theme */
    --bttn-primary-bg: var(--bttn-gray-900);
    --bttn-primary-text: var(--bttn-white);
    --bttn-secondary-bg: var(--bttn-gray-200);
    --bttn-secondary-text: var(--bttn-gray-800);
    --bttn-outline-border: var(--bttn-gray-300);
    --bttn-outline-text: var(--bttn-gray-900);
    --bttn-ghost-text: var(--bttn-black);
    --bttn-destructive-bg: var(--bttn-red);
    --bttn-destructive-text: var(--bttn-white);
    
    /* Hover States - Light Theme */
    --bttn-secondary-hover: var(--bttn-gray-100);
    --bttn-outline-hover-bg: var(--bttn-gray-100);
    --bttn-outline-hover-border: var(--bttn-gray-300);
    --bttn-ghost-hover: var(--bttn-gray-200);

    /* Badges and Tags */ 
    --badge-bg-beta: var(--bttn-gray-200);
    --badge-text: var(--bttn-gray-800);
}

[data-theme="dark"] {
    --bttn-letter-spacing: 0.025rem;

    /* Component Colors - Dark Theme */
    --bttn-primary-bg: var(--bttn-white);
    --bttn-primary-text: var(--bttn-black);
    --bttn-secondary-bg: var(--bttn-gray-800);
    --bttn-secondary-border: var(--bttn-gray-400);
    --bttn-secondary-text: var(--bttn-white);
    --bttn-destructive-bg: var(--bttn-red);
    --bttn-destructive-text: var(--bttn-white);
    --bttn-outline-border: var(--bttn-gray-800);
    --bttn-outline-text: var(--bttn-white);
    --bttn-ghost-text: var(--bttn-white);
    
    /* Hover States - Dark Theme */
    --bttn-secondary-hover: var(--bttn-gray-900);
    --bttn-outline-hover-bg: var(--bttn-gray-900);
    --bttn-outline-hover-border: var(--bttn-gray-400);
    --bttn-ghost-hover: var(--bttn-gray-800);

    /* Badges and Tags */ 
    --badge-bg-beta: var(--bttn-gray-900);
    --badge-text: var(--bttn-white);
}

/**************************************************
 *                                                *
 *                    Buttons                     *
 *                                                *
 **************************************************/

/* Base style */
.bttn {
    font-family: 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    font-weight: 400;
    color: var(--bttn-outline-text);
    padding: var(--bttn-padding-y) var(--bttn-padding-x);
    border-radius: var(--bttn-radius);
    font-size: var(--bttn-text-size);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid transparent;
    line-height: 1;
    width: fit-content;
    height: fit-content;
    white-space: nowrap;
    letter-spacing: var(--bttn-letter-spacing);
    box-shadow: var(--shadow-sm);
    box-sizing: border-box;
    transition: all 0.3s ease-in-out;
    gap: .65rem;
    text-decoration: none;
}

/* Disabled State */
.bttn:disabled, .bttn.disabled {
    cursor: not-allowed;
    opacity: 0.8;
}

/* Brand button */
.bttn-brand {
    background: var(--bttn-brand);
    color: var(--bttn-white);
}
.bttn-brand:hover {
    opacity: 0.9;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0, 114, 255, 0.15);
}

/* Primary button */
.bttn-primary {
    font-weight: 500;
    background: var(--bttn-primary-bg);
    color: var(--bttn-primary-text);
}
.bttn-primary:hover {
    opacity: 0.9;
}

.bttn-primary svg {
    stroke-width: 2.2; /*Match bolder font*/
}

/* Secondary button */
.bttn-secondary {
    color: var(--bttn-secondary-text); 
    background: var(--bttn-secondary-bg);
    box-shadow: none;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}
.bttn-secondary:hover {
    background: var(--bttn-secondary-hover);
}

/* Outline button */
.bttn-outline {
    background: transparent;
    border: 1px solid var(--bttn-outline-border);
    box-shadow: none;
    color: var(--bttn-outline-text);
}
.bttn-outline:hover {
    background: var(--bttn-outline-hover-bg);
    border-color: var(--bttn-outline-hover-bg);
}

/* Ghost button */
.bttn-ghost {
    background: transparent;
    color: var(--bttn-ghost-text);
    box-shadow: none;
}
.bttn-ghost:hover {
    background: var(--bttn-ghost-hover);
}

/* Destructive button */
.bttn-destructive {
    background: var(--bttn-destructive-bg);
    color: var(--bttn-destructive-text);
  }
.bttn-destructive:hover {
    opacity: 0.8;
}

.bttn-alert:hover {
    background-color: var(--bttn-destructive-bg);
    color: white;
}

/*Display*/
.bttn-purchase {
    font-size: var(--text-md);
    letter-spacing: var(--ls-lg);
    background-color: var(--brand-color);
    color: white;
    padding: 1em;
    width: 100%;
    line-height: 1;
}

/*Inline Puchase Button */
.bttn-purchase-inline {
    letter-spacing: var(--ls-lg);
    background-color: var(--brand-color);
    color: white;
}

/* Link button */
a.bttn-link {
    font-family: inherit;
    display: inline-flex;
    color: inherit;
    position: relative;
    padding: 0px;
    margin: 0px;
    font-size: inherit !important;
    font-weight: inherit;
    cursor: pointer;
    align-items: center;
    justify-content: center;
    box-shadow: none;
    letter-spacing: inherit;
    transition: color 0.3s ease-in-out;
}
a.bttn-link::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: -5px;
    width: 100%;
    height: 1px;
    background-color: currentColor;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.3s ease-in-out;
}
a.bttn-link:hover::after {
    transform: scaleX(1);
}

/* Icon styles within a BUTTON*/
.bttn svg {
    display: inline-flex;
    width: var(--bttn-icon-size);
    height: var(--bttn-icon-size);
    stroke-width: 2;
    align-self: center;
    flex-shrink: 0;
    transition: transform .3s ease-in-out;
}

/* Icon-ONLY button adjustment */
.bttn-icon {
    width: 2.35rem !important ;  
    height: 2.35rem !important;
    border-radius: calc(var(--bttn-radius)*1.2);
    cursor: pointer;
    display: flex;
    align-self: center;
    background: transparent;
    box-shadow: none;
}
.bttn-icon.outline {
    border: 1px solid var(--bttn-outline-border);
    box-shadow: var(--shadow-sm);
}
.bttn-icon svg {
    width: calc(var(--bttn-icon-size)*1.4);
    height: calc(var(--bttn-icon-size)*1.4); 
}
.bttn-icon:hover {
    background: var(--bttn-ghost-hover);
}

/* Bottom Sticky Button */
.bttn-sticky {
    align-self: center;
    bottom: 1rem;
	box-shadow: var(--blue-glow); 
	position: sticky;
    border: solid 1px var(--bttn-outline-border);
    transition: all .3s ease-in-out;
    letter-spacing: var(--ls-base) !important;
    line-height: normal;
}

.bttn-sticky:hover, 
.bttn-sticky.active {
	background-color: #0072ff;
	color: white;
    opacity: 1;
    transform: translateY(-2px);
}

@media (max-width: 600px) {
    .bttn-sticky {
        bottom: 3rem;
        width: 80%;
    }
}

/**************************************************
 *                                                *
 *                Button States                   *
 *                                                *
 **************************************************/
/*.bttn.error {
    color: white;
    background: var(--bttn-red) !important;
    border: solid 1px var(--bttn-red) !important;
    opacity: .8;
}*/
.bttn.error {
    color: var(--bttn-red) !important;
    background-color: color-mix(in srgb, var(--bttn-red) 18%, transparent) !important;
    border: solid .5px var(--bttn-red) !important;
    box-shadow: 0 0 10px 8px color-mix(in srgb, var(--bttn-red) 15%, transparent);
    backdrop-filter: blur(10px);
}

.bttn.success {
    color: var(--active-green) !important;
    background-color: color-mix(in srgb, var(--active-green) 18%, transparent)  !important;
    border: solid .5px var(--active-green) !important;
    box-shadow: 0 0 10px 8px color-mix(in srgb, var(--active-green) 15%, transparent);
    backdrop-filter: blur(10px);
}

.new-spinner {
    display: inline-flex;
    align-items: center;
}
.new-spinner::before {
    content: "";
    display: block;
    flex-shrink: 0;
    width: var(--bttn-text-size);
    height: var(--bttn-text-size);
    border: 2px solid rgba(255,255,255,0.3);
    border-top-color: currentColor;
    border-radius: 50%;
    animation: spinner-rotate 0.6s linear infinite;
    backface-visibility: hidden;
    transform-style: preserve-3d;
    will-change: transform;
}

@keyframes spinner-rotate {
    from {
      transform: rotate(0deg);
    }
    to {
      transform: rotate(360deg);
    }
}

/**************************************************
 *                                                *
 *                      Badges                    *
 *                                                *
 **************************************************/

/* Base style */
.badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: normal;
    width: fit-content;
    padding: var(--badge-padding-y) var(--badge-padding-x);
    text-transform: capitalize;
    font-size: .6rem;
    letter-spacing: var(--ls-base);
    font-weight: 600;
    white-space: nowrap;
    border-radius: 4px;
    transition: background-color var(--transition-speed) var(--transition-ease), color var(--transition-speed) var(--transition-ease);
}

.badge.new {
    background-color: var(--contrast-color);
    color: var(--text-contrast-color);
    opacity: .75;
}

.badge.beta {
    font-size: var(--text-xxs);
    color: #7c7c7c;
    background-color: var(--badge-bg-beta);
    margin-left: 7px;
}

.badge-primary {
    color: white; 
    background-color: black;
}
.badge-secondary {
    color: var(--bttn-secondary-text);
    background: var(--bttn-secondary-bg);
    border: 2px solid var(--bttn-secondary-bg);    
    box-shadow: none;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

.badge-outline {
    background: transparent;
    border: 1px solid var(--bttn-outline-border);
    box-shadow: none;
    color: var(--bttn-outline-text);
}

.badge-destructive {
    background: var(--bttn-destructive-bg);
    color: var(--bttn-destructive-text);
}


/* Status Indicator Badge - prefixes a dot within badges */
.status {
	--status-color: var(--bttn-secondary-text);
    font-size: var(--text-sm);
    color: var(--status-color);
    background-color: color-mix(in srgb, var(--status-color) 8%, transparent);
}

.status::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background-color: currentColor;
    margin-right: 6px;
}

.status.active {
    --status-color: var(--active-green);
}

.status.canceled {
    --status-color: var(--bttn-destructive-bg);
}


/**************************************************
 *                                                *
 *              PHY TIER BADGING                  *
 *                                                *
 **************************************************/

.ultra-badge, .pro-badge {
	position: absolute;
	top: 15px;
	right: 15px;
    padding: var(--badge-padding-y) var(--badge-padding-x) !important;
    background: var(--phy-pro-gradient);
	color: white;
	font-size: var(--text-xxs);
	font-weight: 500;
	text-transform: uppercase;
	border-radius: 4px;
	box-shadow: var(--shadow-layered);
	z-index: 10; 
    line-height: normal;
}

.ultra-inline-badge, .pro-inline-badge {
    display: inline; 
    padding: var(--badge-padding-y) var(--badge-padding-x);
    background: var(--phy-pro-gradient);
    color: white;
    font-size: var(--text-xxs);
    font-weight: 500;
    line-height: normal;
    text-transform: uppercase;
    border-radius: 4px;
    box-shadow: var(--shadow-layered);
    align-items: center;
    margin: 0 0.25rem; 
}

/**************************************************
 *                                                *
 *                 Upgrade Button                 *
 *                                                *
 **************************************************/

#upgrade-to-pro {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    background-color: var(--card-bg-color);
    padding: 1.8em;
    width: 100%;  
    box-shadow: var(--shadow-layered);
    box-sizing: border-box;
    border-radius: 10px;
    align-items: center;
    justify-content: space-between;
    margin-top: auto;
}

#upgrade-to-pro .bttn{
    width: 100%;
}

/**************************************************
 *                                                *
 *            Theme toggle animations             *
 *                                                *
 **************************************************/
 .theme-icon {
    position: absolute;
    transition: transform 300ms !important;
}

.theme-icon.sun {
    transform: scale(0);
}

/* Dark theme states */
[data-theme="dark"] .theme-icon.moon {
    transform: rotate(360deg) scale(0);
}

[data-theme="dark"] .theme-icon.sun {
    transform: scale(1) rotate(360deg);
}

/* THESE FINAL BUTTONS NEED TO BE AGGREGATED TO USE OUR OTHER BUTTONS 

Places to remove save button, phy settings popups*/
/*
 .button-common {
	padding: 1.2rem;
	border: none;
	border-radius: 8px;
	cursor: pointer;
	background-color: var(--brand-color);
	color: white;
	font-family: 'Poppins', sans-serif;
	font-weight: 400;
    letter-spacing: .02rem;
	display: flex;
	align-items: center;
	gap: 0.5rem;
	justify-content: center;
	transition: background-color 0.3s, opacity 0.3s;
}

.button-common:hover {
	background-color: var(--brand-color) !important;
	opacity: 0.8;
}

.button-common.button-caution {
	background-color: var(--bttn-caution-bg-color);
	color: white;
}

.button-common.button-caution:hover {
	background-color: var(--bttt-caution-bg-color-hover);
}

a.button-common {
    text-decoration: none;
}*/
/* Base theme (light) */
:root {
    font-size: 16px;
    -hue:100;

    /*Brand Colors*/
    --brand-color: #0072ff;
    --brand-light: rgba(59, 130, 246, 0.2);
    --phy-pro-gradient: linear-gradient(169deg, #2575fc 25%, #6a11cb); 

    /* Colors */
    --bg-color: rgb(255, 255, 255);
    --section-bg-color: rgb(255, 255, 255);
    --card-bg-color: rgb(248, 248, 248);
    --contrast-color: rgb(0, 0, 0);
    --contrast-medium-color: rgba(0, 0, 0, 0.5);
    --contrast-light-color: rgba(0, 0, 0, 0.1);

    --bg-color-rgb: 255, 255, 255; 
    --card-bg-color-rgb: 248, 248, 248;

    /*Table Colors*/
    --table-hover: rgb(220,220,220);
    --table-hover-light: rgba(250, 250, 250, 0.9);

    /* Extra Colors */ 
    --active-green: #22C55E;

    /* Hover Colors */
    --hover-100: rgb(240, 240, 240); 
    --hover-90: rgb(240, 240, 240, .9); 
    --hover-80: rgb(240, 240, 240, .8);
    --hover-75: rgb(240, 240, 240, .75); 
    --hover-50: rgba(240, 240, 240, 0.5); 
    
    /* Text Colors */
    --text-primary-color: #141414;
    --text-secondary-color: rgb(69, 69, 69);
    --text-tertiary-color: rgb(140, 140, 140);
    --text-muted-color: rgb(200, 200, 200);
    --field-text-color: rgb(80, 80, 80);
    --info-icon: rgba(100, 100, 100, 0.69);
    --text-contrast-color: white;

    /*Background Styles */
    --spotlight-top-left: radial-gradient(circle 180px at 0% 0%, var(--card-bg-color), var(--bg-color));
    --spotlight-fade-to-bg: radial-gradient(circle 230px at 0% 0%, transparent, var(--bg-color)); /*Blured background required*/

    /* Input/Field Styles */
    --input-bg: #fafafa;
    --input-border-color: #dadadad3;
    --input-focus: #edededd3; 
    --toggle-slider-bg: #d7d7d7;
    --input-field-padding-x: .7rem;
    --input-field-padding-y: .7rem; 

    /* Button Styles */
    --bttn-caution-bg-color: #4c9dffb9;
    --bttt-caution-bg-color-hover: #ff1515;

    /* Box Shadows */
    --shadow-sm: 0 1px 2px .2px rgba(0, 0, 0, 0.1);
    --shadow-md: 0 2px 7px .25px rgba(0, 0, 0, 0.15);
    --shadow-lg: 0 2px 5px .5px rgba(0, 0, 0, 0.18);
    --shadow-layered: 0px 2px 4px rgba(0, 0, 0, 0.15), 0px 6px 8px rgba(0, 0, 0, 0.075), 0px 10px 12px rgba(0, 0, 0, 0.035);
    --blue-glow: 0 0 15px 0px rgba(9, 117, 241, 0.69);


    /* Letter Spacing */
    --ls-xs: -.02rem; 
    --ls-sm: -.01rem; 
    --ls-base: .0rem;
    --ls-lg: .01rem; 
    --ls-xl: .02rem; 

    /* Typography */
    --text-xxs: 0.65rem;    /* xx small */
    --text-xs: 0.75rem;     /* extra small */
    --text-sm: 0.82rem;     /* small */
    --text-md: 0.85rem;     /* medium */
    --text-base: .94rem;    /* standard */
    --text-plus: 1.05rem;   /* standard */
    --text-lg: 1.2rem;      /* large */
    --text-xl: 1.4rem;      /* extra large */
    --text-xxl: 1.65rem;      /* extra extra large */

    /*Tooltip */
    --tooltip-bg: rgb(40, 40, 40); 

    /* Animation */
    --transition-speed: 0.3s;
    --transition-ease: ease-in-out;


    /* Virtual Keyboard For MathLive*/
    --keyboard-accent-color: #0f7bff;
    --keyboard-background: rgba(255, 255, 255, 0.95);
    --keyboard-toolbar-background: transparent;
    --keyboard-toolbar-background-hover: red !important;

    --keyboard-toolbar-text: var(--text-secondary-color);
    --keycap-text: var(--text-secondary-color);
    --keycap-text-pressed: var(--text-secondary-color);
    --keycap-primary-text: var(--text-secondary-color);
    --keycap-secondary-text: var(--text-secondary-color);

    --keycap-background: #ececec;
    --keycap-background-hover: #dcdcdc;
    --keycap-background-pressed: #00000062;
    --keycap-secondary-background: #d5d5d5;
    --keycap-secondary-background-hover: #c9c9c9;
    
    --keycap-font-size: var(--text-base);
    --keycap-shift-font-size: var(--text-base);

}

/* Dark theme */ 
[data-theme="dark"] {
    /*Brand Colors*/
    --brand-light: rgba(59, 130, 246, 0.3);

    /* Colors */
    --bg-color: rgb(18, 18, 18);
    --section-bg-color: rgb(24, 24, 24);
    --card-bg-color: rgb(42, 42, 42);
    --contrast-color: rgb(255, 255, 255);
    --contrast-medium-color: rgba(255, 255, 255, 0.4);
    --contrast-light-color: rgba(255, 255, 255, 0.2);

    --bg-color-rgb: 18, 18, 18; 
    --card-bg-color-rgb: 42, 42, 42;

    /* Hover Colors */
    --hover-100: rgb(0, 0, 0);    /* 100% opacity */
    --hover-90: rgba(18, 18, 18, .9); 
    --hover-80: rgba(18, 18, 18, 0.8); 
    --hover-75: rgba(18, 18, 18, 0.75);  
    --hover-50: rgba(18, 18, 18, 0.5);   /* 50% opacity */

    /* Text Colors */
    --text-primary-color: white;
    --text-secondary-color: rgb(210, 210, 210);
    --text-tertiary-color: rgb(149, 149, 149);
    --text-muted-color: rgb(75, 75, 75);
    --field-text-color: #f5f5f5;
    --info-icon: rgba(200, 200, 200, 0.69);
    --text-contrast-color: black; 

    /*Table Colors*/
    --table-hover: radial-gradient(circle at 0% 50%, rgba(0, 114, 255, 1) 0%, rgba(0, 114, 255, 0.5) 50%, rgba(0, 114, 255, 0.1) 100%);
    --table-hover-light: radial-gradient(circle at 30% 50%, rgba(0, 114, 255, 0.1) 0%, rgba(0, 114, 255, 0.05) 60%, var(--bg-color) 100%);
    --table-hover-text: white;

    /*Background Styles */
    --spotlight-top-left: radial-gradient(circle 180px at 0% 0%, var(--card-bg-color), var(--bg-color));
    --spotlight-fade-to-bg: radial-gradient(circle 230px at 0% 0%, transparent, var(--bg-color)); /*Blured background required*/

    /* Input/Field Styles */
    --input-bg: #1b1b1b;
    --input-border-color: #2a2a2a;
    --input-focus: #757575; 
    --toggle-slider-bg: #8383836e;

    /* Shadows */
    --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
    --shadow-md: 2px 2px 20px .5px rgba(0, 0, 0, 0.35);
    --shadow-lg: 0 1px 2px .5px rgba(0, 0, 0, 0.45);
    --shadow-layered: 0px 1px 2px rgba(0, 0, 0, 0.4), 0px 3px 4px rgba(0, 0, 0, 0.3), 0px 5px 6px rgba(0, 0, 0, 0.2);
    --blue-glow: 0 0 20px rgba(9, 117, 241, 0.45);

    /* Letter Spacing */
    --ls-xs: -.028rem; 
    --ls-sm: -.024rem; 
    --ls-base: .012rem;
    --ls-lg: .024rem; 
    --ls-xl: .028rem; 

    /* Button Styles */
    --bttn-caution-bg-color: #4c9dff31;
    --bttt-caution-bg-color-hover: #ff4c4c;

    /*Tooltip */
    --tooltip-bg: rgb(80, 80, 80); 
}

/* ******************************************** */
/*                Math Keyboard                 */
/* ******************************************** */

body .ML__keyboard {
    /* Overall keyboard padding */
    --keyboard-padding-horizontal: 6px !important;
    --keyboard-padding-top: 6px !important;
    --keyboard-padding-bottom: 6px !important;  /* Increase this for more bottom space */

    /* Row-specific padding */
    --keyboard-row-padding-left: 0px !important;
    --keyboard-row-padding-right: 0px !important;

    /* Other styles */
    --keyboard-toolbar-text: var(var(--text-primary-color) !important);
    --keyboard-toolbar-background-hover: var(--bttn-ghost-hover) !important;
    --keyboard-padding-bottom: 10px !important;
    
    /* Individual key spacing */
    --keycap-gap: 6px !important;  /* Space between keys */
    --keycap-glyph-size: 16px !important
}

/* Dark Mode Math Keyboard */
[data-theme="dark"] .ML__keyboard {
    /* Main backgrounds */
    --keyboard-background: var(--input-bg) !important;

    /* Keycap backgrounds */
    --keycap-background: #3a3a3a !important;
    --keycap-background-hover: #101010 !important;
    --keycap-background-active: #2f2f2f !important;
    --keycap-background-border: #1f1f1f !important;
    --keycap-background-border-bottom: #2f2f2f !important;
    --keycap-text: var(--text-secondary-color) !important;
    --keycap-text-pressed: white !important;
    --keycap-background-pressed: black !important;
    --keycap-text-hover: var(--text-primary-color) !important;
    
    /* Secondary buttons (shift, etc) */
    --keycap-secondary-background: rgb(35 35 35) !important;
    --keycap-secondary-background-hover: #4a4a4a !important;
    --keycap-secondary-text: var(--text-primary-color) !important;
    --keycap-secondary-text-hover: var(--text-primary-color) !important;
    --keycap-secondary-background-pressed: black !important;
    --keycap-secondary-text-pressed: white !important;
}

/* Light Mode Math Keyboard */
[data-theme="light"] .ML__keyboard {
    /* Main backgrounds */
    --keyboard-background: var(--input-bg) !important;

    /* Keycap backgrounds */
    --keycap-background: #f0f0f0 !important;
    --keycap-background-hover: #e0e0e0 !important;
    --keycap-background-active: #d8d8d8 !important;
    --keycap-background-border: #e5e5e5 !important;
    --keycap-background-border-bottom: #d0d0d0 !important;
    --keycap-text: var(--text-secondary-color) !important;
    --keycap-text-pressed: black !important;
    --keycap-background-pressed: white !important;
    --keycap-text-hover: var(--text-primary-color) !important;
    
    /* Secondary buttons (shift, etc) */
    --keycap-secondary-background: rgb(220 220 220) !important;
    --keycap-secondary-background-hover: #d0d0d0 !important;
    --keycap-secondary-text: var(--text-primary-color) !important;
    --keycap-secondary-text-hover: var(--text-primary-color) !important;
    --keycap-secondary-background-pressed: white !important;
    --keycap-secondary-text-pressed: black !important;
}
/* ******************************************** */
/*             User Font Sizing                 */
/* ******************************************** */

[data-scale="small-text"] {
    --text-xs: calc(0.72rem * .9);
    --text-sm: calc(0.82rem * .9);
    --text-md: calc(0.85rem * .9);
    --text-base: calc(.91rem * .9);
    --text-lg: calc(1.2rem * .9);
    --text-xl: calc(1.4rem * .9);
}

[data-scale="large-text"] {
    --text-xs: calc(0.72rem * 1.15);
    --text-sm: calc(0.82rem * 1.15);
    --text-md: calc(0.85rem * 1.15);
    --text-base: calc(.91rem * 1.15);
    --text-lg: calc(1.2rem * 1.15);
    --text-xl: calc(1.4rem * 1.15);
}

/* Shine Animation Colors */
:root {
    --shine-dark: #868686;
    --shine-light: rgba(255, 255, 255, 0.8);
}

[data-theme="dark"] {
    --shine-dark: #4a4a4a;
    --shine-light: rgba(255, 255, 255, 0.9);
}

/* ================================
   TABLE STYLES
   ================================ */

/* Base Table Container */
table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: var(--shadow-md);
    margin: 1.5rem 0;
    border: 1px solid var(--input-border-color);
    position: relative;
    font-size: 0.875rem;
    background-color: var(--bg-color) !important;
    color: var(--text-primary-color);
  }
  
  /* Table Cell Base Styles */
  table th,
  table td {
    all: unset;
    display: table-cell;
    box-sizing: border-box;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--input-border-color);
    color: var(--text-primary-color);
    transition: var(--transition-speed) var(--transition-ease);
    border-top: none !important;
  }
  
  /* Table Header Styles */
  table th {
    background-color: var(--card-bg-color) !important;
    font-weight: 600;
    text-align: left;
    position: relative;
    user-select: none;
  }
  
  /* Header Hover Effect */
  table th::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    width: 0;
    height: 2px;
    background-color: var(--brand-color) !important;
    transition: var(--transition-speed) var(--transition-ease);
  }
  
  table th:hover::after {
    width: 100%;
  }
  
  /* Table Row Styles */
  table tr {
    transition: var(--transition-speed) var(--transition-ease);
    animation: fadeIn 0.3s ease-out forwards;
    animation-delay: calc(var(--row-index, 0) * 0.05s);
    opacity: 0;
  }
  
  table tr:last-child td {
    border-bottom: none;
  }
  
  /* Row Animation Delays */
  table tr:nth-child(1) { --row-index: 0; }
  table tr:nth-child(2) { --row-index: 1; }
  table tr:nth-child(3) { --row-index: 2; }
  table tr:nth-child(4) { --row-index: 3; }
  table tr:nth-child(5) { --row-index: 4; }
  
  /* ================================
     TABLE HOVER STATES
     ================================ */
  
  /* Remove Default WordPress Zebra Striping */
  table tbody > tr:nth-child(odd) > td,
  table tbody > tr:nth-child(odd) > th {
    background-color: var(--bg-color);
  }
  
  /* Row Hover Effects - Exclude Headers */
  table tbody tr:hover td,
  table tbody tr:hover th {
    background-color: var(--card-bg-color) !important;
  }
  
  /* Ensure headers maintain their background even on hover */
  table thead th,
  table th {
    background-color: var(--card-bg-color) !important;
  }
  
  /* ================================
     TABLE FOCUS STATES
     ================================ */
  table:focus-within {
    outline: 2px solid var(--brand-color);
    outline-offset: 2px;
  }
  
  /* ================================
     RESPONSIVE DESIGN
     ================================ */
  @media (max-width: 640px) {
    table {
      font-size: 0.75rem;
    }
    
    table th,
    table td {
      padding: 0.5rem 0.75rem;
    }
  }


/* ******************************************** */
/*                     Tooltips                 */
/* ******************************************** */

[tooltip]::after {
  content: attr(tooltip);
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  white-space: normal;
  width: max-content;
  min-width: fit-content; 
  max-width: 150px;
  box-sizing: border-box;
  padding: 0.4rem .6rem;
  border-radius: 5px;
  background: var(--tooltip-bg) !important;
  color: #fff;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-size: .69rem;
  letter-spacing: var(--ls-lg);
  font-weight: 400;
  line-height: normal;
  text-align: center;
  font-weight: 400;
  box-shadow: var(--shadow-layered);
  opacity: 0;
  transition: opacity 0.3s, transform 0.3s;
  z-index: 1000;
  pointer-events: none;
  word-wrap: break-word;
  text-overflow: ellipsis;
}

[tooltip][flow="down"] {
  position: relative;
}

[tooltip][flow="down"]::after {
  top: calc(100% + 5px);
}

[tooltip][flow="down"]:hover::after {
  opacity: 1;
  transform: translateX(-50%) translateY(5px);
}

[tooltip][flow="up"] {
  position: relative;
}

[tooltip][flow="up"]::after {
  bottom: 100%;
  transform: translateX(-50%) translateY(5px);
}

[tooltip][flow="up"]:hover::after {
  opacity: 1;
  transform: translateX(-50%) translateY(-5px);
}
[tooltip][flow="right"] {
    position: relative; 
}

[tooltip][flow="right"]::after {
    top: 50%;
    left: calc(100% + 5px); 
    transform: translateX(0) translateY(-50%);
}

[tooltip][flow="right"]:hover::after {
    opacity: 1; 
    transform: translateX(5px) translateY(-50%); 
}

[tooltip][flow="left"] {
    position: relative; 
}

[tooltip][flow="left"]::after {
    top: 50%;
    right: calc(100% + 5px); 
    left: auto; 
    transform: translateX(5px) translateY(-50%);
}

[tooltip][flow="left"]:hover::after {
    opacity: 1; 
    transform: translateX(-5px) translateY(-50%); 
}

@media (max-width: 575px) {
  [tooltip]::after {
    max-width: 100px;
  }
}

/**************************************************
 *                                                *
 *           Spinners/Loading Indicator           *
 *                                                *
 **************************************************/

/* Standard white spinner variation (for use in buttons)*/
.custom-spinner {
    border: 0.15rem solid #f3f3f3;
    border-top: 0.15rem solid #0072ff;
    border-radius: 50%;
    width: 1rem;
    height: 1rem;
    display: inline-block;
    animation: spin 1s linear infinite;
    margin-left: 0.5rem;
    vertical-align: middle;
    white-space: nowrap;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/**************************************************
 *                                              *
 *           CUSTOM DROP DOWN FIELDS            *
 *                                              *
 *************************************************/

.custom-dropdown {
	position: relative;
	width: 100%;
}

.custom-dropdown-input {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    font-size: var(--text-md) !important;
    letter-spacing: var(--ls-base) !important;
	width: 100%;
	padding: var(--input-field-padding-y) var(--input-field-padding-x);
	border: 1px solid var(--input-border-color);
	background-color: var(--input-bg);
	color: var(--field-text-color);
	border-radius: var(--bttn-radius);
	cursor: pointer;
	text-align: left;
	text-transform: capitalize;
	position: relative;
	transition: all .3s ease-in-out;
    
}

.custom-dropdown-input:focus {
    box-shadow: 0 0 0px 2.5px var(--input-focus);
    outline: none;
}

.custom-dropdown-input::after {
	content: '';
	background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 6"%3E%3Cpath fill="none" stroke="%23ccc" stroke-width="1.5" d="M1 1l4 4 4-4"%3E%3C/path%3E%3C/svg%3E');
	position: absolute;
	right: 1rem;
	top: 50%;
	width: 10px;
	height: 6px;
	background-size: 10px 6px;
	background-repeat: no-repeat;
	transform: translateY(-50%) rotate(0deg);
	pointer-events: none;
	transition: transform 0.3s ease;
}

.custom-dropdown-input[aria-expanded="true"]::after {
	transform: translateY(-50%) rotate(180deg);
}

.custom-dropdown-list {
	position: absolute;
	top: calc(100% + .75rem);
	left: 0;
	right: 0;
	background-color: var(--input-bg);
	border: 1px solid var(--input-border-color);
    border-radius: var(--bttn-radius);
	max-height: 0;
	z-index: 1000; /*Higher than overlay*/
	padding: 4px;
	margin: 0;
	list-style-type: none;
	box-shadow: var(--shadow-md);
	opacity: 0;
	visibility: hidden;
	transition: max-height 0.3s ease-out, opacity 0.2s ease-out, background-color 0.3s, border-color 0.3s;
    box-sizing: border-box;
}

.custom-dropdown-list.show {
	visibility: visible;
	max-height: 250px;
	opacity: 1;
	overflow-y: auto;
}

.dropdown-item {
	padding: var(--input-field-padding-y) var(--input-field-padding-x);
	cursor: pointer;
    border-radius: var(--bttn-radius);
    font-size: var(--text-md);
	transition: background-color 0.15s ease, color 0.15s ease;
	color: var(--field-text-color);
}

.dropdown-item:hover {
	background-color: var(--hover-90);
}

.dropdown-item:focus {
    background-color: var(--brand-color);
	color: #ffffff;
	outline: none;
}

/* Ghost text for input based drop downs */
.autocomplete-ghost {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    font-size: var(--text-md) !important;
    letter-spacing: calc(var(--ls-base)*1.45) !important;
    line-height: normal !important;
	padding: var(--input-field-padding-x) var(--input-field-padding-y) !important;
	overflow-y: auto;
	opacity: 1;
    position: absolute;
	top: 0;
	left: 0;
	width: fit-content;
	color: var(--text-muted-color);
	pointer-events: none;
	text-transform: lowercase;
    border: solid 1px transparent;
}

@media (max-width: 600px) {
	.custom-dropdown-input {
		padding: calc(var(--input-field-padding-y)*.75) calc(var(--input-field-padding-x)*.75);
	}
    .dropdown-item {
		padding: calc(var(--input-field-padding-y)*.75) calc(var(--input-field-padding-x)*.75);
	}
}

/**************************************************
 *                                                *
 *            SLIDING TOGGLE BUTTONS              *
 *                                                *
 **************************************************/


.slider-toggle {
   display: inline-flex;
   height: 26px; 
   width: 44px;
   position: relative; 
   transform: scale(.85);
}

.slider-toggle input {
   display: none;
}

.slider {
   background-color: var(--toggle-slider-bg);
   bottom: 0;
   cursor: pointer;
   left: 0;
   position: absolute;
   right: 0;
   top: 0;
   transition: background-color 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow .75s cubic-bezier(0.34, 1.56, 0.64, 1);
   border-radius: 32px;
}

.slider-toggle:focus-visible {
   outline: 2px solid var(--brand-color);
   outline-offset: 4px;
   border-radius: 100px;
}

.slider:before {
   height: 20px;   
   width: 20px;    
   bottom: 3px;
   left: 3px;
   content: "";    
   background-color: white;
   position: absolute;
   transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
   border-radius: 50%;
}

input:checked + .slider:before {
   transform: translateX(18px);
}

input:checked + .slider {
   background-color: var(--brand-color) !important;
   box-shadow: var(--blue-glow);
}

/**************************************************
 *                                                *
 *        		Custom Popups			          *
 *                                                *
 **************************************************/

.overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0);
    backdrop-filter: blur(0px);
    -webkit-backdrop-filter: blur(0px);
    transition: all 0.3s ease-in-out;
    z-index: 999;
}

.popup-container {
    display: flex;
    flex-direction: column; 
    gap: .5rem;
    max-width: 80vw;
    max-height: 80vh;
    height: fit-content;
    padding: 2rem;
    border-radius: .75rem;
    position: fixed;
    /* Center using left/right/top/bottom and margin auto */
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    margin: auto;
    opacity: 0;
    font-size: var(--text-base); 
    box-shadow: var(--shadow-layered);
    transform: translateY(-25px); 
    transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
    pointer-events: none;
    z-index: 9999;
    overflow-y: auto;
    background: var(--spotlight-top-left);
    flex-shrink: 0;
}

.popup-container.boxed {
    width: fit-content;
    height: fit-content;
    max-width: 350px;
    max-height: 85vh;
}

.popup-container.active {
    opacity: 1;
    pointer-events: all;
    transform: translateY(0);
}

.popup-container svg {
    stroke-width: 2.4;
}

@media (max-width: 600px) {
    .popup-container {
        font-size: var(--text-md); 
        padding: 1.5rem;
        max-width: 85vw !important;
        min-width: 69vw;
    }
}

@media (max-width: 400px) {
    .popup-container {
        font-size: var(--text-sm) !important; 
        padding: .8rem !important;
        max-width: 80vw !important;
        min-width: 80vw !important;
    }
}

.popup-container .close-button {
    position: absolute;
    top: 16px;
    right: 16px;
    z-index: 1;
}

.popup-header {
    display: flex;
    align-items: center;
    gap: 8px;
}
.popup-header h3 {
    margin: 0 !important;
    font-size: var(--text-base) !important;
    font-weight: 500;
    color: var(--text-primary-color) !important;
}
.popup-header svg {
    stroke: var(--text-primary-color);
}

.popup-content p {
    margin-block-start: 0;
    color: var(--text-secondary-color);
    line-height: 1.6rem;
    font-size: var(--text-md);
}

.popup-buttons {
    display: flex; 
    justify-content: flex-end;
    gap: 10px;
}

/**************************************************
 *                                                *
 *    Left and Right Fade on Horizontal Scroll    *
 *                                                *
 **************************************************/

 .fade-overlay {
    position: absolute;
    top: 0;
    height: 100%;
    max-width: 65px;
    width: 12%;
    pointer-events: none;
    z-index: 10;
    opacity: 0;
    transition: opacity .3s ease-in-out;
}

.scroll-wrapper {
    position: relative;
    min-width: 0;
    flex: 1; 
    transition: all .3s ease-in-out;
    box-sizing: border-box;
}

.fade-left {
    left: 0px;
    background: var(--bg-color);
    -webkit-mask-image: linear-gradient(90deg, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.8) 25%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.1) 75%, transparent 100%);
    mask-image: linear-gradient(90deg, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.8) 25%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.1) 75%, transparent 100%);
    -webkit-mask-smoothing: antialiased;
    will-change: mask-image;
    transition: background-color .3s ease-in-out;
}

.fade-right {
    right: 0px;
    background: var(--bg-color);
    -webkit-mask-image: linear-gradient(270deg, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.8) 25%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.1) 75%, transparent 100%);
    mask-image: linear-gradient(270deg, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.8) 25%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.1) 75%, transparent 100%);
    -webkit-mask-smoothing: antialiased;
    will-change: mask-image;
    transition: background-color .3s ease-in-out;
}

.x-scroll-fade {
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
    flex-wrap: nowrap;
    box-sizing: border-box;
    overflow-x: auto;
    cursor: grab; 
    scrollbar-width: none;
    -ms-overflow-style: none;
    gap: 1rem;
    background-color: transparent;
}
 
 .x-scroll-fade::-webkit-scrollbar {
    display: none;
}

/**************************************************
 *                                                *
 *        		Image LightBox			          *
 *                                                *
 **************************************************/
#lightboxContainer {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.7);
    display: flex;
    justify-content: center;
    align-items: center;
    visibility: hidden;
    z-index: 1000;
}

#lightboxContainer img {
    max-width: 88%;
    max-height: 88%;
    height: 88%;
    width: 88%;
    object-fit: contain;
}

#closeLightbox {
    position: absolute;
    top: 20px;
    right: 20px;
    width: 25px;
    height: 25px;
    color: #fff;
    border-radius: 50%;
    border: 2px solid #fff;
    cursor: pointer;
    box-shadow: var(--blue-glow);
    transition: all .3s ease-in-out;
}

#closeLightbox:hover {
    opacity: .8;
    color: rgba(255, 255, 255, 0.8)
}









/* Drop Image On Page Overlay */
#drop-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(255, 255, 255, 0.5);
    backdrop-filter: blur(10px); 
    display: flex;
    justify-content: center;
    align-items: center;
    font-family: 'Poppins', sans-serif;
    font-size: 1.5rem;
    font-weight: 600;
    color: #333;
    z-index: 9999;
    visibility: hidden; 
    pointer-events: none;
}


.hidden {
    display: none;
}

.katex {
    font-size: 1.18em !important;
}

.no-select {
    user-select: none;
    -webkit-user-select: none;
}

.hidden-text {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    border: 0;
  }


.or-divider {
    display: flex;
    align-items: center;
    text-align: center;
    color: var(--text-secondary-color);
    font-size: var(--text-md);
    margin: 8px 0;
}

.or-divider::before,
.or-divider::after {
    border-bottom-width: 0.5px;
    content: '';
    flex: 1;
    border-bottom: 1px solid var(--input-border-color);
}
    
.or-divider::before {
    margin-right: 1em;
}

.or-divider::after {
    margin-left: 1em;
}
:root {
    /* Icon base properties */
    --icon-stroke-width: 2.15;
    --icon-size: 18px; 
 }
 
 :root[data-theme="dark"] svg {
    --icon-stroke-width: 2.3;
 }
 
  /* Base icon styles */
 [data-lucide] {
    width: var(--icon-size);
    height: var(--icon-size);
    stroke-width: var(--icon-stroke-width);
    transition: stroke var(--transition-speed) var(--transition-ease);
    flex-shrink: 0;
 }
 
 /* Style for info icons */
 [data-lucide="info"] {
    width: var(--bttn-icon-size) !important;
    height: var(--bttn-icon-size) !important;
    display: inline-flex;
    stroke: var(--info-icon) !important;
    align-self: center;
    box-shadow: none;
    margin-bottom: -1px;
 }
 
  /* Size variations */
 .icon-sm {
    width: calc(var(--icon-size) * 0.75);
    height: calc(var(--icon-size) * 0.75);
 }
  
 .icon-lg {
    width: calc(var(--icon-size) * 1.5);  
    height: calc(var(--icon-size) * 1.5);
 }
 
 
