/*
 * Brand AI Studio — public/app styles.
 * Uses CSS logical properties throughout so the layout mirrors correctly
 * under dir="rtl" without needing many overrides in bas-public-rtl.css.
 */

:root {
	--bas-primary: #6b1839;
	--bas-primary-light: #9c3a5c;
	--bas-secondary: #d8a7b1;
	--bas-background: #f8f3ee;
	--bas-foreground: #222222;
	--bas-muted: #efe6da;
	--bas-muted-foreground: #7a7168;
	--bas-accent: #f1e4e9;
	--bas-border: #e4d9cb;
	--bas-card: #ffffff;
	--bas-destructive: #b3261e;
	--bas-radius: 0.75rem;
	--bas-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Tahoma, Arial, sans-serif;
}

.bas-app,
.bas-auth-wrap {
	font-family: var( --bas-font );
	color: var( --bas-foreground );
	background: var( --bas-background );
}

.bas-app *,
.bas-auth-wrap * {
	box-sizing: border-box;
}

/* ------------------------------------------------------------------ *
 * Buttons
 * ------------------------------------------------------------------ */

.bas-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	padding: 0.65rem 1.25rem;
	border-radius: var( --bas-radius );
	border: 1px solid transparent;
	font-size: 0.9rem;
	font-weight: 600;
	cursor: pointer;
	text-decoration: none;
	transition: all 0.15s ease;
	line-height: 1.2;
}

.bas-btn-primary {
	background: var( --bas-primary );
	color: #fff;
}
.bas-btn-primary:hover {
	background: var( --bas-primary-light );
	color: #fff;
}

.bas-btn-secondary {
	background: var( --bas-secondary );
	color: var( --bas-primary );
}

.bas-btn-outline {
	background: transparent;
	border-color: var( --bas-border );
	color: var( --bas-foreground );
}
.bas-btn-outline:hover {
	background: var( --bas-muted );
}

.bas-btn-block {
	width: 100%;
	margin-block-start: 0.75rem;
}

.bas-btn:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

/* ------------------------------------------------------------------ *
 * Forms
 * ------------------------------------------------------------------ */

.bas-form,
.bas-inline-form {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.bas-inline-form {
	flex-direction: row;
	align-items: center;
	flex-wrap: wrap;
}

.bas-field {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
}

.bas-field-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1rem;
}

.bas-field-full {
	grid-column: 1 / -1;
}

.bas-form-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1rem;
}

.bas-form label {
	font-size: 0.85rem;
	font-weight: 600;
}

.bas-field-hint {
	font-size: 0.78rem;
	color: var( --bas-muted-foreground );
	margin: 0;
}

.bas-form input[type="text"],
.bas-form input[type="email"],
.bas-form input[type="password"],
.bas-form input[type="search"],
.bas-form input[type="url"],
.bas-form input[type="file"],
.bas-form select,
.bas-form textarea,
#bas-library-search {
	width: 100%;
	padding: 0.6rem 0.75rem;
	border-radius: calc( var( --bas-radius ) * 0.6 );
	border: 1px solid var( --bas-border );
	background: #fff;
	font-size: 0.9rem;
	color: var( --bas-foreground );
	font-family: inherit;
}

.bas-form input[type="color"] {
	inline-size: 100%;
	block-size: 2.4rem;
	padding: 0.2rem;
	border-radius: calc( var( --bas-radius ) * 0.6 );
	border: 1px solid var( --bas-border );
}

.bas-form-actions {
	display: flex;
	gap: 0.75rem;
	justify-content: flex-end;
}

.bas-field-inline {
	flex-direction: row;
	justify-content: space-between;
	align-items: center;
	font-size: 0.85rem;
}

/* ------------------------------------------------------------------ *
 * Alerts
 * ------------------------------------------------------------------ */

.bas-alert {
	padding: 0.75rem 1rem;
	border-radius: calc( var( --bas-radius ) * 0.6 );
	font-size: 0.85rem;
	margin-block-end: 1rem;
}
.bas-alert-error {
	background: color-mix( in srgb, var( --bas-destructive ) 12%, white );
	color: var( --bas-destructive );
}
.bas-alert-success {
	background: var( --bas-accent );
	color: var( --bas-primary );
}

/* ------------------------------------------------------------------ *
 * Auth (login / register)
 * ------------------------------------------------------------------ */

.bas-auth-wrap {
	min-height: 70vh;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 3rem 1.5rem;
	background: radial-gradient( ellipse 80% 60% at 50% -10%, var( --bas-accent ) 0%, transparent 60% ), var( --bas-background );
}

.bas-auth-card {
	width: 100%;
	max-width: 420px;
	background: var( --bas-card );
	border: 1px solid var( --bas-border );
	border-radius: calc( var( --bas-radius ) * 1.4 );
	padding: 2.5rem;
	box-shadow: 0 20px 50px -20px rgba( 107, 24, 57, 0.15 );
}

