/**
 * Dynamic Travel Guide Builder — wizard styles (v0.5.0).
 *
 * Layout strategy:
 *   - Outer `.dtgb-wizard` fills its parent container and centers an inner
 *     box clamped to `--dtgb-wizard-max-width` (set from admin → Settings,
 *     default 1600px). This lets the shortcode live inside a full-width
 *     Elementor section without forcing the wizard to stretch edge-to-edge.
 *   - Theme overrides should target `.dtgb-` classes or override the variable.
 */

.dtgb-wizard {
	/* Defaults — overridden per-instance via inline CSS vars on the root. */
	--dtgb-wizard-max-width: 1600px;
	--dtgb-font-base:      1rem;

	--dtgb-surface:        #ffffff;
	--dtgb-surface-muted:  #f8fafc;
	--dtgb-border:         #e5e7eb;
	--dtgb-border-strong:  #cbd5e1;
	--dtgb-text:           #1e293b;
	--dtgb-text-muted:     #64748b;
	--dtgb-text-soft:      #94a3b8;
	--dtgb-accent:         #0f766e;
	--dtgb-accent-soft:    #ccfbf1;
	--dtgb-warning-soft:   #fef3c7;
	--dtgb-warning-text:   #92400e;
	--dtgb-success:        #10b981;
	--dtgb-danger:         #dc2626;
	--dtgb-radius-sm:      6px;
	--dtgb-radius:         10px;
	--dtgb-radius-lg:      14px;

	width: 100%;
	margin: 2rem 0;
	color: var(--dtgb-text);
	font-family: inherit;
	font-size: var(--dtgb-font-base);
}

/* Force sentence case — shields the wizard from themes with text-transform: uppercase. */
.dtgb-wizard.is-force-case,
.dtgb-wizard.is-force-case * {
	text-transform: none !important;
}

/* Force styles — emit !important on critical visual rules when the theme is winning. */
.dtgb-wizard.is-force-styles .dtgb-wizard__inner {
	background: var(--dtgb-surface) !important;
	border-color: var(--dtgb-border) !important;
	color: var(--dtgb-text) !important;
}
.dtgb-wizard.is-force-styles .dtgb-path,
.dtgb-wizard.is-force-styles .dtgb-ready__card,
.dtgb-wizard.is-force-styles .dtgb-cover {
	background: var(--dtgb-surface) !important;
	border-color: var(--dtgb-border) !important;
	color: var(--dtgb-text) !important;
}
.dtgb-wizard.is-force-styles .dtgb-btn {
	background: var(--dtgb-text) !important;
	color: #fff !important;
}
.dtgb-wizard.is-force-styles .dtgb-btn--cart {
	background: var(--dtgb-success) !important;
}
.dtgb-wizard.is-force-styles .dtgb-btn--prev {
	background: var(--dtgb-text-muted) !important;
}
.dtgb-wizard.is-force-styles .dtgb-ready__region,
.dtgb-wizard.is-force-styles .dtgb-cover__subtitle {
	color: var(--dtgb-accent) !important;
}
.dtgb-wizard.is-force-styles .dtgb-path__icon {
	background: var(--dtgb-accent-soft) !important;
	color: var(--dtgb-accent) !important;
}

.dtgb-wizard__inner {
	max-width: var(--dtgb-wizard-max-width);
	margin: 0 auto;
	padding: 1.5rem;
	background: var(--dtgb-surface);
	border: 1px solid var(--dtgb-border);
	border-radius: var(--dtgb-radius-lg);
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.25rem;
}

@media (min-width: 900px) {
	.dtgb-wizard__inner {
		grid-template-columns: 1fr 280px;
		grid-template-areas:
			"progress progress"
			"step     summary"
			"nav      nav";
	}
	.dtgb-wizard__progress { grid-area: progress; }
	.dtgb-wizard__step     { grid-area: step; }
	.dtgb-wizard__summary  { grid-area: summary; }
	.dtgb-wizard__nav      { grid-area: nav; }
}

/* On the entry step, the summary panel is meaningless — span full width. */
.dtgb-wizard[data-mode="entry"] .dtgb-wizard__inner {
	grid-template-columns: 1fr;
	grid-template-areas:
		"progress"
		"step"
		"nav";
}
.dtgb-wizard[data-mode="entry"] .dtgb-wizard__summary {
	display: none;
}

/* ------------------------------------------------------------------
 * Progress strip
 * ------------------------------------------------------------------ */
