/* JL Planners — Table Planner. Mobile-first; builds on the foundation jlp-shell
 * tokens (--jlp-*). Scoped under .jlp-tp. */

.jlp-tp {
	--tp-canvas-bg: #fbf6f0;
	--tp-canvas-grid: rgba(42, 31, 26, .055);
	--tp-tag-family: #c2786a;
	--tp-tag-friends: #6a8fc2;
	--tp-tag-work: #7e7280;
	--tp-tag-children: #d4a35a;
	--tp-tag-vip: #8a6e3f;
	--tp-warn: #b35a1a;
	--tp-error: var(--jlp-error, #a83a3a);
	--tp-table-ink: #6b4c2a;
	--tp-radius: var(--jlp-radius, 8px);
	color: var(--jlp-ink, #2a1f1a);
	font-family: var(--jlp-ff-body, system-ui, -apple-system, sans-serif);
}

.jlp-tp .jlp-tp-h2 {
	font-family: var(--jlp-ff-display, Georgia, serif);
	font-weight: 500;
	font-size: 1.4rem;
	margin: 0 0 .6rem;
}

/* ---------- Locked banner (free preview) ---------- */
.jlp-tp-locked {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .6rem .9rem;
	background: var(--jlp-champagne, #f7efe2);
	border: 1px solid var(--jlp-line, rgba(184, 152, 104, .35));
	border-radius: var(--tp-radius);
	padding: .8rem 1rem;
	margin: 0 0 1rem;
}
.jlp-tp-locked__icon { display: inline-flex; line-height: 0; color: var(--jlp-gold-deep, #7a5c28); }
.jlp-tp-locked__icon svg { width: 1.15rem; height: 1.15rem; }
.jlp-tp-locked__text { flex: 1 1 16rem; font-size: .92rem; color: var(--jlp-ink-soft, #5b4d44); }

/* ---------- Meta header ---------- */
.jlp-tp-head { margin: 0 0 1rem; }
.jlp-tp-head__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: .7rem;
}
.jlp-tp-head__notes { display: block; margin-top: .7rem; }

/* ---------- Toolbar ---------- */
.jlp-tp-toolbar {
	display: flex;
	flex-wrap: wrap;
	gap: .4rem;
	align-items: center;
	padding: .6rem .7rem;
	background: var(--jlp-surface, #fff);
	border: 1px solid var(--jlp-line, rgba(184, 152, 104, .35));
	border-radius: var(--tp-radius);
	margin: 0 0 1rem;
	position: sticky;
	top: 0;
	z-index: 5;
}
.jlp-tp-toolbar__spacer { flex: 1 1 auto; }

/* ---------- Layout ---------- */
.jlp-tp-layout {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1rem;
}
.jlp-tp-layout[data-view="list"] .jlp-tp-canvas-wrap { display: none; }

/* ---------- Guest sidebar ---------- */
.jlp-tp-sidebar { min-width: 0; }
.jlp-tp-sidebar__details {
	border: 1px solid var(--jlp-line, rgba(184, 152, 104, .35));
	border-radius: var(--tp-radius);
	background: var(--jlp-surface, #fff);
}
.jlp-tp-sidebar__summary {
	cursor: pointer;
	padding: .7rem .9rem;
	font-weight: 600;
	font-size: .95rem;
	list-style: none;
}
.jlp-tp-sidebar__summary::-webkit-details-marker { display: none; }
.jlp-tp-sidebar__summary::after { content: "▾"; float: right; opacity: .5; }
.jlp-tp-sidebar__details[open] .jlp-tp-sidebar__summary::after { content: "▴"; }
.jlp-tp-sidebar__body { padding: 0 .9rem .9rem; }
.jlp-tp-sidebar__search { width: 100%; margin: 0 0 .6rem; }

.jlp-tp-tagfilter { display: flex; flex-wrap: wrap; gap: .3rem; margin: 0 0 .6rem; }
.jlp-tp-chip {
	display: inline-flex;
	align-items: center;
	gap: .3rem;
	border: 1px solid var(--jlp-line, rgba(184, 152, 104, .35));
	background: transparent;
	border-radius: 999px;
	padding: .2rem .6rem;
	font-size: .78rem;
	cursor: pointer;
	color: var(--jlp-ink-soft, #5b4d44);
}
.jlp-tp-chip[aria-pressed="true"] { background: var(--jlp-champagne, #f7efe2); border-color: var(--jlp-gold, #b89968); }
.jlp-tp-chip__dot { width: .6rem; height: .6rem; border-radius: 50%; background: currentColor; }
.jlp-tp-chip--family { color: var(--tp-tag-family); }
.jlp-tp-chip--friends { color: var(--tp-tag-friends); }
.jlp-tp-chip--work { color: var(--tp-tag-work); }
.jlp-tp-chip--children { color: var(--tp-tag-children); }
.jlp-tp-chip--vip { color: var(--tp-tag-vip); }

.jlp-tp-guests { list-style: none; margin: 0; padding: 0; max-height: 22rem; overflow-y: auto; }
.jlp-tp-guests__empty { padding: .6rem 0; font-size: .9rem; }
.jlp-tp-guest {
	display: flex;
	align-items: center;
	gap: .5rem;
	padding: .42rem .35rem;
	border-radius: 6px;
	cursor: pointer;
	min-height: 44px;
}
.jlp-tp-guest:hover { background: var(--jlp-champagne, #f7efe2); }
.jlp-tp-guest.is-placed { opacity: .62; }
.jlp-tp-guest.is-selected { background: var(--jlp-champagne, #f7efe2); outline: 2px solid var(--jlp-gold, #b89968); }
.jlp-tp-guest[hidden] { display: none; }
.jlp-tp-guest__dot { width: .65rem; height: .65rem; border-radius: 50%; background: currentColor; flex: 0 0 auto; }
.jlp-tp-guest__name { flex: 1 1 auto; font-size: .92rem; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jlp-tp-guest__seat { font-size: .72rem; color: var(--jlp-ink-mute, #9a8a7e); flex: 0 0 auto; }
.jlp-tp-sidebar__add { margin-top: .6rem; }
.jlp-tp-sidebar__hint { font-size: .78rem; margin: .5rem 0 0; }

/* ---------- Canvas ---------- */
.jlp-tp-canvas-wrap {
	border: 1px solid var(--jlp-line, rgba(184, 152, 104, .35));
	border-radius: var(--tp-radius);
	background: var(--tp-canvas-bg);
	overflow: auto;
	-webkit-overflow-scrolling: touch;
	max-height: 70vh;
}
.jlp-tp-canvas {
	position: relative;
	width: var(--tp-w, 1200px);
	height: var(--tp-h, 800px);
	background-image:
		linear-gradient(var(--tp-canvas-grid) 1px, transparent 1px),
		linear-gradient(90deg, var(--tp-canvas-grid) 1px, transparent 1px);
	background-size: 20px 20px;
	touch-action: none;
}
.jlp-tp-table {
	position: absolute;
	left: 0;
	top: 0;
	width: var(--tp-tw, 140px);
	height: var(--tp-th, 140px);
	transform: translate(var(--tp-x, 0), var(--tp-y, 0)) rotate(var(--tp-rot, 0deg));
	background: var(--tp-tint, #fff);
	border: 2px solid var(--tp-table-ink);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: .15rem;
	cursor: grab;
	user-select: none;
	box-shadow: var(--jlp-shadow-sm, 0 4px 14px -8px rgba(42, 31, 26, .35));
	min-width: 44px;
	min-height: 44px;
}
.jlp-tp-table:active { cursor: grabbing; }
.jlp-tp-table:focus-visible { outline: 3px solid var(--jlp-gold, #b89968); outline-offset: 2px; }
.jlp-tp-table.is-drop-target { outline: 3px dashed var(--jlp-gold, #b89968); outline-offset: 2px; }
.jlp-tp-table.is-over { border-color: var(--tp-error); }
.jlp-tp-table--round { border-radius: 50%; }
.jlp-tp-table--rectangle { border-radius: 8px; }
.jlp-tp-table--sweetheart { border-radius: 50% 50% 14px 14px / 62% 62% 14px 14px; }
.jlp-tp-table--head_table { border-radius: 6px; border-width: 3px; }
.jlp-tp-table__label { font-weight: 600; font-size: .82rem; text-align: center; line-height: 1.1; padding: 0 .2rem; }
.jlp-tp-table__occ { font-size: .72rem; color: var(--jlp-ink-mute, #9a8a7e); }
.jlp-tp-table.is-over .jlp-tp-table__occ { color: var(--tp-error); font-weight: 700; }

/* ---------- Warnings rail ---------- */
.jlp-tp-warnings {
	border: 1px solid var(--jlp-line, rgba(184, 152, 104, .35));
	border-radius: var(--tp-radius);
	background: var(--jlp-surface, #fff);
	padding: .9rem;
}
.jlp-tp-warnings__title { font-family: var(--jlp-ff-display, Georgia, serif); font-weight: 500; font-size: 1.1rem; margin: 0 0 .6rem; }
.jlp-tp-warnings__list { list-style: none; margin: 0 0 .6rem; padding: 0; display: grid; gap: .4rem; }
.jlp-tp-warn { font-size: .86rem; padding: .45rem .6rem; border-radius: 6px; border-left: 3px solid currentColor; background: rgba(0, 0, 0, .025); }
.jlp-tp-warn--error { color: var(--tp-error); background: rgba(168, 58, 58, .07); }
.jlp-tp-warn--warn { color: var(--tp-warn); background: rgba(179, 90, 26, .07); }
.jlp-tp-warn--info { color: var(--jlp-ink-soft, #5b4d44); background: rgba(184, 152, 104, .08); }
.jlp-tp-unplaced[hidden] { display: none; }
.jlp-tp-unplaced__title { font-size: .92rem; font-weight: 600; margin: .8rem 0 .4rem; }
.jlp-tp-unplaced__list { list-style: none; margin: 0; padding: 0; }

/* ---------- Dialogs ---------- */
.jlp-tp-dialog,
.jlp-tp-autoplace {
	position: fixed;
	inset: 0;
	z-index: 1000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
}
.jlp-tp-dialog[hidden],
.jlp-tp-autoplace[hidden] { display: none; }
.jlp-tp-dialog__backdrop { position: absolute; inset: 0; background: rgba(42, 31, 26, .45); }
.jlp-tp-dialog__panel,
.jlp-tp-autoplace__panel {
	position: relative;
	background: var(--jlp-surface, #fff);
	border-radius: var(--jlp-radius-lg, 14px);
	box-shadow: var(--jlp-shadow, 0 24px 60px -28px rgba(42, 31, 26, .4));
	padding: 1.4rem 1.4rem 1.2rem;
	width: 100%;
	max-width: 28rem;
	max-height: 90vh;
	overflow-y: auto;
}
.jlp-tp-dialog__close {
	position: absolute;
	top: .6rem;
	right: .7rem;
	background: transparent;
	border: 0;
	font-size: 1.5rem;
	line-height: 1;
	cursor: pointer;
	color: var(--jlp-ink-mute, #9a8a7e);
}
.jlp-tp-dialog__title { font-family: var(--jlp-ff-display, Georgia, serif); font-weight: 500; font-size: 1.3rem; margin: 0 0 .8rem; }
.jlp-tp-dialog__grid { display: grid; grid-template-columns: 1fr; gap: .6rem; }
.jlp-tp-dialog__actions { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: flex-end; margin-top: 1rem; }
.jlp-tp-dialog__danger { color: var(--tp-error); }
.jlp-tp-dialog .jlp-field { margin-bottom: .6rem; }

.jlp-tp-import__plans { display: grid; gap: .4rem; margin: .6rem 0; }
.jlp-tp-import__plan {
	display: flex;
	align-items: center;
	gap: .5rem;
	padding: .5rem .6rem;
	border: 1px solid var(--jlp-line, rgba(184, 152, 104, .35));
	border-radius: 6px;
	cursor: pointer;
}
.jlp-tp-import__plan.is-selected { border-color: var(--jlp-gold, #b89968); background: var(--jlp-champagne, #f7efe2); }
.jlp-tp-import__mode { border: 0; padding: 0; margin: .6rem 0; }
.jlp-tp-import__radio { display: block; font-size: .9rem; margin: .25rem 0; }
.jlp-tp-import__error,
.jlp-tp-autoplace__summary { font-size: .88rem; }
.jlp-tp-import__error[hidden] { display: none; }
.jlp-tp-import__error { color: var(--tp-error); margin: .4rem 0 0; }

.jlp-tp-selected-banner {
	position: fixed;
	left: 50%;
	bottom: 1rem;
	transform: translateX(-50%);
	z-index: 900;
	background: var(--jlp-ink, #2a1f1a);
	color: #fff;
	font-size: .9rem;
	padding: .55rem .9rem;
	border-radius: 999px;
	box-shadow: var(--jlp-shadow, 0 24px 60px -28px rgba(42, 31, 26, .4));
	display: flex;
	align-items: center;
	gap: .6rem;
}
.jlp-tp-selected-banner[hidden] { display: none; }
.jlp-tp-selected-banner button { background: transparent; border: 1px solid rgba(255, 255, 255, .4); color: #fff; border-radius: 999px; padding: .15rem .55rem; font-size: .8rem; cursor: pointer; }

/* ---------- Public landing ---------- */
.jlp-tp-public__perks,
.jlp-tp-public__shapes ul { padding-left: 1.2rem; }
.jlp-tp-public__perks li,
.jlp-tp-public__shapes li { margin: .3rem 0; }
.jlp-tp-public__cta { font-style: italic; color: var(--jlp-ink-soft, #5b4d44); margin-top: 1rem; }

/* ---------- Read-only ---------- */
.jlp-tp[data-readonly="1"] .jlp-tp-table { cursor: default; }
.jlp-tp[data-readonly="1"] .jlp-tp-guest { cursor: default; }

/* ---------- Breakpoints ---------- */
@media (min-width: 721px) {
	.jlp-tp-head__grid { grid-template-columns: repeat(2, 1fr); }
	.jlp-tp-dialog__grid { grid-template-columns: repeat(2, 1fr); }
	.jlp-tp-layout {
		grid-template-columns: 280px minmax(0, 1fr);
		grid-template-areas: "sidebar canvas" "warnings warnings";
	}
	.jlp-tp-sidebar { grid-area: sidebar; }
	.jlp-tp-canvas-wrap { grid-area: canvas; }
	.jlp-tp-warnings { grid-area: warnings; }
}
@media (min-width: 1025px) {
	.jlp-tp-head__grid { grid-template-columns: repeat(4, 1fr); }
	.jlp-tp-layout {
		grid-template-columns: 280px minmax(0, 1fr) 300px;
		grid-template-areas: "sidebar canvas warnings";
	}
	.jlp-tp-canvas-wrap { max-height: 76vh; }
}

/* ---------- Print ---------- */
@media print {
	.jlp-tp-toolbar,
	.jlp-tp-sidebar,
	.jlp-tp-warnings__title + .jlp-tp-warnings__list,
	.jlp-tp-locked,
	.jlp-tp-dialog,
	.jlp-tp-autoplace,
	.jlp-tp-selected-banner { display: none !important; }
	.jlp-tp-layout { display: block; }
	.jlp-tp-canvas-wrap { max-height: none; overflow: visible; border: 1px solid #999; }
	.jlp-tp-table { box-shadow: none; }
	.jlp-tp-table--round,
	.jlp-tp-table--rectangle,
	.jlp-tp-table--sweetheart,
	.jlp-tp-table--head_table { border-color: #444; background: #fff; }
	.jlp-tp-chip__dot,
	.jlp-tp-guest__dot { border: 1px solid #444; background: #fff; }
}
