/*
 * YouTube Tags AI — Front-end Generator Styles
 * Self-contained, no external framework dependency.
 */

@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600&display=swap');

.ytai-app {
	--ytai-ink: #14162b;
	--ytai-surface: #ffffff;
	--ytai-surface-alt: #f6f5fc;
	--ytai-border: #e4e1f5;
	--ytai-text: #14162b;
	--ytai-text-dim: #6e7191;
	--ytai-primary-a: #6c4cfb;
	--ytai-primary-b: #17d9c4;
	--ytai-accent: #ff7a59;
	--ytai-danger: #e23e57;
	--ytai-danger-bg: #fdeeee;
	--ytai-success: #1fae7a;
	--ytai-success-bg: #e9f9f2;
	--ytai-radius-lg: 20px;
	--ytai-radius-md: 14px;
	--ytai-radius-sm: 10px;
	--ytai-shadow: 0 20px 45px -20px rgba(35, 20, 110, 0.25);
	--ytai-shadow-sm: 0 6px 16px -8px rgba(35, 20, 110, 0.2);

	max-width: 720px;
	margin: 32px auto;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	color: var(--ytai-text);
	box-sizing: border-box;
}

.ytai-app *,
.ytai-app *::before,
.ytai-app *::after {
	box-sizing: border-box;
}

/* ---------- Card ---------- */

.ytai-card {
	background: var(--ytai-surface);
	border: 1px solid var(--ytai-border);
	border-radius: var(--ytai-radius-lg);
	box-shadow: var(--ytai-shadow);
	padding: 32px;
}

.ytai-card__header {
	display: flex;
	align-items: flex-start;
	gap: 14px;
	margin-bottom: 26px;
}

.ytai-mark {
	flex: 0 0 auto;
	width: 44px;
	height: 44px;
	border-radius: 12px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	background: linear-gradient(135deg, var(--ytai-primary-a), var(--ytai-primary-b));
	box-shadow: var(--ytai-shadow-sm);
}

.ytai-title {
	font-family: 'Space Grotesk', 'Inter', sans-serif;
	font-size: 22px;
	font-weight: 700;
	margin: 0 0 4px;
	line-height: 1.2;
	background: linear-gradient(90deg, var(--ytai-primary-a), var(--ytai-primary-b));
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}

.ytai-subtitle {
	margin: 0;
	font-size: 14px;
	color: var(--ytai-text-dim);
}

/* ---------- Form ---------- */

.ytai-field {
	margin-bottom: 18px;
}

.ytai-field label {
	display: block;
	font-size: 13px;
	font-weight: 600;
	margin-bottom: 6px;
	color: var(--ytai-text);
}

.ytai-required {
	color: var(--ytai-accent);
}

.ytai-optional {
	color: var(--ytai-text-dim);
	font-weight: 400;
}

.ytai-app input[type="text"],
.ytai-app select {
	width: 100%;
	font-family: inherit;
	font-size: 14.5px;
	padding: 12px 14px;
	border-radius: var(--ytai-radius-sm);
	border: 1.5px solid var(--ytai-border);
	background: var(--ytai-surface-alt);
	color: var(--ytai-text);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
	appearance: none;
}

.ytai-app select {
	background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='%236e7191' d='M5.5 7.5l4.5 4.5 4.5-4.5z'/%3e%3c/svg%3e");
	background-repeat: no-repeat;
	background-position: right 12px center;
	padding-right: 34px;
}

.ytai-app input[type="text"]:focus,
.ytai-app select:focus {
	outline: none;
	border-color: var(--ytai-primary-a);
	box-shadow: 0 0 0 4px rgba(108, 76, 251, 0.15);
}

.ytai-field-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 16px;
	margin-bottom: 6px;
}

