/* LAN-Seat – frontend */
.lanseat {
	--ls-accent: #1e88e5;
	--ls-border: #dcdcde;
	--ls-muted: #646970;
	--ls-bg: #fff;
	--ls-soft: #f6f7f7;
	font-size: 16px;
	line-height: 1.5;
	color: inherit;
	max-width: 100%;
}
/* Stránka „Moje rezervace“ nemusí být uvnitř .lanseat – stejné proměnné. */
.lanseat-status {
	--ls-accent: #1e88e5;
	--ls-border: #dcdcde;
	--ls-muted: #646970;
	--ls-bg: #fff;
	--ls-soft: #f6f7f7;
}
.lanseat *,
.lanseat *::before,
.lanseat *::after { box-sizing: border-box; }

/* Nadpis stránky nad roztaženou rezervací vycentrovat (běžné třídy nadpisů WordPress šablon). */
body.lanseat-wide-page :is(.wp-block-post-title, .entry-title, .page-title, .post-title) { text-align: center; }

/* Roztažení z úzkého sloupce šablony na šířku okna – šířku a vycentrování dopočítá skript (fitWide). */
.lanseat--wide { max-width: none !important; }

.lanseat-loading { padding: 2em; text-align: center; color: var(--ls-muted); }

.lanseat-notice {
	padding: .75em 1em;
	border-radius: 6px;
	background: #f0f6fc;
	border-left: 4px solid #72aee6;
	margin: 0 0 1em;
}
.lanseat-notice--warn { background: #fcf9e8; border-color: #dba617; }
.lanseat-notice--ok { background: #edfaef; border-color: #00a32a; }

.lanseat-info { margin-bottom: 1em; }

.lanseat-rooms { display: flex; flex-wrap: wrap; gap: .4em; margin-bottom: .6em; }
.lanseat-room-tab {
	border: 1px solid var(--ls-border);
	background: var(--ls-bg);
	border-radius: 999px;
	padding: .35em 1em;
	cursor: pointer;
	font: inherit;
	color: inherit;
}
.lanseat-room-tab.is-active { background: var(--ls-accent); border-color: var(--ls-accent); color: #fff; }
.lanseat-room-desc { color: var(--ls-muted); margin: 0 0 .6em; }

.lanseat-map { position: relative; border: 1px solid var(--ls-border); border-radius: 8px; background: var(--ls-soft); }
.lanseat-viewport {
	overflow: auto;
	max-height: var(--lanseat-map-height, 600px);
	-webkit-overflow-scrolling: touch;
	border-radius: 8px;
}
.lanseat-svg { display: block; margin: 0 auto; }
.lanseat-bg { fill: #fbfbfc; }
.lanseat-zoom {
	display: flex;
	justify-content: flex-end;
	gap: 4px;
	padding: 6px 6px 0;
}
.lanseat-zoom button {
	width: 32px;
	height: 32px;
	border: 1px solid var(--ls-border);
	border-radius: 6px;
	background: #fff;
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
	color: #1d2327;
	box-shadow: 0 1px 2px rgba(0, 0, 0, .08);
}

.lanseat-seat { cursor: default; }
.lanseat-seat:focus { outline: none; }
.lanseat-seat-bg { stroke: rgba(0, 0, 0, .18); stroke-width: 1; transition: filter .12s, stroke-width .12s; }
.lanseat-seat.is-clickable { cursor: pointer; }
.lanseat-seat.is-clickable:hover .lanseat-seat-bg,
.lanseat-seat:focus-visible .lanseat-seat-bg { filter: brightness(1.12); stroke: #0b1f33; stroke-width: 2.5; }
.lanseat-seat.is-dot-style.is-taken .lanseat-seat-bg,
.lanseat-seat.is-dot-style.is-pending .lanseat-seat-bg { filter: saturate(.55) brightness(.92); }
.lanseat-seat.is-blocked .lanseat-seat-bg { opacity: .55; }
.lanseat-seat.is-mine .lanseat-seat-bg { stroke: #0b3d91; stroke-width: 3; }
.lanseat-seat-dot { stroke: #fff; stroke-width: 1.5; pointer-events: none; }
.lanseat-seat-lock { fill: #fff; pointer-events: none; }
.lanseat-seat-lock-arc { fill: none; stroke: #fff; stroke-width: 1.4; pointer-events: none; }
.lanseat-seat-check { fill: none; stroke: #fff; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; pointer-events: none; }
.lanseat-seat-label { fill: #fff; font-weight: 700; pointer-events: none; font-family: system-ui, -apple-system, "Segoe UI", sans-serif; paint-order: stroke; stroke: rgba(0, 0, 0, .28); stroke-width: 2px; }
.lanseat-seat-nick { fill: #1d2327; pointer-events: none; font-family: system-ui, sans-serif; }
.lanseat-seat.is-light .lanseat-seat-label { fill: #1d2327; stroke: rgba(255, 255, 255, .35); }
.lanseat-seat.is-light .lanseat-seat-check { stroke: #1d2327; }
.lanseat-label { fill: #1d2327; font-family: system-ui, -apple-system, "Segoe UI", sans-serif; font-weight: 600; }
.lanseat-block rect { stroke: rgba(0, 0, 0, .12); stroke-width: 1; }
.lanseat-el-text { font-family: system-ui, -apple-system, "Segoe UI", sans-serif; font-weight: 600; pointer-events: none; }

.lanseat-tip {
	position: absolute;
	z-index: 5;
	transform: translate(-50%, calc(-100% - 10px));
	background: #1d2327;
	color: #fff;
	border-radius: 8px;
	padding: .5em .75em;
	font-size: 13px;
	line-height: 1.45;
	display: grid;
	gap: 1px;
	min-width: 140px;
	max-width: 240px;
	pointer-events: none;
	box-shadow: 0 6px 20px rgba(0, 0, 0, .25);
	white-space: nowrap;
}
.lanseat-tip[hidden] { display: none; }
.lanseat-tip::after {
	content: "";
	position: absolute;
	left: calc(50% + var(--lanseat-arrow, 0px));
	bottom: -6px;
	margin-left: -6px;
	border: 6px solid transparent;
	border-bottom: 0;
	border-top-color: #1d2327;
}
.lanseat-tip.is-below { transform: translate(-50%, 10px); }
.lanseat-tip.is-below::after { bottom: auto; top: -6px; border: 6px solid transparent; border-top: 0; border-bottom-color: #1d2327; }
.lanseat-tip strong { font-size: 14px; }
.lanseat-tip-muted { color: #c3c4c7; white-space: normal; }
.lanseat-tip-state { display: flex; align-items: center; gap: .4em; }
.lanseat-tip-state i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; box-shadow: 0 0 0 1.5px #fff; }

.lanseat-legend { list-style: none; display: flex; flex-wrap: wrap; gap: .3em 1.2em; padding: 0; margin: .8em 0; font-size: .9em; color: var(--ls-muted); }
.lanseat-legend li { display: flex; align-items: center; gap: .4em; margin: 0; }
.lanseat-swatch { width: 14px; height: 14px; border-radius: 4px; display: inline-block; border: 1px solid rgba(0, 0, 0, .15); }
.lanseat-swatch.is-dot { width: 11px; height: 11px; border-radius: 50%; border: 0; box-shadow: 0 0 0 2px #fff, 0 0 0 3px rgba(0, 0, 0, .15); }

.lanseat-cart { border: 1px solid var(--ls-border); border-radius: 10px; padding: 1em 1.1em; background: var(--ls-bg); }
.lanseat-cart-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: .6em; }
.lanseat-cart-count { background: var(--ls-soft); border-radius: 999px; padding: .1em .7em; font-size: .9em; color: var(--ls-muted); }
.lanseat-cart-list { list-style: none; padding: 0; margin: 0; display: grid; gap: .4em; }
.lanseat-cart-item {
	display: grid;
	grid-template-columns: auto 1fr auto auto;
	align-items: center;
	gap: .8em;
	margin: 0;
	padding: .45em .5em .45em .45em;
	background: var(--ls-soft);
	border-radius: 8px;
}
.lanseat-cart-seat {
	display: grid;
	justify-items: center;
	min-width: 3.4em;
	padding: .15em .5em;
	border-radius: 6px;
	background: var(--ls-accent);
	color: #fff;
	line-height: 1.1;
}
.lanseat-cart-seat small { font-size: .65em; text-transform: uppercase; letter-spacing: .04em; opacity: .85; }
.lanseat-cart-seat strong { font-size: 1.15em; }
.lanseat-cart-cat { color: var(--ls-muted); font-size: .9em; }
.lanseat-cart-price { font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.lanseat-cart-remove {
	width: 30px;
	height: 30px;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: var(--ls-muted);
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
}
.lanseat-cart-remove:hover { background: #fde2e1; color: #b32d2e; }
.lanseat-cart-foot { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .8em; margin-top: .9em; padding-top: .8em; border-top: 1px solid var(--ls-border); }
.lanseat-cart-total { font-size: 1.1em; }
.lanseat-cart-total strong { font-size: 1.25em; margin-left: .3em; }
.lanseat-hint { color: var(--ls-muted); font-size: .9em; margin: .3em 0; }

/* Vyskakovací okno s formulářem */
html.lanseat-modal-open { overflow: hidden; }
.lanseat-modal {
	--ls-accent: #1e88e5;
	--ls-border: #dcdcde;
	--ls-muted: #646970;
	--ls-bg: #fff;
	--ls-soft: #f6f7f7;
	position: fixed;
	inset: 0;
	z-index: 100000;
	background: rgba(15, 23, 32, .55);
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: 4vh 16px;
	overflow-y: auto;
	animation: lanseat-fade .15s ease-out;
	font-size: 16px;
	line-height: 1.5;
	color: #1d2327;
}
.lanseat-modal *, .lanseat-modal *::before, .lanseat-modal *::after { box-sizing: border-box; }
.lanseat-modal__dialog {
	background: #fff;
	border-radius: 14px;
	width: min(720px, 100%);
	box-shadow: 0 20px 60px rgba(0, 0, 0, .35);
	animation: lanseat-pop .18s ease-out;
}
.lanseat-modal__head {
	position: sticky;
	top: 0;
	z-index: 1;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1em;
	padding: .9em 1.2em;
	background: #fff;
	border-bottom: 1px solid var(--ls-border);
	border-radius: 14px 14px 0 0;
}
.lanseat-modal__title { margin: 0; font-size: 1.25em; line-height: 1.3; }
.lanseat-modal__close {
	width: 36px;
	height: 36px;
	border: 0;
	border-radius: 50%;
	background: var(--ls-soft);
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
	color: #1d2327;
	flex: none;
}
.lanseat-modal__close:hover { background: #e2e4e7; }
.lanseat-modal__body { padding: 1.2em; }
.lanseat-form-actions { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .6em; margin-top: .4em; }
@keyframes lanseat-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes lanseat-pop { from { transform: translateY(12px); opacity: 0; } to { transform: none; opacity: 1; } }
@media (max-width: 600px) {
	.lanseat-modal { padding: 0; }
	.lanseat-modal__dialog { border-radius: 0; min-height: 100%; }
	.lanseat-modal__head { border-radius: 0; }
	.lanseat-cart-item { grid-template-columns: auto 1fr auto; }
	.lanseat-cart-cat { display: none; }
	.lanseat-cart-foot .lanseat-btn { width: 100%; }
}

.lanseat-btn {
	display: inline-block;
	background: var(--ls-accent);
	color: #fff;
	border: 0;
	border-radius: 6px;
	padding: .7em 1.4em;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	text-decoration: none;
}
.lanseat-btn:hover { filter: brightness(1.08); color: #fff; }
.lanseat-btn:disabled { opacity: .6; cursor: wait; }
.lanseat-btn--ghost { background: transparent; color: var(--ls-accent); border: 1px solid var(--ls-accent); }
.lanseat-btn--ghost:hover { color: var(--ls-accent); }
.lanseat-copy-name { justify-self: start; margin-top: -.3em; }
.lanseat-link { background: none; border: 0; padding: 0; color: var(--ls-accent); cursor: pointer; font: inherit; font-size: .9em; text-decoration: underline; }

.lanseat-form { display: grid; gap: 1em; }
.lanseat-back { justify-self: start; }
.lanseat-fieldset { border: 1px solid var(--ls-border); border-radius: 8px; padding: 1em; margin: 0; display: grid; gap: .7em; }
.lanseat-fieldset legend { font-weight: 700; padding: 0 .4em; }
.lanseat-field { display: grid; gap: .25em; }
.lanseat-field span { font-size: .9em; font-weight: 600; }
.lanseat-field input,
.lanseat-field select,
.lanseat-field textarea {
	width: 100%;
	padding: .55em .7em;
	border: 1px solid #8c8f94;
	border-radius: 6px;
	font: inherit;
	background: #fff;
	color: #1d2327;
}
.lanseat-row { display: grid; gap: .7em; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.lanseat-check { display: flex; gap: .5em; align-items: flex-start; }
.lanseat-check input { margin-top: .3em; }
.lanseat-extras { display: grid; gap: .4em; background: var(--ls-soft); border-radius: 6px; padding: .7em; }
.lanseat-extra { display: flex; flex-wrap: wrap; align-items: center; gap: .4em; }
.lanseat-extra small { color: var(--ls-muted); }
.lanseat-extra-desc { margin: -.2em 0 .2em 1.6em; font-size: .85em; color: var(--ls-muted); }
.lanseat-qty { width: 4.5em; padding: .3em; }
.lanseat-hp { position: absolute !important; left: -9999px !important; height: 1px; overflow: hidden; }
.lanseat-summary-box { background: var(--ls-soft); border-radius: 8px; padding: 1em; }
.lanseat-coupon { display: flex; flex-wrap: wrap; gap: .5em; align-items: center; }
.lanseat-coupon input { flex: 1 1 160px; padding: .55em .7em; border: 1px solid #8c8f94; border-radius: 6px; font: inherit; text-transform: uppercase; }
.lanseat-coupon .lanseat-btn { padding: .55em 1em; }
.lanseat-coupon-status { flex-basis: 100%; font-size: .9em; }
.lanseat-coupon-status.is-ok { color: #008a20; }
.lanseat-coupon-status.is-error { color: #b32d2e; }
.lanseat-discount { color: #008a20; }
.lanseat-summary-box ul { list-style: none; padding: 0; margin: 0 0 .5em; }
.lanseat-total { font-size: 1.15em; margin: 0; }

/* Stav rezervace */
.lanseat-status-badge span { display: inline-block; padding: .2em .8em; border-radius: 999px; background: #dba617; color: #fff; font-weight: 700; }
.lanseat-status--paid .lanseat-status-badge span { background: #00a32a; }
.lanseat-status--cancelled .lanseat-status-badge span { background: #8c8f94; }
.lanseat-success { margin-bottom: 1em; }
.lanseat-payment-box { border: 2px solid var(--ls-accent, #1e88e5); border-radius: 10px; padding: 1em 1.2em; margin: 1em 0; }
.lanseat-payment-box h3 { margin-top: 0; }
.lanseat-payment-grid { display: flex; flex-wrap: wrap; gap: 1.5em; align-items: flex-start; }
.lanseat-qr { display: grid; gap: .3em; justify-items: center; }
.lanseat-qr img { width: 240px; height: 240px; max-width: 100%; image-rendering: pixelated; background: #fff; }
.lanseat-qr small { color: #646970; }
.lanseat-qr--missing { max-width: 240px; color: #646970; }
.lanseat-summary th { font-weight: 600; }
.lanseat-contact, .lanseat-status-link { color: #646970; font-size: .9em; }
.lanseat-btn--small { padding: .3em .9em; font-size: .9em; }
.lanseat-cancel-seats { margin: 1em 0; }
.lanseat-cancel-seats summary { cursor: pointer; color: var(--ls-accent); }
.lanseat-cancel-seats ul { list-style: none; padding: 0; margin: .6em 0; display: grid; gap: .4em; }
.lanseat-cancel-seats li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5em; padding: .4em .7em; background: var(--ls-soft); border-radius: 6px; }
.lanseat-cancel-seats small { color: #646970; }

/* Samostatná stránka přímého odkazu */
body.lanseat-page { margin: 0; background: #f6f7f7; font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; color: #1d2327; }
.lanseat-page__main { max-width: 1640px; margin: 0 auto; padding: 24px 16px 48px; background: #fff; min-height: 100vh; }
.lanseat-page__site { margin: 0 0 .3em; font-size: .9em; }
.lanseat-page__site a { color: #646970; text-decoration: none; }
.lanseat-page__title { margin: 0 0 1em; font-size: 1.8em; }

.lanseat-map.is-scrollable::after {
	content: "↔ posuňte mapu";
	position: absolute;
	left: 10px;
	bottom: 10px;
	font-size: 12px;
	background: rgba(29, 35, 39, .75);
	color: #fff;
	padding: 2px 8px;
	border-radius: 999px;
	pointer-events: none;
}

@media (max-width: 600px) {
	.lanseat-viewport { max-height: var(--lanseat-map-height-mobile, 450px); }
	.lanseat-zoom button { width: 32px; height: 32px; font-size: 16px; }
	.lanseat-payment-grid { flex-direction: column; align-items: stretch; }
}

/* Anketa o turnajových hrách */
.lanseat-poll-box {
	border: 2px solid #8e24aa;
	border-radius: 10px;
	padding: 1em 1.2em;
	margin: 1em 0;
	background: linear-gradient(180deg, #faf5fc 0, #fff 120px);
}
.lanseat-poll-box h3 { margin: 0 0 .3em; }
.lanseat-poll-intro p { margin: 0 0 .5em; }
.lanseat-poll-form { display: grid; gap: .8em; }
.lanseat-poll-ballot { border: 1px solid #e0d4e6; border-radius: 8px; padding: .8em; margin: 0; background: #fff; }
.lanseat-poll-ballot legend { font-weight: 700; padding: 0 .4em; }
.lanseat-poll-grid { display: grid; gap: .7em; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); margin-bottom: .6em; }
.lanseat-poll-cat { display: grid; gap: .3em; align-content: start; }
.lanseat-poll-cat-name { font-weight: 700; font-size: .85em; text-transform: uppercase; letter-spacing: .05em; color: #6a1b9a; }
.lanseat-poll-cat select,
.lanseat-poll-cat input,
.lanseat-poll-ballot textarea {
	width: 100%;
	padding: .5em .6em;
	border: 1px solid #8c8f94;
	border-radius: 6px;
	font: inherit;
	background: #fff;
	color: #1d2327;
}
.lanseat-poll-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .8em; }
.lanseat-poll-box .lanseat-btn { background: #8e24aa; }
.lanseat-poll-status { margin: 0; font-size: .92em; }
.lanseat-poll-status.is-ok { color: #008a20; }
.lanseat-poll-status.is-error { color: #b32d2e; }
.lanseat-poll-results { margin-top: 1em; border-top: 1px dashed #d8c6e0; padding-top: .8em; display: grid; gap: .8em; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.lanseat-poll-results h4 { grid-column: 1 / -1; margin: 0; }
.lanseat-poll-result ol { list-style: none; padding: 0; margin: .3em 0 0; display: grid; gap: .25em; }
.lanseat-poll-result li { position: relative; display: flex; justify-content: space-between; gap: .5em; padding: .15em .4em; border-radius: 4px; overflow: hidden; font-size: .92em; }
.lanseat-poll-bar { position: absolute; inset: 0 auto 0 0; background: #ead7f2; z-index: 0; border-radius: 4px; }
.lanseat-poll-label, .lanseat-poll-votes { position: relative; z-index: 1; }
.lanseat-poll-votes { font-weight: 700; font-variant-numeric: tabular-nums; }
