/* Theme Variables
   ========================================================================== */
   :root {
	/* Colors - Core Palette */
	--color-background: #000;
	--color-text: #fff;
	--color-accent-gradient: linear-gradient(325deg, #00ff0080, #4ecdc4);
	--color-accent: #ffd700; /* Solid color for text */
	--color-gradient: linear-gradient(45deg, #ff6b6b, #4ecdc4);
	--color-link: #4ecdc4;
	--color-link-hover: #ff6b6b;
	--color-link-visited: #9d8cff;

	/* Colors - UI Elements */
	--color-overlay: rgba(0, 0, 0, 0.85);
	--color-overlay-light: rgba(255, 255, 255, 0.1);
	--color-border: rgba(255, 255, 255, 0.1);
	--color-hover: rgba(255, 255, 255, 0.05);
	--glass-background: rgba(0, 0, 0, 0.75);

	/* Colors - Status & Messages */
	--color-error: #f44;
	--color-error-bg: rgba(255, 0, 0, 0.2);
	--color-admin-bg: rgba(255, 193, 7, 0.15);
	--color-admin-border: rgba(255, 193, 7, 0.3);
	--color-admin-text: #ffd54f;
	--color-admin-time: rgba(255, 193, 7, 0.7);
	--color-recording: #ff0000;

	/* Spacing Scale */
	--space-xs: 4px;
	--space-sm: 8px;
	--space-md: 12px;
	--space-lg: 16px;
	--space-xl: 24px;
	--space-xxl: 32px;

	/* Layout */
	--content-max-width: 1200px;
	--transcript-max-width: 800px;
	--control-panel-width: 320px;

	/* Border Radius */
	--radius-sm: 6px;
	--radius-md: 8px;
	--radius-lg: 12px;

	/* Transitions */
	--transition-fast: 0.2s ease;
	--transition-normal: 0.3s ease;

	/* Elevation */
	--shadow-normal: 0 4px 15px rgba(0, 0, 0, 0.3);
	--shadow-hover: 0 6px 20px rgba(0, 0, 0, 0.4);

	/* Glass Effect */
	--glass-blur: blur(15px);
	--glass-border: 1px solid var(--color-overlay-light);
}

/* Reset & Base Styles
   ========================================================================== */
body {
	background: var(--color-background);
	color: var(--color-text);
	margin: 0;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

/* Typography
   ========================================================================== */
.font-system {
	font-family: system-ui, -apple-system, sans-serif;
}
.font-roboto {
	font-family: "Roboto", sans-serif;
}

/* Utilities
   ========================================================================== */
.hidden {
	display: none !important;
}

.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Layout Container
   ========================================================================== */
.stream-container {
	width: 100%;
	max-width: var(--content-max-width);
	margin: 0 auto;
	padding: var(--space-lg);
	box-sizing: border-box;
	position: relative;
}

/* Video Section
   ========================================================================== */
.video-container {
	width: 100%;
	margin-top: var(--space-xl);
	position: relative;
	display: none;
}

.video-frame {
	width: 100%;
	aspect-ratio: 16/9;
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-normal);
	background: var(--glass-background);
	border: var(--glass-border);
	transition: transform var(--transition-normal);
}

.video-frame:hover {
	transform: scale(1.01);
}

/* Controls Panel
   ========================================================================== */
.controls-panel {
	position: fixed;
	top: var(--space-lg);
	right: var(--space-lg);
	z-index: 100;
}

.controls-toggle {
	position: absolute;
	top: 0;
	right: 0;
	padding: var(--space-sm);
	background: var(--glass-background);
	border: var(--glass-border);
	color: var(--color-text);
	border-radius: var(--radius-md);
	cursor: pointer;
	font-size: 20px;
	transition: all var(--transition-fast);
	backdrop-filter: var(--glass-blur);
	z-index: 101;
}

.controls-toggle:hover {
	transform: scale(1.1);
	background: var(--color-overlay-light);
}

.controls-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--space-md);
	padding: var(--space-lg);
	min-width: var(--control-panel-width);
	background: var(--glass-background);
	border: var(--glass-border);
	border-radius: var(--radius-md);
	backdrop-filter: var(--glass-blur);
	box-shadow: var(--shadow-normal);
	margin-top: 40px;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transform: translateY(-10px);
	transition:
		opacity var(--transition-normal),
		visibility 0s linear var(--transition-normal),
		transform var(--transition-normal);
}

.controls-grid:not(.hidden) {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transform: translateY(0);
	transition:
		opacity var(--transition-normal),
		visibility 0s linear 0s,
		transform var(--transition-normal);
}

.controls-grid.hidden {
	opacity: 0;
	transform: translateY(-20px);
	pointer-events: none;
}

/* Control Items
   ========================================================================== */
.control-item {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	padding: var(--space-sm);
	background: rgba(0, 0, 0, 0.3);
	border-radius: var(--radius-sm);
	border: var(--glass-border);
	transition: all var(--transition-fast);
}

.control-item:hover {
	background: var(--color-hover);
	transform: translateY(-1px);
}

