/* Jawność Cen — tabela (zmienne CSS ustawiane w panelu Wygląd) */

.jcm-table-wrap {
	margin: var(--jcm-spacing-wrap-y) var(--jcm-spacing-wrap-x);
	font-family: var(--jcm-font-family);
	font-size: var(--jcm-font-size);
	color: var(--jcm-text);
	box-sizing: border-box;
}
.jcm-table-wrap *, .jcm-table-wrap *::before, .jcm-table-wrap *::after { box-sizing: border-box; }

.jcm-table-title {
	margin: 0 0 1rem;
	color: var(--jcm-primary);
	font-size: var(--jcm-font-size-title);
	font-weight: var(--jcm-font-weight-title);
	line-height: 1.2;
}

.jcm-filters {
	display: flex;
	flex-wrap: wrap;
	gap: var(--jcm-spacing-filter-gap);
	align-items: flex-end;
	margin-bottom: 1rem;
	padding: var(--jcm-spacing-filter-pad);
	background: var(--jcm-filter-bg);
	border-radius: var(--jcm-radius);
	border: var(--jcm-border-width) solid var(--jcm-border);
}
.jcm-filter-item {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 120px;
	flex: 1 1 140px;
}
.jcm-filter-label {
	font-size: .8em;
	font-weight: 600;
	color: var(--jcm-text-muted);
	text-transform: uppercase;
	letter-spacing: .03em;
}
.jcm-filters select {
	width: 100%;
	padding: 8px 10px;
	border: var(--jcm-border-width) solid var(--jcm-border);
	border-radius: calc(var(--jcm-radius) * 0.6);
	background: var(--jcm-row-bg);
	color: var(--jcm-text);
	font-size: inherit;
}
.jcm-filters select:focus {
	outline: 2px solid var(--jcm-accent);
	outline-offset: 1px;
}

.jcm-range-inputs {
	display: flex;
	align-items: center;
	gap: 6px;
	width: 100%;
}
.jcm-range-inputs input {
	flex: 1;
	min-width: 0;
	padding: 8px 10px;
	border: var(--jcm-border-width) solid var(--jcm-border);
	border-radius: calc(var(--jcm-radius) * 0.6);
	background: var(--jcm-row-bg);
	color: var(--jcm-text);
	font-size: inherit;
}
.jcm-range-sep { color: var(--jcm-text-muted); flex-shrink: 0; }
.jcm-filter-range { min-width: 200px; flex: 1 1 220px; }

.jcm-btn {
	padding: 8px 16px;
	border-radius: calc(var(--jcm-radius) * 0.6);
	border: none;
	cursor: pointer;
	font-size: inherit;
	font-family: inherit;
	transition: opacity .15s, transform .1s;
}
.jcm-btn:active { transform: scale(.98); }
.jcm-btn-secondary {
	background: var(--jcm-row-bg);
	border: var(--jcm-border-width) solid var(--jcm-border);
	color: var(--jcm-text);
}
.jcm-btn-link {
	background: none;
	border: none;
	color: var(--jcm-link);
	text-decoration: underline;
	cursor: pointer;
	padding: 0;
	font-size: inherit;
	font-family: inherit;
}
.jcm-link { color: var(--jcm-link); }

.jcm-results-bar {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: .75rem;
	font-size: .9em;
	color: var(--jcm-text-muted);
}

.jcm-empty-state {
	padding: 2rem;
	text-align: center;
	background: var(--jcm-filter-bg);
	border-radius: var(--jcm-radius);
	border: var(--jcm-border-width) dashed var(--jcm-border);
	color: var(--jcm-text-muted);
}

.jcm-table-scroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	border: var(--jcm-border-width) solid var(--jcm-border);
	border-radius: var(--jcm-radius);
	box-shadow: var(--jcm-shadow-table);
	background: var(--jcm-row-bg);
	scrollbar-width: thin;
}
.jcm-price-table {
	width: 100%;
	border-collapse: collapse;
	min-width: 640px;
	background: var(--jcm-row-bg);
}
.jcm-price-table th,
.jcm-price-table td {
	padding: var(--jcm-spacing-cell-y) var(--jcm-spacing-cell-x);
	text-align: left;
	border-bottom: var(--jcm-border-width) solid var(--jcm-border);
	vertical-align: middle;
}
.jcm-price-table th {
	background: var(--jcm-header-bg);
	color: var(--jcm-header-text);
	font-size: var(--jcm-font-size-header);
	font-weight: var(--jcm-font-weight-header);
	white-space: nowrap;
	cursor: pointer;
	user-select: none;
}
.jcm-price-table th[data-sort]:hover { opacity: .92; }
.jcm-sort::after { content: '⇅'; margin-left: 4px; opacity: .5; font-size: .85em; }
.jcm-price-table th.is-sorted-asc .jcm-sort::after { content: '↑'; opacity: 1; }
.jcm-price-table th.is-sorted-desc .jcm-sort::after { content: '↓'; opacity: 1; }

