:root {
	--bg-top: #f7f4ea;
	--bg-bottom: #eef4f7;
	--text-main: #1f2e2d;
	--text-subtle: #546968;
	--accent: #126f65;
	--accent-soft: rgba(18, 111, 101, 0.12);
	--danger: #b02e3a;
}

* {
	box-sizing: border-box;
}

body {
	margin: 0;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	font-family: "Space Grotesk", "Segoe UI", sans-serif;
	color: var(--text-main);
	background:
		radial-gradient(circle at 12% 18%, rgba(18, 111, 101, 0.14), transparent 38%),
		radial-gradient(circle at 88% 10%, rgba(196, 145, 88, 0.2), transparent 34%),
		linear-gradient(160deg, var(--bg-top) 0%, var(--bg-bottom) 100%);
}

.app-main {
	flex: 1 0 auto;
}

.app-container {
	width: min(100%, 860px);
}

.app-nav {
	background-color: rgba(247, 244, 234, 0.88);
	backdrop-filter: blur(4px);
	z-index: 1030;
}

.app-footer {
	background-color: rgba(247, 244, 234, 0.88);
}

.footer-text {
	font-size: 0.9rem;
	color: var(--text-subtle);
}

.footer-link {
	color: var(--accent);
	text-decoration: none;
	font-weight: 600;
}

.footer-link:hover,
.footer-link:focus-visible {
	text-decoration: underline;
}

.navbar-brand {
	font-family: "Fraunces", Georgia, serif;
	font-size: 1.35rem;
	letter-spacing: 0.01em;
	color: var(--text-main);
}

.mode-label {
	color: var(--text-main);
	font-size: 0.92rem;
	font-weight: 600;
	min-width: 5.5rem;
}

.page-title {
	font-family: "Fraunces", Georgia, serif;
	font-weight: 700;
	font-size: clamp(1.9rem, 3.2vw, 2.45rem);
	line-height: 1.08;
	margin: 0;
}

.subtitle {
	color: var(--text-subtle);
	max-width: 72ch;
	margin: 0;
}

.status-message {
	color: var(--text-subtle);
	font-size: 0.95rem;
}

.error-message {
	color: var(--danger);
	font-size: 0.95rem;
}

.agreement-note {
	font-size: 0.88rem;
	color: var(--text-subtle);
}

.agreement-note a {
	color: var(--accent);
	text-decoration: none;
}

.agreement-note a:hover,
.agreement-note a:focus-visible {
	text-decoration: underline;
}

.form-label {
	font-size: 0.92rem;
	color: var(--text-main);
	font-weight: 600;
}

.form-control,
.form-control:focus {
	border-color: rgba(31, 46, 45, 0.22);
	box-shadow: none;
}

.form-control:focus {
	background-color: #ffffff;
	border-color: var(--accent);
}

.btn-primary {
	--bs-btn-bg: var(--accent);
	--bs-btn-border-color: var(--accent);
	--bs-btn-hover-bg: #0f5e56;
	--bs-btn-hover-border-color: #0f5e56;
	--bs-btn-active-bg: #0d544d;
	--bs-btn-active-border-color: #0d544d;
}

.btn-outline-primary {
	--bs-btn-color: var(--accent);
	--bs-btn-border-color: var(--accent);
	--bs-btn-hover-bg: var(--accent);
	--bs-btn-hover-border-color: var(--accent);
	--bs-btn-active-bg: #0f5e56;
	--bs-btn-active-border-color: #0f5e56;
}

.challenge-list {
	margin: 0;
}

.challenge-list li {
	margin-bottom: 1rem;
	color: var(--text-main);
}

.challenge-item-title {
	font-size: 0.94rem;
	font-weight: 600;
	margin-bottom: 0.75rem;
}

.challenge-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.65rem;
	margin-bottom: 0.7rem;
}

.code-block-wrap {
	border: 1px solid rgba(31, 46, 45, 0.18);
	border-radius: 0.55rem;
	overflow: hidden;
	background: rgba(255, 255, 255, 0.74);
}

.code-block-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	padding: 0.38rem 0.62rem;
	border-bottom: 1px solid rgba(31, 46, 45, 0.14);
	font-size: 0.79rem;
	font-weight: 600;
	color: var(--text-subtle);
}

.challenge-code {
	margin: 0;
	padding: 0.72rem 0.75rem;
	font-size: 0.83rem;
	line-height: 1.4;
	font-family: "ui-monospace", "SFMono-Regular", "Menlo", monospace;
	white-space: pre-wrap;
	word-break: break-word;
}

.challenge-actions {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	flex-wrap: wrap;
}

.challenge-check-link {
	font-size: 0.88rem;
	text-decoration: none;
}

.dns-check-result {
	font-size: 0.88rem;
	color: var(--text-subtle);
}

.dns-check-result.success {
	color: #2f7d38;
}

.dns-check-result.error {
	color: var(--danger);
}

.output-area {
	font-family: "ui-monospace", "SFMono-Regular", "Menlo", monospace;
	font-size: 0.84rem;
	line-height: 1.45;
	background-color: rgba(255, 255, 255, 0.78);
}

.copy-btn {
	color: var(--accent);
	font-size: 1.15rem;
	text-decoration: none;
}

.code-copy-btn {
	font-size: 1rem;
	padding: 0;
	line-height: 1;
}

.copy-btn:hover,
.copy-btn:focus-visible {
	color: #0f5e56;
}

.copy-btn.copied {
	color: #2f7d38;
}

@media (max-width: 575px) {
	.app-container {
		width: min(100%, 100%);
	}

	.page-title {
		font-size: 1.85rem;
	}
}