.control-item--full {
	grid-column: 1 / -1;
}
.control-item--status {
	justify-content: flex-start;
}

.control-item--discord {
	justify-content: center;
	padding: var(--space-md);
	margin-top: var(--space-sm);
	border-top: var(--glass-border);
}

/* Form Elements
   ========================================================================== */
.control-select {
	background: rgba(0, 0, 0, 0.7);
	color: var(--color-text);
	border: var(--glass-border);
	padding: var(--space-xs) var(--space-sm);
	border-radius: var(--radius-sm);
	cursor: pointer;
	font-size: 14px;
	transition: all var(--transition-fast);
	width: 140px;
}

.control-select:hover {
	background: var(--color-overlay);
	transform: translateY(-1px);
}

.form-group {
	margin-bottom: var(--space-lg);
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.form-group label {
	display: block;
	margin-bottom: var(--space-xs);
	color: var(--color-text);
	font-weight: 500;
	transition: color var(--transition-fast);
}

.form-group input {
	padding: var(--space-sm);
	background: rgba(0, 0, 0, 0.3);
	border: var(--glass-border);
	border-radius: var(--radius-sm);
	color: var(--color-text);
	font-size: 16px;
	transition: all var(--transition-fast);
}

.form-group input:focus {
	outline: none;
	border-color: var(--color-accent);
	background: rgba(0, 0, 0, 0.4);
	box-shadow: 0 0 0 3px rgba(78, 205, 196, 0.2);
}

.form-group input:focus + label {
	color: var(--color-accent);
}

.form-group small {
	color: var(--color-text);
	opacity: 0.7;
	font-size: 12px;
	margin-top: 4px;
	font-style: italic;
}

.form-group input[readonly] {
	opacity: 0.7;
	cursor: not-allowed;
	background-color: rgba(0, 0, 0, 0.4);
	border-style: dashed;
}

.form-actions {
	display: flex;
	gap: var(--space-md);
	justify-content: center;
	margin-top: 20px;
	width: 100%;
}

.form-actions button {
	padding: var(--space-sm) var(--space-lg);
	border-radius: var(--radius-sm);
	border: var(--glass-border);
	background: var(--glass-background);
	color: var(--color-text);
	cursor: pointer;
	transition: all var(--transition-fast);
	min-width: 100px;
	text-align: center;
	position: relative;
	overflow: hidden;
}

.form-actions button:hover {
	transform: translateY(-2px);
	background: var(--color-overlay-light);
}

.form-actions button[type="submit"]:not(.auth-button-danger):not(.auth-button-secondary) {
	background: var(--color-accent-gradient);
	color: #ffffff;
	border: none;
}

.form-actions button[type="submit"]:hover {
	background: var(--color-accent);
	opacity: 0.9;
	box-shadow: 0 5px 15px rgba(78, 205, 196, 0.4);
}

.form-actions button[type="submit"]::after {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	width: 5px;
	height: 5px;
	background: rgba(255, 255, 255, 0.5);
	opacity: 0;
	border-radius: 100%;
	transform: scale(1, 1) translate(-50%);
	transform-origin: 50% 50%;
}

.form-actions button[type="submit"]:focus:not(:active)::after {
	animation: ripple 1s ease-out;
}

@keyframes ripple {
	0% {
		transform: scale(0, 0);
		opacity: 0.5;
	}
	20% {
		transform: scale(25, 25);
		opacity: 0.3;
	}
	100% {
		opacity: 0;
		transform: scale(40, 40);
	}
}

/* Links and Buttons
   ========================================================================== */
.stream-link {
	color: var(--color-link);
	text-decoration: none;
	transition: all var(--transition-fast);
	position: relative;
	padding-bottom: 2px;
}

.stream-link:hover {
	color: var(--color-link-hover);
}

.stream-link:visited {
	color: var(--color-link);
}

.stream-link::after {
	content: "";
	position: absolute;
	width: 0;
	height: 2px;
	bottom: 0;
	left: 0;
	background: var(--color-gradient);
	transition: width var(--transition-normal);
}

.stream-link:hover::after {
	width: 100%;
}

.pop-out-button {
	background: var(--glass-background);
	border: var(--glass-border);
	color: var(--color-text);
	padding: var(--space-sm) var(--space-md);
	border-radius: var(--radius-md);
	cursor: pointer;
	transition: all var(--transition-fast);
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	width: 100%;
	justify-content: center;
}

.pop-out-button:hover {
	background: var(--color-overlay-light);
	transform: translateY(-2px);
}

.pop-out-button svg {
	width: 16px;
	height: 16px;
}

.back-link {
	color: var(--color-link);
	text-decoration: none;
	transition: color var(--transition-fast);
}

.back-link:hover {
	color: var(--color-link-hover);
}

.login-link,
.logout-link,
.profile-link,
.about-link {
	color: var(--color-text);
	text-decoration: none;
	opacity: 0.8;
	transition: opacity var(--transition-fast);
	cursor: pointer;
}

.login-link:hover,
.logout-link:hover,
.profile-link:hover,
.about-link:hover {
	opacity: 1;
}

/* Status Display
   ========================================================================== */
.status-container {
	background: var(--glass-background);
	border: var(--glass-border);
	border-radius: var(--radius-lg);
	padding: var(--space-xl);
	margin: var(--space-lg) auto;
	max-width: var(--transcript-max-width);
	backdrop-filter: var(--glass-blur);
	box-shadow: var(--shadow-normal);
}

.status-item {
    display: flex;
    align-items: flex-start;
    gap: var(--space-lg);
    padding: var(--space-lg);
    background: rgba(255, 255, 255, 0.03);
    border-radius: var(--radius-md);
    transition: all var(--transition-normal);
}

.status-item:not(:last-child) {
	margin-bottom: var(--space-md);
}

.status-item:hover {
	background: rgba(255, 255, 255, 0.05);
	transform: translateY(-1px);
}

.status-icon {
	width: 28px;
	height: 28px;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	flex-shrink: 0;
	transition: all var(--transition-normal);
}

.status-icon[class*="status-"] {
	border: 2px solid transparent;
}

.status-icon.status-active {
	background: rgba(52, 199, 89, 0.15);
	border-color: rgba(52, 199, 89, 0.5);
	color: #34c759;
}

.status-icon.status-loading {
	background: rgba(0, 0, 0, 0);
}

.status-icon.status-loading svg {
	animation: spin 1.5s linear infinite;
}

.status-icon.status-inactive {
	background: rgba(255, 69, 58, 0.15);
	border-color: rgba(255, 69, 58, 0.5);
	color: #ff453a;
}

.status-icon svg {
	width: 16px;
	height: 16px;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.status-content {
	flex-grow: 1;
}

.status-label {
	color: var(--color-text);
	font-size: 16px;
	font-weight: 500;
	margin-bottom: 4px;
	letter-spacing: 0.3px;
}

.status-description {
	color: var(--color-text);
	font-size: 14px;
	opacity: 0.7;
	line-height: 1.4;
}

/* Recording Status
   ========================================================================== */
.status-indicator {
	width: 12px;
	height: 12px;
	background: #666; /* Default gray color */
	border-radius: 50%;
	transition: all 0.3s ease;
}

.status-indicator.active {
	background: var(--color-recording);
	box-shadow: 0 0 10px var(--color-recording);
	animation: pulse 1.5s infinite;
}

/* Transcript Section
   ========================================================================== */
.transcript-container {
	padding: var(--space-lg);
	margin: 0 auto;
	max-width: var(--transcript-max-width);
	display: flex;
	flex-direction: column;
	align-items: center;
}

.transcript-list {
	width: 100%;
}

.transcript-entry {
	width: 100%;
	text-align: center;
	background: var(--glass-background);
	padding: var(--space-md);
	margin: var(--space-xs) 0;
	border-radius: var(--radius-lg);
	border: var(--glass-border);
	backdrop-filter: var(--glass-blur);
	transition: transform var(--transition-fast);
}

.transcript-entry:hover {
	transform: translateY(-2px);
}

.transcript-korean {
	background: var(--color-gradient);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	margin-bottom: var(--space-sm);
	font-weight: bold;
}

.transcript-english {
	opacity: 0.9;
}

/* Pop-out Styles
   ========================================================================== */
.pop-out-container {
	background: transparent;
	padding: var(--space-md);
}

.pop-out-container .transcript-entry {
	background: var(--glass-background);
	backdrop-filter: var(--glass-blur);
}

#popout-transcripts .transcript-entry {
	background: var(--glass-background);
	backdrop-filter: var(--glass-blur);
	opacity: 1;
	transition: opacity 0.3s ease;
}

#popout-transcripts .transcript-korean {
	font-size: 18px;
}

