/* ---------- Submission form ---------- */
.tsm-wrap { max-width: 900px; margin: 0 auto; font-size: 15px; color: #444; }
.tsm-wrap label { display: block; font-size: 12px; color: #777; margin: 18px 0 4px; }
.tsm-wrap input[type=text], .tsm-wrap input[type=number], .tsm-wrap input[type=date],
.tsm-wrap select, .tsm-wrap textarea {
	width: 100%; box-sizing: border-box; padding: 12px 14px; border: 1px solid #ccc;
	border-radius: 6px; background: #fff; font-size: 15px; color: #444;
}
.tsm-wrap input[readonly] { background: #f6f6f6; }
.tsm-wrap h3 { font-size: 16px; font-weight: 500; border-bottom: 1px solid #ddd; padding-bottom: 8px; margin: 0 0 4px; }
.tsm-wrap h4 { font-size: 13px; font-weight: 700; margin: 22px 0 6px; }
.tsm-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 600px) { .tsm-row { grid-template-columns: 1fr; } }
.tsm-hint { font-size: 11px; color: #999; margin: 4px 0 0; }
.tsm-req { color: #d33; }
.tsm-static { margin: 8px 0 0; color: #777; }
.tsm-lbl { font-size: 12px; color: #777; }
.tsm-check { display: flex !important; align-items: center; gap: 10px; font-size: 13px !important; color: #666 !important; margin: 10px 0 !important; }
.tsm-check input { width: 20px; height: 20px; }

.tsm-step { display: none; }
.tsm-step.is-active { display: block; }
.tsm-step[hidden], .tsm-wrap [hidden] { display: none !important; }

.tsm-progress { list-style: none; display: flex; justify-content: space-between; margin: 0 0 28px; padding: 0; position: relative; }
.tsm-progress::before { content: ""; position: absolute; top: 11px; left: 10%; right: 10%; height: 1px; background: #ddd; }
.tsm-dot { position: relative; flex: 1; text-align: center; font-size: 11px; color: #888; }
.tsm-dot span { display: block; width: 24px; height: 24px; line-height: 24px; margin: 0 auto 6px; border-radius: 50%; background: #ccc; color: #fff; font-size: 12px; position: relative; z-index: 1; }
.tsm-dot.is-active span, .tsm-dot.is-done span { background: #f4a58a; }
.tsm-dot.is-active { color: #222; }

.tsm-contract { max-height: 280px; overflow-y: auto; border: 1px solid #ddd; border-radius: 6px; padding: 4px 16px; background: #fafafa; font-size: 13px; line-height: 1.6; margin-top: 10px; }
.tsm-ph { background: #fff1ea; border-radius: 3px; padding: 0 3px; font-weight: 600; }

.tsm-nav { display: flex; justify-content: space-between; border-top: 1px solid #ddd; margin-top: 28px; padding-top: 16px; }
.tsm-btn { border: 0; border-radius: 3px; padding: 10px 22px; font-size: 13px; cursor: pointer; background: #d2d2d2; color: #555; }
.tsm-primary { background: #f4a58a; color: #fff; margin-left: auto; }
.tsm-primary:disabled { opacity: .6; cursor: wait; }

.tsm-errors { background: #fdecea; border: 1px solid #f5c2bd; color: #a12a20; padding: 10px 16px; border-radius: 6px; margin-bottom: 16px; }
.tsm-errors ul { margin: 0; padding-left: 18px; }
.tsm-success, .tsm-notice { background: #eaf7ee; border: 1px solid #b9e2c4; color: #226b3a; padding: 18px; border-radius: 6px; }
.tsm-notice { background: #fff8e6; border-color: #f0dca0; color: #7a5b00; }

/* ---------- Stacked listings in the shop loop ---------- */
.woocommerce ul.products li.product.tsm-stack { position: relative; }
.woocommerce ul.products li.product.tsm-stack::before,
.woocommerce ul.products li.product.tsm-stack::after {
	content: ""; position: absolute; left: 6px; right: 6px; height: 100%; z-index: -1;
	background: #fff; border: 1px solid #ddd; border-radius: 4px;
}
.woocommerce ul.products li.product.tsm-stack::before { top: 6px; left: 3px; right: 3px; }
.woocommerce ul.products li.product.tsm-stack::after { top: 12px; left: 6px; right: 6px; z-index: -2; }
.tsm-loop-meta { display: flex; flex-direction: column; gap: 2px; font-size: 12px; color: #777; margin: 4px 0 8px; }
.tsm-badge { align-self: flex-start; background: #f4a58a; color: #fff; padding: 2px 8px; border-radius: 10px; font-size: 11px; margin-top: 4px; }

/* ---------- Single product ---------- */
.tsm-siblings { margin: 30px 0; clear: both; }
.tsm-siblings table, .tsm-data, .tsm-table { width: 100%; border-collapse: collapse; }
.tsm-siblings th, .tsm-siblings td, .tsm-data th, .tsm-data td, .tsm-table th, .tsm-table td { text-align: left; padding: 8px 10px; border-bottom: 1px solid #eee; vertical-align: top; }
.tsm-siblings tr.is-current { background: #fff6f2; }
.tsm-data th { width: 30%; font-weight: 600; }

/* ---------- Stacked unit in the custom loop card (.stayitem) ---------- */
.stayitem.tsm-stack { box-shadow: 4px 4px 0 -1px #fff, 4px 4px 0 0 #d6d6d6, 8px 8px 0 -1px #fff, 8px 8px 0 0 #d6d6d6; }
.tsm-stack-note { font-size: 12px; color: #c4694a; margin: 4px 0; }

/* ---------- Search bar  [timeshare_search] ---------- */
.tsm-searchbar { position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: 12px; background: #fff; border-radius: 40px; padding: 12px 18px; box-shadow: 0 2px 10px rgba(0,0,0,.18); max-width: 880px; margin: 0 auto; }
.tsm-sb-field { position: relative; flex: 1 1 140px; min-width: 120px; }
.tsm-sb-dates { flex: 1.3 1 170px; }
.tsm-sb-field input[type=text], .tsm-sb-field select { width: 100%; box-sizing: border-box; height: 38px; padding: 0 12px; border: 1px solid #ccc; border-radius: 3px; background: #fff; color: #555; font-size: 15px; cursor: pointer; }
.tsm-sb-field input[type=text]:focus, .tsm-sb-field select:focus { outline: none; border-color: #4a2d9c; }
.tsm-sb-go { flex: 0 0 50px; width: 50px; height: 50px; border: 0; border-radius: 50%; background: #ffa88c; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; }
.tsm-sb-go:hover { background: #f4946f; }
.tsm-cal, .tsm-guests { position: absolute; top: calc(100% + 10px); left: 0; z-index: 50; background: #fff; border: 1px solid #e3e3e3; border-radius: 8px; box-shadow: 0 4px 18px rgba(0,0,0,.18); }
.tsm-cal { width: 640px; max-width: 92vw; padding: 18px 20px 10px; }
.tsm-cal[hidden], .tsm-guests[hidden] { display: none; }
.tsm-cal-months { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.tsm-cal-months .tsm-cal-month:first-child { border-right: 1px solid #e5e5e5; padding-right: 20px; }
.tsm-cal-title { text-align: center; font-size: 18px; margin-bottom: 8px; color: #333; }
.tsm-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px 0; text-align: center; }
.tsm-dow { font-size: 12px; color: #888; padding: 6px 0; }
.tsm-day { height: 38px; border: 0; background: transparent; border-radius: 50%; font-size: 14px; color: #333; cursor: pointer; padding: 0; }
.tsm-day:hover:not(.is-disabled) { background: #f2f2f2; }
.tsm-day.is-disabled { color: #ccc; cursor: default; }
.tsm-day.is-today { box-shadow: inset 0 0 0 1px #666; }
.tsm-day.is-between { background: #ffe7de; border-radius: 0; }
.tsm-day.is-hover { background: #fff1eb; border-radius: 0; }
.tsm-day.is-start, .tsm-day.is-end { background: #f4946f; color: #fff; }
.tsm-cal-nav { position: absolute; top: 14px; background: none; border: 0; font-size: 26px; line-height: 1; color: #555; cursor: pointer; }
.tsm-cal-prev { left: 12px; } .tsm-cal-next { right: 12px; }
.tsm-cal-foot { text-align: right; padding-top: 4px; }
.tsm-cal-clear { background: none; border: 0; color: #888; font-size: 12px; cursor: pointer; text-decoration: underline; }
.tsm-guests { width: 300px; padding: 10px 18px; }
.tsm-g-row { display: flex; justify-content: space-between; align-items: center; padding: 14px 0; }
.tsm-g-row + .tsm-g-row { border-top: 1px solid #e5e5e5; }
.tsm-g-row strong { display: block; font-size: 15px; color: #333; }
.tsm-g-row span { font-size: 12px; color: #888; }
.tsm-stepper { display: flex; align-items: center; gap: 12px; }
.tsm-stepper button { width: 28px; height: 28px; border-radius: 50%; border: 1px solid #888; background: #fff; color: #444; font-size: 16px; line-height: 1; cursor: pointer; padding: 0; }
.tsm-stepper button:disabled { opacity: .35; border-color: #ccc; cursor: default; }
.tsm-count { min-width: 18px; text-align: center; font-size: 15px; color: #333; }
@media (max-width: 700px) { .tsm-searchbar { border-radius: 20px; } .tsm-sb-field { flex-basis: 100%; } .tsm-cal-months { grid-template-columns: 1fr; } .tsm-cal-months .tsm-cal-month:first-child { border-right: 0; padding-right: 0; } .tsm-cal-month + .tsm-cal-month { display: none; } .tsm-cal { width: 100%; } }

/* ---------- Pagination + empty state ---------- */
.tsm-pagination { margin: 28px 0; text-align: center; }
.tsm-pagination ul { list-style: none; display: inline-flex; gap: 6px; padding: 0; margin: 0; flex-wrap: wrap; justify-content: center; }
.tsm-pagination a, .tsm-pagination span { display: block; min-width: 36px; padding: 8px 12px; border: 1px solid #ddd; border-radius: 4px; color: #444; text-decoration: none; }
.tsm-pagination .current { background: #f4946f; border-color: #f4946f; color: #fff; }
.tsm-no-results { text-align: center; padding: 40px 0; color: #777; }
