/* Shared components: wordmark, buttons, ad slots, footer, holding page. */

/* ---------- Wordmark ---------- */

.gs-wordmark {
	display: inline-flex;
	flex: none;
	color: var(--gs-ink);
	text-decoration: none;
	--wm-size: 28px;
}

.gs-wordmark__a,
.gs-wordmark__b {
	font-size: var(--wm-size);
	font-weight: 900;
	line-height: 1;
	font-stretch: 62%;
	text-transform: uppercase;
	transition: font-size var(--gs-medium) var(--gs-ease);
}

.gs-wordmark__a {
	background: var(--gs-btn-bg);
	color: var(--gs-btn-fg);
	padding: 5px 9px;
}

.gs-wordmark__b {
	padding: 3px 9px;
	border: 2px solid var(--gs-ink);
	border-left: 0;
}

.gs-wordmark--sm { --wm-size: 22px; }
.gs-wordmark--footer { --wm-size: 26px; }
.gs-wordmark--lg { --wm-size: 44px; }

.gs-wordmark--footer .gs-wordmark__a {
	background: var(--gs-yellow);
	color: var(--gs-on-yellow);
}

.gs-wordmark--footer .gs-wordmark__b {
	border-color: var(--gs-yellow);
	color: var(--gs-yellow);
}

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

.gs-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	height: 40px;
	padding: 0 16px;
	border: 2px solid var(--gs-ink);
	background: var(--gs-surface);
	color: var(--gs-ink);
	font-size: 14px;
	font-weight: 800;
	font-stretch: 75%;
	text-transform: uppercase;
	letter-spacing: .04em;
	text-decoration: none;
	white-space: nowrap;
	transition:
		transform var(--gs-fast) var(--gs-ease),
		box-shadow var(--gs-fast) var(--gs-ease),
		background var(--gs-fast) var(--gs-ease);
}

.gs-btn:hover {
	transform: translate(-2px, -2px);
	box-shadow: 3px 3px 0 var(--gs-shadow);
}

.gs-btn:active {
	transform: none;
	box-shadow: none;
}

.gs-btn--sm { height: 32px; padding: 0 12px; font-size: 12px; }
.gs-btn--md { height: 40px; padding: 0 16px; font-size: 14px; }
.gs-btn--lg { height: 48px; padding: 0 22px; font-size: 16px; }

.gs-btn--primary {
	background: var(--gs-btn-bg);
	border-color: var(--gs-btn-bg);
	color: var(--gs-btn-fg);
}

.gs-btn--accent {
	background: var(--gs-yellow);
	color: var(--gs-on-yellow);
	border-color: var(--gs-on-yellow);
}

.gs-btn--secondary {
	background: var(--gs-surface);
}

/* A primary button sitting on a yellow band keeps ink-on-yellow contrast in both themes. */
.gs-btn--on-yellow {
	background: var(--gs-on-yellow);
	border-color: var(--gs-on-yellow);
	color: var(--gs-yellow);
	font-size: 15px;
	padding: 0 20px;
}

.gs-btn--on-yellow:hover {
	box-shadow: 3px 3px 0 var(--gs-bg);
}

.gs-btn[disabled],
.gs-btn.is-disabled {
	background: var(--gs-surface-2);
	border-color: var(--gs-line);
	color: var(--gs-disabled);
	pointer-events: none;
}

.gs-link {
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 4px;
	text-decoration-thickness: 2px;
}

/* ---------- Badges ---------- */

.gs-badge {
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
	padding: 1px 6px;
	border: 1px solid var(--gs-ink);
	white-space: nowrap;
}

.gs-badge--error {
	border-color: var(--gs-error);
	color: var(--gs-error);
}

.gs-badge--archive {
	background: var(--gs-archive-panel);
	border: 1px dashed var(--gs-archive-rule);
	color: var(--gs-archive-ink);
}

.gs-badge--live {
	display: inline-flex;
	align-items: center;
	gap: 5px;
}

.gs-dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--gs-open);
	flex: none;
}

/* ---------- Data table (search Tafla, company board) ---------- */

.gs-table {
	overflow-x: auto;
	border: 2px solid var(--gs-ink);
	background: var(--gs-surface);
}

.gs-table__inner {
	min-width: 760px;
}

.gs-table__head,
.gs-table__row {
	display: grid;
	grid-template-columns: minmax(0, 1.6fr) 120px minmax(0, 1.5fr) 80px 70px 70px;
}