#popout-transcripts .transcript-english {
	font-size: 20px;
	margin-bottom: 5px;
}

/* Messages
   ========================================================================== */
.message-error {
	color: var(--color-error);
	text-align: center;
	padding: var(--space-lg);
	background: var(--glass-background);
	border: 1px solid var(--color-error-bg);
	border-radius: var(--radius-lg);
	margin: var(--space-lg) auto;
	max-width: var(--transcript-max-width);
	animation: shake 0.5s ease-in-out;
}

.message-admin {
	background: var(--color-admin-bg);
	border: 1px solid var(--color-admin-border);
	padding: var(--space-sm) var(--space-md);
	margin: var(--space-xl) auto;
	border-radius: var(--radius-md);
	width: fit-content;
	min-width: 200px;
	max-width: var(--transcript-max-width);
	backdrop-filter: var(--glass-blur);
	position: relative;
	z-index: 10;
}

.admin-message-content {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--space-md);
}

.admin-message-text {
	color: var(--color-admin-text);
	font-size: 1.1em;
	display: flex;
	align-items: center;
	gap: var(--space-xs);
}

.admin-message-time {
	color: var(--color-admin-time);
	font-size: 0.9em;
}

.admin-message-close {
	background: none;
	border: none;
	color: var(--color-admin-time);
	font-size: 1.5em;
	cursor: pointer;
	padding: 0 var(--space-sm);
	opacity: 0.7;
	transition: opacity var(--transition-fast);
}

