/* Correções globais de menus e identificação visual de membros. */
.dropdown-menu{z-index:1100}
.dropdown-menu>li{position:relative;z-index:10}
.member-chip{gap:0}
.img-usuario{width:35px!important;height:35px!important;aspect-ratio:1;flex:0 0 auto;margin-right:10px;border-radius:50%;object-fit:cover;border:2px solid #fff;box-shadow:none!important}

a,a:hover,a:focus,a:active{text-decoration:none!important}
.btn-primary{--bs-btn-bg:var(--od-primary);--bs-btn-border-color:var(--od-primary);--bs-btn-hover-bg:#5f35ae;--bs-btn-hover-border-color:#5f35ae;--bs-btn-active-bg:#512d98;--bs-btn-active-border-color:#512d98}
.listing-toolbar-actions .btn-outline-primary,.listing-toolbar .btn-outline-primary{--bs-btn-color:var(--od-primary);--bs-btn-border-color:var(--od-primary);--bs-btn-hover-color:#fff;--bs-btn-hover-bg:var(--od-primary);--bs-btn-hover-border-color:var(--od-primary);--bs-btn-active-color:#fff;--bs-btn-active-bg:#512d98;--bs-btn-active-border-color:#512d98;--bs-btn-focus-shadow-rgb:111,66,193}
.image-picker,.product-image-picker{max-width:100%;width:min(20vw,180px)!important}
.image-picker img,.product-image-picker img{display:block;max-width:100%;width:100%!important;height:auto!important;aspect-ratio:1;object-fit:cover}
.image-picker .dropdown,.image-picker .dropdown-toggle{max-width:100%;width:100%!important}
.form-floating:has(>select.select2-hidden-accessible){min-height:58px}
.form-floating>.select2-container{height:58px;padding-top:0}
.form-floating>.select2-container .select2-selection--single,.form-floating>.select2-container .select2-selection--multiple{min-height:58px;padding:1.45rem .75rem .35rem}
.form-floating>.select2-container .select2-selection__rendered{line-height:1.45!important;padding-left:0}
.form-floating>.select2-container .select2-selection__arrow{height:56px}
.form-floating>label{z-index:2;pointer-events:none}

.presence-button:disabled.is-present{opacity:1;cursor:not-allowed}
.presence-button.is-locked,.presence-button.is-locked.is-present{opacity:.55;filter:grayscale(.35);cursor:not-allowed}
.organizer-row .select2-container{min-width:0}
.organizer-row{flex-wrap:wrap}
.organizer-row>.quick-member-form{flex:1 0 100%}
.quick-member-form{background:#faf9fc}
.quick-member-option-icon{background:var(--od-primary)!important;border-color:var(--od-primary)!important;color:#fff!important}.select2-results__option--highlighted .quick-member-option-icon{background:#fff!important;border-color:#fff!important;color:var(--od-primary)!important}
.select2-results .member-avatar-sm{width:30px!important;height:30px!important}
.organizer-row>[class*="flex-grow"]{min-width:0}
.organizer-row>[data-remove-row]{height:58px;width:44px}

.member-directory{border:1px solid var(--od-border);border-radius:1rem;background:#fff;overflow:visible}
.member-directory-head,.member-directory-row{grid-template-columns:minmax(0,2fr) minmax(0,.8fr) minmax(0,.9fr) minmax(0,.7fr) minmax(0,1fr) minmax(0,.4fr);align-items:center}
.member-directory-head{display:grid;background:#f7f5fa;border-radius:1rem 1rem 0 0;top:64px;z-index:20;border-bottom:1px solid var(--od-border)}
.member-directory-head button,.member-directory-head span{border:0;background:transparent;padding:.85rem 1rem;text-align:left;font-size:.78rem;font-weight:800;text-transform:uppercase;color:#746d7f}
.member-directory-head button{display:flex;justify-content:space-between;align-items:center}
.member-directory-row{display:grid;padding:.75rem 1rem;border-bottom:1px solid var(--od-border)}
.member-directory-row:last-child{border-bottom:0}
.member-directory-person{min-width:0}
.member-directory-cell{font-size:.9rem}
.top-search{position:relative;width:min(520px,48vw)}
.top-search>i{position:absolute;z-index:2;left:1rem;top:50%;transform:translateY(-50%);color:#817a89}
.top-search input{padding-left:2.75rem;padding-right:2.5rem;background:#f1eff4;color:#2b2636;border-color:#ddd8e4}
.top-search input::placeholder{color:#8b8494}
.top-search [data-search-clear]{position:absolute;right:.45rem;top:50%;transform:translateY(-50%);border:0;background:transparent;color:#817a89;z-index:2}
.global-search-results{position:absolute;top:calc(100% + .5rem);inset-inline:0;background:#fff;border:1px solid var(--od-border);border-radius:.85rem;box-shadow:var(--od-shadow);overflow-x:hidden;overflow-y:auto;max-height:min(70vh,640px);overscroll-behavior:contain;z-index:1200}
.global-search-results a{display:flex;align-items:center;gap:.75rem;padding:.7rem 1rem;border-bottom:1px solid var(--od-border);color:inherit;text-decoration:none}
.global-search-results a:hover,.global-search-results a:focus{background:#f3edff;color:inherit}
.global-search-results a img{flex:0 0 auto;width:42px;height:42px;border-radius:50%;object-fit:cover;border:1px solid #fff;box-shadow:0 2px 8px #21152b26}
.global-search-body{display:flex;flex-direction:column;gap:.2rem;min-width:0;flex:1 1 auto}
.global-search-body strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.global-search-meta{display:flex;flex-wrap:wrap;align-items:center;column-gap:.4rem;row-gap:.15rem;font-size:.78rem;color:#6f687a;line-height:1.3}
.global-search-meta .badge{font-size:.66rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}
.global-search-badge-membro{background:#6f42c1;color:#fff}
.global-search-sep{color:#c3bdcc}
/* Foco na pesquisa global: o resto da tela escurece; só o campo e os resultados ficam acesos */
.global-search-backdrop{position:fixed;inset:0;z-index:1029;background:rgba(24,16,38,.6);animation:globalSearchFade .15s ease-out}
@keyframes globalSearchFade{from{opacity:0}to{opacity:1}}
body.search-active{overflow:hidden}
body.search-active .topbar{background:#7f7a8a;border-bottom-color:transparent;backdrop-filter:none}
body.search-active .topbar>*:not(.top-search){opacity:.35;pointer-events:none}
body.search-active .top-search input{background:#fff;border-color:#a98ade;box-shadow:0 0 0 .2rem rgba(155,109,227,.35)}
/* Smartphone: a lista de resultados ocupa 100% da largura da tela, logo abaixo da barra superior */
@media(max-width:767.98px){.global-search-results.is-mobile{position:fixed;top:var(--gs-top,68px);left:0;right:0;inset-inline:0;width:auto;max-height:calc(100vh - var(--gs-top,68px) - .5rem);max-height:calc(100dvh - var(--gs-top,68px) - .5rem);overflow-y:auto;overscroll-behavior:contain;border:0;border-radius:0 0 1rem 1rem}}
.global-search-results a:last-child{border:0}
.user-menu-toggle{display:flex;align-items:center;gap:.35rem;border:0;background:transparent;padding:0;color:inherit}
.user-menu-toggle .member-chip>span{display:none}
.event-entry-list{border:1px solid var(--od-border);border-radius:1rem;overflow:visible;background:#fff}
.event-entry-row{display:grid;grid-template-columns:minmax(0,1fr) auto 44px;gap:1rem;align-items:center;padding:.85rem 1rem;border-bottom:1px solid var(--od-border)}
.event-entry-row:last-child{border:0}
.today-class-card [data-roster-filter]{font-size:.85em}
.today-class-card [data-roster-filter].btn-primary{color:#fff!important}
.today-class-roster .member-chip{display:flex;align-items:center;min-width:0}
.today-class-roster .member-chip>span{display:block;min-width:0}
.today-class-card .btn-outline-primary{--bs-btn-color:var(--od-primary);--bs-btn-border-color:var(--od-primary);--bs-btn-hover-bg:var(--od-primary);--bs-btn-hover-border-color:var(--od-primary)}

@media(max-width:991.98px){.member-directory{border:0;background:transparent}
.member-directory [data-sort-items]{display:grid;gap:1rem}
.member-directory-row{display:flex;position:relative;flex-direction:column;align-items:stretch;border:1px solid var(--od-border);border-radius:1rem;background:#fff;padding:1rem}
.member-directory-row>.record-actions{position:absolute;right:1rem;top:1rem}
.member-directory-person{padding-right:3rem}
.member-directory-cell{display:flex;justify-content:space-between;padding:.55rem 0;border-top:1px solid #eee}
.member-directory-cell::before{content:attr(data-label) ':';font-weight:700;color:#777083}
.top-search{width:100%;max-width:none}
.topbar{flex-wrap:nowrap}
 .user-menu-toggle>.user-menu-name{display:inline-flex!important}
.event-entry-row{grid-template-columns:minmax(0,1fr) auto}
.event-entry-row>.record-actions{grid-column:2;grid-row:1}
}

@media(max-width:575.98px){.top-search{width:calc(100vw - 125px)}
 .user-menu-toggle>.user-menu-name{display:none!important}
.top-search input{font-size:.78rem}
.event-entry-row{gap:.5rem;padding:.75rem}
}

.top-search input{background:#f3f1f5;color:#2b2636;border-color:#ded8e8}
.top-search input:focus{background:#fff}
.top-search input::placeholder{color:#8d8797}
.top-search input::-webkit-search-cancel-button,.top-search input::-webkit-search-decoration{-webkit-appearance:none;appearance:none;display:none}
.top-search input::-ms-clear,.top-search input::-ms-reveal{display:none;width:0;height:0}
.top-search [data-search-clear]{color:#827b8c}

.listing{position:relative;border:1px solid var(--od-border);border-radius:1rem;background:#fff;overflow:visible}
.listing-head,.listing-row{display:grid;grid-template-columns:var(--listing-columns);align-items:center;width:100%;min-width:0}
.listing-head{position:static;top:auto;z-index:auto;border-radius:1rem 1rem 0 0;background:#f7f5fa;border-bottom:1px solid var(--od-border)}
.listing-heading{display:flex;align-items:center;justify-content:space-between;gap:.55rem;min-width:0;padding:.9rem 1rem;color:#6f687a;font-size:.85em;font-weight:800;letter-spacing:.045em;text-transform:uppercase}
.listing-heading:hover,.listing-heading.is-sorted{color:var(--od-primary);background:#f0eafa}
.listing-heading-static{justify-content:flex-start}
.listing-row{min-height:64px;border-bottom:1px solid var(--od-border)}
.listing-row:last-child{border-bottom:0}
.listing-total-row{display:grid;grid-template-columns:var(--listing-columns);border-top:2px solid var(--od-border);font-weight:700;background:#f8f6fb}.listing-total-row .listing-cell{min-height:58px}
.listing-cell{display:flex;align-items:center;justify-content:flex-start;min-width:0;padding:.8rem 1rem;text-align:left;overflow-wrap:anywhere}
.listing-cell-nowrap{white-space:nowrap;overflow-wrap:normal;font-variant-numeric:tabular-nums}
.listing-cell-minimal{display:flex;justify-content:flex-end;padding-inline:.45rem}
.listing-action-placeholder{visibility:hidden;pointer-events:none;display:inline-flex}
.enrollment-person-heading{display:inline-flex;align-items:center;gap:10px;color:inherit;text-decoration:none}.enrollment-person-heading:hover{color:var(--od-primary)}
.listing .dropdown,.listing .dropdown-menu{overflow:visible}
.filter-card{overflow:visible}
.filter-quick-row{display:flex;align-items-center;gap:.75rem}
.filter-quick-row .form-control{flex:1 1 auto;min-width:0}
.multi-field-box{width:100%;padding:1rem;border:1px solid var(--od-border);border-radius:1rem;background:#fbfafd}
.multi-field-actions{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;margin-top:.75rem}
.enrollment-class-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(130px,220px) 44px;align-items:start;gap:.5rem;width:100%}.enrollment-discount-fields{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.5rem}.enrollment-discount-fields[hidden]{display:none}
.enrollment-class-row .enrollment-row-remove,.enrollment-person-remove{width:44px;height:58px}
.dropdown-menu{z-index:1200}
.today-class-card .card-body{height:100%}
.today-class-roster{flex:1 1 auto;height:100%;max-height:none;padding-bottom:5rem}
.today-class-roster .dropdown-menu{z-index:1250}

@media(max-width:1199.98px){.listing-body{display:grid;gap:0}
.listing-row{display:block;border:0;border-bottom:2px solid #c4b0e8;border-radius:0;background:transparent;padding:.35rem 1rem;box-shadow:none}
.listing-cell{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem 0;border-bottom:1px solid #eee;text-align:right}
.listing-cell::before{content:attr(data-label) ':';flex:0 0 auto;color:#777083;font-weight:700;text-align:left}
.listing-cell:first-child{justify-content:flex-start;text-align:left}
.listing-cell:first-child::before,.listing-cell-minimal::before{display:none}
.listing-cell-minimal{justify-content:flex-end;border-bottom:0}
.listing-total-row{display:block;border:0;border-top:2px solid #c4b0e8;border-radius:0;background:#fbfafc;overflow:hidden}
.listing-total-row .listing-cell{display:flex;justify-content:space-between;min-height:0;padding:.7rem 1rem;border-bottom:1px solid var(--od-border);text-align:right}
.listing-total-row .listing-cell::before{content:attr(data-label);flex:0 0 auto;color:#777083;font-weight:700;text-align:left}
.listing-total-row .listing-cell:first-child::before{display:none}
.listing-total-row .listing-cell:last-child{border-bottom:0}
.listing-total-row .listing-total-cell-empty{display:none}
.filter-quick-row{align-items:stretch}
.filter-quick-row .btn{flex:0 0 auto}
.today-class-roster{padding-bottom:4rem}
.enrollment-class-row{grid-template-columns:minmax(0,1fr)}
.enrollment-class-row .enrollment-row-remove{justify-self:end;height:auto}
}

.input-group:has(.select2-container){flex-wrap:nowrap;align-items:stretch}
.input-group:has(.select2-container)>.select2-container{flex:1 1 auto;min-width:0}
.input-group:has(.select2-container)>.btn{flex:0 0 auto}
[id^="close-"] .modal-body p.meta{display:none}
[id^="product-grid-"]>[class*="col-md-6"]{width:50%}
@media(min-width:768px){[id^="product-grid-"]>[class*="col-md-6"]{width:33.333333%}
}
@media(min-width:1200px){[id^="product-grid-"]>[class*="col-md-6"]{width:25%}
}

.people-directory-head,.people-directory-row{grid-template-columns:minmax(0,2fr) minmax(0,.8fr) minmax(0,.6fr) minmax(0,.8fr) minmax(0,.4fr)}
.payment-directory-head,.payment-directory-row{grid-template-columns:minmax(0,1.7fr) minmax(0,.8fr) minmax(0,.8fr) minmax(0,.8fr) minmax(0,.8fr) minmax(0,.4fr)}
.enrollment-row-remove{width:44px;height:58px;flex:0 0 44px}
.enrollment-person{box-shadow:none;background:#fbfafd}
form>button:last-child:not(.dropdown-item),form>.btn:last-child:not(.dropdown-item){display:block;margin-left:auto}
.modal-footer,.card-footer{justify-content:flex-end}

.today-class-card .card-body{display:flex;flex-direction:column;height:100%;min-height:0}
.today-class-roster{flex:1 1 0;height:auto;min-height:0;max-height:none;overflow-y:auto;overflow-x:visible;padding-bottom:0}
.store-filter-toolbar{display:flex;gap:.5rem}
.store-filter-toolbar>.form-control{flex:1 1 auto;min-width:0}
.store-filter-toolbar>.btn{flex:0 0 auto}

/* OnDance 3.1: LISTAGEM, menus e atalhos globais */
.listing-head{font-size:.75em!important;font-weight:700!important;letter-spacing:0!important}
.listing-heading,.listing-cell{padding-block:.62rem!important}
.listing-row.listing-row-striped{background:#f8f9fa}
.listing-row:hover{background:#f3edff!important}
.listing-row:has(input[type="checkbox"]:checked){background:#eadfff!important}
.dropdown-menu{z-index:1085!important}
.dropdown-menu .dropdown-item{white-space:nowrap}
.dropdown-toggle::after{display:none!important}
.btn{white-space:nowrap}
.contract-textarea{display:none!important}.contract-editor .ql-editor{min-height:200px;height:auto}
.date-field-wrap{position:relative}.date-field-wrap>.form-control{padding-right:3rem}.date-picker-button{position:absolute;right:.65rem;top:50%;z-index:5;transform:translateY(-50%);border:0;background:transparent;color:#756d82;padding:.4rem}.date-native-proxy{position:absolute!important;width:1px!important;height:1px!important;right:1rem!important;bottom:0!important;opacity:0!important;pointer-events:none!important}
.public-event-card .event-photo{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:1rem 1rem 0 0}.public-event-card .card-body{display:flex;flex-direction:column}.public-event-card .btn{margin-top:auto}
.sidebar .nav-link{display:flex;align-items:center;gap:10px}
.stat-card-link{display:block;height:100%;color:inherit;text-decoration:none}
.stat-card-link .stat-card{height:100%;transition:transform .15s ease,box-shadow .15s ease}
.stat-card-link:hover .stat-card{transform:translateY(-2px);box-shadow:var(--od-shadow)}
.extra-class-date[hidden]{display:none!important}
.mobile-shortcuts{position:fixed;z-index:1020;bottom:0;left:0;right:0;display:flex;background:#fff;border-top:1px solid rgba(33,20,51,.12);box-shadow:0 -6px 24px rgba(33,20,51,.09);padding:.42rem max(.35rem,env(safe-area-inset-right)) calc(.42rem + env(safe-area-inset-bottom)) max(.35rem,env(safe-area-inset-left))}
.mobile-shortcuts>a{flex:1;min-width:0;color:#746d7c;text-decoration:none;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.15rem}
.mobile-shortcuts>a i{font-size:1.65rem}
.mobile-shortcuts>a span{font-size:.60em;line-height:1.15}
.mobile-shortcuts>a.active{color:var(--od-primary)}
@media(max-width:991.98px){body.modal-open .mobile-shortcuts{display:none!important}body.modal-open{padding-bottom:0}}
@media(max-width:767.98px){.today-class-roster{height:300px!important;max-height:300px!important;flex:0 0 300px!important;overflow-y:auto!important}}
@media(max-width:991.98px){body{padding-bottom:calc(68px + env(safe-area-inset-bottom))}}
.today-class-card{height:auto!important;min-height:0;overflow:hidden}
.today-class-card .card-body{height:auto!important;min-height:0;overflow:visible}
.today-class-roster{height:600px!important;max-height:600px!important;flex:0 0 600px!important;overflow-y:auto!important;overflow-x:hidden}
@media(max-width:767.98px){.today-class-roster{height:300px!important;max-height:300px!important;flex-basis:300px!important}}
@media(min-width:768px) and (max-width:1199.98px){.modal-dialog.modal-lg,.modal-dialog.modal-xl{--bs-modal-width:calc(100vw - 2rem);width:calc(100vw - 2rem);max-width:calc(100vw - 2rem);margin-right:auto;margin-left:auto}
}
.modal.show{transition:z-index 0s}.modal-backdrop{transition:opacity .15s linear,z-index 0s}.quantity-button{display:inline-flex!important;align-items:center;justify-content:center;width:36px!important;height:36px!important;padding:0!important;border-radius:50%!important;background:var(--od-primary)!important;border-color:var(--od-primary)!important;color:#fff!important}.quantity-button:hover,.quantity-button:focus{background:#5f35ae!important;border-color:#5f35ae!important;color:#fff!important}.quantity-button:disabled{opacity:.4!important}
#vendas>.row>.col-lg-6:first-child{width:100%}#vendas>.row>.col-lg-6:last-child{display:none}#cart-list{display:block;border:1px solid var(--od-border);border-radius:1rem;overflow:hidden;background:#fff}#cart-list>article.card{margin:0!important;border:0!important;border-bottom:1px solid var(--od-border)!important;border-radius:0!important;box-shadow:none!important;cursor:pointer}#cart-list>article.card:last-child{border-bottom:0!important}#cart-list>article.card:hover{background:#f3edff}#cart-list .record-actions,#cart-list [data-bs-target^="#products-"]{display:none!important}
[id^="receive-"] .modal-body>.row{padding:1rem;border:1px solid var(--od-border);border-radius:1rem;background:#fbfafd}

.today-class-heading .dropdown-toggle{width:38px;height:38px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:50%!important}
.today-class-heading h3 + .small{line-height:1.1;margin-top:0!important}
.today-class-roster{height:450px!important;max-height:450px!important;flex-basis:450px!important}
@media(max-width:767.98px){.today-class-roster{height:300px!important;max-height:300px!important;flex-basis:300px!important}}

.dashboard-table{width:100%;table-layout:fixed;word-break:break-word}
.dashboard-table th,.dashboard-table td{white-space:normal;overflow-wrap:anywhere}
.dashboard-table th:first-child,.dashboard-table td:first-child{width:110px}


.payout-summary-card{top:calc(64px + 1rem);z-index:20}

.listing-row-link{cursor:pointer}.listing-row-link:focus-visible{outline:2px solid var(--bs-primary);outline-offset:-2px}

/* Busca rápida, ações das listagens e navegação móvel */
.listing-row{position:relative}.listing-row:has(.listing-cell-minimal .record-actions){padding-right:3.75rem}.listing-row .listing-cell-minimal:has(.record-actions){position:absolute;right:.65rem;top:.55rem;width:auto;padding:0;border:0;z-index:2}.listing-row .listing-cell-minimal:has(.record-actions) .record-actions{margin:0}@media(max-width:575.98px){.filter-quick-row:has(.btn:not(.filter-toggle)){flex-wrap:wrap}.filter-quick-row:has(.btn:not(.filter-toggle)) .quick-search-field{flex-basis:100%;order:2}.sidebar.show~.main [data-sidebar-toggle],body.sidebar-open [data-sidebar-toggle]{position:fixed;top:.72rem;left:202px;z-index:1060;background:#fff;box-shadow:0 .25rem .75rem rgba(0,0,0,.18)}}

/* Campo único de busca rápida e modais sobrepostos */
.quick-search-field{position:relative;display:flex;align-items:center;min-width:0;flex:1 1 auto}.quick-search-field>i{position:absolute;left:1rem;z-index:2;color:var(--bs-secondary-color);pointer-events:none}.quick-search-field .form-control{padding-left:2.65rem;padding-right:2.65rem;background:#f3f1f5;border-color:#ded8e8}.quick-search-field .form-control:focus{background:#fff}.quick-search-clear{position:absolute;right:.55rem;z-index:2;border:0;background:transparent;color:var(--bs-secondary-color);width:2rem;height:2rem;padding:0;border-radius:50%}.quick-search-clear:hover,.quick-search-clear:focus{background:#e8e3ef;color:var(--bs-body-color)}.quick-search-clear.d-none{display:none}.modal.show{isolation:isolate}.modal-backdrop{isolation:isolate}

/* Keep desktop LISTAGEM actions inside the final grid track so every row shares the header columns. */
@media(min-width:1200px){.listing-head,.listing-row{box-sizing:border-box;width:100%;grid-template-columns:var(--listing-columns)}.listing-row:has(.listing-cell-minimal .record-actions){padding-right:0}.listing-row .listing-cell-minimal:has(.record-actions){position:relative;inset:auto;width:auto;justify-content:flex-end;padding-inline:.45rem;border:0;z-index:auto}}

/* Global scrolling lists used by dashboard cards and class attendance. */
.lista-scrolling,.list-scrolling{height:auto!important;max-height:65vh!important;max-height:65dvh!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior-y:auto}
/* 05/11/2026: área de rolagem vertical global = 65vh em todos os dispositivos (antes 400px / 250px no mobile). */

/* Dashboard birthdays use a vertical two-column list on every viewport. */
.dashboard-birthdays{display:block!important;overflow-y:auto!important;overflow-x:hidden!important;scroll-snap-type:none!important;padding:0!important}
.dashboard-birthday-row{display:flex!important;align-items:center;justify-content:space-between;gap:1rem;min-width:0}
.dashboard-birthday-person{display:flex;align-items:center;gap:.75rem;min-width:0}
.dashboard-birthday-person img{width:42px;height:42px;flex:0 0 42px;border-radius:50%;object-fit:cover}
.dashboard-birthday-person>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dashboard-birthday-date{display:flex;flex-direction:column;align-items:flex-end;flex:0 0 auto}
.dashboard-birthday-date strong{font-weight:700}
.dashboard-birthday-date small{color:var(--bs-secondary-color)}

@media(max-width:991.98px){
  body.sidebar-open .sidebar .sidebar-close{position:absolute;top:.75rem;right:.75rem;left:auto;z-index:1061}
}

/* Adjacent cards share the available row height while each list keeps its content height up to the global cap. */
.row > [class*="col-"] > .card:has(.lista-scrolling),
.row > [class*="col-"] > .card:has(.list-scrolling){height:100%}
.row > [class*="col-"] > .card:has(.lista-scrolling) > .card-body,
.row > [class*="col-"] > .card:has(.list-scrolling) > .card-body{display:flex;flex-direction:column}
.row > [class*="col-"] > .card:has(.lista-scrolling) .lista-scrolling,
.row > [class*="col-"] > .card:has(.list-scrolling) .list-scrolling{flex:1 1 auto}

.quick-search-field input[type=search]::-webkit-search-cancel-button,.quick-search-field input[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none;display:none}.quick-search-field input[type=search]::-ms-clear,.quick-search-field input[type=search]::-ms-reveal{display:none;width:0;height:0}

/* Global listing headings stay on one line and remain aligned with their columns. */
.listing-head,.listing-heading,.listing-heading span{white-space:nowrap}

/* Todas as LISTAGENS respeitam a largura do contêiner. As colunas podem
   reduzir sem criar uma segunda rolagem horizontal no layout principal. */
.listing{width:100%;max-width:100%;min-width:0}
.listing-head,.listing-row,.listing-total-row{width:100%;max-width:100%;min-width:0;box-sizing:border-box}
.listing-heading,.listing-cell{min-width:0;max-width:100%;box-sizing:border-box}
.listing-cell:not(.listing-cell-minimal)>*{min-width:0;max-width:100%}
@media(min-width:1200px){
  .listing-body{min-width:0;max-width:100%;overflow:visible}
  .listing-row .listing-cell:not(.listing-cell-minimal){overflow-wrap:anywhere}
  .listing-row .listing-cell-minimal{min-width:44px}
}

.listing-heading{overflow:visible}
.listing-heading>span{min-width:0;overflow:visible;text-overflow:clip}
@media(min-width:1200px){.listing-total-row .listing-total-cell-empty{display:flex;visibility:hidden}.listing-total-row .listing-total-cell{white-space:nowrap}}

/* Intervalos de datas usam sempre um único input-group e dividem o espaço sem overflow. */
.filter-date-range{display:flex;flex-wrap:nowrap;min-width:0}
.filter-date-range>.form-control{min-width:0;flex:1 1 0}
@media(max-width:575.98px){.filter-date-range>.input-group-text{padding-inline:.5rem}}

/* Floating label único para intervalos agrupados. */
.filter-date-floating{position:relative;min-height:58px;padding:0}
.filter-date-floating>.filter-date-range{height:58px}
.filter-date-floating>label{position:absolute;top:.35rem;left:.75rem;z-index:3;width:auto;height:auto;margin:0;padding:0 .25rem;color:var(--bs-secondary-color);background:transparent;font-size:.875em;line-height:1;opacity:1;transform:scale(.85) translateY(0) translateX(.15rem);transform-origin:0 0;pointer-events:none}
.filter-date-range>.input-group-text{background-color:transparent}


/* Intervalo de datas com aparência de um único campo Bootstrap. */
.filter-date-range{border:1px solid var(--od-border);border-radius:.7rem;overflow:hidden;background:var(--bs-body-bg,#fff);transition:border-color .15s ease,box-shadow .15s ease}
.filter-date-range:has(>.form-control:focus){border-color:#a98ade;box-shadow:0 0 0 .2rem #6f42c121}
.filter-date-range>.input-group-text,.filter-date-range>.form-control{border:0!important;background:transparent!important;box-shadow:none!important}
.filter-date-range>.input-group-text{font-size:1rem;color:var(--bs-body-color);padding-inline:.75rem}
.filter-date-range>.form-control{padding-top:1.35rem;padding-bottom:.35rem}
.filter-date-floating>label{font-size:1rem;transform:scale(.85) translateY(0) translateX(.15rem)}

/* Os separadores acompanham a linha dos valores dentro do campo agrupado. */
.filter-date-range>.input-group-text{align-self:stretch;display:flex;align-items:center;padding-top:1.35rem;padding-bottom:.35rem;line-height:1.5}
.filter-date-range>.form-control:not(.has-value){color:var(--bs-secondary-color)}
.filter-date-range>.form-control:not(.has-value)::-webkit-datetime-edit,
.filter-date-range>.form-control:not(.has-value)::-webkit-datetime-edit-text,
.filter-date-range>.form-control:not(.has-value)::-webkit-datetime-edit-month-field,
.filter-date-range>.form-control:not(.has-value)::-webkit-datetime-edit-day-field,
.filter-date-range>.form-control:not(.has-value)::-webkit-datetime-edit-year-field{color:var(--bs-secondary-color)}
.filter-date-range>.form-control.has-value{color:var(--bs-body-color)}
.filter-date-range>.form-control.has-value::-webkit-datetime-edit,
.filter-date-range>.form-control.has-value::-webkit-datetime-edit-text,
.filter-date-range>.form-control.has-value::-webkit-datetime-edit-month-field,
.filter-date-range>.form-control.has-value::-webkit-datetime-edit-day-field,
.filter-date-range>.form-control.has-value::-webkit-datetime-edit-year-field{color:var(--bs-body-color)}
/* O rótulo do intervalo segue o recuo nativo dos floating labels do Bootstrap. */
.filter-date-floating>label{left:0;padding-inline:.75rem;transform:scale(.85) translateY(0) translateX(.15rem)}

/* Em telas estreitas, cada data recebe uma linha e preserva o ano no controle nativo. */
@media(max-width:767.98px){
  .filter-date-floating>.filter-date-range{display:grid!important;height:auto;grid-template-columns:auto minmax(0,1fr);grid-template-rows:repeat(2,58px)}
  .filter-date-range>.form-control{width:100%;flex:none}
}

/* Cabeçalho com ações: em celulares os botões quebram de linha em vez de serem cortados. */
@media(max-width:575.98px){
  .page-header{flex-wrap:wrap;gap:.75rem}
  .page-header>.d-flex{flex-wrap:wrap;max-width:100%}
}

.member-deleted-lock{border:0;padding:0;margin:0;min-width:0}
.member-deleted-lock a.btn,.member-deleted-lock .dropdown-item,.member-deleted-lock .record-actions,.member-deleted-lock [data-confirm-action]{pointer-events:none;opacity:.55}
.people-tabs{flex-wrap:wrap;gap:.25rem}
/* Barra de atalhos (desktop): faixa roxa da identidade OnDance, links distribuídos por toda a largura */
.shortcuts-bar{display:flex;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:.25rem;padding:0 1.5rem;background:linear-gradient(90deg,#4b2a8f 0%,var(--od-primary) 55%,#7f55d4 100%);box-shadow:0 6px 18px rgba(38,24,66,.18);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;position:sticky;top:64px;z-index:1020}
.shortcuts-bar::-webkit-scrollbar{display:none}
.shortcuts-bar .shortcut-link{flex:1 1 0;min-width:max-content;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.38rem 1rem;color:rgba(255,255,255,.82);font-size:.92rem;font-weight:600;letter-spacing:.01em;text-decoration:none;white-space:nowrap;border-bottom:3px solid transparent;transition:color .15s,background-color .15s,border-color .15s}
.shortcuts-bar .shortcut-link i{font-size:1.05rem;opacity:.9}
.shortcuts-bar .shortcut-link:hover,.shortcuts-bar .shortcut-link:focus-visible{color:#fff;background:rgba(255,255,255,.12);outline:0}
.mobile-shortcuts>button,.mobile-shortcuts .shortcut-dropdown>button{flex:1;min-width:0;color:#746d7c;background:none;border:0;padding:0;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.15rem}
.mobile-shortcuts>button i,.mobile-shortcuts .shortcut-dropdown>button i{font-size:1.65rem}
.mobile-shortcuts>button span,.mobile-shortcuts .shortcut-dropdown>button span{font-size:.60em;line-height:1.15}
/* Editor de contratos (Quill): altura natural; antes o container ocupava mais que o cartão e cobria o botão Salvar no iOS */
.contract-editor.ql-container{height:auto!important;min-height:0;display:block}
.contract-editor .ql-editor{min-height:240px;height:auto;overflow-y:visible}
.ql-toolbar.ql-snow{max-width:100%}
.card form .ql-container,.card form .ql-toolbar{max-width:100%}
/* PWA no iOS: o conteúdo não pode ficar sob a barra de status (relógio/Wi-Fi/bateria) */
.topbar{padding-top:env(safe-area-inset-top,0px);height:calc(64px + env(safe-area-inset-top,0px))}
.sidebar{padding-top:env(safe-area-inset-top,0px)}
body.public-page{padding-top:env(safe-area-inset-top,0px)}
@media(max-width:991.98px){.topbar{height:calc(62px + env(safe-area-inset-top,0px))}}
.plan-rule-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr) auto;gap:.5rem;align-items:center}
@media(max-width:575.98px){.plan-rule-row{grid-template-columns:1fr 1fr}.plan-rule-row>button{grid-column:2;justify-self:end}}
.enrollment-quote{background:#fbfafd;border:1px solid var(--od-border);border-radius:1rem;padding:1rem}.enrollment-quote table{font-size:.9rem}.enrollment-quote .quote-total{font-size:1.4rem;font-weight:700}

/* Matrículas: formulário em seções (Nova matrícula e Alterar matrícula) */
.enrollment-section{border:1px solid var(--od-border);border-radius:1rem;background:#fff;padding:1.15rem 1.25rem;margin-bottom:1rem}
.enrollment-section-head{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}
.enrollment-step{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--od-primary);color:#fff;font-size:.85rem;font-weight:700}
.enrollment-section-title{margin:0;font-size:.95rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--od-dark)}
.enrollment-subtitle{font-size:.8rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#746d7c;margin-bottom:.6rem}
.enrollment-plan-summary:empty{display:none}.enrollment-plan-summary{background:#fbfafd;border:1px dashed var(--od-border);border-radius:.85rem;padding:.8rem 1rem}
.enrollment-frozen{background:#f7f5fb;border:1px solid var(--od-border);border-radius:.85rem;padding:.9rem 1rem}
.enrollment-contract-row{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.5rem}.enrollment-contract-row .btn{height:38px;flex:0 0 44px}
.enrollment-contract-existing{display:flex;align-items:center;gap:.6rem;margin-bottom:.5rem}.enrollment-contract-existing .form-floating{flex:1 1 auto;min-width:0}.enrollment-contract-existing .form-control{background:#f7f5fb}.enrollment-contract-existing .btn,.enrollment-contract-existing .badge{flex:0 0 auto;white-space:nowrap}
.enrollment-actions{margin-bottom:0;background:transparent;border:0;padding:.5rem 0 0}
@media(max-width:767.98px){.enrollment-section{padding:1rem}.enrollment-contract-existing{flex-wrap:wrap}.enrollment-contract-existing .form-floating{flex:1 0 100%;order:2}}

/* Editores de texto rico (Quill): altura natural, nunca extrapolam o contêiner (modais, cartões e formulários) */
.ql-toolbar.ql-snow{max-width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:.15rem 0;border-radius:.6rem .6rem 0 0}
.ql-container.ql-snow{height:auto!important;max-width:100%;position:relative;display:block;border-radius:0 0 .6rem .6rem;font-family:inherit;font-size:.95rem}
.ql-container.ql-snow .ql-editor{height:auto;min-height:200px;overflow-y:visible;overflow-wrap:anywhere;word-break:break-word}
.modal .ql-container.ql-snow .ql-editor{min-height:160px;max-height:45vh;overflow-y:auto}
.ql-toolbar.ql-snow .ql-formats{margin-right:.6rem}
.ql-toolbar.ql-snow select.ql-contract-data{max-width:12rem}
.ql-editor img{max-width:100%;height:auto}
.operational-inbox .dropdown-header .inbox-settings-link{color:#746d7c;text-decoration:none;padding:.15rem .35rem;border-radius:.4rem;line-height:1}.operational-inbox .dropdown-header .inbox-settings-link:hover,.operational-inbox .dropdown-header .inbox-settings-link:focus-visible{color:var(--od-primary);background:rgba(111,66,193,.1)}
/* Select2: lista de resultados (AJAX e estática) mais legível e elegante — itens arredondados, respiro entre eles e destaque roxo */
.select2-container--default .select2-dropdown{border:1px solid var(--od-border);border-radius:1.15rem;box-shadow:0 18px 44px rgba(38,24,66,.18);overflow:hidden;padding:.35rem}
.select2-container--default .select2-search--dropdown{padding:.35rem .35rem .45rem}
.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid var(--od-border);border-radius:.85rem;padding:.55rem .8rem;outline:0}
.select2-container--default .select2-search--dropdown .select2-search__field:focus{border-color:var(--od-primary);box-shadow:0 0 0 .2rem rgba(111,66,193,.15)}
.select2-container--default .select2-results>.select2-results__options{max-height:340px;padding:.1rem .1rem .2rem}
.select2-container--default .select2-results__option{margin:.18rem 0;padding:.65rem .9rem;border-radius:1rem;line-height:1.35;color:#2b2636;transition:background-color .12s,color .12s}
.select2-container--default .select2-results__option small,.select2-container--default .select2-results__option .small{font-size:.8rem;color:#746d7c;line-height:1.35}
.select2-container--default .select2-results__option strong{font-weight:700}
.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option--selected{background:#efe9fa;color:var(--od-dark)}
.select2-container--default .select2-results__option--highlighted,.select2-container--default .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable{background:var(--od-primary);color:#fff}
.select2-container--default .select2-results__option--highlighted *,.select2-container--default .select2-results__option--highlighted small,.select2-container--default .select2-results__option--highlighted i,.select2-container--default .select2-results__option--highlighted .text-muted,.select2-container--default .select2-results__option--highlighted .meta{color:#fff!important}
.select2-container--default .select2-results__option--disabled{opacity:.55}
.select2-container--default .select2-results__message{padding:.8rem 1rem;color:#746d7c}
.select2-container--default .select2-results__group{padding:.5rem .9rem .2rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;font-size:.72rem;color:#746d7c}
/* Botões de escolha (custom checkbox): outline secundário; marcado ganha borda roxa mais grossa */
.choice-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.75rem}
.choice-grid-sm{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.choice-btn{position:relative;display:flex;align-items:center;gap:.65rem;margin:0;padding:.8rem 1rem;border:2px solid var(--bs-secondary-border-subtle,#ced4da);border-radius:.9rem;background:#fff;color:#4d4658;font-weight:600;cursor:pointer;user-select:none;transition:border-color .15s,background-color .15s,box-shadow .15s}
.choice-btn:hover{border-color:#b9a5df;background:#fbfafd}
.choice-btn .choice-input{position:absolute;opacity:0;pointer-events:none}
.choice-btn .choice-icon{color:#8b8296}
.choice-btn .choice-label{flex:1}
.choice-btn .choice-handle{color:#b7b0c2;cursor:grab;opacity:0}
.choice-btn:has(.choice-input:checked){border-color:var(--od-primary);border-width:3px;padding:calc(.8rem - 1px) calc(1rem - 1px);background:#f6f1fd;color:var(--od-dark);box-shadow:0 4px 14px rgba(111,66,193,.14)}
.choice-btn:has(.choice-input:checked) .choice-icon{color:var(--od-primary)}
.choice-btn:has(.choice-input:checked) .choice-handle{opacity:1}
.choice-btn:has(.choice-input:focus-visible){outline:2px solid var(--od-primary);outline-offset:2px}
.choice-btn.is-dragging{opacity:.45}
.choice-btn.drag-over{border-style:dashed}
.shortcut-dropdown{flex:1 1 0;display:flex;min-width:max-content}
.shortcuts-bar .shortcut-dropdown>.shortcut-link{width:100%}
.shortcuts-bar .shortcut-dropdown .dropdown-menu{border-radius:1rem;padding:.4rem;box-shadow:0 14px 34px rgba(38,24,66,.22)}
.shortcuts-bar .shortcut-dropdown .dropdown-item{border-radius:.7rem;padding:.5rem .9rem}
.mobile-shortcuts .shortcut-dropdown{flex:1;min-width:0;position:static}
.mobile-shortcuts .shortcut-dropdown .dropdown-menu{border-radius:1rem;padding:.4rem}

/* Textareas reutilizáveis e respiro entre seções de configuração */
.textareas{min-height:120px}
.settings-section{padding-bottom:1.75rem;margin-bottom:1.75rem;border-bottom:1px solid var(--od-border)}
.settings-section:last-of-type{border-bottom:0;margin-bottom:.5rem}/* Editor de recorte quadrado das fotos (image-picker.js) */
.image-crop-overlay{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:12px;background:rgba(0,0,0,.72)}
.image-crop-panel{display:flex;flex-direction:column;gap:10px;width:min(100%,640px);max-height:100%;padding:16px;border-radius:12px;background:var(--bs-body-bg,#fff);color:var(--bs-body-color,#212529);box-shadow:0 10px 40px rgba(0,0,0,.4)}
.image-crop-title{font-weight:700;font-size:1.1rem}
.image-crop-hint{font-size:.85rem;color:var(--bs-secondary-color,#6c757d)}
.image-crop-stage{position:relative;align-self:center;display:inline-block;max-width:100%;line-height:0;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;background:#111}
.image-crop-image{display:block;max-width:100%;max-height:min(60vh,560px);width:auto;height:auto;pointer-events:none;-webkit-user-drag:none}
.image-crop-box{position:absolute;box-sizing:border-box;border:2px dashed #fff;box-shadow:0 0 0 9999px rgba(0,0,0,.55);cursor:grab;touch-action:none;outline:none}
.image-crop-box.is-dragging{cursor:grabbing}
.image-crop-box:focus-visible{border-color:#ffc107}
.image-crop-handle{position:absolute;width:26px;height:26px;background:#fff;border:2px solid #0d6efd;border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.5);touch-action:none}
.image-crop-handle-nw{left:-13px;top:-13px;cursor:nwse-resize}
.image-crop-handle-ne{right:-13px;top:-13px;cursor:nesw-resize}
.image-crop-handle-sw{left:-13px;bottom:-13px;cursor:nesw-resize}
.image-crop-handle-se{right:-13px;bottom:-13px;cursor:nwse-resize}
.image-crop-actions{display:flex;justify-content:flex-end;gap:8px}

.choice-grid-fit{grid-template-columns:repeat(var(--choices,1),minmax(0,1fr))}
.choice-grid-fit .choice-btn{justify-content:center}

/* Início do portal do aluno (_student-home.php) */
.sh-hero{background:linear-gradient(135deg,var(--od-primary,#6f42c1),#7c3aed);color:#fff;border-radius:1.25rem;padding:1.4rem 1.4rem 4.6rem}
.sh-brand{font-weight:800;font-size:1.5rem;letter-spacing:-.02em}
.sh-hello{font-size:clamp(1.8rem,5vw,2.4rem);font-weight:800;margin:.2rem 0 .1rem}
.sh-sub{margin:0;opacity:.9}
.sh-wrap{max-width:720px;margin:-3.6rem auto 0;padding:0 .25rem}
.sh-card{background:#fff;border:1px solid #e6dff3;border-radius:1.1rem;padding:1.1rem 1.2rem;margin-bottom:.9rem;box-shadow:0 2px 10px rgba(58,28,113,.05)}
.sh-next{padding:1.3rem 1.4rem}
.sh-eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9a90ab}
.sh-next-title{font-size:1.5rem;font-weight:800;color:#2d1b4e;margin:.5rem 0 .3rem}
.sh-meta,.sh-line{color:#6b6280;font-size:.92rem}
.sh-section{font-size:1.4rem;font-weight:800;color:#2d1b4e;margin:1.4rem .2rem .8rem}
.sh-card-head{display:flex;align-items:center;gap:.9rem;margin-bottom:.6rem}
.sh-card-head h3{font-size:1.1rem;font-weight:700;color:#3d2a5c;margin:0}
.sh-card-head p{margin:0;color:#9a90ab;font-size:.9rem}
.sh-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:2.6rem;height:2.6rem;border-radius:.8rem;background:#efe6fb;color:var(--od-primary,#6f42c1);font-size:1.05rem}
.sh-item{display:block;padding:.65rem 0;border-top:1px solid #f0eaf8;color:inherit;text-decoration:none}
.sh-item-link:hover{background:#faf7fe}
.sh-item-title{font-weight:700;color:#2d1b4e}
.sh-muted{color:#9a90ab;font-weight:500}
.sh-teacher{display:flex;align-items:center;gap:.5rem;margin-top:.45rem;font-size:.92rem;color:#4d4658}
.sh-teacher img{width:28px;height:28px;border-radius:50%;object-fit:cover}
.sh-when{white-space:nowrap;color:#6b6280;font-size:.9rem}
.sh-empty{color:#9a90ab;margin:.4rem 0 0}
.sh-more{text-align:right;margin-top:.5rem;font-size:.82rem}
.sh-more a{color:#9a90ab;text-decoration:none}
.sh-more a:hover{color:var(--od-primary,#6f42c1);text-decoration:underline}
.sh-event-photo{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:.9rem;margin-bottom:.8rem;background:#f3eefb}
.sh-event-title{font-size:1.15rem;font-weight:800;color:#2d1b4e;margin:0 0 .4rem}
.sh-carousel-nav{display:flex;justify-content:center;gap:.8rem;margin-top:.9rem}
.sh-nav-btn{width:2.5rem;height:2.5rem;border-radius:50%;border:1px solid #d9cdee;background:#fff;color:var(--od-primary,#6f42c1)}
.sh-nav-btn:hover{background:#f6f1fd}
.choice-btn:has(.choice-input:disabled){opacity:.5;cursor:not-allowed;background:#f6f5f8}
.choice-btn:has(.choice-input:disabled):hover{border-color:var(--bs-secondary-border-subtle,#ced4da);background:#f6f5f8}

.saved-card{display:flex;align-items:flex-start;gap:.8rem;min-width:0}.card-brand-logo{flex:0 0 auto;width:48px;height:30px;object-fit:contain;border-radius:5px}.saved-card-info{min-width:0}.saved-card-name{overflow-wrap:anywhere}

/* Matrícula: o cadastro rápido de membro ocupa a linha inteira (nunca divide espaço com o select) e, no celular, descontos e campos agrupados ficam um por linha. */
.d-flex:has(>.quick-member-form){flex-wrap:wrap}.d-flex>.quick-member-form{flex:1 0 100%}
@media (max-width:767.98px){.enrollment-discount-fields{grid-template-columns:minmax(0,1fr)}.quick-member-form .row>[class*=col-lg-]{flex:0 0 100%;max-width:100%;width:100%}}

/* Atalho "Novo": sempre em destaque; desktop = ícone + legenda, mobile = somente o ícone */
.shortcuts-bar .shortcut-new{flex:0 0 auto;align-items:center;padding:.25rem .35rem}
.shortcuts-bar .shortcut-new>.shortcut-link{width:auto;padding:.38rem 1.1rem;border-radius:999px;border-bottom:0;background:#fff;color:var(--od-primary);box-shadow:0 3px 10px rgba(38,24,66,.22)}
.shortcuts-bar .shortcut-new>.shortcut-link:hover,.shortcuts-bar .shortcut-new>.shortcut-link:focus-visible{background:#f1ebfb;color:var(--od-primary)}
.shortcuts-bar .shortcut-new>.shortcut-link i{opacity:1}
.mobile-shortcuts{overflow:visible}
.mobile-shortcuts .shortcut-new{flex:1;display:flex;justify-content:center;align-items:flex-start;position:relative;min-width:0}
.mobile-shortcuts .shortcut-new>button{flex:0 0 auto;width:3.7rem;height:3.7rem;margin-top:-1.7rem;border-radius:50%;background:var(--od-primary);color:#fff;align-items:center;justify-content:center;border:0;box-shadow:0 0 0 .45rem rgba(246,244,250,.95),0 8px 18px rgba(75,42,143,.4);transition:transform .15s}
.mobile-shortcuts .shortcut-new>button:active{transform:scale(.94)}
.mobile-shortcuts .shortcut-new>button i{font-size:1.5rem}
.mobile-shortcuts .shortcut-new .dropdown-menu{margin-bottom:.9rem!important}
/* Smartphone: calendário e opções de lista em folha ampla, com X para cancelar */
.od-sheet-head,.od-sheet-backdrop,.od-fp-backdrop{display:none}
@media(max-width:767.98px){
.od-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 1rem;border-bottom:1px solid var(--od-border,#e6e1ee);background:#fff}
.od-sheet-head .btn-close{padding:.7rem;margin:-.3rem -.3rem -.3rem 0}
.od-sheet-backdrop,.od-fp-backdrop{display:block;position:fixed;inset:0;background:rgba(24,16,38,.55)}
.od-sheet-backdrop{z-index:1}.od-fp-backdrop{z-index:99998}
.select2-container--open>.select2-dropdown{position:fixed!important;z-index:2;left:.75rem!important;right:.75rem!important;top:calc(env(safe-area-inset-top,0px) + 6vh)!important;bottom:auto!important;width:auto!important;max-height:80vh;display:flex!important;flex-direction:column;border-radius:1.25rem;padding:0;overflow:hidden}
.select2-container--open>.select2-dropdown .select2-search--dropdown{padding:.75rem .9rem}
.select2-container--open>.select2-dropdown .select2-search__field{font-size:16px;padding:.7rem .85rem;border-radius:.8rem}
.select2-container--open>.select2-dropdown .select2-results{flex:1 1 auto;min-height:0;overflow:auto}
.select2-container--open>.select2-dropdown .select2-results__options{max-height:none!important}
.select2-container--open>.select2-dropdown .select2-results__option{padding:.85rem 1.1rem;font-size:1rem}
.flatpickr-calendar.open{position:fixed!important;top:50%!important;left:50%!important;right:auto!important;bottom:auto!important;transform:translate(-50%,-50%)!important;animation:none!important;z-index:99999!important;width:min(94vw,380px)!important;max-width:none;padding:0 0 .75rem;border-radius:1.25rem;overflow:hidden;box-shadow:0 24px 60px rgba(24,16,38,.4)}
.flatpickr-calendar.open::before,.flatpickr-calendar.open::after{display:none}
.flatpickr-calendar .flatpickr-innerContainer,.flatpickr-calendar .flatpickr-rContainer,.flatpickr-calendar .flatpickr-days,.flatpickr-calendar .dayContainer{width:100%!important;min-width:0!important;max-width:none!important}
.flatpickr-calendar .dayContainer{padding:0 .5rem}
.flatpickr-calendar .flatpickr-day{max-width:none;height:2.8rem;line-height:2.8rem;font-size:1rem}
.flatpickr-calendar .flatpickr-current-month{font-size:1.1rem}
.flatpickr-calendar .flatpickr-time{height:3.2rem;max-height:none}
.od-fp-foot{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem .75rem 0;border-top:1px solid var(--od-border,#e6e0ee);margin-top:.5rem}.od-fp-foot .btn{min-width:5.5rem}
body.od-sheet-open{overflow:hidden}
}

/* Smartphone: menus de botões dropdown também abrem como folha ampla centralizada, com X */
.od-sheet-head-li{display:none;list-style:none}
@media(max-width:767.98px){
.od-sheet-head-li{display:block;position:sticky;top:0;z-index:1}
.dropdown-menu.show:not(.od-no-sheet){position:fixed!important;inset:auto!important;left:.75rem!important;right:.75rem!important;top:50%!important;transform:translateY(-50%)!important;width:auto!important;min-width:0;max-height:80vh;overflow-y:auto;margin:0!important;padding:0 0 .5rem;border:0;border-radius:1.25rem;z-index:1045;box-shadow:0 0 0 100vmax rgba(24,16,38,.55),0 24px 60px rgba(24,16,38,.4)}
.dropdown-menu.show:not(.od-no-sheet) .od-sheet-head{border-radius:1.25rem 1.25rem 0 0;margin-bottom:.4rem}
.dropdown-menu.show:not(.od-no-sheet) .dropdown-item{padding:.85rem 1.25rem;font-size:1rem;white-space:normal}
.dropdown-menu.show:not(.od-no-sheet) .dropdown-divider{margin:.35rem 0}
}

/* Folha ampla: X sempre visível, selects nativos, bloqueio do fundo e rolagem */
.od-sheet-head .btn-close{flex:0 0 auto!important;width:1em!important;height:1em!important;min-width:0!important;display:block!important;padding:.7rem!important;margin:-.3rem -.3rem -.3rem 0!important;opacity:.75;background-color:transparent;box-sizing:content-box}
.od-sheet-head .od-sheet-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.od-native-backdrop{display:block;position:fixed;inset:0;background:rgba(24,16,38,.55);z-index:2000}
.od-native-sheet{position:fixed;z-index:2001;left:.75rem;right:.75rem;top:50%;transform:translateY(-50%);max-height:80vh;display:flex;flex-direction:column;background:#fff;border-radius:1.25rem;overflow:hidden;box-shadow:0 24px 60px rgba(24,16,38,.4)}
.od-native-sheet .od-sheet-head{display:flex;flex:0 0 auto}
.od-sheet-list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:.35rem 0 .6rem;-webkit-overflow-scrolling:touch}
.od-sheet-option{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%;padding:.85rem 1.25rem;border:0;background:none;text-align:left;font-size:1rem;color:inherit}
.od-sheet-option.is-selected{color:var(--od-primary);font-weight:600;background:rgba(111,66,193,.08)}
.od-sheet-option:disabled{opacity:.45}
.od-sheet-group{padding:.7rem 1.25rem .2rem;font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#746d7c}
.od-sheet-blocker{position:fixed;inset:0;z-index:2000;background:rgba(24,16,38,.55)}
body.od-sheet-open,body.modal-open{overflow:hidden!important;overscroll-behavior:none}
html:has(body.od-sheet-open),html:has(body.modal-open){overflow:hidden;overscroll-behavior:none}
.modal,.select2-results,.dropdown-menu,.flatpickr-calendar{overscroll-behavior:contain}
@media(max-width:767.98px){.dropdown-menu.od-sheet-moved.show:not(.od-no-sheet){z-index:2001!important}}.od-sheet-backdrop-closing{display:block;position:fixed;inset:0;z-index:1}

/* Modais: cabeçalho e rodapé sempre visíveis; só o corpo rola quando o formulário é maior que a tela (botões de salvar nunca ficam escondidos). */
.modal-dialog:not(.modal-fullscreen){max-height:calc(100vh - 1rem);max-height:calc(100dvh - 1rem)}
.modal-content{max-height:calc(100vh - 1rem);max-height:calc(100dvh - 1rem);display:flex;flex-direction:column;overflow:hidden}
.modal-content>form{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;max-height:100%;overflow:hidden}
.modal-content>.modal-header,.modal-content>.modal-footer,.modal-content>form>.modal-header,.modal-content>form>.modal-footer{flex:0 0 auto}
.modal-content>.modal-body,.modal-content>form>.modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.modal-dialog.modal-dialog-scrollable{height:auto}
/* O Bootstrap fixa .modal-dialog-scrollable .modal-content em max-height:100% (de uma altura automática = sem limite): sem isto o formulário passa da tela e o topo fica cortado. */
.modal-dialog.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);max-height:calc(100dvh - 1rem)}
/* A partir de 576px o Bootstrap usa margem de 1.75rem no diálogo: a altura máxima precisa descontá-la, senão o topo do modal sobe para fora da tela. */
@media(min-width:576px){.modal-dialog:not(.modal-fullscreen),.modal-dialog:not(.modal-fullscreen) .modal-content{max-height:calc(100vh - 3.5rem);max-height:calc(100dvh - 3.5rem)}}

/* Listagem global: visual discreto (zebrado suave, cabeçalho leve, ações sem aparência de botão). */
.listing-head{background:#fff!important;border-bottom:1px solid #ebe8f0}
.listing-heading{color:#8c8697;font-weight:600!important;letter-spacing:.03em;font-size:.85em}
.listing-head{font-size:.82em!important}
.listing-heading,.listing-cell{padding-block:.9rem!important}
.listing-row{min-height:68px}
.listing-heading:hover,.listing-heading.is-sorted{color:var(--od-primary);background:transparent!important}
.listing-row{border-bottom-color:#f1eff4}
.listing-row.listing-row-striped{background:#fbfafc}
.listing-row:hover{background:#f7f4fb!important}
.listing-row:has(input[type="checkbox"]:checked){background:#f0e9fb!important}
.listing-total-row{background:#fbfafc;border-top:1px solid #ebe8f0}
.listing .record-actions .dropdown-toggle,.listing .record-actions .btn{background:transparent!important;border:0!important;box-shadow:none!important;color:#9a94a5;border-radius:50%}
.listing .record-actions .dropdown-toggle:hover,.listing .record-actions .dropdown-toggle:focus,.listing .record-actions .dropdown-toggle.show,.listing .record-actions .btn:hover{background:#efebf5!important;color:var(--od-primary)}
.listing .record-actions .dropdown-toggle::after{display:none}@media(max-width:1199.98px){.listing-row{padding:.5rem 1rem;box-shadow:none}.listing-cell{padding-block:.85rem!important;border-bottom-color:#f1eff4}.listing-cell::before{font-weight:600;color:#8c8697;font-size:.85em}}
.listing-total-row[hidden]{display:none!important}
/* Resumo do membro (visão geral). */
.member-overview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.4rem 2rem}
.member-overview-item{min-width:0;border-left:3px solid #efeaf7;padding-left:.9rem}
.member-overview-label{font-size:.72rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:#8c8697;margin-bottom:.3rem}
.member-overview-value{font-weight:600;color:var(--od-dark);overflow-wrap:anywhere}
a.member-overview-value{text-decoration:none}a.member-overview-value:hover{text-decoration:underline}
.member-overview-sub{font-size:.85rem;color:#6f687a;font-weight:400;overflow-wrap:anywhere}
@media(min-width:1200px){.member-overview{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.9fr)}}
@media(max-width:575.98px){.member-overview{grid-template-columns:minmax(0,1fr)}}
.member-class-row{margin-bottom:.55rem}
.member-classes-toggle{font-weight:600;text-decoration:none}
.member-classes-toggle i{transition:transform .2s}.member-classes-toggle[aria-expanded="true"] i{transform:rotate(180deg)}
.member-class-teacher{font-size:.78rem;font-weight:400;color:#8c8697}
@media(min-width:768px){.member-class-row{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:1rem;align-items:baseline}.member-class-row .member-class-when{text-align:right}}
/* Cards das aulas (/aulas). */
.class-card-level{color:#8c8697;font-size:.9rem;margin-top:.1rem}
.class-card-line{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-top:.65rem}
.class-card-teacher{font-size:.9rem;color:#4f485a;min-width:0}.class-card-teacher i,.class-card-room i,.class-card-schedule>i{color:#a29bb0}
.class-card-room{font-size:.85rem;color:#6f687a}
.class-card-schedule{display:flex;gap:.4rem;font-size:.9rem;line-height:1.5;color:#4f485a}.class-card-schedule>i{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;height:1.5em;line-height:1}.class-card-price{font-size:.9rem;color:#4f485a}
.class-card-when{margin-top:.5rem}
.class-card-level+.class-card-line{margin-top:1.15rem}
.class-card-extras{border-top:1px solid rgba(60,45,90,.08)}

/* Dashboard: alerta de capacidade */
.capacity-alert{border:1px solid color-mix(in srgb,var(--bs-warning) 45%,transparent);background:color-mix(in srgb,var(--bs-warning) 6%,var(--bs-body-bg))}
.capacity-alert-icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:50%;background:color-mix(in srgb,var(--bs-warning) 20%,transparent);color:var(--bs-warning-text-emphasis);flex:none}
.capacity-alert-list{display:grid;gap:.5rem}
.capacity-alert-item{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1.2fr) minmax(0,1.2fr) minmax(150px,1fr);gap:.75rem;align-items:center;padding:.65rem .9rem;border-radius:.75rem;background:var(--bs-body-bg);border:1px solid var(--bs-border-color);color:inherit;text-decoration:none;transition:box-shadow .15s,border-color .15s}
.capacity-alert-item:hover{border-color:var(--bs-warning);box-shadow:0 2px 8px rgba(0,0,0,.08);color:inherit}
.capacity-alert-occupancy{display:flex;align-items:center;gap:.5rem;justify-content:flex-end}
.capacity-alert-occupancy .progress{flex:1;height:.4rem;min-width:40px}
.capacity-alert-class,.capacity-alert-teacher,.capacity-alert-when{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:767.98px){.capacity-alert-item{grid-template-columns:1fr auto;row-gap:.25rem}.capacity-alert-class{grid-column:1/-1}.capacity-alert-occupancy{grid-column:1/-1;justify-content:flex-start}}/* Integrações de aulas: lista de aulas em botões de escolha (check verde quando disponível) e seção recolhível da agenda. */
.choice-grid-list{grid-template-columns:1fr}
.choice-btn.choice-class{align-items:center}
.choice-btn.choice-class .choice-icon{color:var(--bs-secondary-color,#8b8296)}
.choice-btn.choice-class:has(.choice-input:checked) .choice-icon{color:var(--bs-success,#198754)}
.choice-class .choice-cols{flex:1;min-width:0;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.5fr) minmax(0,2.5fr) minmax(0,1fr);gap:.25rem 1rem;align-items:center;font-weight:400}
.choice-class .choice-cols strong{font-weight:700}
.choice-class .choice-vagas{text-align:right}
@media(max-width:767.98px){.choice-class .choice-cols{grid-template-columns:1fr}.choice-class .choice-vagas{text-align:left}}
.integration-agenda{background:var(--bs-tertiary-bg,#f8f9fa)}

/* ===== LISTAGEM global: barra superior (busca | exportar | modo), modos Lista/Cards e rolagem horizontal ===== */
.listing-toolbar{display:flex;align-items:stretch;gap:.5rem;padding:.75rem;border-bottom:1px solid var(--od-border);border-radius:1rem 1rem 0 0}
.listing-toolbar .quick-search-field{flex:1 1 auto;min-width:0}
.listing-toolbar>.dropdown,.listing-toolbar>.listing-view-toggle{flex:0 0 auto}
.listing-tool-btn{height:100%;min-width:2.75rem;display:inline-flex;align-items:center;justify-content:center;padding-inline:.85rem;border-radius:.9rem}
.listing-view-toggle{display:inline-flex;flex-wrap:nowrap}
.listing-view-toggle>.btn{height:100%;min-height:2.75rem}
.listing-view-toggle>.btn:first-of-type,.listing-view-toggle>.btn-check:first-child+.btn{border-radius:.9rem 0 0 .9rem}
.listing-view-toggle>.btn:last-of-type{border-radius:0 .9rem .9rem 0}
.listing-view-toggle>.btn-check:checked+.btn{background:var(--od-primary);border-color:var(--od-primary);color:#fff}
.filter-standalone-bar{display:flex;align-items:stretch;gap:.5rem;margin-bottom:1rem}
.filter-standalone-bar .quick-search-field{flex:1 1 auto}
.listing-scroll{width:100%;max-width:100%}
/* Scroll horizontal só em viewport < 1300px; acima disso o conteúdo cabe no espaço disponível. */
@media (max-width:1299.98px){
.listing-scroll.listing-scroll-x{overflow-x:auto;overflow-y:visible}
.listing-scroll.listing-scroll-x>.listing-head,.listing-scroll.listing-scroll-x>.listing-body,.listing-scroll.listing-scroll-x>.listing-total-row{min-width:var(--listing-min-width)}
}
/* Cabeçalho: sem preferência salva, a lista aparece a partir de 1200px e os cards abaixo disso (comportamento original). */
@media(max-width:1199.98px){.listing:not(.listing-mode-list) .listing-head-resp{display:none}}
/* Modo CARDS forçado em qualquer largura */
.listing-mode-card .listing-head-resp{display:none!important}
.listing-mode-card .listing-body{display:grid;gap:0}
.listing-mode-card .listing-row{display:block;min-height:0;border:0;border-bottom:2px solid #c4b0e8;border-radius:0;background:transparent;padding:.5rem 1rem;box-shadow:none}
.listing-mode-card .listing-row:has(.listing-cell-minimal .record-actions){padding-right:3.75rem}
.listing-mode-card .listing-cell{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 0!important;border-bottom:1px solid #f1eff4;text-align:right}
.listing-mode-card .listing-cell::before{content:attr(data-label) ':';flex:0 0 auto;color:#8c8697;font-weight:600;font-size:.85em;text-align:left}
.listing-mode-card .listing-cell:first-child{justify-content:flex-start;text-align:left}
.listing-mode-card .listing-cell:first-child::before,.listing-mode-card .listing-cell-minimal::before{display:none}
.listing-mode-card .listing-cell-minimal{display:flex;justify-content:flex-end;border-bottom:0;min-width:0}
.listing-mode-card .listing-row .listing-cell-minimal:has(.record-actions){position:absolute;inset:.55rem .65rem auto auto;width:auto;padding:0!important;border:0;z-index:2}
.listing-mode-card .listing-total-row{display:block;border:0;border-top:2px solid #c4b0e8;border-radius:0;background:#fbfafc;overflow:hidden}
.listing-mode-card .listing-total-row .listing-cell{display:flex;justify-content:space-between;min-height:0;padding:.7rem 1rem!important;border-bottom:1px solid var(--od-border);text-align:right}
.listing-mode-card .listing-total-row .listing-cell::before{content:attr(data-label);flex:0 0 auto;color:#777083;font-weight:700;text-align:left}
.listing-mode-card .listing-total-row .listing-cell:first-child::before{display:none}
.listing-mode-card .listing-total-row .listing-cell:last-child{border-bottom:0}
.listing-mode-card .listing-total-row .listing-total-cell-empty{display:none}
/* Modo LISTA forçado em qualquer largura (rolagem horizontal automática quando as colunas não cabem) */
.listing.listing-mode-list{border:1px solid var(--od-border);background:#fff}
.listing-mode-list .listing-head-resp{display:grid}
.listing-mode-list .listing-body{display:block;gap:0}
.listing-mode-list .listing-row{display:grid;grid-template-columns:var(--listing-columns);align-items:center;min-height:68px;border:0;border-bottom:1px solid #f1eff4;border-radius:0;background:transparent;padding:0;box-shadow:none}
.listing-mode-list .listing-row:last-child{border-bottom:0}
.listing-mode-list .listing-row.listing-row-striped{background:#fbfafc}
.listing-mode-list .listing-cell{display:flex;align-items:center;justify-content:flex-start;gap:0;padding:.9rem 1rem!important;border-bottom:0;text-align:left}
.listing-mode-list .listing-cell::before{content:none;display:none}
.listing-mode-list .listing-cell-minimal{justify-content:flex-end;padding-inline:.45rem!important;min-width:44px}
.listing-mode-list .listing-row:has(.listing-cell-minimal .record-actions){padding-right:0}
.listing-mode-list .listing-row .listing-cell-minimal:has(.record-actions){position:relative;inset:auto;width:auto;justify-content:flex-end;border:0;z-index:auto}
.listing-mode-list .listing-total-row{display:grid;grid-template-columns:var(--listing-columns);border:0;border-top:1px solid #ebe8f0;border-radius:0;background:#fbfafc;overflow:visible}
.listing-mode-list .listing-total-row .listing-cell{min-height:58px;justify-content:flex-start;border-bottom:0}
.listing-mode-list .listing-total-row .listing-total-cell-empty{display:flex;visibility:hidden}
.listing-mode-list .listing-total-row .listing-total-cell{white-space:nowrap}
.listing-toolbar-actions{display:contents}
.listing-toolbar-actions>.dropdown,.listing-toolbar-actions>.listing-view-toggle,.listing-toolbar-actions>.filter-toggle,.listing-toolbar-actions>.btn{flex:0 0 auto}
.listing-toolbar-actions .listing-tool-btn,.listing-toolbar-actions>.btn{align-self:stretch}
/* Mobile: linha 1 = busca rápida (largura total); linha 2 = demais botões (filtro, exportar, modo...), alinhados à direita. */
@media(max-width:575.98px){
  .listing-toolbar{flex-wrap:wrap;gap:.5rem}
  .listing-toolbar .quick-search-field{flex:1 1 100%;width:100%}
  .listing-toolbar-actions{display:flex;flex:1 1 100%;align-items:stretch;justify-content:flex-end;gap:.4rem;flex-wrap:wrap}
  .listing-tool-btn{min-width:2.5rem;min-height:2.75rem;padding-inline:.6rem}
}
.listing-scroll.listing-scroll-x>.listing-head{position:static;top:auto}

/* Filtros: botão no padrão dos demais botões da barra; o painel é um modal central (qualquer dispositivo) */
.listing-toolbar>.filter-toggle{flex:0 0 auto}
.filter-toggle-count{margin-left:.3em}
.filter-toggle.has-filters{border-color:var(--od-primary);color:var(--od-primary)}
.filter-toggle.has-filters:hover,.filter-toggle.has-filters:focus{background:var(--od-primary);border-color:var(--od-primary);color:#fff}
.filter-modal .modal-body>.row{--bs-gutter-x:1.5rem}

/* LISTAGEM: tudo dentro de um único card (barra, linhas, totais e rodapé), em qualquer modo de visualização; no modo blocos cada registro
   é separado do seguinte por uma linha roxa mais grossa, para não parecer uma coluna de informação. */
.listing,.listing.listing-mode-card,.listing.listing-mode-list{border:1px solid var(--od-border);border-radius:1rem;background:#fff;box-shadow:var(--od-shadow)}
.listing .listing-toolbar{padding:.75rem;border-bottom:1px solid var(--od-border);border-radius:1rem 1rem 0 0}
.listing.listing-mode-card .listing-row{border-bottom:2px solid #c4b0e8}
@media(max-width:1199.98px){.listing:not(.listing-mode-list) .listing-row{border-bottom:2px solid #c4b0e8}}
.listing .listing-body>.listing-row:last-child{border-bottom:0}
.listing .listing-footer{margin-top:0!important;padding:.75rem 1rem!important}
/* Listagem que já está dentro de outro card (dashboard, detalhe da aula): sem moldura dupla */
.card .listing,.card .listing.listing-mode-card,.card .listing.listing-mode-list{border:0;box-shadow:none;border-radius:0}
.card .listing .listing-toolbar{border-radius:0;padding-top:0}

/* Barra superior e barra de atalhos fixas: overflow-x:hidden em html/body/.app-shell cria um contêiner de rolagem e desativa o position:sticky. "clip" corta o excesso sem isso. */
@supports (overflow:clip){html,body,.app-shell{overflow-x:clip}}
@media(min-width:992px){.shortcuts-bar{top:calc(64px + env(safe-area-inset-top,0px))}}

/* Foto do membro no título e ampliação em modal */
.member-title-row{display:flex;align-items:center;gap:.85rem;min-width:0}
.member-title-photo{flex:0 0 auto;width:3.25rem;height:3.25rem;padding:0;border:0;border-radius:50%;overflow:hidden;background:#f0eafa;cursor:zoom-in;line-height:0}
.member-title-photo img{width:100%;height:100%;object-fit:cover;display:block}
.member-title-row .page-title{margin:0;min-width:0}
.photo-zoom-img{max-width:100%;max-height:75vh;border-radius:1rem;object-fit:contain}
/* Sugestão de instalação do app (tela de login da escola), no estilo do banner de apps do iOS */
.pwa-banner{display:flex;align-items:center;gap:.75rem;max-width:34rem;margin:0 auto 1.25rem;padding:.6rem .75rem;border:1px solid var(--od-border);border-radius:1rem;background:#fff;box-shadow:var(--od-shadow)}
.pwa-banner-icon{flex:0 0 auto;width:2.75rem;height:2.75rem;border-radius:.7rem;object-fit:cover;background:#f0eafa}
.pwa-banner-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;line-height:1.2}
.pwa-banner-text strong{font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pwa-banner-text span{font-size:.8rem;color:#8c8697}
.pwa-banner-close{flex:0 0 auto;border:0;background:transparent;color:#8c8697;padding:.35rem}
.pwa-steps{list-style:none;margin:0;padding:0;display:grid;gap:.85rem}
.pwa-steps li{display:flex;align-items:center;gap:.85rem}
.pwa-step-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:.8rem;background:#f0eafa;color:var(--od-primary)}
/* Aviso global de check-ins recebidos: leve e limpo */
.od-checkin-toast{width:min(22rem,calc(100vw - 2rem));background:#fff;color:#2b2536;border-radius:1rem;box-shadow:0 .75rem 2rem rgba(24,17,40,.16);border:1px solid var(--od-border)!important;padding:.9rem 1rem}
.od-checkin-toast-head{display:flex;align-items:center;gap:.6rem;font-size:.95rem}
.od-checkin-toast-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;background:#f0eafa;color:var(--od-primary)}
.od-checkin-toast-list{display:grid;gap:.5rem;margin:.75rem 0;max-height:12rem;overflow:auto}
.od-checkin-toast-item{display:flex;align-items:center;gap:.6rem}
.od-checkin-toast-item img{flex:0 0 auto;border-radius:50%;object-fit:cover}
.od-checkin-toast-who{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.od-checkin-toast-who strong{font-size:.9rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.od-checkin-toast-who span{font-size:.78rem;color:#8c8697}
.od-checkin-toast-foot{display:flex;justify-content:flex-end}
#checkins-recebidos{scroll-margin-top:5rem}
/* Barra da listagem: busca, Filtrar, Exportar, modo de visualização e botões personalizados (ex.: + Matrícula) com a mesma altura (padrão btn-lg do Bootstrap 5.3 = 3rem). */
.listing-toolbar{align-items:center}
.listing-toolbar-actions{align-items:center}
.listing-toolbar .quick-search-field .form-control{height:3rem;min-height:3rem}
.listing-toolbar-actions .btn,.listing-toolbar-actions .listing-tool-btn,.listing-toolbar>.dropdown>.btn,.listing-toolbar>.btn,.listing-view-toggle>.btn{height:3rem;min-height:3rem;min-width:3rem;padding:0 1rem;font-size:1rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;align-self:center;border-radius:.9rem}
.listing-view-toggle{height:3rem}
.listing-view-toggle>.btn:first-of-type,.listing-view-toggle>.btn-check:first-child+.btn{border-radius:.9rem 0 0 .9rem}
.listing-view-toggle>.btn:last-of-type{border-radius:0 .9rem .9rem 0}

/* ===== LISTAGEM: legenda/seta do cabeçalho e valores em linha única ===== */
.listing-heading{justify-content:flex-start}
.listing-heading>span{flex:0 1 auto;min-width:0}
.listing-heading>i{flex:0 0 auto;margin-left:auto;width:auto}
.listing-cell:not(.listing-cell-minimal){overflow-wrap:normal;word-break:normal;hyphens:none}
.listing-cell .badge,.listing-cell .btn{white-space:nowrap;overflow:visible;max-width:none;flex:0 0 auto}
.listing-cell .badge{line-height:1.25}
@media(min-width:1200px){.listing-row .listing-cell:not(.listing-cell-minimal){overflow-wrap:normal}}

/* ===== BARRA DE ABAS GLOBAL (todas as telas: .nav-pills / .nav-tabs) ===== */
:root{--od-tab-bg:#f1eef8;--od-tab-ink:#6a6478;--od-tab-active-from:#6f42c1;--od-tab-active-to:#8a5bdc;--od-tab-cyan:#22b8cf}
.nav.nav-pills,.nav.nav-tabs{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;padding:.3rem;border:1px solid var(--od-border);border-radius:50rem;background:var(--od-tab-bg);width:100%;max-width:100%}
.nav.nav-pills .nav-link,.nav.nav-tabs .nav-link{position:relative;display:inline-flex;align-items:center;gap:.45rem;white-space:nowrap;padding:.5rem 1rem;border:0;border-radius:50rem;background:transparent;color:var(--od-tab-ink);font-weight:600;font-size:.92rem;line-height:1.2;transition:background .18s,color .18s,box-shadow .18s}
.nav.nav-pills .nav-link:hover,.nav.nav-tabs .nav-link:hover{background:rgba(111,66,193,.09);color:var(--od-primary)}
.nav.nav-pills .nav-link.active,.nav.nav-pills .show>.nav-link,.nav.nav-tabs .nav-link.active{background:linear-gradient(135deg,var(--od-tab-active-from),var(--od-tab-active-to));color:#fff;box-shadow:0 4px 12px rgba(111,66,193,.28),inset 0 -2px 0 var(--od-tab-cyan)}
.nav.nav-pills .nav-link:focus-visible,.nav.nav-tabs .nav-link:focus-visible{outline:2px solid var(--od-tab-cyan);outline-offset:1px}
.nav.nav-pills .nav-link.disabled{opacity:.5}
/* Desktop: as abas dividem todo o espaço da barra. */
.nav.nav-pills .nav-item,.nav.nav-tabs .nav-item{flex:1 1 auto}
.nav.nav-pills .nav-item>.nav-link,.nav.nav-tabs .nav-item>.nav-link{width:100%;justify-content:center;text-align:center}
@media(max-width:991.98px){
  .nav.nav-pills,.nav.nav-tabs{flex-wrap:nowrap;width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;scrollbar-width:none;overscroll-behavior-x:contain}
  .nav.nav-pills::-webkit-scrollbar,.nav.nav-tabs::-webkit-scrollbar{display:none}
  .nav.nav-pills .nav-item,.nav.nav-tabs .nav-item{flex:0 0 auto;scroll-snap-align:center}
  .nav.nav-pills .nav-item>.nav-link,.nav.nav-tabs .nav-item>.nav-link{width:auto}
}

/* "Aguarde…" só aparece com o carregamento ativo (antes ficava solto no fim da página após salvar um formulário). */
[data-form-loading]{display:none}
/* Check-in sem membro atribuído: nome em muted e badge de aviso abaixo. */
.checkin-unmatched .member-chip{opacity:.7;filter:grayscale(1)}
.checkin-unmatched .member-chip>span{color:var(--bs-secondary-color,#6c757d)}
.checkin-unmatched .badge{margin-top:.25rem;font-size:.7rem;white-space:nowrap}

.min-w-0{min-width:0}
[data-charge-flow][hidden],[data-charge-details][hidden]{display:none!important}

/* Aba Financeiro do aluno: card de cobrança em aberto, com o valor em destaque. */
.student-charge-card{position:relative;overflow:hidden;border:0;border-radius:1.25rem;box-shadow:0 10px 30px rgba(38,24,66,.10)}
.student-charge-card::before{content:"";position:absolute;inset:0 auto 0 0;width:6px}
.student-charge-danger::before{background:linear-gradient(180deg,#dc3545,#ff7b86)}
.student-charge-warning::before{background:linear-gradient(180deg,#ffb300,#ffd666)}
.student-charge-amount{font-size:clamp(2rem,6vw,2.75rem);letter-spacing:-.02em;color:var(--od-dark)}
.student-charge-danger .student-charge-amount{color:#b02a37}

.member-enrollment-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:1.4rem 2rem}.member-enrollment-summary{display:grid;gap:1.1rem;align-content:start}.member-enrollment-person{padding:.7rem 0;border-top:1px solid #efeaf7}.member-enrollment-person:first-of-type{border-top:0}.member-enrollment-people .member-overview-label{margin-bottom:.5rem}@media(max-width:767.98px){.member-enrollment-grid{grid-template-columns:minmax(0,1fr)}.member-enrollment-person .ps-5{padding-left:0!important}}

/* Listagem em modo lista: colunas pelo conteúdo e alinhadas entre linhas (cabeçalho, corpo, linhas e total são subgrids do mesmo grid). */
.listing.listing-mode-list .listing-scroll{display:grid;grid-template-columns:var(--listing-columns)}
.listing.listing-mode-list .listing-head,.listing.listing-mode-list .listing-body,.listing.listing-mode-list .listing-row,.listing.listing-mode-list .listing-total-row{grid-column:1/-1;display:grid;grid-template-columns:subgrid}
.listing.listing-mode-list .listing-body>.empty{grid-column:1/-1}
@media(min-width:1200px){
.listing:not(.listing-mode-card) .listing-scroll{display:grid;grid-template-columns:var(--listing-columns)}
.listing:not(.listing-mode-card) .listing-head,.listing:not(.listing-mode-card) .listing-body,.listing:not(.listing-mode-card) .listing-row,.listing:not(.listing-mode-card) .listing-total-row{grid-column:1/-1;display:grid;grid-template-columns:subgrid}
.listing:not(.listing-mode-card) .listing-body>.empty{grid-column:1/-1}
}
/* Modo lista em telas estreitas: colunas nunca menores que o conteúdo (sem sobreposição); o que não couber rola na horizontal. */
@media(max-width:1199.98px){
.listing.listing-mode-list .listing-scroll{overflow-x:auto;overflow-y:visible;grid-template-columns:var(--listing-columns)}
.listing.listing-mode-list .listing-head,.listing.listing-mode-list .listing-body,.listing.listing-mode-list .listing-row,.listing.listing-mode-list .listing-total-row{width:auto;max-width:none;min-width:100%}
.listing.listing-mode-list .listing-heading,.listing.listing-mode-list .listing-cell{min-width:min-content;max-width:none;overflow-wrap:normal;word-break:normal}
.listing.listing-mode-list .listing-cell:not(.listing-cell-minimal):not(.listing-cell-nowrap){min-width:max(min-content,8rem)}
.listing.listing-mode-list .listing-cell-minimal{min-width:44px}
}
form[data-plan-count="matricula"] [data-plan-qty-label]::after{content:" (total)"}

.btn-assign{--bs-btn-color:var(--od-primary);--bs-btn-border-color:var(--od-primary);--bs-btn-hover-color:#fff;--bs-btn-hover-bg:var(--od-primary);--bs-btn-hover-border-color:var(--od-primary);--bs-btn-active-bg:#5f35ae;--bs-btn-active-border-color:#5f35ae;--bs-btn-active-color:#fff}

.listing-cell-minimal:has(.listing-switch),.listing-toggle-head{justify-content:flex-start}.listing-switch .form-check-input{cursor:pointer;margin:0}
.enrollment-subsection{margin-top:1.5rem;padding:1.1rem 1.25rem;border:1px solid var(--od-border);border-radius:.9rem;background:#fbfafd}.enrollment-subsection-head{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem;padding-bottom:.85rem;border-bottom:1px solid var(--od-border)}.enrollment-subsection-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:2rem;height:2rem;border-radius:.6rem;background:rgba(111,66,193,.1);color:var(--od-primary);font-size:.9rem}.enrollment-subsection-title{margin:0;font-size:.95rem;font-weight:700;color:var(--od-dark)}.enrollment-finance-main{margin-bottom:.25rem}.enrollment-plan-picker .form-text{margin-top:.5rem}.enrollment-subsection [data-adjust-rows]{margin-bottom:.75rem}.enrollment-section-summary{border:2px solid var(--od-primary);background:#fbfafd;box-shadow:0 .25rem 1rem rgba(0,0,0,.06)}.enrollment-step-summary{background:var(--od-dark)}.enrollment-effective{border:1px solid var(--od-primary);border-radius:.85rem;background:#fff;padding:1rem}.enrollment-quote[hidden]{display:none}.enrollment-subsection .enrollment-frozen{background:#fff}@media(max-width:767.98px){.enrollment-subsection{padding:.9rem}}

/* Filtro de forma de pagamento hierárquico (forma > origem > bandeira) com ícones */
.pm-filter{position:relative}.pm-toggle{display:flex;align-items:center;gap:.5rem;width:100%;min-height:calc(3.5rem + 2px);cursor:pointer}.pm-toggle [data-pm-current]{display:flex;align-items:center;gap:.6rem;min-width:0}.pm-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pm-menu{width:100%;max-height:min(60vh,26rem);overflow-y:auto;padding:.35rem 0}
.pm-opt{display:flex;align-items:center;gap:.6rem;white-space:normal;padding-top:.5rem;padding-bottom:.5rem}.pm-opt.active,.pm-opt.active .pm-sub{color:#fff}
.pm-ico{flex:0 0 auto;width:26px;height:16px;object-fit:contain}.pm-ico-empty{display:inline-block}
.pm-name{min-width:0}.pm-sub{margin-left:.15rem;font-size:.72rem;color:#8c8697;white-space:nowrap}
.dropdown-menu.pm-menu .pm-opt.pm-level-0{padding-left:1.25rem;font-weight:500}.dropdown-menu.pm-menu .pm-opt.pm-level-1{padding-left:2.9rem}.dropdown-menu.pm-menu .pm-opt.pm-level-2{padding-left:4.5rem}
.dropdown-menu.pm-menu .pm-opt.pm-level-1,.dropdown-menu.pm-menu .pm-opt.pm-level-2{position:relative;font-weight:400;font-size:.95em}.dropdown-menu.pm-menu .pm-opt.pm-level-1::before,.dropdown-menu.pm-menu .pm-opt.pm-level-2::before{content:"";position:absolute;top:0;bottom:0;left:1.75rem;border-left:2px solid #e3dff0}.dropdown-menu.pm-menu .pm-opt.pm-level-2::before{left:3.3rem}
.pm-level-1 .pm-ico-empty,.pm-level-2 .pm-ico-empty{display:none}.dropdown-menu.pm-menu .pm-opt.active::before{border-color:rgba(255,255,255,.5)}
.form-floating.pm-filter>.pm-toggle{padding-top:1.625rem;padding-bottom:.4rem}.form-floating.pm-filter>.pm-toggle~label{pointer-events:none}
.listing-stack{min-width:0;line-height:1.35}.listing-stack>div+div{margin-top:.1rem}

/* Login: no smartphone o conteúdo flui do topo, sem centralização vertical nem travas de rolagem (formulário natural). */
.login-wrap{min-height:80vh}
@media (max-width:767.98px){
 .login-wrap{min-height:0;align-items:flex-start!important}
 body.public-page>main{padding-top:1rem!important;padding-bottom:1rem!important}

 .login-school-logo{width:72px;height:72px}
 .login-wrap .text-center.mb-4{margin-bottom:1rem!important}
 /* Aviso de instalar o app: fixo sobre o conteúdo, abaixo do notch */
 .pwa-banner{position:fixed;top:calc(env(safe-area-inset-top,0px) + .5rem);left:.75rem;right:.75rem;max-width:none;margin:0;z-index:1050}
 body.public-page:has(.pwa-banner:not(.d-none))>main{padding-top:7rem!important}
}

/* =====================================================================================================================
   BATERIA 05/11/2026 — padrões globais
   ===================================================================================================================== */
/* Botões de incluir/remover LINHAS de formulário: leves, sempre à direita; só ícone = circular; com legenda = pílula.
   Incluir = roxo (primary OnDance); remover = danger. O campo ao lado fica com todo o espaço útil. */
.btn-row-add,.btn-row-remove{--row-btn-size:2.25rem;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;flex:0 0 auto;min-height:var(--row-btn-size);padding:0 .9rem;border:1px solid transparent;border-radius:50rem;font-size:.875rem;font-weight:600;line-height:1;white-space:nowrap;box-shadow:none;transition:background-color .15s,color .15s,border-color .15s,transform .15s}
.btn-row-add{color:var(--od-primary,#6f42c1);background:rgba(111,66,193,.08);border-color:rgba(111,66,193,.18)}
.btn-row-add:hover,.btn-row-add:focus-visible{color:#fff;background:var(--od-primary,#6f42c1);border-color:var(--od-primary,#6f42c1)}
.btn-row-remove{color:var(--bs-danger,#dc3545);background:transparent;border-color:rgba(220,53,69,.22)}
.btn-row-remove:hover,.btn-row-remove:focus-visible{color:#fff;background:var(--bs-danger,#dc3545);border-color:var(--bs-danger,#dc3545)}
.btn-row-add:active,.btn-row-remove:active{transform:scale(.96)}
.btn-row-add:not(:has(span)),.btn-row-remove{width:var(--row-btn-size);height:var(--row-btn-size);min-width:var(--row-btn-size);padding:0;border-radius:50%}
.btn-row-add i,.btn-row-remove i{font-size:.85rem}
/* Incluir com legenda: sempre encostado à direita do bloco de linhas */
.btn-row-add:has(span){display:flex;width:fit-content;margin-left:auto}
.multi-field-actions .btn-row-add{margin-left:0}
.enrollment-class-row .enrollment-row-remove,.enrollment-person-remove{width:var(--row-btn-size);height:var(--row-btn-size);align-self:center}
.enrollment-class-row{grid-template-columns:minmax(0,1fr) minmax(130px,220px) auto}
.enrollment-contract-row{align-items:center}
[data-row]>.col-auto:has(>.btn-row-remove),[data-adjust-row] .btn-row-remove{margin-left:auto}

/* Seletor de 2 opções lado a lado (50% cada) no tablet/desktop e um por linha no smartphone */
.choice-grid-half{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
.choice-grid-half .choice-btn{justify-content:flex-start}
@media(max-width:575.98px){.choice-grid-half{grid-template-columns:minmax(0,1fr)}}

/* Aula > Alunos matriculados: linha "Matriculado em … como …" abaixo do nome, ao lado do avatar */
.class-student-item{display:grid!important;grid-template-columns:auto minmax(0,1fr);column-gap:.6rem;align-items:center}
.class-student-item .member-chip{display:contents}
.class-student-item .member-chip>img{grid-row:1 / span 2;align-self:center}
.class-student-item .member-chip>span{grid-column:2;align-self:end;line-height:1.25;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.class-student-meta{grid-column:2;align-self:start;font-size:.75rem;line-height:1.25;color:var(--bs-secondary-color,#8b8296)}

/* Top header: nome do operador nunca quebra linha; badge do plano no "Meu OnDance" */
.user-menu-toggle,.user-menu-toggle .user-menu-name,.user-menu .dropdown-item{white-space:nowrap}
.user-menu .dropdown-menu{min-width:15rem}
.plan-badge{font-size:.7rem;font-weight:700;letter-spacing:.04em;padding:.3em .65em}
.plan-badge-light{background:#eef0f3;color:#56606b}
.plan-badge-plus{background:rgba(111,66,193,.12);color:var(--od-primary,#6f42c1)}
.plan-badge-pro{background:linear-gradient(135deg,#ffb300,#ff8f00);color:#3b2600}

/* Canais de notificação: e-mail = primary, WhatsApp = success, Push = warning (padrão em todo o sistema) */
.choice-channel-email .choice-icon{color:var(--bs-primary,#0d6efd)!important}
.choice-channel-whatsapp .choice-icon{color:var(--bs-success,#198754)!important}
.choice-channel-push .choice-icon{color:var(--bs-warning,#ffc107)!important}
.notif-channel-off{color:#c9c4d2}
.notif-channel-wait{opacity:.55}
.notif-channels i{font-size:1.05rem}


.notif-pref-list{display:grid;gap:.25rem}
.notif-pref{display:flex;align-items:center;gap:1rem;padding:.9rem 0;border-bottom:1px solid #f0edf5}
.notif-pref:last-child{border-bottom:0}
.notif-pref-text{flex:1 1 auto;min-width:0}
.notif-pref-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 2.5rem;width:2.5rem;height:2.5rem;border-radius:50%;font-size:1.05rem}
.notif-pref-icon-primary{background:rgba(13,110,253,.1);color:var(--bs-primary,#0d6efd)}
.notif-pref-icon-success{background:rgba(25,135,84,.1);color:var(--bs-success,#198754)}
.notif-pref-icon-warning{background:rgba(255,193,7,.16);color:#c98a00}
.notif-pref-switch{flex:0 0 auto;padding:0!important;min-height:0}.notif-pref-switch .form-check-input{float:none;width:2.6em;height:1.4em;margin:0!important;cursor:pointer}
.notif-empty-icon{display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:50%;background:rgba(255,193,7,.16);color:#c98a00;font-size:1.25rem;flex:0 0 3rem}

/* LISTAGEM — barra no mobile: botão "Filtrar (X)" igual ao desktop, ocupando o espaço restante da linha */
@media(max-width:575.98px){
  .listing-toolbar-actions>.filter-toggle{flex:1 1 auto!important;justify-content:center}
  .filter-toggle .filter-toggle-label{display:inline!important}
  .filter-toggle{padding-inline:1rem!important}
}

/* LISTAGEM — modo BLOCO (preferido no mobile): sem linhas de grade dentro do bloco; cada coluna vira um item com a legenda pequena
   em cima e o valor embaixo, fluindo lado a lado; Membro/Descrição ocupam a linha toda sem legenda; o botão de ações é circular no topo,
   sem criar uma coluna vertical; quebras propositais do modo lista (badges empilhados, contagens de envio) ficam na mesma linha. */
.listing.listing-is-card .listing-head-resp{display:none!important}
.listing.listing-is-card .listing-scroll{display:block!important;overflow:visible!important}
.listing.listing-is-card .listing-body{display:block!important}
.listing.listing-is-card .listing-row{position:relative;display:flex!important;flex-wrap:wrap;align-items:flex-start;gap:.75rem 1.5rem;min-height:0;padding:1rem 1.1rem!important;border:0!important;border-bottom:1px solid #ece7f4!important;border-radius:0;background:transparent;box-shadow:none;grid-template-columns:none!important}
.listing.listing-is-card .listing-body>.listing-row:last-child{border-bottom:0!important}
.listing.listing-is-card .listing-row-link:hover{background:#fbf9fe}
.listing.listing-is-card .listing-cell{display:flex!important;flex-direction:column;align-items:flex-start!important;justify-content:flex-start!important;gap:.25rem;flex:0 1 auto;min-width:0;max-width:100%;padding:0!important;border:0!important;text-align:left!important;white-space:normal;overflow-wrap:anywhere}
.listing.listing-is-card .listing-cell-nowrap{white-space:nowrap}
.listing.listing-is-card .listing-cell::before{content:attr(data-label);display:block!important;flex:0 0 auto;font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1.15;color:#9a93a6;text-align:left}
.listing.listing-is-card .listing-cell[data-card]::before,.listing.listing-is-card .listing-cell-minimal::before,.listing.listing-is-card .listing-cell[data-label=""]::before{display:none!important;content:none!important}
.listing.listing-is-card .listing-cell[data-card-lead]{order:-3;flex:1 1 calc(100% - 3.5rem);font-size:1rem}
.listing.listing-is-card .listing-row:not(:has(.listing-cell-minimal)) .listing-cell[data-card-lead]{flex-basis:100%}
.listing.listing-is-card .listing-cell[data-card="primary"]:not([data-card-lead]){order:-1;flex:1 0 100%}
.listing.listing-is-card .listing-cell-minimal{order:-2;flex:0 0 auto;margin-left:auto;position:static!important;inset:auto!important;width:auto!important;min-width:0!important;padding:0!important;align-self:flex-start}
.listing.listing-is-card .listing-row .listing-cell-minimal:has(.record-actions){position:static!important}
.listing.listing-is-card .listing-row:has(.listing-cell-minimal .record-actions){padding-right:1.1rem!important}
.listing.listing-is-card .listing-cell-minimal .record-actions>.btn,.listing.listing-is-card .listing-cell-minimal .dropdown>.btn,.listing.listing-is-card .listing-action-placeholder .btn{width:2.25rem;height:2.25rem;min-width:2.25rem;padding:0!important;border-radius:50%!important;border:1px solid #e3ddec!important;background:#fff!important;color:#6f687a;display:inline-flex;align-items:center;justify-content:center;box-shadow:none}
.listing.listing-is-card .listing-cell-minimal .record-actions>.btn:hover,.listing.listing-is-card .listing-cell-minimal .dropdown>.btn:hover{border-color:var(--od-primary,#6f42c1)!important;color:var(--od-primary,#6f42c1)}
.listing.listing-is-card .listing-cell-minimal .dropdown-toggle::after,.listing.listing-is-card .listing-cell-minimal .btn>span{display:none}
.listing.listing-is-card .listing-cell:not([data-card-lead]):not([data-card="primary"]) .d-flex.flex-column,.listing.listing-is-card .listing-cell:not([data-card-lead]):not([data-card="primary"]) .d-inline-flex.flex-column,.listing.listing-is-card .listing-cell:not([data-card-lead]):not([data-card="primary"]) .listing-stack,.listing.listing-is-card .listing-inline-stack{display:flex!important;flex-direction:row!important;flex-wrap:wrap;align-items:center!important;gap:.35rem .65rem!important}
.listing.listing-is-card .listing-stack>div+div{margin-top:0}
.listing.listing-is-card .listing-total-row{display:flex!important;flex-wrap:wrap;gap:.75rem 1.5rem;padding:.9rem 1.1rem!important;border:0!important;border-top:1px solid #ece7f4!important;background:#fbfafc}
.listing.listing-is-card .listing-total-row .listing-cell{min-height:0;padding:0!important;border:0!important}
.listing.listing-is-card .listing-total-row .listing-cell::before{content:attr(data-label);display:block!important}
.listing.listing-is-card .listing-total-row .listing-total-cell-empty{display:none!important}

/* Convite para ativar o Push (smartphone, após o login) */
.push-offer{position:fixed;left:.75rem;right:.75rem;bottom:calc(env(safe-area-inset-bottom,0px) + 4.75rem);z-index:1055;display:grid;grid-template-columns:auto minmax(0,1fr);gap:.4rem .8rem;align-items:center;padding:.9rem 1rem;border-radius:1.1rem;background:#fff;border:1px solid #e3ddec;box-shadow:0 12px 36px rgba(38,24,66,.22)}
.push-offer-icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:50%;background:rgba(255,193,7,.18);color:#c98a00}
.push-offer-text{display:flex;flex-direction:column;line-height:1.25}.push-offer-text small{color:#6f687a}
.push-offer-actions{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem}
.push-offer-actions .btn-link{text-decoration:none;padding-inline:.4rem}
@media(min-width:768px){.push-offer{left:auto;right:1rem;max-width:26rem}}

/* 05/11/2026 (2): chave liga/desliga SEMPRE roxo OnDance em todo o sistema */
.form-switch .form-check-input:checked,.form-check-input[type=checkbox][role=switch]:checked{background-color:var(--od-primary,#6f42c1)!important;border-color:var(--od-primary,#6f42c1)!important}
.form-switch .form-check-input:focus{border-color:#b79ce6;box-shadow:0 0 0 .25rem rgba(111,66,193,.2)}
.form-switch .form-check-input:focus:not(:checked){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23b79ce6'/%3e%3c/svg%3e")}
.notif-pref-text{flex:1 1 auto;min-width:0;margin:0;cursor:pointer}
/* Seletores btn choice: 1 por linha no smartphone e nunca quebram a palavra (ex.: E-mail) */
.choice-btn .choice-label{overflow-wrap:normal;word-break:normal;hyphens:none}
.choice-channel-email .choice-label,.choice-channel-whatsapp .choice-label,.choice-channel-push .choice-label{white-space:nowrap}
@media(max-width:575.98px){.choice-grid,.choice-grid-fit,.choice-grid-sm{grid-template-columns:minmax(0,1fr)!important}.choice-btn{justify-content:flex-start}}

/* 05/11/2026 (3): Aula + Função + remover na matrícula — a regra de 3 colunas dos botões de linha (v5.5.4) vencia a de celular e os campos se sobrepunham.
   Celular/tablet (< 1200px): um campo por linha (Aula, Função) e a lixeira à direita; select2 e filhos de grid nunca ultrapassam a coluna. */
.enrollment-class-row>*{min-width:0}
.enrollment-class-row .select2-container{width:100%!important;max-width:100%}
@media(max-width:1199.98px){.enrollment-class-row{grid-template-columns:minmax(0,1fr)!important}.enrollment-class-row .enrollment-row-remove{justify-self:end;align-self:end}}
.plan-rule-row>*,.event-entry-row>*{min-width:0}
.form-floating>.select2-container,.flex-fill>.select2-container{max-width:100%}
/* 05/11/2026 (5) — Modo BLOCO: as colunas [ações] e [liga/desliga] deixam de ser colunas: só o conteúdo (botão/chave) flutua no canto superior direito do bloco,
   ações no topo e liga/desliga logo abaixo. O bloco reserva uma faixa à direita para que nenhum conteúdo das outras colunas fique por baixo. */
.listing.listing-is-card .listing-row:has([data-card="actions"]),.listing.listing-is-card .listing-row:has([data-card="toggle"]){padding-right:3.6rem!important}
.listing.listing-is-card .listing-scroll .listing-row .listing-cell[data-card="actions"],.listing.listing-is-card .listing-scroll .listing-row .listing-cell[data-card="toggle"]{position:absolute!important;inset:.9rem .8rem auto auto!important;width:auto!important;min-width:0!important;max-width:none;margin:0!important;padding:0!important;order:0;flex:none!important;z-index:2;align-items:center!important}
.listing.listing-is-card .listing-scroll .listing-row:has([data-card="actions"]) .listing-cell[data-card="toggle"]{inset:3.6rem .8rem auto auto!important}
.listing.listing-is-card .listing-scroll .listing-row .listing-cell[data-card="toggle"] .form-check{margin:0;padding:0;min-height:0;display:flex;justify-content:center}
.listing.listing-is-card .listing-scroll .listing-row .listing-cell[data-card="toggle"] .form-check-input{float:none;margin:0}
.listing.listing-is-card .listing-scroll .listing-row .listing-cell[data-card-lead]{flex:1 1 100%!important;min-width:0;max-width:100%}