.gs-table__head {
	background: var(--gs-inverse-bg);
	color: var(--gs-inverse-fg);
}

.gs-table__th {
	padding: 10px 12px;
	border: 0;
	background: none;
	color: inherit;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .08em;
	text-align: left;
}

button.gs-table__th {
	cursor: pointer;
}

.gs-table__th.is-sorted {
	color: var(--gs-yellow);
}

.gs-table__th--num,
.gs-table__td--num {
	text-align: right;
}

.gs-table__row {
	border-bottom: 1px solid var(--gs-line);
	font-size: 14px;
	color: var(--gs-ink);
	text-decoration: none;
	transition: background var(--gs-fast) var(--gs-ease);
}

.gs-table__row:hover {
	background: var(--gs-yellow-soft);
}

.gs-table__row.is-former {
	background: var(--gs-archive-bg);
	color: var(--gs-archive-ink);
}

.gs-table__td {
	padding: 10px 12px;
	min-width: 0;
}

.gs-table__td--name {
	font-weight: 700;
}

.gs-table__td--addr {
	color: var(--gs-body);
}

.gs-table__row.is-former .gs-table__td--addr {
	color: inherit;
}

.gs-table__td--vsk {
	color: var(--gs-open);
	font-weight: 700;
}

.gs-table__row.is-former .gs-table__td--vsk {
	color: var(--gs-archive-ink);
}

/* ---------- Ad slot ---------- */

.gs-ad {
	display: flex;
	flex-direction: column;
	gap: 4px;
	width: 100%;
	max-width: var(--ad-w);
	margin: 0 auto;
}

.gs-ad__label {
	display: flex;
	justify-content: space-between;
	gap: 8px;
	font-size: 10px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .1em;
	color: var(--gs-muted);
}

.gs-ad__size--mobile {
	display: none;
}

.gs-ad__slot {
	position: relative;
	width: 100%;
	aspect-ratio: var(--ad-ratio);
	border: 1px solid var(--gs-ink);
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	overflow: hidden;
}

/* Space is reserved at the final size; content fades in when it arrives. */
.gs-ad__slot > * {
	animation: gs-fade-in var(--gs-slow) var(--gs-ease) both;
}

.gs-ad__slot--image {
	background: repeating-linear-gradient(135deg, var(--gs-surface-2) 0 10px, var(--gs-stripe) 10px 20px);
}

.gs-ad__slot--image .gs-ad__caption {
	font-size: 12px;
	font-weight: 500;
	color: var(--gs-muted);
	background: var(--gs-bg);
	padding: 3px 8px;
}

.gs-ad__slot--video {
	background: var(--gs-inverse-bg);
}

.gs-ad__slot--video .gs-ad__caption {
	font-size: 12px;
	font-weight: 500;
	color: #E6E4DC;
}

.gs-ad__play {
	flex: none;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: var(--gs-yellow);
	display: flex;
	align-items: center;
	justify-content: center;
}

.gs-ad__play::after {
	content: '';
	border-left: 14px solid var(--gs-raw-ink);
	border-top: 9px solid transparent;
	border-bottom: 9px solid transparent;
	margin-left: 4px;
}

.gs-ad__progress {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 3px;
	background: #3A3A3A;
}

.gs-ad__progress span {
	display: block;
	width: 35%;
	height: 100%;
	background: var(--gs-yellow);
}

@media (max-width: 767px) {
	.gs-ad--responsive {
		max-width: var(--ad-mw);
	}
	.gs-ad--responsive .gs-ad__slot {
		aspect-ratio: var(--ad-mratio);
	}
	.gs-ad--responsive .gs-ad__size {
		display: none;
	}
	.gs-ad--responsive .gs-ad__size--mobile {
		display: inline;
	}
}

@keyframes gs-fade-in {
	from { opacity: 0; }
	to { opacity: 1; }
}

/* ---------- Footer ---------- */

.gs-footer {
	background: var(--gs-inverse-bg);
	color: var(--gs-inverse-fg);
	border-top: 6px solid var(--gs-yellow);
}

.gs-footer__grid {
	max-width: var(--gs-max);
	margin: 0 auto;
	padding: 48px var(--gs-gutter) 32px;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: 32px;
}