.admin-message-close:hover {
	opacity: 1;
}

.admin-verified-icon {
	width: 20px;
	height: 20px;
	display: inline-block;
	vertical-align: middle;
	margin-right: var(--space-xs);
}

.admin-verified-icon-wrapper {
	position: relative;
	display: inline-flex;
	align-items: center;
}

.admin-verified-icon-wrapper:hover::after {
	content: "Verified Admin";
	position: absolute;
	bottom: 100%;
	left: 50%;
	transform: translateX(-50%);
	background: rgba(0, 0, 0, 0.9);
	color: rgb(50, 205, 50);
	padding: 4px 8px;
	border-radius: 4px;
	font-size: 12px;
	white-space: nowrap;
	z-index: 1000;
	pointer-events: none;
	animation: fadeIn 0.2s ease-in-out;
}

/* Important Message Styles */
.message-important {
	background: rgba(30, 58, 138, 0.15);
	border: 1px solid rgba(30, 58, 138, 0.3);
	padding: var(--space-sm) var(--space-md);
	margin: var(--space-xl) auto;
	border-radius: var(--radius-md);
	width: fit-content;
	min-width: 200px;
	max-width: var(--transcript-max-width);
	backdrop-filter: var(--glass-blur);
	position: relative;
	z-index: 10;
}

.important-message-content {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--space-md);
}

.important-message-text {
	color: var(--color-link);
	font-size: 1.1em;
 }

.important-message-close {
	background: none;
	border: none;
	color: #ff453a;
	font-size: 1.5em;
	cursor: pointer;
	padding: 0 var(--space-sm);
	opacity: 0.8;
	transition: all var(--transition-fast);
}

.important-message-close:hover {
	opacity: 1;
	transform: scale(1.1);
}

/* Stream History
   ========================================================================== */
.stream-history .back-button,
.history-transcript-view .back-button {
	position: sticky;
	top: var(--space-lg);
	background: var(--glass-background);
	color: var(--color-text);
	padding: var(--space-sm) var(--space-lg);
	border-radius: var(--radius-md);
	text-decoration: none;
	border: var(--glass-border);
	transition: all var(--transition-fast);
	backdrop-filter: var(--glass-blur);
	display: inline-flex;
	align-items: center;
	gap: var(--space-sm);
	font-weight: 500;
	z-index: 100;
	margin-bottom: var(--space-xl);
	width: fit-content;
}

.stream-history .back-button:hover,
.history-transcript-view .back-button:hover {
	transform: translateY(-2px);
	background: var(--color-overlay-light);
}

.stream-history .back-button::before,
.history-transcript-view .back-button::before {
	content: "←";
	font-size: 1.2em;
}

.history-transcript-view {
	padding: var(--space-lg);
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	width: 100%;
	box-sizing: border-box;
}

.stream-entry {
	background: var(--glass-background);
	border: var(--glass-border);
	border-radius: var(--radius-lg);
	padding: var(--space-lg);
	cursor: pointer;
	transition: all var(--transition-fast);
}

.stream-entry:hover {
	transform: translateY(-2px);
	background: var(--color-overlay-light);
}

.stream-title {
	font-size: 18px;
	margin-bottom: var(--space-sm);
	color: var(--color-accent);
}

.stream-url {
	color: var(--color-link);
	opacity: 0.8;
	display: block;
	margin-bottom: var(--space-xs);
	word-break: break-all;
}

.stream-note {
	color: #666;
	font-size: 0.9em;
	font-style: italic;
}

.stream-url:hover {
	opacity: 1;
	color: var(--color-link-hover);
}

.stream-date {
	font-size: 14px;
	opacity: 0.7;
}

.loading-indicator {
	color: #666;
	font-size: 0.9em;
	margin-top: 5px;
}

.loading-indicator.hidden {
	display: none;
}

.transcript-count {
	color: #666;
	font-size: 0.8em;
	margin-top: 5px;
}

.error-message {
	color: var(--color-error);
	padding: 20px;
	text-align: center;
}

/* Discord Info
   ========================================================================== */
.discord-icon {
	width: 24px;
	height: 24px;
	filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2));
}

.discord-name {
	color: var(--color-text);
	font-size: 16px;
}

.separator {
	margin: 0 var(--space-xs);
	opacity: 0.5;
}

.logged-in-status {
	display: flex;
	gap: 8px;
	align-items: center;
}

.logged-in-status.hidden {
	display: none;
}

.user-email {
	font-size: 0.9em;
	background: var(--color-gradient);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
	text-shadow: 0 0 5px rgba(255, 200, 0, 0.4), 0 0 10px rgba(255, 150, 0, 0.3);
	font-weight: bold;
}


/* Maintenance Mode Banner
   ========================================================================== */
