/* LeisureOS: contrast corrections for dark dashboard mode.
   Scoped to the admin shell; public marketing and sign-in remain unchanged. */
html[data-leisure-contrast="dark"] {
  --panel:#1c2428;
  --ink:#edf4f2;
  --muted:#b7c5c6;
  --line:#38484c;
  --soft:#253136;
}
html[data-leisure-contrast="dark"] #appShell {color:var(--ink)}
html[data-leisure-contrast="dark"] #appShell .main{color:var(--ink)}
html[data-leisure-contrast="dark"] #appShell :is(
  .metric-card,.panel,.table-card,.staff-card,.activity-feed,
  .sales-table-wrap,.inventory-table-wrap,.expense-table-wrap,.pool-table-wrap,.booking-table-wrap,
  .report-card,.settings-panel,.settings-tabs,.menu-category-panel,.menu-items-panel,
  .notification-menu,.account-popover,.modal-card,.custom-period,.stock-recipe-row,
  .report-data-notice,.review-score,.subscription-summary-card,
  .sale-summary-box,.report-kpi-stack>div,.qr-settings-summary>div,
  .booking-payment-summary>div,.staff-detail-metrics>div,.detail-box,.ops-card,.pool-box,
  .report-summary-card,.booking-summary-card,.expense-summary-card,.inventory-summary-card
){background:var(--panel)!important;color:var(--ink)!important;border-color:var(--line)!important}
html[data-leisure-contrast="dark"] #appShell :is(
  .primary-metric,.status-badge,.role-badge,.pill,.stock-level,.table-state,
  .request-strip,.plan-inline-notice,.report-status
){color:inherit}
html[data-leisure-contrast="dark"] #appShell :is(.metric-card,.panel,.report-card,.settings-panel,.sale-summary-box,.booking-payment-summary>div,.report-kpi-stack>div) :is(strong,b,h2,h3){
  color:var(--ink)!important
}
html[data-leisure-contrast="dark"] #appShell :is(#menu,#sales,#expenses,#inventory,#bookings,#reports,#settings) :is(
  .menu-category-panel,.menu-items-panel,.menu-item,.menu-card,.menu-category,
  .sale-summary-box,.summary-box,.summary-card,.kpi-card,.stats-card,.total-card,.totals-card,
  .expense-summary,.inventory-summary,.booking-summary,.report-summary,
  .report-kpi-stack>div,.qr-settings-summary>div,.booking-payment-summary>div,
  .stock-recipe-row,.subscription-summary-card,.settings-panel,.settings-tabs,
  .staff-sale-row,.staff-table-chip,.tab-content,.form-section
){background:var(--panel)!important;color:var(--ink)!important;border-color:var(--line)!important}
html[data-leisure-contrast="dark"] #appShell :is(#menu,#sales,#expenses,#inventory,#bookings,#reports,#settings) :is(
  .ghost-btn,.secondary,.text-btn,.outline-btn,.quiet-btn,.small-btn,.action-btn,
  .menu-action,.menu-toggle,.menu-photo-btn,.photo-change-btn,.status-tab,
  .settings-tab,.settings-tab-btn,.category-button,.period-btn.active,.filter-chip,
  .toggle-button,.change-photo,.disabled-button,.menu-item-actions button,
  .menu-category-actions button
){background:#2b393d!important;color:#f4f8f7!important;border-color:#526569!important}
html[data-leisure-contrast="dark"] #appShell :is(#menu,#sales,#expenses,#inventory,#bookings,#reports,#settings) :is(button,a).disabled,
html[data-leisure-contrast="dark"] #appShell :is(#menu,#sales,#expenses,#inventory,#bookings,#reports,#settings) button[disabled]{
  color:#c6d2d2!important;
}
html[data-leisure-contrast="dark"] #appShell :is(#menu,#sales,#expenses,#inventory,#bookings,#reports,#settings) :is(input,textarea,select){
  background:#263337!important;color:#f1f6f5!important;border-color:#536366!important;
  color-scheme:dark
}
html[data-leisure-contrast="dark"] #appShell :is(input,textarea)::placeholder{color:#b2c1c2!important;opacity:1}
html[data-leisure-contrast="dark"] #appShell :is(#menu,#sales,#expenses,#inventory,#bookings,#reports,#settings) :is(label,small,p,.muted,.table-meta,.caption,.help-text,.section-subtitle,.stat-label){
  color:#b7c5c6
}
html[data-leisure-contrast="dark"] #appShell :is(table,thead,tbody,tr,td,th){color:var(--ink)}
html[data-leisure-contrast="dark"] #appShell thead th{background:#263337!important;color:#e4efee!important;border-color:var(--line)!important}
html[data-leisure-contrast="dark"] #appShell table tbody tr:hover{background:#273337!important}
html[data-leisure-contrast="dark"] #appShell :is(
  .status-tab,.capacity-control,.modal-request,.request-strip,.report-data-notice,
  .menu-item-actions,.form-actions,.period-switch,.table-card.has-request,
  .notification-item
){border-color:var(--line)}
html[data-leisure-contrast="dark"] #appShell :is(.request-strip,.modal-request,.report-data-notice,.attention-item.warning){
  background:#3c3125!important;color:#f6e9d5!important
}
html[data-leisure-contrast="dark"] #appShell .primary-metric{
  background:#101719!important;color:#fff!important;border-color:#3b474a!important
}
html[data-leisure-contrast="dark"] #appShell .primary-metric :is(span,strong){color:#fff!important}
html[data-leisure-contrast="dark"] #appShell :is(.primary-btn,.attention-actions button:not(.secondary)){
  background:#e6b94f!important;color:#181a16!important
}
html[data-leisure-contrast="dark"] #appShell :is(.status-badge,.role-badge,.pill,.stock-level,.table-state){
  filter:brightness(.93) saturate(.88)
}
html[data-leisure-contrast="dark"] #appShell :is(.status-badge,.role-badge,.pill,.stock-level,.table-state) :is(strong,span){
  color:inherit
}
html[data-leisure-contrast="dark"] #appShell .qr-code-box{background:#fff!important}
/* Print and generated QR artwork are intentionally kept white. */
@media print {
  html[data-leisure-contrast="dark"] #appShell .report-card,
  html[data-leisure-contrast="dark"] #appShell th {
    background:#fff!important;color:#121614!important
  }
}

