/* thicketcraft.net - main site stylesheet
   Implements the "Thicketcraft hero revision" design. */

:root {
	--bg:           oklch(0.15 0.025 155);
	--veil:         oklch(0.10 0.02 155 / 0.55);
	--panel:        oklch(0.20 0.03 155 / 0.85);
	--border:       oklch(0.32 0.04 150 / 0.7);

	--text:         oklch(0.90 0.02 140);
	--text-strong:  oklch(0.95 0.015 140);
	--text-value:   oklch(0.92 0.02 140);
	--text-muted:   oklch(0.65 0.03 140);
	--text-note:    oklch(0.62 0.03 140);

	--accent:       oklch(0.80 0.19 135);
	--accent-hover: oklch(0.88 0.19 135);
	--accent-ink:   oklch(0.12 0.02 155);
	--ghost-border: oklch(0.5 0.03 150);

	--online:       oklch(0.75 0.18 140);
	--offline:      oklch(0.65 0.15 25);
	--unknown:      oklch(0.70 0.05 140);
	--placeholder:  oklch(0.80 0.09 95);

	--serif: "Cinzel", Georgia, "Times New Roman", serif;
	--sans:  "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	--mono:  "Courier New", Courier, monospace;
}

* {
	box-sizing: border-box;
}

body {
	margin: 0;
	min-height: 100vh;
	background-color: var(--bg);
	color: var(--text);
	font-family: var(--sans);
	font-size: 15px;
	line-height: 1.6;
}

/* ---- fixed background art ------------------------------------------ */

#backdrop,
#backdrop-veil {
	position: fixed;
	inset: 0;
	z-index: 0;
}

#backdrop {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

#backdrop-veil {
	background: var(--veil);
}

/* ---- hero ----------------------------------------------------------- */

#hero {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	padding: 44px 24px 0 24px;
}

#hero h1 {
	margin: 0;
	width: 100%;
	display: flex;
	justify-content: center;
}

#wordmark {
	display: block;
	width: 100%;
	max-width: 875px;
	height: auto;
}

.actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 12px;
}

.button {
	display: inline-block;
	padding: 11px 26px;
	border: 1px solid transparent;
	border-radius: 4px;
	background: var(--accent);
	color: var(--accent-ink);
	font-size: 15px;
	font-weight: 600;
	text-decoration: none;
}

.button:hover,
.button:focus {
	background: var(--accent-hover);
	color: var(--accent-ink);
	text-decoration: none;
}

.button.ghost {
	background: transparent;
	border-color: var(--ghost-border);
	color: var(--text-strong);
}

.button.ghost:hover,
.button.ghost:focus {
	background: transparent;
	border-color: var(--accent);
	color: var(--accent);
}

/* ---- page and cards -------------------------------------------------- */

#page {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	gap: 22px;
	max-width: 880px;
	margin: 0 auto;
	padding: 36px 20px 40px 20px;
}

.card {
	background: var(--panel);
	border: 1px solid var(--border);
	border-radius: 6px;
	padding: 24px 28px;
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
}

.card h2 {
	margin: 0 0 18px 0;
	padding-bottom: 12px;
	border-bottom: 1px solid var(--border);
	font-family: var(--serif);
	font-size: 20px;
	font-weight: 600;
	letter-spacing: 1px;
	color: var(--text-strong);
	text-align: center;
}

.card p {
	margin: 10px 0;
}

.card p:last-child {
	margin-bottom: 0;
}

.card ul {
	margin: 10px 0 0 0;
	padding-left: 22px;
}

.card li {
	margin-bottom: 6px;
}

.card li:last-child {
	margin-bottom: 0;
}

/* ---- server status grid ---------------------------------------------- */

.statgrid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: 18px;
}

.stat-label {
	margin-bottom: 4px;
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 1.5px;
	color: var(--text-muted);
}

.stat-value {
	font-size: 15px;
	color: var(--text-value);
}

.stat-value.address {
	font-family: var(--mono);
	color: var(--text-strong);
}

#status-updated {
	margin-top: 18px;
}

#server-status {
	font-weight: 600;
}

.online {
	color: var(--online);
}

.offline {
	color: var(--offline);
}

.unknown,
.soon {
	color: var(--unknown);
}

/* ---- shared text styles ---------------------------------------------- */

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

a:hover {
	color: var(--accent-hover);
	text-decoration: underline;
}

a:focus-visible,
.button:focus-visible {
	outline: 2px solid var(--accent);
	outline-offset: 3px;
}

.address {
	font-family: var(--mono);
	color: var(--text-strong);
}

.note {
	font-size: 12px;
	color: var(--text-note);
}

/* Muted "(coming soon)" suffix next to a link that is not live yet. */
.soon-note {
	font-size: 13px;
	color: var(--text-note);
}

/* Anything still marked [PLACEHOLDER] in the copy. Deliberately tinted so
   unfinished content is obvious at a glance before launch. */
.placeholder {
	color: var(--placeholder);
}

/* Inline [PLACEHOLDER - ...] marker sitting next to a real link. */
.tag {
	display: inline-block;
	padding: 2px 8px;
	border: 1px dashed var(--placeholder);
	border-radius: 3px;
	font-size: 11px;
	letter-spacing: 0.5px;
	color: var(--placeholder);
	vertical-align: middle;
	white-space: nowrap;
}

.biglink {
	font-size: 17px;
}

.center {
	text-align: center;
}

.shot {
	display: block;
	width: 100%;
	height: auto;
	border: 1px solid var(--border);
	border-radius: 4px;
}

#footer {
	position: relative;
	z-index: 1;
	padding: 0 20px 34px 20px;
	font-size: 12px;
	color: var(--text-note);
	text-align: center;
}

/* ---- small screens ---------------------------------------------------- */

@media (max-width: 640px) {
	#hero {
		padding: 28px 16px 0 16px;
	}

	#page {
		gap: 16px;
		padding: 24px 14px 30px 14px;
	}

	.card {
		padding: 18px 16px;
	}

	.card h2 {
		font-size: 17px;
	}
}