.maintenance-banner {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	background: linear-gradient(
		45deg,
		rgba(255, 69, 7, 0.95),
		rgba(255, 0, 0, 0.95)
	);
	color: #ffffff;
	text-align: center;
	padding: 12px;
	font-weight: 500;
	font-size: 16px;
	z-index: 1000;
	border-bottom: 2px solid rgba(0, 0, 0, 0.1);
	box-shadow: 0 2px 15px rgba(0, 0, 0, 0.2);
	animation: maintenancePulse 2s infinite;
	backdrop-filter: blur(8px);
	display: none;
}

.maintenance-banner.visible {
	display: block;
}

.maintenance-content {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
}

.maintenance-text {
	text-shadow: 0 1px 2px rgba(255, 255, 255, 0.3);
}

/* Authentication Styles
   ========================================================================== */
.auth-container {
    max-width: 500px;
    margin: 30px auto;
    padding: 30px;
    background: var(--glass-background);
    border: var(--glass-border);
    border-radius: var(--radius-lg);
    backdrop-filter: var(--glass-blur);
    box-shadow: var(--shadow-normal);
}

.auth-header {
    margin-bottom: 25px;
    text-align: center;
}

.auth-header h1 {
    color: var(--color-text);
    margin-bottom: 10px;
    font-size: 28px;
}

.auth-header p {
    color: var(--color-text);
    opacity: 0.8;
    margin-bottom: 0;
}

.auth-form {
    display: flex;
    flex-direction: column;
    width: 100%;
    gap: 15px;
}

.auth-button {
    padding: 12px 24px;
    background: linear-gradient(45deg, #34c759, #32cd32);
    color: white;
    border: none;
    border-radius: var(--radius-md);
    font-size: 16px;
    font-weight: 500;
    cursor: pointer;
    transition: all var(--transition-fast);
    width: 100%;
    max-width: 200px;
}

.auth-button:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}

.auth-button-danger {
    background: linear-gradient(45deg, #ab2720, #661b17);
    color: rgba(220, 220, 220, 0.5);
}

.auth-button-secondary {
    background: rgba(0, 0, 0, 0.3);
    color: white;
    border: 1px solid rgba(255, 255, 255, 0.2);
}

.auth-button-secondary:hover {
    background: rgba(0, 0, 0, 0.5);
}

.auth-links {
    margin-top: 20px;
    text-align: center;
    color: var(--color-text);
    opacity: 0.8;
}

.auth-links a {
    color: var(--color-link);
    text-decoration: none;
    transition: color var(--transition-fast);
}

.auth-links a:hover {
    color: var(--color-link-hover);
    text-decoration: underline;
}

.auth-message {
	margin-bottom: 20px;
	padding: 12px;
	border-radius: var(--radius-md);
	text-align: center;
	font-size: 14px;
	animation: blurIn 0.4s ease-out;
}

.auth-message.hidden {
	display: none;
}

.auth-message-success {
	background: rgba(52, 199, 89, 0.15);
	border: 1px solid rgba(52, 199, 89, 0.5);
	color: #34c759;
}

.auth-message-error {
	background: rgba(255, 69, 58, 0.15);
	border: 1px solid rgba(255, 69, 58, 0.5);
	color: #ff453a;
}

.auth-warning {
	background-color: rgba(255, 87, 34, 0.1);
	border: 1px solid rgba(255, 87, 34, 0.3);
	border-radius: 8px;
	padding: 16px;
	margin: 16px 0;
	color: #fff;
	box-shadow: 0 2px 10px rgba(255, 87, 34, 0.2);
}

.auth-warning strong {
	color: #ff5722;
	display: block;
	margin-bottom: 8px;
	font-size: 16px;
	font-weight: 600;
}

/* Login Modal Styles
   ========================================================================== */
.login-modal {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(0, 0, 0, 0.8);
	display: flex;
	justify-content: center;
	align-items: center;
	z-index: 1000;
	backdrop-filter: blur(5px);
	overflow-y: auto;
	opacity: 1;
	visibility: visible;
	transition: opacity var(--transition-normal), visibility var(--transition-normal);
}

.login-modal.hidden {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

.login-modal-content {
	background: var(--glass-background);
	border: var(--glass-border);
	border-radius: var(--radius-lg);
	padding: var(--space-xl);
	width: 90%;
	max-width: 400px;
	max-height: 90vh;
	overflow-y: auto;
	margin: auto;
	box-shadow: var(--shadow-normal);
	transform: translateY(0);
	transition: transform var(--transition-normal);
}

.login-modal.hidden .login-modal-content {
	transform: translateY(-20px);
}

.login-modal h2 {
	color: var(--color-text);
	margin: 0 0 var(--space-lg);
	text-align: center;
	font-weight: 600;
	position: relative;
	display: inline-block;
	width: 100%;
}

.login-modal h2::after {
	content: '';
	position: absolute;
	bottom: -8px;
	left: 0;
	width: 100%;
	height: 2px;
	background: linear-gradient(90deg, transparent, var(--color-accent), transparent);
}

.login-modal-content .auth-form {
	width: 100%;
}

.login-modal-content small {
	display: block;
	font-size: 0.8em;
	margin-top: 4px;
	opacity: 0.7;
}

.login-modal .auth-links {
	margin-top: var(--space-lg);
	text-align: center;
}

.login-modal .auth-links a {
	color: var(--color-link);
	text-decoration: none;
	transition: color var(--transition-fast);
}

.login-modal .auth-links a:hover {
	color: var(--color-link-hover);
}

/* Login modal height adjustment for smaller screens */
@media (max-height: 800px) {
	.login-modal-content {
		max-height: 80vh;
	}
}

/* Profile Styles
   ========================================================================== */
.profile-container {
    max-width: 800px;
    margin: 30px auto;
    padding: 30px;
    background: var(--glass-background);
    border: var(--glass-border);
    border-radius: var(--radius-lg);
    backdrop-filter: var(--glass-blur);
    box-shadow: var(--shadow-normal);
}

.profile-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 25px;
}

.profile-header h1 {
    color: var(--color-text);
    margin: 0;
}

#profileModal {
    z-index: 1000;
}

