/* Lei Maui Booking — form styles. Clean/minimal, brand accent via --lmb-brand. */
.lmb { --lmb-brand: #FE7D03; max-width: 640px; margin: 0 auto; font-family: inherit; color: #1a1a1a; line-height: 1.5; }
.lmb *, .lmb *::before, .lmb *::after { box-sizing: border-box; }

/* Steps */
.lmb-steps { display: flex; list-style: none; padding: 0; margin: 0 0 24px; gap: 8px; }
.lmb-steps li { flex: 1; display: flex; align-items: center; gap: 8px; font-size: 13px; color: #999; font-weight: 600; }
.lmb-steps li span { width: 26px; height: 26px; border-radius: 50%; background: #eee; color: #999; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; flex: none; }
.lmb-steps li.is-active { color: #1a1a1a; }
.lmb-steps li.is-active span { background: var(--lmb-brand); color: #fff; }
.lmb-steps li.is-done span { background: #1a1a1a; color: #fff; }

/* Panels */
.lmb-panel { display: none; }
.lmb-panel.is-active { display: block; animation: lmb-fade .2s ease; }
@keyframes lmb-fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

.lmb-h { font-size: 28px; margin: 0 0 8px; line-height: 1.2; }
.lmb-note { font-size: 15px; color: #666; margin: 0 0 20px; }
.lmb-due { font-weight: 600; color: #1a1a1a; }

/* Fields */
.lmb-field { margin: 0 0 16px; }
.lmb-field label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 6px; }
.lmb-field input, .lmb-field select, .lmb-field textarea {
	width: 100%; padding: 10px 12px; border: 1px solid #d5d5d5; border-radius: 8px;
	font-size: 15px; font-family: inherit; background: #fff; color: #1a1a1a;
}
.lmb-field input:focus, .lmb-field select:focus, .lmb-field textarea:focus {
	outline: none; border-color: var(--lmb-brand); box-shadow: 0 0 0 3px rgba(254,125,3,.15);
}
.lmb-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.lmb-grid2 .lmb-col2 { grid-column: 1 / -1; }
@media (max-width: 520px) { .lmb-grid2 { grid-template-columns: 1fr; } }

/* Calendar */
.lmb-cal { border: 1px solid #e5e5e5; border-radius: 12px; padding: 12px; margin-bottom: 16px; }
.lmb-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.lmb-cal-title { font-weight: 700; }
/* Month arrows: plain bigger chevrons, not themed buttons. */
.lmb-cal-nav { border: none !important; background: transparent !important; box-shadow: none !important; width: 44px; height: 44px; min-width: 0 !important; border-radius: 8px; font-size: 30px; line-height: 1; cursor: pointer; color: #1a1a1a !important; padding: 0 !important; }
.lmb-cal-nav:hover { background: transparent !important; color: var(--lmb-brand) !important; }
.lmb-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.lmb-cal-grid > * { min-width: 0; }
.lmb-dow { text-align: center; font-size: 11px; color: #999; font-weight: 600; padding: 4px 0; }
/* height (not aspect-ratio) keeps cells compact; min-width:0 beats theme button min-width that caused overflow. */
.lmb-day { border: none; background: #fff; height: 46px; min-width: 0; padding: 0; border-radius: 8px; cursor: pointer; font-size: 14px; color: #1a1a1a; }
.lmb-day:hover:not(.is-disabled) { background: rgba(254,125,3,.12); }
.lmb-day.is-selected { background: var(--lmb-brand); color: #fff; font-weight: 700; }
.lmb-day.is-disabled { color: #ccc; cursor: default; }

/* Time status */
.lmb-timestatus { font-size: 13px; margin: 8px 0 0; min-height: 18px; }
.lmb-timestatus.is-ok { color: #2e7d32; font-weight: 600; }
.lmb-timestatus.is-bad { color: #c62828; }
.lmb-timestatus.is-checking { color: #999; }
.lmb-suggest .lmb-link { margin-left: 4px; }

/* Group-pricing widget */
.lmb-pricing { margin: 0 0 16px; border: 1px solid #e5e5e5; border-radius: 10px; padding: 14px 16px; background: #fff; }
.lmb-pricing-head { font-size: 13px; font-weight: 700; margin: 0 0 10px; color: #1a1a1a; }
.lmb-pricing-table { width: 100%; border-collapse: collapse; }
.lmb-pricing-table th, .lmb-pricing-table td { text-align: center; padding: 8px 6px; font-size: 13px; border-bottom: 1px solid #f0f0f0; }
.lmb-pricing-table th { color: #666; font-weight: 600; }
.lmb-pricing-table th small { color: #999; font-weight: 400; font-size: 11px; display: block; }
.lmb-pricing-table th:first-child, .lmb-pricing-table td:first-child { text-align: left; }
.lmb-pricing-table tbody tr:last-child td, .lmb-pricing-table tbody tr:last-child td { border-bottom: none; }
.lmb-pricing-table tr.is-current td { background: rgba(254,125,3,.12) !important; font-weight: 700; }
.lmb-pricing-table tr.is-current td:first-child { box-shadow: inset 3px 0 0 var(--lmb-brand); }
.lmb-pricing-note { margin: 10px 0 0; font-size: 13px; font-weight: 600; color: var(--lmb-brand); min-height: 18px; }

/* Overflow */
.lmb-overflow { background: #fff6ef; border: 1px solid var(--lmb-brand); border-radius: 10px; padding: 14px 16px; font-size: 14px; margin-bottom: 16px; }
.lmb-overflow a { color: var(--lmb-brand); font-weight: 600; }

/* Terms — !important beats theme label/margin resets that were killing the padding. */
.lmb-terms { display: flex !important; gap: 10px; align-items: flex-start; font-size: 14px; margin: 8px 0 20px !important; padding: 16px 18px !important; background: #fafafa !important; border: 1px solid #eee !important; border-radius: 10px !important; }
.lmb-terms input { margin-top: 3px; }
/* Terms link — !important stops the theme rendering it as a green pill button. */
.lmb-link { background: none !important; border: none !important; box-shadow: none !important; padding: 0 !important; border-radius: 0 !important; min-width: 0 !important; width: auto !important; color: var(--lmb-brand) !important; font: inherit; font-weight: 600; text-decoration: underline; cursor: pointer; }
.lmb-link:hover { background: none !important; color: var(--lmb-brand) !important; }

/* Honeypot */
.lmb-hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }

/* Buttons */
.lmb-actions { display: flex; justify-content: space-between; gap: 12px; margin-top: 20px; }
.lmb-actions:only-child, .lmb-actions:last-child { }
/* !important beats the Astra/Elementor theme forcing all buttons green. */
.lmb-btn { background: var(--lmb-brand) !important; color: #fff !important; border: none !important; box-shadow: none !important; padding: 13px 26px; border-radius: 10px; font-size: 16px; font-weight: 700; cursor: pointer; margin-left: auto; }
.lmb-btn:hover { filter: brightness(.95); }
.lmb-btn:disabled { opacity: .6; cursor: default; }
.lmb-btn-ghost { background: #f2f2f2 !important; color: #1a1a1a !important; margin-left: 0; }
.lmb-err { color: #c62828; font-size: 14px; margin: 12px 0 0; min-height: 18px; }

/* Leis */
.lmb-leis { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 20px; }
@media (max-width: 520px) { .lmb-leis { grid-template-columns: 1fr; } }
.lmb-lei-card { border: 1px solid #e5e5e5; border-radius: 12px; overflow: hidden; }
.lmb-lei-img { width: 100%; aspect-ratio: 1 / 1; object-fit: contain; background: #fff; display: block; }

/* Premium image carousel */
.lmb-carousel { position: relative; aspect-ratio: 1 / 1; }
.lmb-carousel-viewport { width: 100%; height: 100%; background: #fff; overflow: hidden; }
.lmb-carousel-img { width: 100%; height: 100%; object-fit: contain; display: block; cursor: pointer; background: #fff; }
.lmb-carousel-arrow { position: absolute; top: 50%; transform: translateY(-50%); width: 30px !important; height: 30px !important; min-width: 0 !important; padding: 0 !important; border: none !important; border-radius: 50% !important; background: rgba(255,255,255,.9) !important; color: #1a1a1a !important; font-size: 18px; line-height: 1; cursor: pointer; box-shadow: 0 1px 4px rgba(0,0,0,.25); }
.lmb-carousel-arrow:hover { background: #fff !important; color: var(--lmb-brand) !important; }
.lmb-carousel-prev { left: 8px; }
.lmb-carousel-next { right: 8px; }
.lmb-carousel-dots { position: absolute; bottom: 8px; left: 0; right: 0; display: flex; justify-content: center; gap: 6px; }
.lmb-carousel-dot { width: 9px !important; height: 9px !important; min-width: 0 !important; padding: 0 !important; border: none !important; border-radius: 50% !important; background: rgba(255,255,255,.65) !important; box-shadow: 0 0 2px rgba(0,0,0,.45); cursor: pointer; }
.lmb-carousel-dot.is-active { background: var(--lmb-brand) !important; }
.lmb-lei-body { padding: 14px; }
.lmb-lei-tier { display: inline-block; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--lmb-brand); }
.lmb-lei-body h4 { margin: 4px 0 8px; font-size: 16px; }
.lmb-lei-price { font-size: 18px; font-weight: 700; margin-bottom: 12px; }
.lmb-lei-price small { font-size: 12px; font-weight: 400; color: #888; }
.lmb-stepper { display: flex; align-items: center; gap: 14px; }
.lmb-stepper button { width: 34px; height: 34px; border-radius: 8px; border: 1px solid #d5d5d5; background: #fff; font-size: 18px; cursor: pointer; color: #1a1a1a; }
.lmb-stepper button:hover { border-color: var(--lmb-brand); color: var(--lmb-brand); }
.lmb-stepper span { min-width: 20px; text-align: center; font-weight: 700; font-size: 16px; }
.lmb-lei-disclaimer { margin: 12px 0 0; font-size: 11px; line-height: 1.5; color: #888; font-style: italic; }

/* Totals */
.lmb-totals { border-top: 1px solid #e5e5e5; padding-top: 14px; }
.lmb-totals > div { display: flex; justify-content: space-between; font-size: 15px; padding: 3px 0; }
.lmb-totals .lmb-total { font-weight: 700; font-size: 18px; border-top: 2px solid #1a1a1a; margin-top: 6px; padding-top: 10px; }
.lmb-totals .lmb-total span:last-child { color: var(--lmb-brand); }

/* Review */
.lmb-review-table { width: 100%; border-collapse: collapse; margin-bottom: 16px; }
.lmb-review-table th { text-align: left; width: 40%; padding: 9px 12px 9px 12px; color: #666; font-size: 13px; vertical-align: top; }
.lmb-review-table td { padding: 9px 12px 9px 18px; font-size: 14px; }
.lmb-totals-review { border-top: 1px solid #e5e5e5; }

/* Success */
.lmb-success { text-align: center; padding: 20px 0; font-size: 18px; }
.lmb-check { width: 68px; height: 68px; border-radius: 50%; background: var(--lmb-brand); color: #fff; font-size: 36px; display: flex; align-items: center; justify-content: center; margin: 0 auto 18px; }
.lmb-success p { font-size: 18px; line-height: 1.6; }

/* Modal */
.lmb-modal { position: fixed; inset: 0; background: rgba(0,0,0,.5); display: flex; align-items: center; justify-content: center; z-index: 99999; padding: 20px; }
.lmb-modal[hidden] { display: none; }
.lmb-modal-box { background: #fff; border-radius: 12px; max-width: 520px; width: 100%; max-height: 80vh; overflow: auto; padding: 24px; position: relative; }
.lmb-modal-close { position: absolute; top: 12px; right: 12px; border: none; background: none; font-size: 24px; cursor: pointer; color: #666; }
.lmb-terms-text { white-space: pre-wrap; font-family: inherit; font-size: 13px; line-height: 1.6; color: #333; margin: 12px 0 0; }