.bas-auth-title {
	font-size: 1.7rem;
	font-weight: 700;
	margin: 0 0 0.4rem;
	color: var( --bas-primary );
}
.bas-auth-subtitle {
	color: var( --bas-muted-foreground );
	margin: 0 0 1.5rem;
}
.bas-auth-switch {
	text-align: center;
	margin-block-start: 1.5rem;
	font-size: 0.9rem;
}
.bas-auth-switch a {
	color: var( --bas-primary );
	font-weight: 600;
	text-decoration: none;
}
.bas-auth-card-locked {
	text-align: center;
}

/* ------------------------------------------------------------------ *
 * App shell
 * ------------------------------------------------------------------ */

.bas-app {
	display: flex;
	min-height: 80vh;
	border: 1px solid var( --bas-border );
	border-radius: calc( var( --bas-radius ) * 1.4 );
	overflow: hidden;
}

.bas-sidebar {
	inline-size: 260px;
	flex-shrink: 0;
	background: var( --bas-card );
	border-inline-end: 1px solid var( --bas-border );
	padding: 1.5rem 1rem;
}

.bas-sidebar-brand {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	font-weight: 700;
	font-size: 1.05rem;
	padding: 0 0.5rem 1.5rem;
	color: var( --bas-primary );
	text-decoration: none;
}

.bas-logo-mark {
	block-size: 28px;
	inline-size: auto;
	display: inline-block;
	object-fit: contain;
}

.bas-nav-link {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	padding: 0.6rem 0.75rem;
	border-radius: calc( var( --bas-radius ) * 0.6 );
	color: var( --bas-foreground );
	text-decoration: none;
	font-size: 0.9rem;
	font-weight: 500;
	margin-block-end: 0.15rem;
}
.bas-nav-link:hover {
	background: var( --bas-muted );
}
.bas-nav-link.is-active {
	background: var( --bas-accent );
	color: var( --bas-primary );
}

.bas-main {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
}

.bas-topbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0.85rem 1.5rem;
	border-block-end: 1px solid var( --bas-border );
	background: var( --bas-background );
}

.bas-mobile-nav-toggle {
	display: none;
	background: none;
	border: none;
	cursor: pointer;
	font-size: 1.3rem;
}

.bas-topbar-actions {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-inline-start: auto;
}

.bas-lang-switch {
	display: flex;
	align-items: center;
	gap: 0.35rem;
	text-decoration: none;
	color: var( --bas-foreground );
	font-size: 0.85rem;
}

.bas-user-menu {
	position: relative;
}
.bas-avatar {
	display: flex;
	align-items: center;
	justify-content: center;
	inline-size: 34px;
	block-size: 34px;
	border: none;
	padding: 0;
	font-family: inherit;
	font-size: inherit;
	border-radius: 50%;
	background: var( --bas-accent );
	color: var( --bas-primary );
	font-weight: 700;
	cursor: pointer;
}
.bas-user-menu-dropdown {
	display: none;
	position: absolute;
	inset-inline-end: 0;
	/* Attach flush to the trigger — a hover gap makes the menu vanish
	   before it can be clicked. Visual spacing comes from a transparent
	   padding bridge that stays inside the hover area. */
	inset-block-start: 100%;
	padding-block-start: 0.5rem;
	background: transparent;
	min-inline-size: 160px;
	z-index: 20;
}
.bas-user-menu-dropdown-inner {
	background: #fff;
	border: 1px solid var( --bas-border );
	border-radius: calc( var( --bas-radius ) * 0.6 );
	box-shadow: 0 12px 30px -10px rgba( 0, 0, 0, 0.15 );
	overflow: hidden;
}
.bas-user-menu:hover .bas-user-menu-dropdown,
.bas-user-menu:focus-within .bas-user-menu-dropdown,
.bas-user-menu.is-open .bas-user-menu-dropdown {
	display: block;
}
.bas-user-menu-dropdown a {
	display: block;
	padding: 0.6rem 1rem;
	text-decoration: none;
	color: var( --bas-foreground );
	font-size: 0.85rem;
}
.bas-user-menu-dropdown a:hover {
	background: var( --bas-muted );
}
.bas-user-menu-dropdown a.bas-danger {
	color: var( --bas-destructive );
}

.bas-content {
	padding: 2rem;
}

/* ------------------------------------------------------------------ *
 * Page header / sections
 * ------------------------------------------------------------------ */

.bas-page-header h1 {
	font-size: 1.6rem;
	font-weight: 700;
	margin: 0 0 0.25rem;
	color: var( --bas-primary );
}
.bas-page-header p {
	color: var( --bas-muted-foreground );
	margin: 0;
}
.bas-page-header-row {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 1rem;
	flex-wrap: wrap;
}