.profile-modal-content {
    width: 90%;
    max-width: 500px;
}

.profile-tabs {
	display: flex;
	gap: 10px;
	margin-bottom: 20px;
	border-bottom: 1px solid var(--color-border);
	padding-bottom: 10px;
	justify-content: center;
	width: 100%;
}

.profile-tab {
	padding: 10px 15px;
	background: rgba(0, 0, 0, 0.3);
	border: var(--glass-border);
	color: var(--color-text);
	border-radius: var(--radius-md);
	cursor: pointer;
	transition: all var(--transition-fast);
	text-align: center;
	position: relative;
}

.profile-tab:hover {
	background: rgba(255, 255, 255, 0.1);
	transform: translateY(-2px);
}

.profile-tab.active {
	background: linear-gradient(45deg, rgba(52, 199, 89, 0.2), rgba(52, 199, 89, 0.1));
	border-color: rgba(52, 199, 89, 0.3);
	color: #34c759;
}

.profile-tab.active::after {
	content: '';
	position: absolute;
	bottom: -11px;
	left: 50%;
	transform: translateX(-50%);
	width: 30%;
	height: 2px;
	background-color: #34c759;
	border-radius: 2px;
}

.profile-tab-content {
	margin-bottom: 30px;
	display: block;
	animation: blurIn 0.4s ease-out;
}

.profile-tab-content.hidden {
	display: none;
}

.profile-footer {
	margin-top: 20px;
	padding-top: 20px;
	border-top: 1px solid var(--color-border);
	display: flex;
	gap: 12px;
	justify-content: space-between;
	width: 100%;
}

/* Reputation styles */
.reputation-summary {
    margin-bottom: 20px;
    text-align: center;
    width: 100%;
}

.reputation-summary h2 {
    color: var(--color-text);
    margin-bottom: 10px;
}

.reputation-explanation {
    color: var(--color-text);
    opacity: 0.8;
    font-size: 14px;
}

.reputation-history {
    margin-bottom: 20px;
    width: 100%;
	text-align: center;
}

.reputation-history h3 {
    color: var(--color-text);
    margin-bottom: 15px;
    text-align: center;
}

.reputation-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-height: 200px;
    overflow-y: auto;
    margin-top: 12px;
    border-radius: var(--radius-sm);
    background: rgba(0, 0, 0, 0.2);
    padding: 8px;
}

.reputation-item {
    display: grid;
    grid-template-columns: 80px 1fr 150px;
    gap: 15px;
    padding: 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-md);
    border: var(--glass-border);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    font-size: 14px;
}

.reputation-item:last-child {
    border-bottom: none;
}

.reputation-change {
    font-weight: bold;
    text-align: center;
    min-width: 40px;
    text-align: right;
}

.reputation-up {
    color: #34c759;
}

.reputation-down {
    color: #ff453a;
}

.reputation-reason {
    color: var(--color-text);
    flex: 1;
    padding: 0 12px;
}

.reputation-date {
    color: var(--color-text);
    opacity: 0.7;
    font-size: 14px;
    text-align: right;
    max-width: 120px;
}

.loader {
    text-align: center;
    color: var(--color-text);
    opacity: 0.7;
    padding: 20px;
}

.no-data {
    text-align: center;
    color: var(--color-text);
    opacity: 0.7;
    padding: 20px;
    font-style: italic;
}

.error {
    text-align: center;
    color: #ff453a;
    padding: 20px;
}

/* Password Requirements & Strength Meter
   ========================================================================== */
   .password-requirements {
    margin: 10px 0;
    font-size: 0.9em;
}

.requirement {
    margin: 5px 0;
    color: #ff453a;
    display: flex;
    align-items: center;
    gap: 8px;
}

.requirement.valid {
    color: #34c759;
}

.requirement-icon {
    display: inline-block;
    width: 18px;
    height: 18px;
    text-align: center;
    font-weight: bold;
}

