/* Dark theme readability fixes: hard-coded light-theme text colours -> theme tokens */
html[data-theme=dark]{--tc-1:var(--ui-ink);--tc-2:var(--ui-muted);--tc-3:var(--ui-muted);--tc-red:#f87171}
html[data-theme=dark] #app :is(.tabs .tab:not(.active),.room-tab-label,thead th,.rp-menu-group h3,.rp-menu-group h3 small,.repair-cost-note,.tenant-list-heading span,.tenant-line-help,.rph-q-box i,.bp-stat>span,.bp-head span,h3>span,td small,td .muted){color:var(--ui-muted)!important}
html[data-theme=dark] #app :is(.tenant-stat,.bp-stat,.rph-stat) small{color:var(--ui-muted)!important}
html[data-theme=dark] #app :is(.type-head strong,td strong,label strong,.repair-cost-amount,.rph-box small,.rph-room-note,.tenant-building,.meter-kind-button,.meter-kind-button span,.news-top strong){color:var(--ui-ink)!important}
html[data-theme=dark] #app :is(.room-no,.tenant-room-link,td a,small a){color:var(--ui-accent)!important}
html[data-theme=dark] #app .tenant-stat.is-linked strong{color:#4ade80!important}
html[data-theme=dark] #app :is(.tenant-stat.is-unlinked,.tenant-stat.is-expiring) strong,html[data-theme=dark] #app .tenant-deadline.is-wait{color:#fbbf24!important}
html[data-theme=dark] #app .tenant-deadline.is-overdue{color:#f87171!important}
html[data-theme=dark] #app .bp-stat.is-active>span,html[data-theme=dark] #app .bp-stat.is-active small{color:var(--ui-ink)!important}
html[data-theme=dark] #app :is(.news-top,.bp-ftoggle,.count.gray),html[data-theme=dark] #app tbody tr:is([style*="background"],.is-active,.selected,.highlight){background:var(--ui-subtle)!important}
html[data-theme=dark] #app .count.gray{color:var(--ui-ink)!important}
html[data-theme=dark] #app .bp-ftoggle{color:var(--ui-accent)!important}
html[data-theme=dark] #app .rph-box.has-person.st-occupied small,html[data-theme=dark] #app .rph-box.has-person.st-overdue small{color:#fff!important}
/* light panels that still had hard-coded white/pale backgrounds */
html[data-theme=dark] :is(#app,#modal) :is(.tenant-search-field,.tenant-more,.ms-more,.kind-chip,.metric,.parcel-card,.news-item,.rp-c,.unit-input,.tf-section,.lrq-card,.lrq-item,.lrq-top,.room-detail-layout,.close){background:var(--ui-surface)!important;color:var(--ui-ink)!important;border-color:var(--ui-line)!important}
html[data-theme=dark] :is(#app,#modal) :is(.news-item.pinned,.attention,.settings-actions,.tt-corner td,.floor-sep td,.di-preview .message,.tf-section>summary,.svc-row,.tf-rent,.lrq-manual-form,.tenant-directory h2>span,h2>span,.code,.kind-chip b,tbody tr[style]){background:var(--ui-subtle)!important;color:var(--ui-ink)!important;border-color:var(--ui-line)!important}
html[data-theme=dark] #app tbody tr:not([class]){background:var(--ui-surface)}
html[data-theme=dark] :is(#app,#modal) :is(.parcel-sub,.metric span,.news-item small,.rp-c small,.unit-input span,.tt-corner small,.floor-sep td,.field>label,.field small,.tf-choice span,.svc-date span,.hint,.lrq-intro,.tenant-line-help,.tenant-building,.tf-section>summary small){color:var(--ui-muted)!important}
html[data-theme=dark] :is(#app,#modal) :is(.lrq-top h3,.news-item strong,.tf-rent,.di-preview .message){color:var(--ui-ink)!important}
html[data-theme=dark] #modal .rd-rent strong{color:var(--ui-accent)!important}
html[data-theme=dark] #modal .room-exit-zone summary{color:#f4a39a!important}
html[data-theme=dark] #app .tab .count:not(.gray):not(.req-count){background:#5b2630!important;color:#fecaca!important}
html[data-theme=dark] #app .staff-leave-sum b,html[data-theme=dark] #app span>b{color:var(--ui-ink)}
html[data-theme=dark] #app tbody tr:hover,html[data-theme=dark] #app tbody tr:hover td{background:var(--ui-selected)!important;color:var(--ui-ink)}
html[data-theme=dark] :is(#app,#modal) :is(.kind-chip span,.tenant-building,.tenant-line-help,.news-body,.lrq-intro,.lrq-result-title,.lrq-system-phone,.lrq-reason,dt,.settings-checkbox span,.tf-arrow){color:var(--ui-muted)!important}
html[data-theme=dark] :is(#app,#modal) :is(.metric strong,.parcel-top strong,dd,.lrq-candidate span,.lrq-system-phone b,.tf-section>summary b){color:var(--ui-ink)!important}
html[data-theme=dark] :is(#app,#modal) :is(.lrq-room,.lrq-candidate strong){color:var(--ui-accent)!important}
html[data-theme=dark] #app .rp-c.st-paid strong{color:#4ade80!important}
html[data-theme=dark] #app .rp-c.st-overdue strong{color:#f87171!important}
html[data-theme=dark] #app .rp-c.st-all strong{color:var(--ui-accent)!important}
html[data-theme=dark] #app .tt-corner-label span{color:#c4b5fd!important}
html[data-theme=dark] #modal :is(.upload,.news-preview .message){background:var(--ui-subtle)!important;color:var(--ui-ink)!important;border-color:var(--ui-line)!important}
html[data-theme=dark] #app .desktop-list tbody tr:nth-child(2n){background:var(--ui-subtle)}
html[data-theme=dark] #app :is(.tenant-building *,.tenant-line-help *,.lrq-intro,p.lrq-intro){color:var(--ui-muted)!important}
html[data-theme=dark] #app .tenant-building :is(.active,[aria-pressed=true],.is-active){color:var(--ui-ink)!important}
html[data-theme=dark] #app .lrq-result{background:var(--ui-subtle)!important;border-color:var(--ui-line)!important}html[data-theme=dark] #app .lrq-result .lrq-reason{color:var(--ui-ink)!important}html[data-theme=dark] #app .lrq-intro p{color:var(--ui-muted)!important}
html[data-theme=dark] header .icon-btn{color:var(--ui-muted)!important}