.bas-section-title {
	font-size: 1.1rem;
	font-weight: 700;
	margin: 2rem 0 1rem;
}

/* ------------------------------------------------------------------ *
 * Stat cards
 * ------------------------------------------------------------------ */

.bas-stat-grid {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( 180px, 1fr ) );
	gap: 1rem;
	margin-block-start: 1.5rem;
}
.bas-stat-card {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	padding: 1.1rem;
	background: var( --bas-card );
	border: 1px solid var( --bas-border );
	border-radius: var( --bas-radius );
}
.bas-stat-card .dashicons {
	inline-size: 42px;
	block-size: 42px;
	font-size: 22px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var( --bas-accent );
	color: var( --bas-primary );
	border-radius: 50%;
}
.bas-stat-card strong {
	display: block;
	font-size: 1.4rem;
}
.bas-stat-card span {
	font-size: 0.8rem;
	color: var( --bas-muted-foreground );
}

/* ------------------------------------------------------------------ *
 * Panels
 * ------------------------------------------------------------------ */

.bas-panel {
	background: var( --bas-card );
	border: 1px solid var( --bas-border );
	border-radius: var( --bas-radius );
	padding: 1.5rem;
	margin-block-start: 1.5rem;
}
.bas-panel-hidden {
	display: none;
}
.bas-panel-narrow {
	max-width: 640px;
}
.bas-panel-full {
	grid-column: 1 / -1;
}

.bas-split {
	display: grid;
	grid-template-columns: 1.2fr 1fr;
	gap: 1.5rem;
}

.bas-preview-panel {
	background: var( --bas-muted );
	border-radius: var( --bas-radius );
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 320px;
}
.bas-preview-output img {
	max-inline-size: 100%;
	border-radius: var( --bas-radius );
}
.bas-preview-loading {
	color: var( --bas-muted-foreground );
	font-size: 0.9rem;
}

.bas-generator-layout {
	display: grid;
	grid-template-columns: 340px 1fr;
	gap: 1.5rem;
	align-items: start;
}
.bas-results-panel {
	min-height: 300px;
}

/* ------------------------------------------------------------------ *
 * Cards: brands, characters, assets
 * ------------------------------------------------------------------ */

.bas-brand-grid,
.bas-character-grid {
	display: grid;
	grid-template-columns: repeat( auto-fill, minmax( 240px, 1fr ) );
	gap: 1.25rem;
	margin-block-start: 1.5rem;
}

.bas-brand-card {
	position: relative;
	background: var( --bas-card );
	border: 1px solid var( --bas-border );
	border-radius: var( --bas-radius );
	padding: 1.25rem;
}
.bas-brand-card-head {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin-block-end: 0.75rem;
}
.bas-brand-avatar {
	inline-size: 46px;
	block-size: 46px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	font-weight: 700;
	font-size: 1.1rem;
}
.bas-brand-card p {
	font-size: 0.85rem;
	color: var( --bas-muted-foreground );
	margin: 0 0 0.85rem;
}
.bas-brand-card-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
}
.bas-swatch {
	inline-size: 16px;
	block-size: 16px;
	border-radius: 50%;
	display: inline-block;
	border: 1px solid var( --bas-border );
	margin-inline-start: 0.25rem;
}

.bas-character-card {
	background: var( --bas-card );
	border: 1px solid var( --bas-border );
	border-radius: var( --bas-radius );
	overflow: hidden;
}
.bas-character-image {
	position: relative;
	aspect-ratio: 4 / 5;
}
.bas-character-image img {
	inline-size: 100%;
	block-size: 100%;
	object-fit: cover;
}
.bas-character-info {
	padding: 0.85rem 1rem;
}
.bas-character-info p {
	font-size: 0.78rem;
	color: var( --bas-muted-foreground );
	margin: 0.35rem 0 0;
}

.bas-card-delete {
	position: absolute;
	inset-block-start: 0.6rem;
	inset-inline-end: 0.6rem;
	background: rgba( 255, 255, 255, 0.9 );
	border: none;
	border-radius: 50%;
	inline-size: 30px;
	block-size: 30px;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	color: var( --bas-destructive );
	z-index: 5;
}
.bas-card-delete:hover {
	background: var( --bas-destructive );
	color: #fff;
}

.bas-badge {
	display: inline-flex;
	align-items: center;
	padding: 0.2rem 0.65rem;
	border-radius: 999px;
	background: var( --bas-accent );
	color: var( --bas-primary );
	font-size: 0.72rem;
	font-weight: 600;
}
.bas-badge-capitalize {
	text-transform: capitalize;
}