.gs-footer__brand {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.gs-footer__brand p {
	font-size: 14px;
	line-height: 1.5;
	color: var(--gs-inverse-muted);
	max-width: 260px;
	text-wrap: pretty;
}

.gs-footer__col {
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-size: 14px;
}

.gs-footer__head {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .1em;
	color: var(--gs-yellow);
}

.gs-footer__col a {
	color: var(--gs-inverse-fg);
	text-decoration: none;
	align-self: flex-start;
}

.gs-footer__col a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.gs-footer__bottom {
	max-width: var(--gs-max);
	margin: 0 auto;
	padding: 16px var(--gs-gutter);
	border-top: 1px solid var(--gs-inverse-line);
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 12px;
	font-size: 12px;
	color: var(--gs-inverse-muted);
}

/* ---------- Holding page (pre-launch, visitors only) ---------- */

.gs-holding {
	min-height: 100vh;
	background: var(--gs-yellow);
	color: var(--gs-on-yellow);
}

.gs-holding__main {
	max-width: var(--gs-max);
	margin: 0 auto;
	padding: 72px var(--gs-gutter);
	display: flex;
	flex-direction: column;
	gap: 28px;
}

.gs-holding .gs-wordmark {
	color: var(--gs-on-yellow);
}

.gs-holding .gs-wordmark__a {
	background: var(--gs-on-yellow);
	color: var(--gs-yellow);
}

.gs-holding .gs-wordmark__b {
	border-color: var(--gs-on-yellow);
}

.gs-holding__title {
	font-size: clamp(56px, 9vw, 104px);
	font-weight: 900;
	line-height: .88;
	font-stretch: 62%;
	text-transform: uppercase;
	max-width: 980px;
	text-wrap: balance;
}

.gs-holding__text {
	font-size: 18px;
	line-height: 1.5;
	max-width: 560px;
}

.gs-ad--left {
	margin-left: 0;
}

.gs-missing {
	color: var(--gs-muted);
	font-weight: 400;
}

/* ---------- Breadcrumbs, source lines ---------- */

.gs-crumbs {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	font-size: 13px;
	font-weight: 500;
	color: var(--gs-muted);
}

.gs-crumbs a {
	color: var(--gs-muted);
}

.gs-crumbs__here {
	color: var(--gs-ink);
	font-weight: 700;
}

.gs-source {
	font-size: 12px;
	color: var(--gs-muted);
}


/* ---------- Map pins and controls (assets/js/map.js) ---------- */

.gs-pin {
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	display: flex;
	flex-direction: column;
	align-items: center;
}

.gs-pin__box {
	width: 28px;
	height: 28px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 3px solid var(--gs-ink);
	background: var(--gs-surface);
	color: var(--gs-ink);
	font: 800 13px var(--gs-font);
	transition: background var(--gs-fast) var(--gs-ease);
}

.gs-pin__stem {
	width: 3px;
	height: 10px;
	background: var(--gs-ink);
}

.gs-pin__tip {
	display: none;
	margin-bottom: 6px;
	padding: 6px 10px;
	background: var(--gs-btn-bg);
	color: var(--gs-btn-fg);
	font: 700 13px var(--gs-font);
	white-space: nowrap;
}

.gs-pin.is-selected .gs-pin__box {
	background: var(--gs-yellow);
	color: var(--gs-on-yellow);
}

.gs-pin.is-selected .gs-pin__tip {
	display: block;
}

.gs-pin--diamond {
	width: 28px;
	height: 28px;
	justify-content: center;
}

.gs-pin__diamond {
	width: var(--pin, 20px);
	height: var(--pin, 20px);
	border: 3px solid var(--gs-ink);
	background: var(--gs-yellow);
	transform: rotate(45deg);
}

.maplibregl-ctrl-group {
	border: 2px solid var(--gs-ink) !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	background: var(--gs-surface) !important;
}

.maplibregl-ctrl-group button {
	width: 36px !important;
	height: 36px !important;
}

.maplibregl-ctrl-group button + button {
	border-top: 2px solid var(--gs-ink) !important;
}

:root[data-theme="dark"] .maplibregl-ctrl-group button .maplibregl-ctrl-icon {
	filter: invert(1);
}

.maplibregl-ctrl-attrib {
	font: 500 11px var(--gs-font);
	background: var(--gs-bg) !important;
	color: var(--gs-muted);
}

.maplibregl-ctrl-attrib a {
	color: var(--gs-muted);
}

.maplibregl-cooperative-gesture-screen {
	font: 600 15px var(--gs-font);
}
