/* Operational modules: reservations, catalogs, services, cleaning and KPI. */
.dt-paging span.ellipsis { display:none; }
.module-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:22px; }
.module-heading__eyebrow { display:block; margin-bottom:5px; color:var(--app-primary); font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.module-heading h1 { margin:0 0 5px; color:var(--app-ink); font-size:clamp(23px,3vw,32px); font-weight:800; letter-spacing:-.035em; }
.module-heading p { margin:0; color:var(--app-muted); font-size:13px; }
.module-heading .btn { min-height:43px; display:inline-flex; align-items:center; gap:8px; }

.filter-panel { border:1px solid var(--app-border); border-radius:17px; background:var(--app-surface); box-shadow:var(--app-shadow); }
.filter-panel__title { display:flex; align-items:center; gap:10px; margin-bottom:17px; color:var(--app-ink); font-size:14px; font-weight:700; }
.filter-panel__title span { width:34px; height:34px; display:grid; place-items:center; border-radius:10px; color:var(--app-primary); background:var(--app-primary-soft); }
.filter-panel .form-control,.filter-panel .form-select,.filter-panel .btn { min-height:43px; }

.summary-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin:20px 0; }
.summary-card { position:relative; display:flex; align-items:center; gap:14px; min-height:108px; padding:18px; border:1px solid var(--app-border); border-radius:16px; color:inherit; background:var(--app-surface); box-shadow:var(--app-shadow); text-align:left; transition:border-color .2s,transform .2s,box-shadow .2s; }
button.summary-card { width:100%; }
.summary-card:hover,.summary-card.is-active { color:inherit; border-color:#aeb6f4; transform:translateY(-2px); box-shadow:0 10px 25px rgba(50,64,180,.1); }
.summary-card.is-active::after { content:""; position:absolute; inset:auto 16px 0; height:3px; border-radius:3px 3px 0 0; background:var(--app-primary); }
.summary-card__icon { width:48px; height:48px; flex:0 0 48px; display:grid; place-items:center; border-radius:14px; font-size:20px; }
.summary-card__icon--red { color:#c4424a; background:#ffebed; }.summary-card__icon--orange { color:#d87916; background:#fff2df; }
.summary-card__icon--violet { color:#7a4dca; background:#f2edff; }.summary-card__icon--green { color:#168465; background:#e5f7f1; }
.summary-card small,.summary-card strong { display:block; }.summary-card small { color:var(--app-muted); font-size:12px; }
.summary-card strong { margin-top:2px; color:var(--app-ink); font-size:27px; line-height:1; }

.table-panel { overflow:hidden; border:1px solid var(--app-border); border-radius:17px; background:var(--app-surface); box-shadow:var(--app-shadow); }
.table-panel__header { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:20px 22px; border-bottom:1px solid var(--app-border); }
.table-panel__header h2 { margin:0; font-size:17px; font-weight:800; }.table-panel__header p { margin:4px 0 0; color:var(--app-muted); font-size:12px; }
.table-panel__body { padding:0 20px 20px; }
.table-panel table { margin-top:0!important; }
.table-panel .dt-container .dt-layout-row:first-child { margin:14px 0; }
.table-panel .dt-search input,.table-panel .dt-length select { border:1px solid var(--app-border); border-radius:9px; background:var(--app-surface); color:var(--app-ink); }
.table-panel .dt-info,.table-panel .dt-length,.table-panel .dt-search { color:var(--app-muted); font-size:12px; }
.table-panel .dt-paging-button { border-radius:8px!important; }
.table-panel .order-actions { justify-content:center; gap:6px; }
.table-panel .order-actions a,.table-panel .order-actions button { width:34px; height:34px; display:grid; place-items:center; padding:0; border:1px solid var(--app-border); border-radius:9px; color:var(--app-primary); background:var(--app-primary-soft); }
.status-pill { display:inline-flex; align-items:center; gap:6px; padding:6px 9px; border-radius:999px; font-size:11px; font-weight:700; }
.status-pill--success { color:#168465; background:#e5f7f1; }.status-pill--warning { color:#9b620a; background:#fff2df; }
.status-pill--danger { color:#c4424a; background:#ffebed; }.status-pill--info { color:#4055ca; background:#edf0ff; }

.catalog-shell .table-panel__body,.service-shell .table-panel__body { padding-top:4px; }
.catalog-name { display:flex; align-items:center; gap:10px; font-weight:700; }.catalog-name i { color:var(--app-primary); }
.detail-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:15px; }
.section-title { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
.section-title h2 { margin:0; font-size:17px; font-weight:800; }.section-title p { margin:4px 0 0; color:var(--app-muted); font-size:12px; }

.modal-content { overflow:hidden; }
.modal-dialog .modal-header { align-items:flex-start; background:linear-gradient(125deg,#283593,#5263df); color:#fff; }
.modal-dialog .modal-header .modal-title { color:#fff; font-size:18px; font-weight:750; }
.modal-dialog .modal-header .btn-close { filter:invert(1); opacity:.85; }
.modal-dialog .modal-body label,.modal-dialog .modal-body .form-label { display:block; margin-bottom:6px; color:var(--app-ink); font-size:12px; font-weight:700; }
.modal-dialog .modal-body .row + .row { margin-top:10px; }
.modal-dialog .modal-footer { padding:15px 22px; background:var(--app-canvas); border-top:1px solid var(--app-border); }
.modal-dialog .modal-footer .btn { min-width:120px; min-height:42px; }
.modal-hint { margin:0; color:var(--app-muted); font-size:12px; line-height:1.55; }
.selection-box { padding:14px; border:1px solid var(--app-border); border-radius:12px; background:var(--app-canvas); }

.cleaning-shell .nav-tabs { gap:6px; padding:6px; border:1px solid var(--app-border); border-radius:12px; background:var(--app-canvas); }
.cleaning-shell .nav-tabs .nav-link { border:0; border-radius:9px; color:var(--app-muted); font-size:13px; font-weight:700; }
.cleaning-shell .nav-tabs .nav-link.active { color:#fff; background:var(--app-primary); }
.cleaning-modal .modal-dialog { max-width:780px; }
.cleaning-modal__summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-bottom:16px; }
.cleaning-modal__block { padding:14px; border:1px solid var(--app-border); border-radius:12px; background:var(--app-canvas); }
.cleaning-modal__block h6 { margin:0 0 9px; font-size:12px; color:var(--app-muted); text-transform:uppercase; letter-spacing:.05em; }
.cleaning-check { display:flex; align-items:flex-start; gap:8px; padding:6px 0; color:var(--app-ink); font-size:13px; }
.cleaning-gallery { position:relative; overflow:hidden; margin-bottom:18px; border-radius:15px; background:#111827; }
.cleaning-gallery .carousel-item img { width:100%; height:min(48vh,420px); object-fit:contain; }
.cleaning-gallery__counter { position:absolute; z-index:2; top:12px; right:12px; padding:5px 9px; border-radius:999px; color:#fff; background:rgba(15,23,42,.72); font-size:11px; }

.finance-dashboard { --finance-primary:#4656d7; --finance-green:#16a673; --finance-warning:#e49a22; --finance-cyan:#1787a6; --finance-purple:#8a5bd6; }
.finance-dashboard .filter-card,.finance-dashboard .finance-panel,.finance-dashboard .dashboard-loader,.snapshot-card { border-radius:14px; box-shadow:0 6px 22px rgba(31,45,61,.07); }
.snapshot-item { display:flex; align-items:center; gap:.8rem; padding:1rem 1.25rem; }.snapshot-item + .snapshot-item { border-left:1px solid var(--app-border); }
.snapshot-icon,.panel-icon { width:36px; height:36px; flex:0 0 auto; display:grid; place-items:center; color:var(--finance-primary); background:var(--app-primary-soft); border-radius:10px; }
.snapshot-item span,.snapshot-item strong { display:block; }.snapshot-item span { color:var(--app-muted); font-size:.73rem; margin-bottom:.15rem; }.snapshot-item strong { font-size:1rem; }
.period-badge,.reservation-count { color:var(--finance-primary); background:var(--app-primary-soft); border:1px solid var(--app-border); padding:.6rem .85rem; border-radius:999px; font-weight:600; font-size:.82rem; }
.period-btn { background:var(--app-canvas); border:1px solid var(--app-border); color:var(--app-ink); }.period-btn:hover,.period-btn.active { color:#fff; background:var(--finance-primary); border-color:var(--finance-primary); }
.metric-card { position:relative; overflow:hidden; border-radius:14px; box-shadow:var(--app-shadow); }.metric-card::after { content:""; position:absolute; width:90px; height:90px; border-radius:50%; right:-35px; top:-35px; background:currentColor; opacity:.055; }
.metric-card .card-body { padding:1.25rem; }.metric-icon { width:38px; height:38px; display:grid; place-items:center; margin-bottom:1rem; border-radius:11px; background:currentColor; }.metric-icon i { color:#fff; }
.metric-primary { color:var(--finance-primary); }.metric-success { color:var(--finance-green); }.metric-warning { color:var(--finance-warning); }.metric-info { color:var(--finance-cyan); }.metric-purple { color:var(--finance-purple); }
.metric-label { color:var(--app-muted); font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; }.metric-value { color:var(--app-ink); font-size:clamp(1.35rem,2vw,1.75rem); font-weight:750; white-space:nowrap; }.metric-foot { color:var(--app-muted); font-size:.76rem; min-height:18px; }
.variation-up { color:var(--finance-green); }.variation-down,.balance-due { color:#dc5661; }.balance-paid { color:var(--finance-green); }
.chart-container { position:relative; width:100%; }.chart-main { height:300px; }.chart-donut { height:205px; }.chart-category { height:265px; }
.finance-search-btn { min-height:40px; background:var(--finance-primary); border-color:var(--finance-primary); }
.category-total { color:var(--app-ink); font-size:1.15rem; font-weight:800; }.category-total small { display:block; color:var(--app-muted); font-size:.7rem; font-weight:600; }
.legend-dot--0 { background:#4656d7; }.legend-dot--1 { background:#16a673; }.legend-dot--2 { background:#e49a22; }.legend-dot--3 { background:#1787a6; }.legend-dot--4 { background:#8a5bd6; }.legend-dot--5 { background:#dc5661; }
.custom-legend,.status-list { display:grid; gap:.45rem; }.legend-row { display:flex; justify-content:space-between; gap:.5rem; font-size:.76rem; }.legend-label { min-width:0; display:flex; align-items:center; gap:.45rem; color:var(--app-muted); }.legend-dot { width:8px; height:8px; border-radius:50%; flex:none; }
.status-item { padding:.75rem; background:var(--app-canvas); border-radius:10px; }.status-name { color:var(--app-muted); font-size:.72rem; }.status-total { font-size:1.1rem; font-weight:700; }
.finance-table-wrap { max-height:480px; overflow:auto; }.finance-table thead { position:sticky; top:0; z-index:2; }.finance-table thead th { background:var(--app-canvas); color:var(--app-muted); font-size:.7rem; text-transform:uppercase; white-space:nowrap; }.finance-table tbody td { padding:.95rem 1rem; white-space:nowrap; }.guest-name { font-weight:650; }.folio { color:var(--app-muted); font-size:.74rem; }.status-badge { padding:.42rem .65rem; border-radius:999px; color:var(--app-primary); background:var(--app-primary-soft); font-size:.72rem; font-weight:650; }.empty-state { padding:3rem 1rem; color:var(--app-muted); text-align:center; }

@media (max-width:991.98px) { .summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.detail-grid { grid-template-columns:1fr; } }
@media (max-width:767.98px) {
    .module-heading { align-items:stretch; flex-direction:column; }.module-heading .btn { justify-content:center; }
    .summary-grid { grid-template-columns:1fr 1fr; }.summary-card { min-height:94px; padding:14px; }.summary-card strong { font-size:23px; }
    .table-panel__header { align-items:flex-start; flex-direction:column; }.table-panel__body { padding:0 12px 15px; }
    .cleaning-table thead { display:none; }.cleaning-table tbody,.cleaning-table tr { display:block; width:100%; }.cleaning-table tr { margin:12px 0; padding:12px; border:1px solid var(--app-border); border-radius:13px; background:var(--app-surface); box-shadow:var(--app-shadow); }
    .cleaning-table td { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; width:100%!important; padding:8px 2px!important; border:0!important; white-space:normal!important; text-align:right; }.cleaning-table td::before { flex:none; color:var(--app-muted); font-size:11px; font-weight:700; text-transform:uppercase; }
    .cleaning-table td:nth-child(1)::before { content:"Fecha"; }.cleaning-table td:nth-child(2)::before { content:"ID"; }.cleaning-table td:nth-child(3)::before { content:"Habitación"; }.cleaning-table td:nth-child(4)::before { content:"Asignado"; }.cleaning-table td:nth-child(5)::before { content:"Observaciones"; }.cleaning-table td:nth-child(6)::before { content:"Estado"; }.cleaning-table td:nth-child(7)::before { content:"Acciones"; }
    .snapshot-item + .snapshot-item { border-left:0; border-top:1px solid var(--app-border); }.finance-table-wrap { max-height:390px; }
}
@media (max-width:575.98px) {
    .summary-grid { grid-template-columns:1fr; }.summary-card { min-height:82px; }.summary-card__icon { width:42px; height:42px; flex-basis:42px; }
    .cleaning-modal { padding:0!important; }.cleaning-modal .modal-dialog { width:100%; height:100%; max-width:none; margin:0; }.cleaning-modal .modal-content { min-height:100%; border:0; border-radius:0; }.cleaning-modal .modal-body { padding:16px; }.cleaning-modal .modal-footer { position:sticky; bottom:0; z-index:3; }.cleaning-modal .modal-footer .btn { width:100%; }.cleaning-modal__summary { grid-template-columns:1fr; }.cleaning-gallery { margin-left:-16px; margin-right:-16px; border-radius:0; }
    .chart-main { height:240px; }.chart-category { height:235px; }
}