.bas-asset-grid {
	display: grid;
	grid-template-columns: repeat( auto-fill, minmax( 180px, 1fr ) );
	gap: 1rem;
}
.bas-asset-card {
	position: relative;
	background: var( --bas-card );
	border: 1px solid var( --bas-border );
	border-radius: var( --bas-radius );
	overflow: hidden;
}
.bas-asset-card img,
.bas-asset-card video {
	inline-size: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	display: block;
}
.bas-asset-label {
	position: absolute;
	inset-block-end: 0;
	inset-inline: 0;
	padding: 0.5rem 0.7rem;
	background: linear-gradient( to top, rgba( 0, 0, 0, 0.65 ), transparent );
	color: #fff;
	font-size: 0.75rem;
}
.bas-asset-meta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0.7rem 0.9rem 0.2rem;
}
.bas-asset-card .bas-muted {
	padding: 0 0.9rem 0.7rem;
	font-size: 0.75rem;
}
.bas-add-asset-btn {
	position: absolute;
	inset-block-start: 0.5rem;
	inset-inline-end: 0.5rem;
	background: rgba( 255, 255, 255, 0.92 );
	border: none;
	border-radius: calc( var( --bas-radius ) * 0.5 );
	padding: 0.35rem 0.6rem;
	font-size: 0.75rem;
	cursor: pointer;
	display: flex;
	align-items: center;
	gap: 0.25rem;
}

.bas-video-result {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}
.bas-video-result video,
.bas-video-demo-placeholder {
	inline-size: 100%;
	border-radius: var( --bas-radius );
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

/* ------------------------------------------------------------------ *
 * Brand identity results
 * ------------------------------------------------------------------ */

.bas-identity-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1.25rem;
}
.bas-palette-strip {
	display: flex;
	block-size: 70px;
	border-radius: calc( var( --bas-radius ) * 0.6 );
	overflow: hidden;
}
.bas-palette-strip span {
	flex: 1;
}
.bas-palette-codes {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1rem;
	margin-block-start: 0.75rem;
	font-size: 0.75rem;
	color: var( --bas-muted-foreground );
}
.bas-identity-brand-name {
	font-size: 1.8rem;
	font-weight: 700;
	color: var( --bas-primary );
	margin: 0.5rem 0;
}
.bas-muted {
	color: var( --bas-muted-foreground );
}

/* ------------------------------------------------------------------ *
 * Asset library toolbar
 * ------------------------------------------------------------------ */

.bas-library-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 1rem;
	margin-block: 1.5rem;
}
.bas-filter-tabs {
	display: flex;
	gap: 0.4rem;
	background: var( --bas-muted );
	padding: 0.25rem;
	border-radius: calc( var( --bas-radius ) * 0.7 );
}
.bas-filter-tab {
	border: none;
	background: transparent;
	padding: 0.4rem 0.9rem;
	border-radius: calc( var( --bas-radius ) * 0.5 );
	font-size: 0.82rem;
	cursor: pointer;
}
.bas-filter-tab.is-active {
	background: #fff;
	font-weight: 600;
	color: var( --bas-primary );
}
#bas-library-search {
	max-inline-size: 260px;
}

/* ------------------------------------------------------------------ *
 * Quick actions
 * ------------------------------------------------------------------ */

.bas-quick-actions {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( 150px, 1fr ) );
	gap: 1rem;
}
.bas-quick-action {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.5rem;
	padding: 1.5rem 1rem;
	background: var( --bas-card );
	border: 1px solid var( --bas-border );
	border-radius: var( --bas-radius );
	text-decoration: none;
	color: var( --bas-foreground );
	font-size: 0.85rem;
	font-weight: 600;
	text-align: center;
}
.bas-quick-action .dashicons {
	inline-size: 40px;
	block-size: 40px;
	font-size: 20px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var( --bas-accent );
	color: var( --bas-primary );
	border-radius: 50%;
}

.bas-empty-state {
	color: var( --bas-muted-foreground );
	padding: 2.5rem;
	text-align: center;
	background: var( --bas-muted );
	border-radius: var( --bas-radius );
}

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

@media ( max-width: 900px ) {
	.bas-split,
	.bas-generator-layout,
	.bas-identity-grid,
	.bas-form-grid,
	.bas-field-row {
		grid-template-columns: 1fr;
	}

	.bas-sidebar {
		position: fixed;
		inset-block: 0;
		inset-inline-start: 0;
		z-index: 50;
		transform: translateX( -110% );
		transition: transform 0.2s ease;
		block-size: 100vh;
		overflow-y: auto;
	}
	[dir="rtl"] .bas-sidebar {
		transform: translateX( 110% );
	}
	.bas-sidebar.is-open {
		transform: translateX( 0 );
	}
	.bas-mobile-nav-toggle {
		display: block;
	}
	.bas-app {
		border-radius: 0;
		border: none;
	}
}

/* ------------------------------------------------------------------ *
 * Generator pages (Image & Video): templates, prompt, card pickers
 * ------------------------------------------------------------------ */

