body { margin: 0; font-family: var(--font-sans); font-size: 15px; line-height: 22px; background: var(--surface); color: var(--ink); -webkit-font-smoothing: antialiased; }
.lg-icon { flex: none; display: inline-block; vertical-align: middle; }
.lg-dot { width: 3px; height: 3px; border-radius: 50%; background: currentColor; opacity: .5; margin: 0 2px; }
:where(.lg-btn, .lg-chip, .lg-search__filter, .lg-venue__fav, .lg-cal__day, .lg-cal__nav, .lg-bnav__item, .lg-side__item, .lg-field__input):focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }

/* Button */
.lg-btn { font: inherit; font-weight: 600; display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); border: 1.5px solid transparent; border-radius: var(--radius-pill); cursor: pointer; transition: background-color .15s ease-out, border-color .15s ease-out, color .15s ease-out; white-space: nowrap; }
.lg-btn--sm { height: 36px; padding: 0 var(--space-4); font-size: 14px; }
.lg-btn--md { height: 44px; padding: 0 var(--space-5); font-size: 15px; }
.lg-btn--lg { height: 56px; padding: 0 var(--space-6); font-size: 16px; }
.lg-btn--block { width: 100%; }
.lg-btn--primary { background: var(--primary); color: var(--on-primary); }
.lg-btn--primary:hover { background: var(--primary-hover); }
.lg-btn--secondary { background: var(--surface-raised); color: var(--primary); border-color: var(--line-strong); }
.lg-btn--secondary:hover { border-color: var(--primary); }
.lg-btn--quiet { background: transparent; color: var(--primary); }
.lg-btn--quiet:hover { background: var(--primary-soft); }
.lg-btn--danger { background: var(--surface-raised); color: var(--danger); border-color: var(--danger); }
.lg-btn--danger:hover { background: var(--danger-soft); }
.lg-btn:disabled { opacity: .45; cursor: not-allowed; }

/* TextField */
.lg-field { display: flex; flex-direction: column; gap: var(--space-2); min-width: 0; }
.lg-field__label { font-size: 14px; line-height: 20px; font-weight: 600; color: var(--ink); }
.lg-field__input { font: inherit; height: 48px; padding: 0 var(--space-4); border-radius: var(--radius-md); border: 1.5px solid var(--line-strong); background: var(--surface-raised); color: var(--ink); }
.lg-field__input::placeholder { color: var(--ink-muted); }
.lg-field__input:hover { border-color: var(--primary); }
.lg-field__msg { display: flex; align-items: center; gap: var(--space-1); font-size: 12px; line-height: 16px; font-weight: 500; color: var(--ink-muted); }
.lg-field--error .lg-field__input { border-color: var(--danger); }
.lg-field--error .lg-field__msg { color: var(--danger); }

/* SearchField */
.lg-search { display: flex; align-items: center; gap: var(--space-2); height: 52px; padding: 0 var(--space-2) 0 var(--space-4); border-radius: var(--radius-pill); background: var(--surface-raised); border: 1.5px solid var(--line); box-shadow: var(--shadow-1); }
.lg-search:focus-within { border-color: var(--primary); }
.lg-search__pin { color: var(--accent); display: flex; }
.lg-search__input { flex: 1; min-width: 0; font: inherit; border: 0; background: none; color: var(--ink); outline: none; height: 100%; }
.lg-search__input::placeholder { color: var(--ink-muted); }
.lg-search__filter { width: 40px; height: 40px; border-radius: 50%; border: 0; background: var(--primary); color: var(--on-primary); display: flex; align-items: center; justify-content: center; cursor: pointer; }

/* Chip */
.lg-chip { font: inherit; font-size: 14px; font-weight: 600; height: 40px; padding: 0 var(--space-4); border-radius: var(--radius-pill); border: 1.5px solid var(--line-strong); background: var(--surface-raised); color: var(--ink); display: inline-flex; align-items: center; gap: var(--space-2); cursor: pointer; }
.lg-chip:hover { border-color: var(--primary); }
.lg-chip.is-selected { background: var(--primary-soft); border-color: var(--primary); color: var(--primary); }

/* Badge */
.lg-badge { display: inline-flex; align-items: center; gap: var(--space-1); font-size: 12px; line-height: 16px; font-weight: 600; padding: 4px 10px; border-radius: var(--radius-pill); background: var(--primary-soft); color: var(--primary); white-space: nowrap; }
.lg-badge--success { background: var(--success-soft); color: var(--success); }
.lg-badge--danger { background: var(--danger-soft); color: var(--danger); }
.lg-badge--warning { background: var(--warning); color: var(--on-warning); }
.lg-badge--accent { background: var(--accent); color: var(--on-accent); }