.jcm-price-table tbody tr { transition: background .12s; }
.jcm-price-table tbody tr:hover { background: var(--jcm-row-hover); }
.jcm-price-table tbody tr.is-hidden { display: none !important; }

.jcm-cell-price { font-weight: 600; white-space: nowrap; }

.jcm-status-badge {
	display: inline-block;
	padding: 4px 10px;
	border-radius: var(--jcm-radius-badge);
	font-size: var(--jcm-font-size-badge);
	font-weight: 600;
	white-space: nowrap;
}
.jcm-status-available { background: var(--jcm-available-bg); color: var(--jcm-available); }
.jcm-status-reserved  { background: var(--jcm-reserved-bg);  color: var(--jcm-reserved); }
.jcm-status-sold      { background: var(--jcm-sold-bg);      color: var(--jcm-sold); }

.jcm-badge-promo {
	display: inline-block;
	margin-left: 6px;
	padding: 2px 8px;
	background: var(--jcm-promo-bg);
	color: var(--jcm-promo-text);
	border-radius: calc(var(--jcm-radius) * 0.4);
	font-size: var(--jcm-font-size-badge);
	font-weight: 700;
	vertical-align: middle;
}

.jcm-col-expand,
.jcm-price-table thead .jcm-col-expand { display: none; }

.jcm-row-toggle {
	background: var(--jcm-filter-bg);
	border: var(--jcm-border-width) solid var(--jcm-border);
	border-radius: calc(var(--jcm-radius) * 0.75);
	min-height: 36px;
	padding: 6px 12px;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	font-size: .85em;
	font-family: inherit;
	color: var(--jcm-text);
	white-space: nowrap;
}
.jcm-toggle-label { font-weight: 600; }
.jcm-chevron {
	display: block;
	width: 7px; height: 7px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	margin-top: -2px;
	transition: transform .2s;
	flex-shrink: 0;
}
.jcm-unit-row.is-expanded .jcm-chevron { transform: rotate(-135deg); margin-top: 2px; }
.jcm-unit-row.is-expanded .jcm-toggle-label::after { content: none; }

.jcm-last-update { margin-top: 12px; font-size: .85em; color: var(--jcm-text-muted); }
.jcm-error { color: var(--jcm-sold); }

body.jcm-modal-open { overflow: hidden; }

.jcm-modal[hidden] { display: none !important; }
.jcm-modal {
	position: fixed; inset: 0; z-index: 99999;
	display: flex; align-items: center; justify-content: center;
	padding: 16px;
	font-family: var(--jcm-font-family);
	font-size: var(--jcm-font-size);
	color: var(--jcm-text);
}
.jcm-modal-backdrop { position: absolute; inset: 0; background: var(--jcm-modal-overlay); }
.jcm-modal-content {
	position: relative;
	background: var(--jcm-modal-bg);
	border-radius: var(--jcm-radius);
	max-width: 640px;
	width: 100%;
	max-height: 85vh;
	overflow: auto;
	padding: 24px;
	box-shadow: var(--jcm-shadow-card);
}
.jcm-modal-close {
	position: absolute; top: 12px; right: 12px;
	background: none; border: none; font-size: 1.5rem;
	cursor: pointer; line-height: 1; color: var(--jcm-text-muted);
}
.jcm-history-table { width: 100%; border-collapse: collapse; margin-top: 12px; font-size: .95em; }
.jcm-history-table th, .jcm-history-table td {
	padding: 8px;
	border-bottom: var(--jcm-border-width) solid var(--jcm-border);
	text-align: left;
}
.jcm-down { color: var(--jcm-available); }
.jcm-up { color: var(--jcm-sold); }

/* Tryb tabeli na wąskich ekranach — przewijanie poziome */
.jcm-layout-table .jcm-table-scroll { overflow-x: auto; }
.jcm-layout-table .jcm-price-table { min-width: 640px; display: table; }
.jcm-layout-table .jcm-price-table thead { display: table-header-group; }
.jcm-layout-table .jcm-price-table tbody { display: table-row-group; }
.jcm-layout-table .jcm-price-table tr { display: table-row; }
.jcm-layout-table .jcm-price-table td,
.jcm-layout-table .jcm-price-table th { display: table-cell; }
.jcm-layout-table .jcm-price-table td::before { display: none; }
.jcm-layout-table .jcm-col-expand { display: none !important; }

@media (max-width: 480px) {
	.jcm-filter-item { flex: 1 1 100%; }
	.jcm-filters .jcm-btn { width: 100%; }
}