.dtgb-wizard__progress ol {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	font-size: 0.82rem;
}
.dtgb-wizard__progress li {
	padding: 0.35rem 0.8rem;
	border-radius: 999px;
	background: var(--dtgb-surface-muted);
	color: var(--dtgb-text-muted);
	border: 1px solid var(--dtgb-border);
	transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.dtgb-wizard__progress li.is-current {
	background: var(--dtgb-text);
	color: #fff;
	border-color: var(--dtgb-text);
}
.dtgb-wizard__progress li.is-done {
	background: var(--dtgb-success);
	color: #fff;
	border-color: var(--dtgb-success);
}

/* ------------------------------------------------------------------
 * Step panel
 * ------------------------------------------------------------------ */
.dtgb-wizard__step {
	min-height: 200px;
	padding: 1.25rem;
	border: 1px solid var(--dtgb-border);
	border-radius: var(--dtgb-radius);
	background: var(--dtgb-surface);
}
.dtgb-wizard__step h2 {
	margin: 0 0 0.5rem;
	font-size: 1.5rem;
	line-height: 1.25;
	color: var(--dtgb-text);
}
.dtgb-wizard__step h3 {
	margin: 0 0 1rem;
	font-size: 1.1rem;
	color: var(--dtgb-text);
}

.dtgb-select,
.dtgb-wizard__step input[type="text"],
.dtgb-wizard__step input[type="number"] {
	width: 100%;
	max-width: 520px;
	padding: 0.55rem 0.7rem;
	border: 1px solid var(--dtgb-border-strong);
	border-radius: var(--dtgb-radius-sm);
	font-size: 1rem;
	background: var(--dtgb-surface);
	color: var(--dtgb-text);
}
.dtgb-select:focus {
	outline: 2px solid var(--dtgb-accent);
	outline-offset: 1px;
}

.dtgb-checkbox-group,
.dtgb-radio-group {
	display: grid;
	gap: 0.5rem;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}
.dtgb-checkbox-group label,
.dtgb-radio-group label {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.65rem 0.8rem;
	border: 1px solid var(--dtgb-border);
	border-radius: var(--dtgb-radius-sm);
	cursor: pointer;
	transition: border-color 0.15s, background 0.15s;
}
.dtgb-checkbox-group label:hover,
.dtgb-radio-group label:hover {
	background: var(--dtgb-surface-muted);
	border-color: var(--dtgb-border-strong);
}

.dtgb-empty {
	color: var(--dtgb-text-soft);
	font-style: italic;
}

/* ------------------------------------------------------------------
 * Summary sidebar
 * ------------------------------------------------------------------ */
.dtgb-wizard__summary {
	padding: 1rem 1.1rem;
	background: var(--dtgb-surface-muted);
	border: 1px solid var(--dtgb-border);
	border-radius: var(--dtgb-radius);
	font-size: 0.95rem;
	height: fit-content;
}
.dtgb-summary__price {
	font-size: 1.25rem;
	margin-bottom: 0.5rem;
	color: var(--dtgb-text);
}
.dtgb-summary__label {
	color: var(--dtgb-text-muted);
	font-size: 0.85rem;
	margin-right: 0.4rem;
}

.dtgb-summary-list {
	list-style: none;
	padding: 0;
	margin: 0;
}
.dtgb-summary-list li {
	padding: 0.5rem 0;
	border-bottom: 1px solid var(--dtgb-border);
}
.dtgb-summary-list li:last-child { border-bottom: 0; }
.dtgb-summary-list strong { color: var(--dtgb-text-muted); font-weight: 500; margin-right: 0.35rem; }

/* ------------------------------------------------------------------
 * Navigation
 * ------------------------------------------------------------------ */
.dtgb-wizard__nav {
	display: flex;
	justify-content: space-between;
	gap: 0.5rem;
	flex-wrap: wrap;
}
.dtgb-btn {
	padding: 0.65rem 1.4rem;
	border: 0;
	border-radius: var(--dtgb-radius-sm);
	cursor: pointer;
	font-size: 1rem;
	font-weight: 500;
	background: var(--dtgb-text);
	color: #fff;
	transition: opacity 0.15s, transform 0.05s;
}
.dtgb-btn:hover   { opacity: 0.9; }
.dtgb-btn:active  { transform: translateY(1px); }
.dtgb-btn--prev   { background: var(--dtgb-text-muted); }
.dtgb-btn--cart   { background: var(--dtgb-success); }
.dtgb-btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* ------------------------------------------------------------------
 * Errors / loading
 * ------------------------------------------------------------------ */
.dtgb-error {
	color: var(--dtgb-danger);
	font-weight: 600;
}
.dtgb-wizard__loading {
	color: var(--dtgb-text-muted);
	font-style: italic;
}

/* ==================================================================
 * Entry step (v0.5.0)
 * ================================================================== */
.dtgb-entry__header {
	text-align: center;
	margin-bottom: 1.75rem;
}
.dtgb-entry__eyebrow {
	font-size: 0.72rem;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--dtgb-text-soft);
	margin: 0 0 0.4rem;
}
.dtgb-entry__title {
	font-size: 1.5rem;
	margin: 0;
	font-weight: 500;
	color: var(--dtgb-text);
}

.dtgb-entry__paths {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 1rem;
	margin-bottom: 1.5rem;
}