/* Specifically correct the white action controls reported on Menu & Pricing. */
html[data-leisure-contrast="dark"] #menu :is(.admin-menu-item,.menu-category-row){
  background:#202a2f!important;color:#eef4f2!important;border-color:#38484c!important
}
html[data-leisure-contrast="dark"] #menu :is(.admin-menu-item,.menu-category-row) button:not(.primary-btn),
html[data-leisure-contrast="dark"] #menu :is([data-toggle-menu-item],[data-toggle-menu-category],[data-change-photo],[data-upload-photo]){
  background:#344246!important;color:#f6faf8!important;border:1px solid #596e71!important
}
html[data-leisure-contrast="dark"] #menu :is(.admin-menu-item,.menu-category-row) :is(strong,span,.price){color:#eef4f2!important}


/* DARK MODE V3 — universal readable admin text and controls.
 * The previous v1 rule set missed generated cards, white buttons, and summary
 * values. Apply legible defaults to all descendants of the operational views.
 * Sidebar, unauthenticated login, public pages, and print are excluded.
 */
html[data-leisure-contrast="dark"] #appShell .view,
html[data-leisure-contrast="dark"] #appShell .view *:not(svg):not(path):not(canvas) {
  color:#edf5f4!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(
  .metric-card,.summary-card,.summary-box,.summary-tile,.kpi-card,
  .stats-card,.total-card,.report-kpi-stack>div,.report-card,
  .sale-summary-box,.expense-summary-box,.inventory-summary-box,
  .booking-payment-summary>div,.booking-summary-box,.qr-settings-summary>div,
  .admin-menu-item,.menu-category-row,.menu-item,.panel,.settings-panel,
  .settings-tabs,.settings-card,.dashboard-card,.staff-card,.table-card,
  .activity-feed,.detail-box,.modal-card,.staff-detail-metrics>div,
  .staff-sale-row,.staff-table-chip,.subscription-summary-card,
  .stock-recipe-row,.report-data-notice,.review-score,.notification-menu,
  .account-popover,.booking-card,.pool-box,.ops-card
){
  background-color:#232e32!important;
  border-color:#47595e!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(
  button:not(.primary-btn):not(.period-btn),
  select,input,textarea,.ghost-btn,.text-btn,.status-tab,
  .toggle-btn,.toggle-button,.btn-secondary,
  [data-toggle-menu-item],[data-toggle-menu-category]
){
  background-color:#334247!important;
  color:#f6fbfa!important;
  border-color:#62777b!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(
  button:not(.primary-btn):not(.period-btn),
  .ghost-btn,.text-btn,.btn-secondary,
  [data-toggle-menu-item],[data-toggle-menu-category]
) *{
  color:#f6fbfa!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(
  .primary-btn,.period-btn.active,.attention-actions button:not(.secondary),
  button[data-remind],button[data-reassign]
){
  background-color:#e7bc59!important;
  color:#161b1a!important;
  border-color:#e7bc59!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(
  .primary-btn,.period-btn.active,.attention-actions button:not(.secondary),
  button[data-remind],button[data-reassign]
) *{
  color:#161b1a!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(.status-badge,.role-badge,.stock-level,.pill,.table-state){
  background-color:#344349!important;
  border:1px solid #62777b!important;
  color:#f5fbfa!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(
  .status-badge,.role-badge,.stock-level,.pill,.table-state
) *{
  color:#f5fbfa!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(
  thead th,.table-header,.table-head
){
  background-color:#27373b!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(
  .table-wrap,.sales-table-wrap,.expense-table-wrap,.inventory-table-wrap,
  .booking-table-wrap,.report-table-wrap,.pool-table-wrap,.menu-category-panel,
  .menu-items-panel,.settings-tab-content,.report-tab-content
){
  background-color:#1e292e!important;
  border-color:#46585b!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(
  .attention-item.warning,.request-strip,.modal-request,.warning-metric
){
  background-color:#3b3126!important;
  border-color:#806039!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(
  input,textarea,select
)::placeholder {color:#c2d0d1!important;opacity:1}
html[data-leisure-contrast="dark"] #appShell .view :is(
  button,input,textarea,select
):focus-visible{
  outline-color:#f0ca76!important;
}
html[data-leisure-contrast="dark"] #appShell .view :is(.qr-code-box,.qr-code-box *){
  /* QR contrast must stay black-on-white for reliable scanning. */
  color:#111!important;
}
html[data-leisure-contrast="dark"] #appShell .view .qr-code-box{
  background:#fff!important;
}
@media print {
  html[data-leisure-contrast="dark"] #appShell .view,
  html[data-leisure-contrast="dark"] #appShell .view *{
    color:#111!important;
  }
  html[data-leisure-contrast="dark"] #appShell .view :is(
    .metric-card,.panel,.report-card,.summary-box,td,th
  ){background:#fff!important;color:#111!important}
}