/* VenueCard */
.lg-venue { background: var(--surface-raised); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-1); border: 1px solid var(--line); max-width: 360px; }
.lg-venue__media { position: relative; height: 150px; overflow: hidden; background: var(--brand-roxo); }
.lg-venue__media--coral { background: var(--brand-coral); }
.lg-venue__media--noite { background: var(--brand-noite); }
.lg-venue__media img, .lg-confetti { width: 100%; height: 100%; object-fit: cover; display: block; }
.lg-venue__fav { position: absolute; top: var(--space-3); right: var(--space-3); width: 40px; height: 40px; border-radius: 50%; border: 0; background: var(--surface-raised); color: var(--ink); display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: var(--shadow-1); }
.lg-venue__fav.is-on { color: var(--accent); }
.lg-venue__badge { position: absolute; left: var(--space-3); top: var(--space-3); }
.lg-venue__body { padding: var(--space-3) var(--space-4) var(--space-4); }
.lg-venue__row { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-2); }
.lg-venue__name { margin: 0; font-size: 16px; line-height: 22px; font-weight: 600; }
.lg-venue__rating { display: inline-flex; align-items: center; gap: 3px; font-size: 13px; font-weight: 600; color: var(--ink); }
.lg-venue__rating .lg-icon { color: var(--brand-laranja); }
.lg-venue__meta { display: flex; align-items: center; gap: var(--space-1); margin-top: 2px; font-size: 13px; line-height: 18px; color: var(--ink-muted); flex-wrap: wrap; }
.lg-venue__price { margin-top: var(--space-2); font-size: 13px; color: var(--ink-muted); }
.lg-venue__price strong { font-family: var(--font-display); font-weight: 600; font-size: 18px; color: var(--ink); }
.lg-venue--compact .lg-venue__media { height: 104px; }