/* ——— Widok kart (mobile / tryb cards) ——— */
.jcm-cards-view .jcm-table-scroll {
	border: none;
	box-shadow: none;
	background: transparent;
	overflow: visible;
}
.jcm-cards-view .jcm-price-table {
	min-width: 0;
	display: block;
}
.jcm-cards-view .jcm-price-table thead { display: none; }
.jcm-cards-view .jcm-price-table tbody {
	display: flex;
	flex-direction: column;
	gap: var(--jcm-spacing-card-gap);
}
.jcm-cards-view .jcm-unit-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 12px;
	padding: var(--jcm-spacing-card-pad);
	background: var(--jcm-row-bg);
	border: var(--jcm-border-width) solid var(--jcm-border);
	border-radius: var(--jcm-radius);
	box-shadow: var(--jcm-shadow-card);
	cursor: default;
}
.jcm-cards-view .jcm-unit-row:hover { background: var(--jcm-row-bg); }
.jcm-cards-view.jcm-expandable-rows .jcm-unit-row { cursor: pointer; }

.jcm-cards-view .jcm-price-table td {
	border: none;
	padding: 0;
	min-width: 0;
}
.jcm-cards-view .jcm-price-table td::before { display: none; }

/* Nagłówek karty — numer lokalu */
.jcm-cards-view .jcm-card-head {
	flex: 1 1 calc(100% - 108px);
	order: 1;
	min-width: 0;
	padding-bottom: 4px;
}
.jcm-cards-view .jcm-card-number {
	font-size: 1.2em;
	font-weight: 700;
	color: var(--jcm-primary);
	line-height: 1.25;
	word-break: break-word;
}
.jcm-cards-view .jcm-badge-promo {
	display: inline-block;
	margin: 4px 0 0;
	vertical-align: middle;
}

/* Przycisk szczegółów */
.jcm-cards-view.jcm-expandable-rows .jcm-col-expand {
	display: flex !important;
	flex: 0 0 auto;
	order: 2;
	margin-left: auto;
	align-self: flex-start;
}
.jcm-cards-view:not(.jcm-expandable-rows) .jcm-col-expand {
	display: none !important;
}
.jcm-cards-view:not(.jcm-expandable-rows) .jcm-card-head {
	flex: 1 1 100%;
}

/* Status */
.jcm-cards-view .jcm-card-summary.jcm-col-status {
	order: 3;
	flex: 0 1 auto;
}

/* Cena — wyróżniona */
.jcm-cards-view .jcm-card-summary.jcm-col-price {
	order: 4;
	flex: 1 1 100%;
	padding: 4px 0 8px;
	border-bottom: var(--jcm-border-width) solid var(--jcm-border);
}
.jcm-cards-view .jcm-card-price-value {
	font-size: 1.35em;
	font-weight: 700;
	color: var(--jcm-primary);
	line-height: 1.2;
	word-break: break-word;
}
.jcm-cards-view .jcm-card-summary.jcm-cell-price { white-space: normal; }

/* Meta — pokoje, metraż, piętro jako chipy */
.jcm-cards-view .jcm-card-meta {
	order: 5;
	flex: 0 1 auto;
}
.jcm-cards-view .jcm-meta-chip {
	display: inline-block;
	padding: 5px 11px;
	background: var(--jcm-filter-bg);
	border: var(--jcm-border-width) solid var(--jcm-border);
	border-radius: 999px;
	font-size: .85em;
	font-weight: 600;
	color: var(--jcm-text);
	white-space: nowrap;
}

/* Szczegóły — siatka etykieta | wartość */
.jcm-cards-view .jcm-card-detail {
	order: 10;
	flex: 1 1 100%;
	display: grid !important;
	grid-template-columns: minmax(88px, 38%) minmax(0, 1fr);
	gap: 4px 14px;
	align-items: start;
	padding: 10px 0 4px;
	border-top: var(--jcm-border-width) solid var(--jcm-border);
}
.jcm-cards-view .jcm-card-detail::before {
	display: block !important;
	content: attr(data-label);
	font-weight: 600;
	color: var(--jcm-text-muted);
	font-size: .82em;
	line-height: 1.4;
	grid-column: 1;
	text-align: left;
	word-break: break-word;
}
.jcm-cards-view .jcm-card-detail .jcm-cell-value {
	grid-column: 2;
	text-align: right;
	min-width: 0;
	word-break: break-word;
	overflow-wrap: anywhere;
	line-height: 1.4;
}
.jcm-cards-view .jcm-card-detail.jcm-cell-price .jcm-cell-value {
	font-weight: 600;
}

/* Zwijanie — ukryj tylko szczegóły, zostaw podsumowanie */
.jcm-cards-view.jcm-expandable-rows .jcm-unit-row:not(.is-expanded) .jcm-card-detail {
	display: none !important;
}

/* Obramowanie statusu na karcie */
.jcm-cards-view .jcm-unit-row.jcm-status-available { border-left: 4px solid var(--jcm-available); }
.jcm-cards-view .jcm-unit-row.jcm-status-reserved  { border-left: 4px solid var(--jcm-reserved); }
.jcm-cards-view .jcm-unit-row.jcm-status-sold      { border-left: 4px solid var(--jcm-sold); }