.bas-hidden {
	display: none !important;
}

.bas-gen-section {
	margin-block-end: 1.75rem;
}

.bas-gen-label {
	display: flex;
	align-items: center;
	gap: 0.45rem;
	font-size: 0.95rem;
	font-weight: 700;
	margin: 0 0 0.75rem;
	color: var( --bas-foreground );
}
.bas-gen-label .dashicons {
	color: var( --bas-primary );
	font-size: 18px;
	inline-size: 18px;
	block-size: 18px;
}

.bas-gen-tip {
	margin: 0.35rem 0 0;
	font-size: 0.8rem;
	color: var( --bas-muted-foreground );
}

/* Quick templates */
.bas-gen-templates {
	margin-block-end: 1.25rem;
}
.bas-tpl-row {
	display: flex;
	gap: 0.9rem;
	overflow-x: auto;
	padding-block-end: 0.5rem;
	scroll-snap-type: x proximity;
}
.bas-tpl-card {
	flex: 0 0 150px;
	scroll-snap-align: start;
	border: 2px solid transparent;
	border-radius: calc( var( --bas-radius ) * 0.9 );
	overflow: hidden;
	background: var( --bas-card );
	padding: 0;
	cursor: pointer;
	box-shadow: 0 10px 24px -18px rgba( 107, 24, 57, 0.4 );
	transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
	text-align: start;
}
.bas-tpl-card img {
	inline-size: 100%;
	block-size: 88px;
	object-fit: cover;
	display: block;
}
.bas-tpl-card span {
	display: block;
	padding: 0.5rem 0.65rem 0.6rem;
	font-size: 0.78rem;
	font-weight: 600;
	line-height: 1.3;
	color: var( --bas-foreground );
}
.bas-tpl-card:hover {
	transform: translateY( -3px );
	box-shadow: 0 18px 32px -18px rgba( 107, 24, 57, 0.5 );
}
.bas-tpl-card.is-selected {
	border-color: var( --bas-primary );
}

/* Context row (brand / character) */
.bas-gen-context {
	display: flex;
	gap: 1rem;
	flex-wrap: wrap;
	margin-block-end: 1.5rem;
}
.bas-gen-context-field {
	flex: 1 1 180px;
}
.bas-gen-context-field label {
	display: block;
	font-size: 0.8rem;
	font-weight: 600;
	color: var( --bas-muted-foreground );
	margin-block-end: 0.3rem;
}
.bas-gen-context-field select {
	inline-size: 100%;
}

/* Prompt field */
.bas-gen-prompt-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	flex-wrap: wrap;
	margin-block-end: 0.6rem;
}
.bas-gen-prompt-head .bas-gen-label {
	margin: 0;
}
.bas-enhance-btn {
	font-size: 0.82rem;
	padding: 0.4rem 0.9rem;
	border: 1px dashed var( --bas-primary );
	border-radius: 999px;
	color: var( --bas-primary );
	background: var( --bas-accent );
}
.bas-enhance-btn:hover {
	background: var( --bas-secondary );
	color: #fff;
}
.bas-gen-prompt {
	inline-size: 100%;
	font-size: 0.95rem;
	line-height: 1.65;
	border-radius: calc( var( --bas-radius ) * 0.8 );
	resize: vertical;
}

.bas-enhance-suggestion {
	margin-block-start: 0.75rem;
	border: 1px solid var( --bas-secondary );
	background: var( --bas-accent );
	border-radius: calc( var( --bas-radius ) * 0.8 );
	padding: 0.9rem;
}
.bas-enhance-suggestion-head {
	font-size: 0.85rem;
	margin-block-end: 0.5rem;
	color: var( --bas-primary );
}
.bas-enhance-text {
	inline-size: 100%;
	font-size: 0.9rem;
	border-radius: calc( var( --bas-radius ) * 0.6 );
}
.bas-enhance-actions {
	display: flex;
	gap: 0.6rem;
	margin-block-start: 0.6rem;
}