/* Forms and detail modals are siblings of views; cover them too.
   Dedicated login and account-registration screens retain their own styling. */
html[data-leisure-contrast="dark"] .modal-backdrop:not(#loginModal):not(#registerModal) .modal-card{
  background:#202c30!important;color:#edf5f4!important;
  border:1px solid #45565a!important;
}
html[data-leisure-contrast="dark"] .modal-backdrop:not(#loginModal):not(#registerModal) .modal-card *:not(svg):not(path):not(canvas){
  color:#edf5f4!important;
}
html[data-leisure-contrast="dark"] .modal-backdrop:not(#loginModal):not(#registerModal) .modal-card :is(
  button:not(.primary-btn),input,select,textarea,.detail-box,.stock-recipe-row,
  .stock-recipe-copy,.form-grid,.form-section,.booking-payment-summary>div
){
  background:#304045!important;color:#edf5f4!important;
  border-color:#5e7277!important;
}
html[data-leisure-contrast="dark"] .modal-backdrop:not(#loginModal):not(#registerModal) .modal-card .primary-btn,
html[data-leisure-contrast="dark"] .modal-backdrop:not(#loginModal):not(#registerModal) .modal-card .primary-btn *{
  background:#e7bc59!important;color:#161b1a!important;
}
html[data-leisure-contrast="dark"] .modal-backdrop:not(#loginModal):not(#registerModal) .modal-card input::placeholder{
  color:#bfcccd!important;opacity:1
}
