/* ── CSS custom properties (light defaults) ────────────────────────── */
:root {
	--bg:               #f0f0f0;
	--card-bg:          #ffffff;
	--text:             #111111;
	--text-muted:       #888888;
	--header-bg:        #111111;
	--header-text:      #ffffff;
	--header-muted:     #aaaaaa;
	--header-border:    #333333;
	--fork-border:      #dddddd;
	--fork-hover-bg:    #111111;
	--fork-hover-text:  #ffffff;
	--result-bg:        #f6fff6;
	--result-border:    #4caf50;
	--result-label:     #4caf50;
	--back-color:       #888888;
	--back-hover:       #222222;
	--kbd-bg:           #f4f4f4;
	--kbd-text:         #777777;
	--kbd-border:       #cccccc;
	--shadow:           0 2px 16px rgba(0,0,0,0.07);
	--progress-color:   #555555;
}

/* Dark mode — system preference */
@media (prefers-color-scheme: dark) {
	:root {
		--bg:               #161616;
		--card-bg:          #232323;
		--text:             #e2e2e2;
		--text-muted:       #666666;
		--header-bg:        #0d0d0d;
		--header-text:      #ffffff;
		--header-muted:     #888888;
		--header-border:    #2a2a2a;
		--fork-border:      #3a3a3a;
		--fork-hover-bg:    #e2e2e2;
		--fork-hover-text:  #111111;
		--result-bg:        #192619;
		--result-border:    #3a7d3e;
		--result-label:     #5cbf60;
		--back-color:       #555555;
		--back-hover:       #cccccc;
		--kbd-bg:           #2e2e2e;
		--kbd-text:         #888888;
		--kbd-border:       #484848;
		--shadow:           0 2px 16px rgba(0,0,0,0.4);
		--progress-color:   #888888;
	}
}

/* Dark mode — explicit user toggle overrides media query */
body.dark {
	--bg:               #161616;
	--card-bg:          #232323;
	--text:             #e2e2e2;
	--text-muted:       #666666;
	--header-bg:        #0d0d0d;
	--header-text:      #ffffff;
	--header-muted:     #888888;
	--header-border:    #2a2a2a;
	--fork-border:      #3a3a3a;
	--fork-hover-bg:    #e2e2e2;
	--fork-hover-text:  #111111;
	--result-bg:        #192619;
	--result-border:    #3a7d3e;
	--result-label:     #5cbf60;
	--back-color:       #555555;
	--back-hover:       #cccccc;
	--kbd-bg:           #2e2e2e;
	--kbd-text:         #888888;
	--kbd-border:       #484848;
	--shadow:           0 2px 16px rgba(0,0,0,0.4);
	--progress-color:   #888888;
}

body.light {
	--bg:               #f0f0f0;
	--card-bg:          #ffffff;
	--text:             #111111;
	--text-muted:       #888888;
	--header-bg:        #111111;
	--header-text:      #ffffff;
	--header-muted:     #aaaaaa;
	--header-border:    #333333;
	--fork-border:      #dddddd;
	--fork-hover-bg:    #111111;
	--fork-hover-text:  #ffffff;
	--result-bg:        #f6fff6;
	--result-border:    #4caf50;
	--result-label:     #4caf50;
	--back-color:       #888888;
	--back-hover:       #222222;
	--kbd-bg:           #f4f4f4;
	--kbd-text:         #777777;
	--kbd-border:       #cccccc;
	--shadow:           0 2px 16px rgba(0,0,0,0.07);
	--progress-color:   #555555;
}

/* ── Reset ───────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

body {
	margin: 0;
	padding: 0;
	background: var(--bg);
	color: var(--text);
	font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
	font-size: 16px;
	min-height: 100vh;
	transition: background 0.2s, color 0.2s;
}

a { cursor: pointer; }

/* ── Header ─────────────────────────────────────────────────────────── */
#header {
	background: var(--header-bg);
	color: var(--header-text);
	padding: 0 20px;
	display: flex;
	align-items: center;
	gap: 12px;
	position: sticky;
	top: 0;
	z-index: 100;
	min-height: 52px;
	border-bottom: 1px solid var(--header-border);
}

#tree-title {
	font-size: 0.88rem;
	font-weight: 600;
	color: var(--header-text);
	white-space: nowrap;
	flex-shrink: 0;
}

#breadcrumb {
	flex: 1;
	font-size: 0.78rem;
	color: var(--header-muted);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0;
}

#breadcrumb .bc-sep {
	margin: 0 4px;
	color: var(--header-border);
}

#breadcrumb .bc-item {
	color: var(--header-muted);
}

#progress {
	font-size: 0.72rem;
	color: var(--progress-color);
	white-space: nowrap;
	flex-shrink: 0;
	font-variant-numeric: tabular-nums;
}

#dark-toggle {
	background: none;
	border: 1px solid var(--header-border);
	color: var(--header-muted);
	width: 30px;
	height: 30px;
	border-radius: 4px;
	font-size: 0.85rem;
	cursor: pointer;
	flex-shrink: 0;
	transition: border-color 0.15s, color 0.15s;
	padding: 0;
	line-height: 1;
}

#dark-toggle:hover {
	border-color: var(--header-muted);
	color: var(--header-text);
}

#start-over {
	background: none;
	border: 1px solid var(--header-border);
	color: var(--header-muted);
	padding: 4px 10px;
	border-radius: 4px;
	font-size: 0.75rem;
	cursor: pointer;
	white-space: nowrap;
	flex-shrink: 0;
	transition: border-color 0.15s, color 0.15s;
}

#start-over:hover {
	border-color: var(--header-muted);
	color: var(--header-text);
}