/* Empty-state helpers under the prompt */
.bas-gen-empty-help {
	overflow: hidden;
	max-block-size: 600px;
	opacity: 1;
	transition: max-block-size 0.4s ease, opacity 0.4s ease, margin 0.4s ease;
	margin-block-start: 0.9rem;
}
.bas-gen-empty-help.is-collapsed {
	max-block-size: 0;
	opacity: 0;
	margin-block-start: 0;
}
.bas-gen-examples {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-block-end: 1rem;
}
.bas-example-chip {
	border: 1px solid var( --bas-border );
	background: var( --bas-card );
	border-radius: 999px;
	padding: 0.4rem 0.9rem;
	font-size: 0.78rem;
	color: var( --bas-muted-foreground );
	cursor: pointer;
	transition: all 0.15s ease;
	text-align: start;
}
.bas-example-chip:hover {
	border-color: var( --bas-primary );
	color: var( --bas-primary );
	background: var( --bas-accent );
}
.bas-gen-noidea {
	font-size: 0.82rem;
	font-weight: 600;
	color: var( --bas-muted-foreground );
	margin: 0 0 0.6rem;
}
.bas-guided {
	border: 1px dashed var( --bas-border );
	border-radius: calc( var( --bas-radius ) * 0.8 );
	padding: 0.9rem;
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}
.bas-guided-row label {
	display: block;
	font-size: 0.8rem;
	font-weight: 600;
	margin-block-end: 0.35rem;
}
.bas-guided-row input[type="text"] {
	inline-size: 100%;
}
.bas-chip-group {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
}
.bas-chip {
	border: 1px solid var( --bas-border );
	background: var( --bas-card );
	border-radius: 999px;
	padding: 0.32rem 0.85rem;
	font-size: 0.8rem;
	cursor: pointer;
	transition: all 0.15s ease;
}
.bas-chip:hover {
	border-color: var( --bas-primary );
	color: var( --bas-primary );
}
.bas-chip.is-selected {
	background: var( --bas-primary );
	border-color: var( --bas-primary );
	color: #fff;
}
.bas-surprise-btn {
	align-self: flex-start;
}

/* Upload slots */
.bas-upload-row {
	display: grid;
	grid-template-columns: repeat( auto-fill, minmax( 110px, 1fr ) );
	gap: 0.75rem;
}
.bas-upload-slot {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.45rem;
	padding: 0.9rem 0.5rem;
	border: 1.5px dashed var( --bas-border );
	border-radius: calc( var( --bas-radius ) * 0.8 );
	cursor: pointer;
	transition: border-color 0.2s ease, background 0.2s ease;
	text-align: center;
}
.bas-upload-slot:hover {
	border-color: var( --bas-primary );
	background: var( --bas-accent );
}
.bas-upload-slot.is-filled {
	border-style: solid;
	border-color: var( --bas-primary );
}
.bas-upload-slot input[type="file"] {
	display: none;
}
.bas-upload-thumb {
	inline-size: 52px;
	block-size: 52px;
	border-radius: calc( var( --bas-radius ) * 0.6 );
	background: var( --bas-accent ) center / cover no-repeat;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var( --bas-primary );
}
.bas-upload-thumb.has-image .dashicons {
	display: none;
}
.bas-upload-label {
	font-size: 0.74rem;
	font-weight: 600;
	color: var( --bas-muted-foreground );
	line-height: 1.25;
}
.bas-upload-clear {
	position: absolute;
	inset-block-start: 4px;
	inset-inline-end: 6px;
	border: none;
	background: var( --bas-primary );
	color: #fff;
	border-radius: 50%;
	inline-size: 20px;
	block-size: 20px;
	line-height: 1;
	font-size: 13px;
	cursor: pointer;
}

.bas-identity-row {
	margin-block-start: 0.9rem;
	padding: 0.75rem 0.9rem;
	background: var( --bas-accent );
	border-radius: calc( var( --bas-radius ) * 0.7 );
}

/* Switch toggle */
.bas-switch {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	font-size: 0.88rem;
	font-weight: 600;
	cursor: pointer;
}
.bas-switch input {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}
.bas-switch-track {
	inline-size: 38px;
	block-size: 22px;
	border-radius: 999px;
	background: var( --bas-border );
	position: relative;
	transition: background 0.2s ease;
	flex-shrink: 0;
}
.bas-switch-track::after {
	content: '';
	position: absolute;
	inset-block-start: 3px;
	inset-inline-start: 3px;
	inline-size: 16px;
	block-size: 16px;
	border-radius: 50%;
	background: #fff;
	transition: transform 0.2s ease;
	box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.25 );
}
.bas-switch input:checked + .bas-switch-track {
	background: var( --bas-primary );
}
.bas-switch input:checked + .bas-switch-track::after {
	transform: translateX( 16px );
}
[dir="rtl"] .bas-switch input:checked + .bas-switch-track::after {
	transform: translateX( -16px );
}

.bas-toggle-row {
	margin-block-end: 1.1rem;
}
.bas-toggle-row .bas-chip-group {
	margin-block-start: 0.6rem;
}