.dtgb-path {
	display: flex;
	gap: 1rem;
	align-items: flex-start;
	padding: 1.25rem;
	background: var(--dtgb-surface);
	border: 1px solid var(--dtgb-border);
	border-radius: var(--dtgb-radius);
	text-align: left;
	cursor: pointer;
	transition: border-color 0.15s, box-shadow 0.15s, transform 0.05s;
	font-family: inherit;
	color: var(--dtgb-text);
}
.dtgb-path:hover:not(:disabled) {
	border-color: var(--dtgb-accent);
	box-shadow: 0 1px 3px rgba(15, 118, 110, 0.1);
}
.dtgb-path:active:not(:disabled) { transform: translateY(1px); }
.dtgb-path:disabled {
	opacity: 0.55;
	cursor: not-allowed;
}

.dtgb-path__icon {
	flex-shrink: 0;
	width: 42px;
	height: 42px;
	border-radius: var(--dtgb-radius-sm);
	background: var(--dtgb-accent-soft);
	color: var(--dtgb-accent);
	display: flex;
	align-items: center;
	justify-content: center;
}
.dtgb-path--custom .dtgb-path__icon {
	background: var(--dtgb-warning-soft);
	color: var(--dtgb-warning-text);
}

.dtgb-path__body {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}
.dtgb-path__title {
	font-size: 1.05rem;
	font-weight: 500;
	color: var(--dtgb-text);
}
.dtgb-path__desc {
	font-size: 0.9rem;
	color: var(--dtgb-text-muted);
	line-height: 1.5;
}
.dtgb-path__meta {
	font-size: 0.78rem;
	color: var(--dtgb-text-soft);
	margin-top: 0.35rem;
}

/* ------------------------------------------------------------------
 * Ready guides panel
 * ------------------------------------------------------------------ */
.dtgb-ready {
	padding-top: 1.25rem;
	border-top: 1px solid var(--dtgb-border);
}
.dtgb-ready__toolbar {
	display: flex;
	justify-content: flex-end;
	margin-bottom: 1rem;
}
.dtgb-ready__filter {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.9rem;
	color: var(--dtgb-text-muted);
}
.dtgb-ready__filter .dtgb-select { max-width: 240px; }

.dtgb-ready__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 1rem;
}

.dtgb-ready__card {
	display: flex;
	flex-direction: column;
	padding: 0;
	border: 1px solid var(--dtgb-border);
	border-radius: var(--dtgb-radius);
	background: var(--dtgb-surface);
	cursor: pointer;
	overflow: hidden;
	text-align: left;
	font-family: inherit;
	color: var(--dtgb-text);
	transition: border-color 0.15s, box-shadow 0.15s, transform 0.05s;
}
.dtgb-ready__card:hover {
	border-color: var(--dtgb-accent);
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
	transform: translateY(-1px);
}

.dtgb-ready__image {
	display: block;
	aspect-ratio: 4 / 3;
	background: var(--dtgb-surface-muted);
	overflow: hidden;
	position: relative;
}
.dtgb-ready__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.dtgb-ready__placeholder {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--dtgb-text-soft);
}

.dtgb-ready__body {
	display: flex;
	flex-direction: column;
	gap: 0.2rem;
	padding: 0.85rem 1rem 1rem;
}
.dtgb-ready__title {
	font-size: 1rem;
	font-weight: 500;
	line-height: 1.3;
	color: var(--dtgb-text);
}
.dtgb-ready__region {
	font-size: 0.78rem;
	color: var(--dtgb-accent);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	margin-top: 0.15rem;
}
.dtgb-ready__excerpt {
	font-size: 0.85rem;
	color: var(--dtgb-text-muted);
	line-height: 1.5;
	margin-top: 0.3rem;
}

/* ==================================================================
 * Cover preview (summary step) + error banner (v0.5.1)
 * ================================================================== */
.dtgb-cover {
	display: grid;
	grid-template-columns: 120px 1fr;
	gap: 1rem;
	align-items: center;
	margin-top: 1.25rem;
	padding: 1rem;
	background: var(--dtgb-surface-muted);
	border: 1px solid var(--dtgb-border);
	border-radius: var(--dtgb-radius);
}
.dtgb-cover__image {
	aspect-ratio: 3 / 4;
	width: 120px;
	overflow: hidden;
	border-radius: var(--dtgb-radius-sm);
	background: var(--dtgb-surface);
	border: 1px solid var(--dtgb-border);
	display: flex;
	align-items: center;
	justify-content: center;
}
.dtgb-cover__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.dtgb-cover__image--placeholder {
	color: var(--dtgb-text-soft);
}
.dtgb-cover__body {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}
.dtgb-cover__eyebrow {
	font-size: 0.72rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--dtgb-text-soft);
}
.dtgb-cover__title {
	font-size: 1.15rem;
	font-weight: 500;
	color: var(--dtgb-text);
	line-height: 1.3;
}
.dtgb-cover__subtitle {
	font-size: 0.9rem;
	color: var(--dtgb-accent);
	text-transform: uppercase;
	letter-spacing: 0.05em;
}

.dtgb-cart-error {
	padding: 0.85rem 1rem;
	margin-bottom: 1rem;
	background: #fee2e2;
	border: 1px solid #fca5a5;
	border-radius: var(--dtgb-radius-sm);
	color: #991b1b;
	font-size: 0.92rem;
	line-height: 1.5;
}