.requirement.valid .requirement-icon::before {
    content: "✓";
}

.password-strength {
    margin: 15px 0;
}

.strength-text {
    margin-bottom: 5px;
    font-size: 0.9em;
    color: var(--color-text);
}

.strength-meter {
    display: flex;
    gap: 5px;
    height: 6px;
}

.strength-segment {
    flex: 1;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.1);
    border-radius: 3px;
    transition: background-color 0.3s ease;
}

/* Strength levels - Generic ID-independent selectors */
.strength-too-weak .strength-segment {
    background-color: rgba(255, 255, 255, 0.1);
}

.strength-weak .strength-segment:nth-child(1) {
    background-color: #ff453a;
}

.strength-fair .strength-segment:nth-child(1),
.strength-fair .strength-segment:nth-child(2) {
    background-color: #ff9500;
}

.strength-good .strength-segment:nth-child(1),
.strength-good .strength-segment:nth-child(2),
.strength-good .strength-segment:nth-child(3) {
    background-color: #32d74b;
}

.strength-strong .strength-segment:nth-child(1),
.strength-strong .strength-segment:nth-child(2),
.strength-strong .strength-segment:nth-child(3),
.strength-strong .strength-segment:nth-child(4) {
    background-color: #34c759;
}

/* Text color updates */
.strength-too-weak [id$="strength-value"] {
    color: #ff3b30;
}

.strength-weak [id$="strength-value"] {
    color: #ff453a;
}

.strength-fair [id$="strength-value"] {
    color: #ff9500;
}

.strength-good [id$="strength-value"] {
    color: #32d74b;
}

.strength-strong [id$="strength-value"] {
    color: #34c759;
}

/* Delete Account Styles */
#deleteAccountModal {
	z-index: 1001;
}

.delete-modal-content {
	max-width: 500px;
	text-align: center;
}

.delete-warning {
	background-color: rgba(255, 59, 48, 0.1);
	border: 1px solid rgba(255, 59, 48, 0.3);
	border-radius: 8px;
	padding: 20px;
	margin: 16px 0;
	color: #fff;
	position: relative;
	box-shadow: 0 4px 12px rgba(255, 59, 48, 0.2);
}

.delete-warning::before {
	content: "⚠️";
	position: absolute;
	top: -15px;
	left: 50%;
	transform: translateX(-50%);
	font-size: 24px;
	background: rgba(0, 0, 0, 0.6);
	border-radius: 50%;
	width: 30px;
	height: 30px;
	display: flex;
	align-items: center;
	justify-content: center;
}

.delete-warning strong {
	color: #ff3b30;
	display: block;
	margin-bottom: 12px;
	font-size: 16px;
	text-align: center;
	text-transform: uppercase;
	letter-spacing: 0.5px;
}

.delete-warning ul {
	margin: 12px 0;
	padding-left: 20px;
	text-align: left;
}

.delete-warning li {
	margin-bottom: 6px;
	color: rgba(255, 255, 255, 0.9);
	line-height: 1.4;
}

/* Privacy Policy and Terms Styles
   ========================================================================== */
/* Policy container */
.policy-container {
    margin-top: 20px;
    margin-bottom: 15px;
    max-height: 180px;
    overflow-y: auto;
    padding: 10px;
    background: rgba(0, 0, 0, 0.2);
    border: var(--glass-border);
    border-radius: 6px;
    font-size: 0.9em;
    line-height: 1.5;
}

/* Policy content styling */
.policy-container h3 {
    margin-top: 0;
    color: var(--color-text);
    font-size: 1.1em;
}

.policy-container h4 {
    color: rgba(255, 255, 255, 0.9);
    margin-bottom: 5px;
}

.policy-container p,
.policy-container ul {
    margin-bottom: 10px;
    color: rgba(255, 255, 255, 0.8);
}

.policy-container ul {
    padding-left: 20px;
}

/* Policy tabs navigation */
.policy-tabs {
    display: flex;
    gap: 5px;
    margin-bottom: 10px;
}

.policy-tab {
    padding: 5px 10px;
    background: rgba(0, 0, 0, 0.3);
    border: var(--glass-border);
    border-radius: var(--radius-sm);
    color: var(--color-text);
    font-size: 0.8em;
    cursor: pointer;
    opacity: 0.7;
    transition: all 0.2s ease;
}

.policy-tab:hover {
    opacity: 0.9;
}

.policy-tab.active {
    background: rgba(52, 199, 89, 0.15);
    border-color: rgba(52, 199, 89, 0.3);
    opacity: 1;
}

/* Policy content display */
.policy-content {
    display: none;
}

.policy-content.active {
    display: block;
}

/* Policy consent checkboxes */
.policy-consent {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 15px 0;
}

.policy-consent label {
    font-size: 0.9em;
    color: rgba(255, 255, 255, 0.9);
    cursor: pointer;
}