/* Card pickers */
.bas-card-picker {
	display: grid;
	grid-template-columns: repeat( auto-fill, minmax( 232px, 1fr ) );
	gap: 0.75rem;
}
/* Horizontal card: icon on the start side, title + description stacked. */
.bas-pick-card {
	position: relative;
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 0.85rem;
	min-block-size: 68px;
	padding: 0.85rem 0.95rem;
	border: 1.5px solid var( --bas-border );
	border-radius: calc( var( --bas-radius ) * 0.9 );
	background: var( --bas-card );
	cursor: pointer;
	text-align: start;
	overflow: hidden;
	transition: border-color 0.2s ease, transform 0.2s cubic-bezier( 0.22, 1, 0.36, 1 ), box-shadow 0.25s ease, background 0.25s ease;
}
.bas-pick-card:hover {
	transform: translateY( -3px ) scale( 1.012 );
	border-color: var( --bas-secondary );
	box-shadow: 0 16px 30px -18px rgba( 107, 24, 57, 0.5 );
}
.bas-pick-card.is-selected {
	border-color: var( --bas-primary );
	background: linear-gradient( 135deg, rgba( 107, 24, 57, 0.05 ) 0%, rgba( 216, 167, 177, 0.12 ) 100% );
	box-shadow: 0 0 0 1.5px var( --bas-primary ), 0 14px 30px -16px rgba( 107, 24, 57, 0.55 );
}
.bas-pick-thumb {
	inline-size: 46px;
	block-size: 46px;
	flex-shrink: 0;
	border-radius: calc( var( --bas-radius ) * 0.7 );
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.bas-pick-card:hover .bas-pick-thumb {
	transform: scale( 1.06 );
}
.bas-pick-card.is-selected .bas-pick-thumb {
	box-shadow: 0 6px 16px -6px rgba( 107, 24, 57, 0.6 );
}
.bas-pick-thumb .dashicons {
	font-size: 22px;
	inline-size: 22px;
	block-size: 22px;
}
.bas-tint-1 { background: linear-gradient( 135deg, #6b1839, #9c3a5c ); }
.bas-tint-2 { background: linear-gradient( 135deg, #9c3a5c, #d8a7b1 ); }
.bas-tint-3 { background: linear-gradient( 135deg, #4a1020, #6b1839 ); }
.bas-tint-4 { background: linear-gradient( 135deg, #b0808c, #e9c9a0 ); }
.bas-tint-5 { background: linear-gradient( 135deg, #6b1839, #e9c9a0 ); }
.bas-tint-6 { background: linear-gradient( 135deg, #7a5c4e, #d8a7b1 ); }
.bas-tint-7 { background: linear-gradient( 135deg, #464e60, #9c3a5c ); }
.bas-tint-8 { background: linear-gradient( 135deg, #9c3a5c, #4a1020 ); }
.bas-pick-text {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	min-inline-size: 0;
}
.bas-pick-label {
	font-size: 0.9rem;
	font-weight: 700;
	line-height: 1.25;
	color: var( --bas-foreground );
}
.bas-pick-tip {
	font-size: 0.775rem;
	line-height: 1.4;
	color: var( --bas-muted-foreground );
}
/* Selected checkmark — appears in the trailing corner. */
.bas-pick-check {
	position: absolute;
	inset-block-start: 0.55rem;
	inset-inline-end: 0.55rem;
	inline-size: 20px;
	block-size: 20px;
	font-size: 14px;
	line-height: 20px;
	text-align: center;
	border-radius: 50%;
	background: var( --bas-primary );
	color: #fff;
	opacity: 0;
	transform: scale( 0.5 );
	transition: opacity 0.2s ease, transform 0.2s cubic-bezier( 0.34, 1.56, 0.64, 1 );
	pointer-events: none;
}
.bas-pick-card.is-selected .bas-pick-check {
	opacity: 1;
	transform: scale( 1 );
}

/* Aspect ratio thumbs — the small icon square draws the actual ratio. */
.bas-aspect-thumb {
	background: var( --bas-accent );
}
.bas-ratio-box {
	display: block;
	block-size: 26px;
	max-block-size: 30px;
	max-inline-size: 30px;
	border: 2px solid var( --bas-primary );
	border-radius: 4px;
	background: #fff;
}

/* Segmented selector */
.bas-seg {
	display: inline-flex;
	border: 1.5px solid var( --bas-border );
	border-radius: 999px;
	overflow: hidden;
	background: var( --bas-card );
}
.bas-seg-btn {
	border: none;
	background: transparent;
	padding: 0.5rem 1.3rem;
	font-size: 0.88rem;
	font-weight: 600;
	cursor: pointer;
	color: var( --bas-muted-foreground );
	transition: background 0.15s ease, color 0.15s ease;
}
.bas-seg-btn.is-selected {
	background: var( --bas-primary );
	color: #fff;
}

/* Sliders */
.bas-gen-slider {
	margin-block-end: 1.25rem;
}
.bas-gen-slider-head label {
	font-size: 0.88rem;
	font-weight: 700;
}
.bas-gen-slider-row {
	display: flex;
	align-items: center;
	gap: 0.7rem;
	margin-block-start: 0.4rem;
}
.bas-gen-slider-row input[type="range"] {
	flex: 1;
	accent-color: var( --bas-primary );
}
.bas-slider-end {
	font-size: 0.72rem;
	color: var( --bas-muted-foreground );
	white-space: nowrap;
}

/* More options */
.bas-more-wrap {
	border-block-start: 1px solid var( --bas-border );
	padding-block-start: 1.1rem;
}
.bas-more-toggle {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	border: none;
	background: transparent;
	font-size: 0.9rem;
	font-weight: 700;
	color: var( --bas-primary );
	cursor: pointer;
	padding: 0.2rem 0;
}
.bas-more-arrow {
	transition: transform 0.25s ease;
}
.bas-more-toggle.is-open .bas-more-arrow {
	transform: rotate( 180deg );
}
.bas-more-body {
	padding-block-start: 1.1rem;
}

/* Sticky Create bar */
.bas-sticky-create {
	position: sticky;
	inset-block-end: 0;
	z-index: 30;
	display: flex;
	justify-content: center;
	padding: 0.9rem 1rem calc( 0.9rem + env( safe-area-inset-bottom, 0px ) );
	background: linear-gradient( to top, rgba( 248, 243, 238, 0.97 ) 60%, transparent );
	margin-block-start: 1rem;
}
.bas-create-btn {
	min-inline-size: 240px;
	box-shadow: 0 18px 40px -18px rgba( 107, 24, 57, 0.65 );
}

/* Template-applied flash */
@keyframes bas-flash-anim {
	0%   { box-shadow: 0 0 0 0 rgba( 156, 58, 92, 0.45 ); }
	100% { box-shadow: 0 0 0 14px rgba( 156, 58, 92, 0 ); }
}
.bas-gen-form.bas-flash {
	animation: bas-flash-anim 0.7s ease;
}

/* Video results list */
.bas-video-results-list {
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
}

/* ------------------------------------------------------------------ *
 * Generator pages layout: the form spans the FULL page width so option
 * cards flow horizontally (3-4 per row), and the results appear in a
 * full-width panel BELOW the form — the generated images show up right
 * under the settings.
 * ------------------------------------------------------------------ */

.bas-gen-layout {
	grid-template-columns: 1fr;
	gap: 2rem;
}
.bas-gen-layout .bas-gen-form {
	padding: 2.25rem;
}
.bas-gen-layout .bas-results-panel {
	position: static;
	min-height: 0;
}

/* Lay compact option groups side-by-side inside the wide form. */
.bas-gen-form .bas-gen-context {
	margin-block-end: 1.75rem;
}
.bas-gen-two-col {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 2rem;
	align-items: start;
}

/* Home shortcut at the top of the sidebar nav. */
.bas-nav-home {
	margin-block-end: 0.75rem;
	padding-block-end: 0.85rem;
	border-block-end: 1px solid var( --bas-border );
	border-radius: 0;
}

@media ( max-width: 1200px ) {
	.bas-gen-layout {
		grid-template-columns: 1fr;
	}
	.bas-gen-layout .bas-results-panel {
		position: static;
		max-block-size: none;
	}
}

/* ------------------------------------------------------------------ *
 * Generator form: every option group spans the full form width and its
 * cards flow horizontally (2-3 per row) — a wide, scannable layout.
 * ------------------------------------------------------------------ */

.bas-gen-section {
	margin-block-end: 2rem;
}

/* Keep text on at most two tidy lines inside each card. */
.bas-pick-label,
.bas-pick-tip {
	overflow-wrap: anywhere;
}

/* App pages: gentle staggered entrance so the interface feels alive. */
@keyframes bas-section-in {
	from { opacity: 0; transform: translateY( 16px ); }
	to   { opacity: 1; transform: none; }
}
.bas-gen-form > *,
.bas-gen-form .bas-gen-section {
	animation: bas-section-in 0.55s cubic-bezier( 0.22, 1, 0.36, 1 ) both;
}
.bas-gen-form > *:nth-child(2) { animation-delay: 0.05s; }
.bas-gen-form > *:nth-child(3) { animation-delay: 0.1s; }
.bas-gen-form > *:nth-child(4) { animation-delay: 0.15s; }
.bas-gen-form > *:nth-child(5) { animation-delay: 0.2s; }
.bas-gen-form > *:nth-child(6) { animation-delay: 0.25s; }
.bas-gen-form > *:nth-child(7) { animation-delay: 0.3s; }
.bas-gen-form > *:nth-child(8) { animation-delay: 0.35s; }
.bas-gen-form > *:nth-child(n+9) { animation-delay: 0.4s; }
.bas-results-panel {
	animation: bas-section-in 0.55s cubic-bezier( 0.22, 1, 0.36, 1 ) 0.2s both;
}

@media ( prefers-reduced-motion: reduce ) {
	.bas-gen-form > *,
	.bas-gen-form .bas-gen-section,
	.bas-results-panel {
		animation: none;
	}
}