/* BookingTicket */
.lg-ticket { display: flex; border-radius: var(--radius-lg); overflow: hidden; background: var(--brand-roxo); color: #FFFFFF; max-width: 520px; box-shadow: var(--shadow-2); }
.lg-ticket__main { flex: 1; padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-2); align-items: flex-start; min-width: 0; }
.lg-ticket__title { margin: var(--space-1) 0 var(--space-1); font-family: var(--font-display); font-weight: 600; font-size: 26px; line-height: 30px; }
.lg-ticket__line { display: flex; align-items: center; gap: var(--space-2); font-size: 14px; line-height: 20px; color: #EEE9F8; }
.lg-ticket__stub { width: 128px; flex: none; background: var(--brand-noite); border-left: 2px dashed rgba(255, 255, 255, .4); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-2); }
.lg-ticket__code { font-size: 12px; font-weight: 600; letter-spacing: .06em; color: #EEE9F8; }
.lg-ticket .lg-badge--success { background: #E1F2F7; color: #0E6E8C; }
.lg-ticket .lg-badge--danger { background: #FCE9E4; color: #C23A1E; }

/* AvailabilityCalendar */
.lg-cal { background: var(--surface-raised); border-radius: var(--radius-lg); padding: var(--space-4); box-sizing: border-box; border: 1px solid var(--line); max-width: 380px; }
.lg-cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-3); }
.lg-cal__title { font-family: var(--font-display); font-weight: 600; font-size: 18px; }
.lg-cal__nav { width: 36px; height: 36px; border-radius: 50%; border: 0; background: var(--surface-soft); color: var(--ink); display: flex; align-items: center; justify-content: center; cursor: pointer; }
.lg-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.lg-cal__wd { text-align: center; font-size: 12px; font-weight: 600; color: var(--ink-muted); padding-bottom: 4px; }
.lg-cal__day { font: inherit; font-size: 14px; font-weight: 500; aspect-ratio: 1; min-height: 36px; border-radius: var(--radius-sm); border: 0; background: transparent; color: var(--ink); cursor: pointer; position: relative; }
.lg-cal__day.is-free:hover { background: var(--primary-soft); }
.lg-cal__day.is-pending { background: var(--warning); color: var(--on-warning); }
.lg-cal__day.is-booked { color: var(--danger); text-decoration: line-through; background: var(--danger-soft); cursor: not-allowed; }
.lg-cal__day.is-selected { background: var(--primary); color: var(--on-primary); text-decoration: none; }
.lg-cal__legend { display: flex; gap: var(--space-4); margin-top: var(--space-3); font-size: 12px; color: var(--ink-muted); flex-wrap: wrap; }
.lg-cal__legend span { display: inline-flex; align-items: center; gap: 6px; }
.lg-cal__legend i { width: 12px; height: 12px; border-radius: 4px; display: inline-block; border: 1.5px solid var(--line-strong); }
.lg-cal__legend i.is-pending { background: var(--warning); border-color: var(--warning); }
.lg-cal__legend i.is-booked { background: var(--danger-soft); border-color: var(--danger); }

/* ReservationTable */
.lg-table-wrap { overflow-x: auto; background: var(--surface-raised); border-radius: var(--radius-lg); border: 1px solid var(--line); }
.lg-table { width: 100%; border-collapse: collapse; font-size: 14px; line-height: 20px; }
.lg-table th { text-align: left; font-size: 12px; font-weight: 600; color: var(--ink-muted); padding: var(--space-3); border-bottom: 1px solid var(--line); white-space: nowrap; }
.lg-table td { height: 56px; padding: 0 var(--space-3); border-bottom: 1px solid var(--line); white-space: nowrap; }
.lg-table tr:last-child td { border-bottom: 0; }
.lg-table tbody tr:hover { background: var(--surface-soft); }
.lg-table__ev { font-weight: 600; }
.lg-table__sub { font-size: 12px; color: var(--ink-muted); line-height: 16px; }
.lg-table__num { font-variant-numeric: tabular-nums; }

/* EmptyState */
.lg-empty { text-align: center; padding: var(--space-6) var(--space-5); display: flex; flex-direction: column; align-items: center; gap: var(--space-2); max-width: 360px; margin: 0 auto; }
.lg-empty__art { width: 128px; height: 128px; border-radius: 50%; background: var(--primary-soft); display: flex; align-items: flex-end; justify-content: center; overflow: hidden; margin-bottom: var(--space-2); }
.lg-empty__art img { width: 112px; display: block; margin-bottom: 4px; }
.lg-empty__title { margin: 0; font-family: var(--font-display); font-weight: 600; font-size: 22px; line-height: 28px; }
.lg-empty__text { margin: 0 0 var(--space-3); color: var(--ink-muted); }

/* BottomNav */
.lg-bnav { display: flex; height: var(--bottom-nav-height); background: var(--surface-raised); border-top: 1px solid var(--line); padding: 0 var(--space-2); }
.lg-bnav__item { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; text-decoration: none; color: var(--ink-muted); font-size: 11px; font-weight: 600; border-radius: var(--radius-md); }
.lg-bnav__icon { width: 52px; height: 30px; border-radius: var(--radius-pill); display: flex; align-items: center; justify-content: center; }
.lg-bnav__item.is-active { color: var(--primary); }
.lg-bnav__item.is-active .lg-bnav__icon { background: var(--primary-soft); }

/* Sidebar */
.lg-side { width: var(--sidebar-width); height: 100%; min-height: 480px; background: var(--surface-raised); border-right: 1px solid var(--line); display: flex; flex-direction: column; padding: var(--space-5) var(--space-4); box-sizing: border-box; }
.lg-side__logo { padding: 0 var(--space-3) var(--space-5); }
.lg-side__logo img { width: 112px; display: block; }
.lg-side__nav { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.lg-side__item { display: flex; align-items: center; gap: var(--space-3); height: 44px; padding: 0 var(--space-3); border-radius: var(--radius-md); text-decoration: none; color: var(--ink-muted); font-size: 14px; font-weight: 600; }
.lg-side__item:hover { background: var(--surface-soft); color: var(--ink); }
.lg-side__item.is-active { background: var(--primary-soft); color: var(--primary); }
.lg-side__count { margin-left: auto; font-style: normal; font-size: 12px; min-width: 22px; height: 22px; padding: 0 6px; border-radius: var(--radius-pill); background: var(--accent); color: var(--on-accent); display: inline-flex; align-items: center; justify-content: center; }
.lg-side__user { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3); border-top: 1px solid var(--line); margin-top: var(--space-3); }
.lg-side__user strong { display: block; font-size: 14px; line-height: 18px; }
.lg-side__user span { font-size: 12px; color: var(--ink-muted); }
.lg-side__avatar { width: 40px; height: 40px; border-radius: 50%; background: var(--brand-laranja); color: var(--brand-noite); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; flex: none; }
.lg-side.is-collapsed { width: 80px; }
.lg-side.is-collapsed .lg-side__item span, .lg-side.is-collapsed .lg-side__user div, .lg-side.is-collapsed .lg-side__count { display: none; }

/* utilidades das prévias */
.lg-row { display: flex; gap: var(--space-3); align-items: center; flex-wrap: wrap; padding: var(--space-5); }
.lg-stack { display: flex; flex-direction: column; gap: var(--space-4); padding: var(--space-5); }

/* troca de arte por tema */
.lg-only-dark { display: none !important; }
[data-theme="dark"] .lg-only-dark { display: block !important; }
[data-theme="dark"] .lg-only-light { display: none !important; }
