/* LMC Bookings — front-end UI.
   Brand tokens fall back to the LMC design system values; the child theme
   can override them via the .lmc-app custom properties. */

.lmc-app,
.lmc-pop { /* the popover mounts on <body>, outside .lmc-app — needs the tokens too */
	--lmc-primary: #1d4e7e;
	--lmc-secondary: #12233c;
	--lmc-brass: #a8862d;
	--lmc-stone: #f3f1ec;
	--lmc-line: #e3e0d7;
	--lmc-muted: #66707d;
	--lmc-ok-bg: #e3f1e6;    --lmc-ok-fg: #20602f;   --lmc-ok: #2e7d46;
	--lmc-warn-bg: #fdf3dc;  --lmc-warn-fg: #8a6414;
	--lmc-bad-bg: #fbe7e5;   --lmc-bad-fg: #8f2318;
	font-size: 1rem;
	color: #2e3947;
}
.lmc-app * { box-sizing: border-box; }

/* ---------- login gate ---------- */
.lmc-gate { max-width: 420px; margin: 2rem auto; }
.lmc-gate__msg { font-size: 1.05rem; }
.lmc-gate input[type="text"], .lmc-gate input[type="password"] {
	width: 100%; padding: 0.6rem 0.75rem; border: 1px solid var(--lmc-line); border-radius: 0.5rem;
}
.lmc-gate .login-remember { margin: 0.5rem 0; }

/* ---------- shared bits ---------- */
.lmc-h { margin: 1.5rem 0 0.5rem; }
.lmc-count {
	display: inline-block; min-width: 1.6em; text-align: center; font-size: 0.8rem; font-weight: 700;
	background: var(--lmc-warn-bg); color: var(--lmc-warn-fg); border-radius: 999px; padding: 0.15em 0.5em;
	vertical-align: middle; font-family: sans-serif;
}
.lmc-notice { border-radius: 0.5rem; padding: 0.75rem 1rem; margin: 1rem 0; font-weight: 600; }
.lmc-notice--ok { background: var(--lmc-ok-bg); color: var(--lmc-ok-fg); }
.lmc-notice--warn { background: var(--lmc-warn-bg); color: var(--lmc-warn-fg); }
.lmc-empty { color: var(--lmc-muted); }
.lmc-toolbar { display: flex; gap: 1rem; align-items: center; margin: 0.75rem 0 1.25rem; }
.lmc-link { font-weight: 600; color: var(--lmc-primary); }

.lmc-status {
	display: inline-flex; align-items: center; font-size: 0.7rem; font-weight: 700;
	letter-spacing: 0.07em; text-transform: uppercase; border-radius: 999px; padding: 0.3em 0.9em; white-space: nowrap;
}
.lmc-status--pending { background: var(--lmc-warn-bg); color: var(--lmc-warn-fg); }
.lmc-status--approved { background: var(--lmc-ok-bg); color: var(--lmc-ok-fg); }
.lmc-status--denied, .lmc-status--cancelled { background: var(--lmc-bad-bg); color: var(--lmc-bad-fg); }