/* Custom checkbox styling */
.custom-checkbox,
.policy-consent input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    width: 18px;
    height: 18px;
    border: 2px solid rgba(255, 255, 255, 0.2);
    border-radius: 4px;
    background: rgba(255, 255, 255, 0.05);
    cursor: pointer;
    position: relative;
    transition: all 0.2s ease;
    margin-top: 2px;
}

.custom-checkbox:checked,
.policy-consent input[type="checkbox"]:checked {
    background: rgba(52, 199, 89, 0.15);
    border-color: rgba(52, 199, 89, 0.5);
}

.custom-checkbox:checked::after,
.policy-consent input[type="checkbox"]:checked::after {
    content: '';
    position: absolute;
    left: 5px;
    top: 2px;
    width: 5px;
    height: 10px;
    border: solid #34c759;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

.custom-checkbox:hover,
.policy-consent input[type="checkbox"]:hover {
    border-color: rgba(255, 255, 255, 0.3);
}

.custom-checkbox:checked:hover,
.policy-consent input[type="checkbox"]:checked:hover {
    border-color: rgba(52, 199, 89, 0.7);
}

/* Turnstile styling */
.cf-turnstile {
    margin: 0 auto;
    display: flex;
    justify-content: center;
}

#turnstileContainer,
#forgotTurnstileContainer,
#registerTurnstileContainer,
#resetTurnstileContainer,
#resendTurnstileContainer {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 15px auto;
    width: 100%;
}

/* Accessibility Enhancements
   ========================================================================== */
:focus-visible {
	outline: 2px solid var(--color-link);
	outline-offset: 2px;
	border-radius: 2px;
}

.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.skip-link {
	background: var(--glass-background);
	color: var(--color-text);
	padding: var(--space-md);
	position: fixed;
	top: -100px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 1000;
	text-decoration: none;
	border-radius: 0 0 var(--radius-md) var(--radius-md);
	transition: top var(--transition-normal);
}

.skip-link:focus {
	top: 0;
}

button,
select,
a {
	cursor: pointer;
	touch-action: manipulation;
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* Animations
   ========================================================================== */
@keyframes pulse {
	0%,
	100% {
		transform: scale(1);
		opacity: 1;
	}
	50% {
		transform: scale(1.2);
		opacity: 0.5;
	}
}

@keyframes shake {
	0%,
	100% {
		transform: translateX(0);
	}
	25% {
		transform: translateX(-5px);
	}
	75% {
		transform: translateX(5px);
	}
}

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

@keyframes fadeIn {
	from {
		opacity: 0;
		transform: translateX(-50%) translateY(5px);
	}
	to {
		opacity: 1;
		transform: translateX(-50%) translateY(0);
	}
}

@keyframes blurIn {
	0% {
		filter: blur(5px);
		opacity: 0;
	}
	100% {
		filter: blur(0);
		opacity: 1;
	}
}

@keyframes flash-attention {
	0%,
	100% {
		transform: scale(1);
		filter: brightness(1);
	}
	50% {
		transform: scale(1.4);
		filter: brightness(2);
	}
}

@keyframes maintenancePulse {
	0%,
	100% {
		opacity: 1;
	}
	50% {
		opacity: 0.8;
	}
}

/* Responsive Design
   ========================================================================== */
@media (max-width: 768px) {
	:root {
		--control-panel-width: 90vw;
	}

	.controls-grid {
		grid-template-columns: 1fr;
		right: 5vw;
		left: 5vw;
		width: auto;
		margin-top: var(--space-lg);
	}

	.transcript-container {
		padding: var(--space-sm);
	}

	.status-container {
		margin: var(--space-sm);
		padding: var(--space-lg);
	}

	.control-item {
		padding: var(--space-md);
	}

	.pop-out-button {
		padding: var(--space-md);
	}
}

@media (max-width: 600px) {
    .auth-container, 
    .profile-container {
        padding: 20px;
    }
    
    .profile-header {
        flex-direction: column;
        gap: 10px;
        align-items: flex-start;
    }
    
    .profile-tabs {
        flex-wrap: wrap;
    }
    
    .profile-tab {
        flex-grow: 1;
        text-align: center;
    }
    
    .reputation-item {
        grid-template-columns: 60px 1fr;
        grid-template-rows: auto auto;
    }
    
    .reputation-date {
        grid-column: span 2;
        text-align: left;
    }
    
    .policy-container {
        max-height: 120px;
        font-size: 0.8em;
    }
    
    .policy-tabs {
        flex-wrap: wrap;
    }
    
    .login-modal-content {
        padding: 15px;
        max-height: 85vh;
    }
    
    .admin-message-content {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--space-sm);
    }
}

@media (max-width: 480px) {
    .stream-title {
        font-size: 16px;
    }

    .stream-url {
        font-size: 14px;
    }
    
    .policy-container {
        max-height: 100px;
    }
    
    .policy-consent {
        margin: 10px 0;
    }
    
    .policy-consent label {
        font-size: 0.8em;
    }
    
    .form-actions {
        flex-direction: column;
        gap: 10px;
    }
    
    .form-actions button {
        width: 100%;
    }
    
    .login-modal-content {
        padding: 12px;
    }
}