@media (min-width: 640px) {
	.ytai-field-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

/* ---------- Generate button ---------- */

.ytai-generate-btn {
	width: 100%;
	margin-top: 12px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	font-family: 'Space Grotesk', 'Inter', sans-serif;
	font-size: 16px;
	font-weight: 600;
	color: #fff;
	background: linear-gradient(120deg, var(--ytai-primary-a), var(--ytai-primary-b));
	border: none;
	border-radius: var(--ytai-radius-md);
	padding: 15px 20px;
	cursor: pointer;
	box-shadow: var(--ytai-shadow-sm);
	transition: transform 0.12s ease, box-shadow 0.12s ease, opacity 0.12s ease;
}

.ytai-generate-btn:hover:not(:disabled) {
	transform: translateY(-1px);
	box-shadow: 0 14px 30px -12px rgba(108, 76, 251, 0.55);
}

.ytai-generate-btn:active:not(:disabled) {
	transform: translateY(0);
}

.ytai-generate-btn:disabled {
	opacity: 0.75;
	cursor: not-allowed;
}

.ytai-btn-spinner {
	width: 16px;
	height: 16px;
	border-radius: 50%;
	border: 2.5px solid rgba(255, 255, 255, 0.4);
	border-top-color: #fff;
	display: none;
	animation: ytai-spin 0.7s linear infinite;
}

.ytai-generate-btn.is-loading .ytai-btn-spinner {
	display: inline-block;
}

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

/* ---------- Messages ---------- */

.ytai-message {
	margin-top: 16px;
	padding: 12px 14px;
	border-radius: var(--ytai-radius-sm);
	font-size: 13.5px;
	line-height: 1.5;
}

.ytai-message.is-error {
	background: var(--ytai-danger-bg);
	color: var(--ytai-danger);
	border: 1px solid rgba(226, 62, 87, 0.25);
}

/* ---------- Results ---------- */

.ytai-results {
	margin-top: 22px;
	background: var(--ytai-surface);
	border: 1px solid var(--ytai-border);
	border-radius: var(--ytai-radius-lg);
	box-shadow: var(--ytai-shadow);
	padding: 26px 28px;
}

.ytai-results__header {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	margin-bottom: 16px;
}

.ytai-results__header h3 {
	font-family: 'Space Grotesk', 'Inter', sans-serif;
	font-size: 17px;
	margin: 0;
}

.ytai-results__count {
	font-size: 12.5px;
	font-weight: 600;
	color: var(--ytai-primary-a);
	background: rgba(108, 76, 251, 0.1);
	padding: 3px 10px;
	border-radius: 999px;
}

.ytai-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 20px;
}

.ytai-tag {
	display: inline-flex;
	align-items: center;
	font-size: 13px;
	font-weight: 500;
	padding: 7px 14px;
	border-radius: 999px;
	background: var(--ytai-surface-alt);
	border: 1px solid var(--ytai-border);
	border-left: 3px solid var(--ytai-primary-a);
	color: var(--ytai-text);
	opacity: 0;
	transform: translateY(4px);
	animation: ytai-tag-in 0.35s ease forwards;
}

.ytai-tag:nth-child(3n+2) {
	border-left-color: var(--ytai-primary-b);
}

.ytai-tag:nth-child(3n) {
	border-left-color: var(--ytai-accent);
}

@keyframes ytai-tag-in {
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.ytai-copy-btn {
	width: 100%;
	font-family: 'Space Grotesk', 'Inter', sans-serif;
	font-size: 15px;
	font-weight: 600;
	color: var(--ytai-primary-a);
	background: var(--ytai-surface-alt);
	border: 1.5px solid var(--ytai-border);
	border-radius: var(--ytai-radius-md);
	padding: 13px 18px;
	cursor: pointer;
	transition: background 0.15s ease, border-color 0.15s ease;
}

.ytai-copy-btn:hover {
	background: rgba(108, 76, 251, 0.08);
	border-color: var(--ytai-primary-a);
}

.ytai-copy-success {
	margin-top: 12px;
	text-align: center;
	font-size: 13.5px;
	font-weight: 600;
	color: var(--ytai-success);
	background: var(--ytai-success-bg);
	border-radius: var(--ytai-radius-sm);
	padding: 10px;
}

/* ---------- Admin notice (unconfigured state) ---------- */

.ytai-admin-notice {
	max-width: 720px;
	margin: 24px auto;
	padding: 14px 18px;
	border-radius: var(--ytai-radius-sm, 10px);
	background: #fdeeee;
	color: #e23e57;
	border: 1px solid rgba(226, 62, 87, 0.25);
	font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	font-size: 14px;
}

.ytai-admin-notice a {
	color: inherit;
	font-weight: 600;
	text-decoration: underline;
}

/* ---------- Responsive tweaks ---------- */

@media (max-width: 480px) {
	.ytai-app {
		margin: 16px auto;
	}

	.ytai-card,
	.ytai-results {
		padding: 22px;
		border-radius: var(--ytai-radius-md);
	}

	.ytai-title {
		font-size: 19px;
	}
}

/* ---------- Dark mode ---------- */

@media (prefers-color-scheme: dark) {
	.ytai-app {
		--ytai-ink: #f4f3fb;
		--ytai-surface: #191b30;
		--ytai-surface-alt: #21243d;
		--ytai-border: #34375a;
		--ytai-text: #f4f3fb;
		--ytai-text-dim: #a3a4c2;
		--ytai-danger-bg: rgba(226, 62, 87, 0.12);
		--ytai-success-bg: rgba(31, 174, 122, 0.12);
		--ytai-shadow: 0 20px 45px -20px rgba(0, 0, 0, 0.55);
		--ytai-shadow-sm: 0 6px 16px -8px rgba(0, 0, 0, 0.5);
	}

	.ytai-app input[type="text"],
	.ytai-app select {
		color-scheme: dark;
	}

	.ytai-admin-notice {
		background: rgba(226, 62, 87, 0.12);
		border-color: rgba(226, 62, 87, 0.3);
	}
}