.lmc-tag {
	display: inline-block; font-size: 0.7rem; font-weight: 600; color: #fff;
	border-radius: 0.3rem; padding: 0.15em 0.55em; margin: 0 0.2em 0.2em 0;
}
.lmc-contract { color: #8a5416; font-style: normal; font-weight: 700; }

/* ---------- calendar ---------- */
.lmc-cal-top { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; margin: 0 0 0.75rem; }
.lmc-cal-top h2 { margin: 0; flex: 1 1 auto; font-size: 1.85rem; }
.lmc-mnav { display: flex; gap: 0.35rem; align-items: center; }
.lmc-mnav button {
	width: 2.25rem; height: 2.25rem; border: 1px solid var(--lmc-line); background: #fff; border-radius: 0.4rem;
	font-size: 1rem; cursor: pointer; color: #55606e; line-height: 1;
}
.lmc-mnav .lmc-today { width: auto; padding: 0 0.9rem; font-weight: 600; font-size: 0.85rem; }
.lmc-seg { display: inline-flex; border: 1px solid var(--lmc-line); border-radius: 0.5rem; overflow: hidden; }
.lmc-seg button, .lmc-seg a { border: 0; background: #fff; padding: 0.5rem 1rem; font-weight: 600; font-size: 0.8rem; cursor: pointer; color: #55606e; text-decoration: none; }
.lmc-seg button.is-on, .lmc-seg a.is-on { background: var(--lmc-primary); color: #fff; }
.lmc-seg--filter { margin-left: auto; }
.lmc-new-btn {
	background: var(--lmc-primary); color: #fff; border: 0; border-radius: 0.4rem; font-weight: 600;
	padding: 0.55rem 1.1rem; font-size: 0.85rem; cursor: pointer; text-decoration: none; display: inline-block;
}
.lmc-new-btn:hover { background: var(--lmc-secondary); color: #fff; }

.lmc-chips { display: flex; gap: 0.4rem; flex-wrap: wrap; margin: 0 0 1rem; }
.lmc-chip {
	display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.75rem; font-weight: 600; color: #3d4a5c;
	border: 1px solid var(--lmc-line); background: #fff; border-radius: 999px; padding: 0.35em 0.9em; cursor: pointer;
}
.lmc-chip i { width: 0.65em; height: 0.65em; border-radius: 0.2em; display: inline-block; }
.lmc-chip.is-off { opacity: 0.4; }
.lmc-chip:focus-visible { outline: 2px solid var(--lmc-primary); outline-offset: 1px; }

.lmc-grid { display: grid; grid-template-columns: repeat(7, 1fr); border: 1px solid var(--lmc-line); border-radius: 0.5rem; overflow: hidden; background: #fff; }
.lmc-grid .lmc-dow {
	background: var(--lmc-stone); font-size: 0.68rem; font-weight: 700; letter-spacing: 0.07em; text-transform: uppercase;
	color: #55606e; padding: 0.5rem 0.6rem; border-bottom: 1px solid var(--lmc-line);
}
.lmc-cell { position: relative; min-height: 6.5rem; border-right: 1px solid var(--lmc-line); border-bottom: 1px solid var(--lmc-line); padding: 0.35rem; background: #fff; }
.lmc-add {
	position: absolute; top: 0.25rem; right: 0.25rem; width: 1.4rem; height: 1.4rem;
	display: flex; align-items: center; justify-content: center; border-radius: 0.35rem;
	background: var(--lmc-primary); color: #fff; font-size: 1rem; font-weight: 600; line-height: 1;
	text-decoration: none; opacity: 0; transition: opacity 0.12s ease;
}
.lmc-cell:hover .lmc-add, .lmc-add:focus-visible { opacity: 1; }
.lmc-add:hover { background: var(--lmc-secondary); color: #fff; }
@media (hover: none) { .lmc-add { opacity: 1; } }
.lmc-grid .lmc-cell:nth-child(7n) { border-right: 0; }
.lmc-cell .lmc-d { font-size: 0.72rem; font-weight: 600; color: #55606e; margin-bottom: 0.25rem; }
.lmc-cell.is-dim { background: #fafaf7; }
.lmc-cell.is-dim .lmc-d { color: #b6bcc4; }
.lmc-cell.is-today .lmc-d {
	color: #fff; background: var(--lmc-primary); width: 1.4rem; height: 1.4rem; border-radius: 50%;
	display: inline-flex; align-items: center; justify-content: center;
}
.lmc-ev {
	display: grid; grid-template-columns: auto 1fr; column-gap: 0.3rem; align-items: baseline;
	width: 100%; text-align: left; border: 0; border-left: 4px solid transparent; border-radius: 0.35rem;
	padding: 0.2rem 0.45rem 0.25rem 0.4rem; margin: 0 0 0.2rem; font-size: 0.66rem; font-weight: 600;
	line-height: 1.35; color: var(--lmc-secondary, #12233c); cursor: pointer; font-family: inherit;
}
.lmc-ev__time { grid-column: 1; font-weight: 400; opacity: 0.75; white-space: nowrap; }
.lmc-ev__org, .lmc-ev__label { grid-column: 2; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lmc-ev__org { font-weight: 700; }
.lmc-ev__label { font-weight: 400; opacity: 0.9; }
.lmc-ev.is-pending {
	background-image: repeating-linear-gradient(45deg, transparent 0 4px, rgba(0, 0, 0, 0.05) 4px 8px);
	outline: 1px dashed rgba(18, 35, 60, 0.35); outline-offset: -1px;
}
.lmc-more { font-size: 0.65rem; font-weight: 600; color: var(--lmc-primary); background: none; border: 0; cursor: pointer; padding: 0; }

/* agenda list */
.lmc-agenda .lmc-day { font-size: 0.72rem; font-weight: 700; letter-spacing: 0.09em; text-transform: uppercase; color: #8a93a0; margin: 1.1rem 0 0.4rem; }
.lmc-ai {
	display: flex; gap: 0.8rem; align-items: center; width: 100%; text-align: left; background: #fff;
	border: 1px solid var(--lmc-line); border-left-width: 5px; border-radius: 0.55rem; padding: 0.7rem 0.85rem;
	margin-bottom: 0.45rem; cursor: pointer; font-family: inherit; font-size: 0.9rem;
}
.lmc-ai .lmc-t { font-weight: 700; font-size: 0.75rem; color: #3d4a5c; width: 4.2rem; flex: none; font-variant-numeric: tabular-nums; }
.lmc-ai b { display: block; color: var(--lmc-secondary); line-height: 1.3; }
.lmc-ai .lmc-sub { font-size: 0.78rem; color: #8a93a0; }
.lmc-ai .lmc-status { margin-left: auto; flex: none; }

/* popover / detail card */
.lmc-pop-backdrop { position: fixed; inset: 0; background: rgba(18, 35, 60, 0.4); z-index: 9998; }
.lmc-pop {
	position: fixed; z-index: 9999; left: 50%; top: 50%; transform: translate(-50%, -50%);
	background: #fff; border: 1px solid var(--lmc-line); border-radius: 0.7rem;
	box-shadow: 0 16px 40px rgba(18, 35, 60, 0.25); width: min(400px, calc(100vw - 2rem));
	padding: 1.15rem 1.25rem; max-height: 85vh; overflow-y: auto;
}
.lmc-pop h4 { margin: 0.1rem 0 0; font-size: 1.25rem; }
.lmc-pop .lmc-org { font-size: 0.75rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--lmc-brass); margin-top: 0.75rem; }
.lmc-pop dl { display: grid; grid-template-columns: auto 1fr; gap: 0.25rem 0.9rem; font-size: 0.85rem; margin: 0.8rem 0; }
.lmc-pop dt { color: #8a93a0; }
.lmc-pop dd { margin: 0; }
.lmc-pop .lmc-acts { display: flex; gap: 0.5rem; border-top: 1px solid var(--lmc-line); padding-top: 0.8rem; flex-wrap: wrap; }
.lmc-pop .lmc-close { position: absolute; top: 0.6rem; right: 0.75rem; border: 0; background: none; font-size: 1.3rem; cursor: pointer; color: #8a93a0; }

.lmc-btn {
	display: inline-block; font-size: 0.8rem; font-weight: 600; border-radius: 0.4rem; padding: 0.45rem 0.9rem;
	background: #eaf0f7; color: var(--lmc-primary); text-decoration: none; border: 0; cursor: pointer; font-family: inherit;
}
.lmc-btn--approve { background: var(--lmc-ok); color: #fff; }
.lmc-btn--deny { background: #fff; color: var(--lmc-bad-fg); border: 1px solid #e5b6b0; }
.lmc-btn:hover { filter: brightness(0.95); }

/* ---------- bookings list ---------- */
.lmc-list { list-style: none; margin: 0 0 2rem; padding: 0; }
.lmc-item {
	display: flex; gap: 0.9rem; align-items: center; flex-wrap: wrap;
	border: 1px solid var(--lmc-line); border-radius: 0.6rem; background: #fff; padding: 0.85rem 1rem; margin: 0 0 0.6rem;
}
.lmc-item.is-pending { background: #fffdf6; border-color: #eed9a4; }
.lmc-item__when { width: 8.5rem; flex: none; }
.lmc-item__when b { display: block; color: var(--lmc-secondary); }
.lmc-item__when span { font-size: 0.78rem; color: #8a93a0; }
.lmc-item__what { flex: 1 1 14rem; min-width: 12rem; }
.lmc-item__what > b { color: var(--lmc-secondary); }
.lmc-item__what > span { display: block; font-size: 0.8rem; color: #55606e; margin-top: 0.15rem; }
.lmc-item__actions { display: flex; gap: 0.4rem; flex-wrap: wrap; }

/* ---------- booking form ---------- */
.lmc-form { max-width: 640px; }
.lmc-form__title { margin: 0 0 1rem; }
.lmc-field { margin: 0 0 1rem; }
.lmc-field label, .lmc-field legend { display: block; font-size: 0.8rem; font-weight: 600; color: #3d4a5c; margin: 0 0 0.3rem; }
.lmc-field label em, .lmc-field legend em { color: #b3261e; font-style: normal; }
.lmc-hint-inline { font-weight: 400; color: #8a93a0; }
.lmc-field input, .lmc-field select, .lmc-field textarea {
	width: 100%; padding: 0.55rem 0.7rem; border: 1px solid #cfd4cb; border-radius: 0.45rem;
	font: inherit; font-size: 0.92rem; color: #2e3947; background: #fff;
}
.lmc-field input:focus-visible, .lmc-field select:focus-visible, .lmc-field textarea:focus-visible,
.lmc-room-opt input:focus-visible { outline: 2px solid var(--lmc-primary); outline-offset: 1px; }
.lmc-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0.9rem; }
.lmc-hint { font-size: 0.78rem; color: var(--lmc-muted); margin: -0.4rem 0 1rem; }
.lmc-callout {
	display: flex; gap: 0.7rem; align-items: flex-start;
	background: var(--lmc-stone); border-left: 4px solid var(--lmc-primary); border-radius: 0.5rem;
	padding: 0.7rem 0.9rem; margin: -0.25rem 0 1.1rem; font-size: 0.85rem; color: var(--lmc-secondary);
}
.lmc-callout__icon { flex: none; font-size: 1.05rem; line-height: 1.4; }
.lmc-callout b { font-weight: 700; }

.lmc-rooms { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; }
.lmc-room-opt {
	display: flex; align-items: center; gap: 0.55rem; border: 1px solid var(--lmc-line); border-radius: 0.5rem;
	padding: 0.6rem 0.7rem; font-size: 0.85rem; font-weight: 600; color: #3d4a5c; background: #fff; cursor: pointer;
	margin: 0;
}
.lmc-room-opt i { width: 0.85em; height: 0.85em; border-radius: 0.25em; flex: none; display: inline-block; }
.lmc-room-opt:has(input:checked) { border-color: var(--lmc-primary); box-shadow: 0 0 0 1.5px var(--lmc-primary); color: var(--lmc-secondary); }
.lmc-room-opt input { width: auto; margin: 0; accent-color: var(--lmc-primary); }

fieldset.lmc-field, fieldset.lmc-dufferin { border: 0; padding: 0; margin: 0 0 1rem; }
.lmc-dufferin { border: 1px solid #e8c9a4 !important; background: #fdf7ef; border-radius: 0.6rem; padding: 1rem !important; }
.lmc-dufferin legend { float: left; width: 100%; font-size: 1rem; color: #8a5416; margin-bottom: 0.4rem; }
.lmc-badge-contract {
	font-size: 0.62rem; font-weight: 700; letter-spacing: 0.07em; text-transform: uppercase;
	background: #d97c26; color: #fff; border-radius: 0.3rem; padding: 0.2em 0.6em; vertical-align: middle; margin-left: 0.4rem;
}

.lmc-availability { border-radius: 0.5rem; padding: 0.8rem 1rem; margin: 0 0 1.1rem; font-size: 0.85rem; }
.lmc-availability.is-ok { background: var(--lmc-ok-bg); border: 1px solid #b9dcc2; color: var(--lmc-ok-fg); }
.lmc-availability.is-warn { background: var(--lmc-warn-bg); border: 1px solid #eed9a4; color: #6d5110; }
.lmc-availability ul { margin: 0.4rem 0 0 1.1rem; padding: 0; }

.lmc-force { display: block; font-size: 0.85rem; font-weight: 600; color: #8f2318; margin: 0 0 1rem; }
.lmc-form__actions { display: flex; gap: 0.9rem; align-items: center; flex-wrap: wrap; margin-top: 1.25rem; }
.lmc-form__actions .lmc-hint { margin: 0; }
.lmc-submit {
	background: var(--lmc-primary); color: #fff; border: 0; border-radius: 0.4rem;
	font-weight: 600; font-size: 0.95rem; padding: 0.7rem 1.5rem; cursor: pointer;
}
.lmc-submit:hover { background: var(--lmc-secondary); }
.lmc-submit[disabled] { opacity: 0.6; cursor: wait; }
.lmc-form__error { background: var(--lmc-bad-bg); color: var(--lmc-bad-fg); border-radius: 0.5rem; padding: 0.75rem 1rem; margin-top: 1rem; font-weight: 600; }

/* ---------- mobile ---------- */
@media (max-width: 781px) {
	.lmc-grid-2 { grid-template-columns: 1fr; }
	.lmc-rooms { grid-template-columns: 1fr; }
	.lmc-cal-top h2 { font-size: 1.4rem; flex-basis: 100%; }
	.lmc-item__when { width: auto; }
	.lmc-chips { overflow-x: auto; flex-wrap: nowrap; padding-bottom: 0.3rem; -webkit-overflow-scrolling: touch; }
	.lmc-chip { flex: none; }
	.lmc-ev, .lmc-btn, .lmc-chip, .lmc-mnav button { min-height: 2rem; }
	.lmc-ai { padding: 0.85rem; }
}

@media (prefers-reduced-motion: no-preference) {
	.lmc-pop { animation: lmc-pop-in 0.14s ease-out; }
	@keyframes lmc-pop-in { from { opacity: 0; transform: translate(-50%, -48%); } to { opacity: 1; transform: translate(-50%, -50%); } }
}