#start-over.hidden { display: none; }

/* ── Viewport / Slider ───────────────────────────────────────────────── */
#tree-window {
	width: 100%;
	max-width: 800px;
	margin: 48px auto 0;
	overflow: hidden;
}

#tree-slider {
	display: flex;
	height: auto;
}

/* ── Branch panels ───────────────────────────────────────────────────── */
.tree-content-box {
	flex: 0 0 auto;
	padding: 36px 40px 32px;
	background: var(--card-bg);
	border-radius: 10px;
	box-shadow: var(--shadow);
	transition: background 0.2s;
}

.content {
	font-size: 1.4rem;
	font-weight: 600;
	line-height: 1.35;
	color: var(--text);
	margin-bottom: 28px;
}

/* ── Fork buttons ────────────────────────────────────────────────────── */
.decision-links {
	display: flex;
	flex-direction: column;
	gap: 9px;
	margin-top: 4px;
}

.decision-links a {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 16px;
	border: 1.5px solid var(--fork-border);
	border-radius: 7px;
	color: var(--text);
	text-decoration: none;
	font-size: 0.97rem;
	font-weight: 500;
	cursor: pointer;
	transition: border-color 0.12s, background 0.12s, color 0.12s;
	line-height: 1.3;
}

.decision-links a:hover {
	border-color: var(--fork-hover-bg);
	background: var(--fork-hover-bg);
	color: var(--fork-hover-text);
	text-decoration: none;
}

.decision-links a:hover .kbd-hint {
	border-color: transparent;
	background: rgba(255,255,255,0.15);
	color: inherit;
}

/* ── Keyboard hint badges ────────────────────────────────────────────── */
.kbd-hint {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 20px;
	height: 20px;
	padding: 0 4px;
	background: var(--kbd-bg);
	color: var(--kbd-text);
	border: 1px solid var(--kbd-border);
	border-radius: 3px;
	font-size: 0.7rem;
	font-weight: 700;
	font-family: monospace;
	flex-shrink: 0;
	transition: background 0.12s, color 0.12s, border-color 0.12s;
}

/* ── Result / leaf node ──────────────────────────────────────────────── */
.tree-content-box.result-node {
	background: var(--result-bg);
	border: 2px solid var(--result-border);
}

.tree-content-box.result-node .content {
	font-size: 1.15rem;
	font-weight: 400;
	line-height: 1.65;
}

.result-label {
	display: inline-block;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--result-label);
	margin-bottom: 12px;
}

.result-start-over {
	display: inline-block;
	margin-top: 22px;
	padding: 10px 20px;
	background: var(--text);
	color: var(--card-bg);
	border-radius: 6px;
	font-size: 0.88rem;
	font-weight: 600;
	cursor: pointer;
	text-decoration: none;
	border: none;
	transition: opacity 0.15s;
}

.result-start-over:hover {
	opacity: 0.75;
	text-decoration: none;
	color: var(--card-bg);
}

/* ── Result actions row ──────────────────────────────────────────────── */
.result-actions {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	margin-top: 22px;
}
.result-actions .result-start-over { margin-top: 0; }

.copy-link-btn {
	background: none;
	border: 1.5px solid var(--fork-border);
	color: var(--text-muted);
	padding: 10px 18px;
	border-radius: 6px;
	font-size: 0.88rem;
	font-weight: 500;
	cursor: pointer;
	font-family: inherit;
	transition: border-color 0.12s, color 0.12s;
}
.copy-link-btn:hover { border-color: var(--text); color: var(--text); }
.copy-link-btn.copied { border-color: var(--result-border); color: var(--result-label); }

/* ── Back link ───────────────────────────────────────────────────────── */
.back-link {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin-top: 22px;
	font-size: 0.82rem;
	color: var(--back-color);
	cursor: pointer;
	text-decoration: none;
	transition: color 0.12s;
}

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

/* ── Loading spinner ─────────────────────────────────────────────────── */
#loader {
	display: flex;
	justify-content: center;
	align-items: center;
	padding: 80px 0;
	width: 100%;
}

#loader.hidden { display: none; }

.spinner {
	width: 36px;
	height: 36px;
	border: 3px solid var(--fork-border);
	border-top-color: var(--text);
	border-radius: 50%;
	animation: spin 0.7s linear infinite;
}

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

/* ── Debug ───────────────────────────────────────────────────────────── */
#debug { display: none; }

/* ── Mobile layout ───────────────────────────────────────────────────── */
@media (max-width: 640px) {
	#header {
		padding: 0 14px;
		gap: 8px;
	}

	#tree-title {
		font-size: 0.8rem;
		max-width: 100px;
		overflow: hidden;
		text-overflow: ellipsis;
	}

	#tree-window {
		max-width: 100%;
		overflow: visible;
		margin-top: 16px;
	}

	#tree-slider {
		flex-direction: column !important;
		width: 100% !important;
		gap: 0;
		padding: 0 14px 48px;
	}

	.tree-content-box {
		width: 100% !important;
		border-radius: 8px;
		padding: 24px 22px 20px;
		margin-bottom: 0;
	}

	/* Connector line between stacked panels */
	#tree-slider .tree-content-box ~ .tree-content-box {
		margin-top: 2px;
		position: relative;
	}

	#tree-slider .tree-content-box ~ .tree-content-box::before {
		content: '';
		display: block;
		width: 2px;
		height: 18px;
		background: var(--fork-border);
		margin: -10px auto 10px;
	}

	.content {
		font-size: 1.15rem;
		margin-bottom: 20px;
	}

	.tree-content-box.result-node .content {
		font-size: 1rem;
	}

	.kbd-hint { display: none; }

	#progress { display: none; }
}
