/* Shared theme controls. Dark rules are screen-only so printing stays light. */
.tcse-theme-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 1px solid var(--tcse-border, #d7e1ea);
    border-radius: 6px;
    background: var(--tcse-surface, #fff);
    color: var(--tcse-text, #1f2d3d);
    cursor: pointer;
}
.tcse-theme-toggle:hover { background: var(--tcse-surface-muted, #f4f7fb); }
.tcse-theme-toggle:focus-visible { outline: 2px solid #65baff; outline-offset: 3px; }
.main-header .tcse-theme-toggle { margin: 7px 8px; }
.tcse-login-theme { display: flex; justify-content: flex-end; margin-bottom: 8px; }
/* Login does not load Bootstrap's accessibility utility. */
.tcse-theme-toggle .sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
@media print { .tcse-theme-toggle { display: none !important; } }

@media screen {
    /* Slightly muted light calendar surfaces reduce glare without dimming text. */
    html[data-theme="light"] #calendar {
        --fc-breezy-background: #eef1f3;
        --fc-breezy-border: #d3dbe1;
    }
    html[data-theme="light"] #calendar .fc-breezy-GjO {
        background-color: color-mix(in oklab, var(--fc-event-color) 80%, #d8dfe3) !important;
    }
    html[data-theme="light"] #calendar .fc-feriado {
        background-color: color-mix(in oklab, #5a7a56 12.5%, #e2e8e3) !important;
    }
    html[data-theme="light"] #calendar :is(.fc-urgencia-internado, .fc-cerebro-estandar) {
        background-color: color-mix(in oklab, color-mix(in oklab, var(--fc-event-color) 88%, #000) 30%, #e7e9ea) !important;
    }
    html[data-theme="light"] #calendar .fc-list-filter-wrap { background: #eef1f3; }
    html[data-theme="light"] .fc-timegrid-slot-lane {
        border-bottom-color: #0073b7 !important;
    }
    html[data-theme="light"] .fc-timegrid-slot-label,
    html[data-theme="light"] .fc-vg:has(> .fc-timegrid-slot-label) {
        box-shadow: inset 0 -1px 0 #0073b7;
    }
    html[data-theme="light"] #calendar .fc-bg-event {
        background-image: repeating-linear-gradient(
            to bottom,
            transparent 0,
            transparent 18px,
            #0073b7 18px,
            #0073b7 19px
        ) !important;
    }

    html[data-theme="dark"] {
        color-scheme: dark;
        --tcse-surface: #1b2838;
        --tcse-surface-muted: #233347;
        --tcse-border: #40536b;
        --tcse-text: #e4edf6;
        --tcse-text-muted: #adbed0;
        --tcse-link: #8dcbf5;
        --tcse-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
        --tcse-field-border: #536c85;
        --tcse-table-heading: #263a50;
        --tcse-muted-ink: #adbed0;
        --tcse-ink: #e4edf6;
        --tcse-soft-border: #536c85;
        --tcse-hover: #30465e;
        --tcse-editable: #373421;
        --tcse-success-surface: #203f32;
        --tcse-success-ink: #9de2b3;
        --tcse-success-border: #3b7953;
        --tcse-warning-surface: #45381e;
        --tcse-warning-ink: #f6d486;
        --tcse-warning-border: #8b7137;
        --tcse-danger-surface: #472b33;
        --tcse-danger-ink: #ffb0b8;
        --tcse-danger-border: #965563;
        --tcse-info-surface: #203e53;
        --tcse-info-ink: #a1dbf5;
        --tcse-info-border: #44798f;
        --tcse-violet-surface: #3c2e51;
        --tcse-violet-ink: #ddbcff;
        --tcse-neutral-surface: #2a394b;
        --tcse-neutral-ink: #c5d2e0;
        --tcse-neutral-border: #536c85;
        --tcse-selected: #345375;
    }

    html[data-theme="dark"] body,
    html[data-theme="dark"] .content-wrapper,
    html[data-theme="dark"] .right-side { background: #121c29; color: var(--tcse-text); }
    html[data-theme="dark"] :is(.box, .box-body, .box-footer, .panel, .panel-body,
        .modal-content, .modal-body, .modal-footer, .main-footer, .well, .list-group-item,
        .dropdown-menu, .user-footer, .popover, .popover-title, .info-box) {
        background-color: var(--tcse-surface);
        color: var(--tcse-text);
        border-color: var(--tcse-border);
    }
    html[data-theme="dark"] :is(.box-header, .panel-heading, .modal-header, .page-header, hr) {
        border-color: var(--tcse-border);
    }
    html[data-theme="dark"] :is(.box-header, .panel-default > .panel-heading) { color: var(--tcse-text); }
    html[data-theme="dark"] .panel-default > .panel-heading { background: var(--tcse-surface-muted); }
    html[data-theme="dark"] a:not(.btn):not(.label):not(.tcse-location-card):not(.tcse-service-card):not(.tcse-service-pill) {
        color: var(--tcse-link);
    }
    html[data-theme="dark"] .main-header :is(.logo, .sidebar-toggle, .dropdown-toggle) { color: #fff !important; }
    html[data-theme="dark"] :is(.text-muted, .help-block, caption) { color: var(--tcse-text-muted); }
    html[data-theme="dark"] :is(.text-danger, .text-red) { color: var(--tcse-danger-ink) !important; }
    html[data-theme="dark"] :is(.text-success, .text-green) { color: var(--tcse-success-ink) !important; }
    html[data-theme="dark"] .tcse-protocolo-alta__access-counter { color: #fff; }
    html[data-theme="dark"] :is(.text-warning, .text-yellow) { color: var(--tcse-warning-ink) !important; }
    html[data-theme="dark"] .close { color: var(--tcse-text); text-shadow: none; opacity: .8; }

    html[data-theme="dark"] :is(.form-control, .login-input, .input-group-addon,
        .dataTables_wrapper input, .dataTables_wrapper select, .select2-selection,
        .select2-dropdown, .select2-search__field, .ui-widget-content, .ui-widget-header) {
        background-color: var(--tcse-surface);
        color: var(--tcse-text);
        border-color: var(--tcse-field-border);
    }
    html[data-theme="dark"] :is(.form-control, .login-input):focus {
        border-color: var(--tcse-link);
        box-shadow: 0 0 0 2px rgba(141, 203, 245, .25);
    }
    html[data-theme="dark"] :is(input, textarea)::placeholder { color: var(--tcse-text-muted); opacity: 1; }
    html[data-theme="dark"] :is(.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control) {
        background-color: var(--tcse-surface-muted);
        color: var(--tcse-text-muted);
    }
    html[data-theme="dark"] .select2-container--default .select2-selection__rendered { color: var(--tcse-text); }
    html[data-theme="dark"] :is(.btn-default, .dt-button, .pagination > li > a, .pagination > li > span) {
        background: var(--tcse-surface-muted);
        border-color: var(--tcse-border);
        color: var(--tcse-text);
    }
    html[data-theme="dark"] :is(.btn-default:hover, .dropdown-menu > li > a:hover,
        .dropdown-menu > li > a:focus, .ui-state-active, .ui-state-focus,
        .pagination > li > a:hover) { background: var(--tcse-hover); color: var(--tcse-text); }
    html[data-theme="dark"] .pagination > .active > a { background: var(--tcse-primary); color: #fff; }
    html[data-theme="dark"] .pagination > .disabled > a { color: var(--tcse-text-muted); }
    html[data-theme="dark"] :is(.nav-tabs, .nav-tabs > li.active > a) { border-color: var(--tcse-border); }
    html[data-theme="dark"] :is(.nav-tabs > li.active > a, .nav > li > a:hover) { background: var(--tcse-surface-muted); }

    html[data-theme="dark"] .table { color: var(--tcse-text); }
    html[data-theme="dark"] :is(.table, .table > thead > tr > th, .table > tbody > tr > td,
        .table > tfoot > tr > td, table.dataTable.no-footer) { border-color: var(--tcse-border); }
    html[data-theme="dark"] .table-striped > tbody > tr:nth-of-type(odd) { background-color: var(--tcse-surface-muted); }
    html[data-theme="dark"] .table-hover > tbody > tr:hover { background-color: var(--tcse-hover); }
    html[data-theme="dark"] table.dataTable tbody tr { background-color: var(--tcse-surface); }
    html[data-theme="dark"] table.dataTable tbody tr.selected,
    html[data-theme="dark"] .table tbody tr.selected > td { background-color: var(--tcse-selected) !important; }
    html[data-theme="dark"] :where(.table) > thead > tr > th { background-color: var(--tcse-table-heading); color: var(--tcse-text); }
    html[data-theme="dark"] :is(.alert-success, .table > tbody > tr.success > td) {
        background: var(--tcse-success-surface); color: var(--tcse-success-ink); border-color: var(--tcse-success-border);
    }
    html[data-theme="dark"] :is(.alert-warning, .table > tbody > tr.warning > td) {
        background: var(--tcse-warning-surface); color: var(--tcse-warning-ink); border-color: var(--tcse-warning-border);
    }
    html[data-theme="dark"] :is(.alert-danger, .login-error, .table > tbody > tr.danger > td) {
        background: var(--tcse-danger-surface); color: var(--tcse-danger-ink); border-color: var(--tcse-danger-border);
    }
    html[data-theme="dark"] :is(.alert-info, .table > tbody > tr.info > td) {
        background: var(--tcse-info-surface); color: var(--tcse-info-ink); border-color: var(--tcse-info-border);
    }
    html[data-theme="dark"] :is(.datepicker, .daterangepicker, .daterangepicker .calendar-table,
        .daterangepicker .ranges, .bootstrap-timepicker-widget, .tippy-tooltip.light-theme,
        .tippy-tooltip.light-theme .tippy-content, .tippy-tooltip.light-theme .tippy-backdrop,
        .tippy-tooltip.tomato-theme, .tippy-tooltip.tomato-theme .tippy-backdrop) {
        background: var(--tcse-surface); color: var(--tcse-text); border-color: var(--tcse-border);
    }
    html[data-theme="dark"] .tippy-tooltip.light-theme,
    html[data-theme="dark"] .tippy-tooltip.light-theme .tippy-content,
    html[data-theme="dark"] .tcse-calendar-help,
    html[data-theme="dark"] .tcse-calendar-help strong {
        color: var(--tcse-text) !important;
    }
    html[data-theme="dark"] .tippy-tooltip.light-theme[x-placement^="top"] .tippy-arrow {
        border-top-color: var(--tcse-surface);
    }
    html[data-theme="dark"] .tippy-tooltip.light-theme[x-placement^="bottom"] .tippy-arrow {
        border-bottom-color: var(--tcse-surface);
    }
    html[data-theme="dark"] .tippy-tooltip.light-theme[x-placement^="left"] .tippy-arrow {
        border-left-color: var(--tcse-surface);
    }
    html[data-theme="dark"] .tippy-tooltip.light-theme[x-placement^="right"] .tippy-arrow {
        border-right-color: var(--tcse-surface);
    }
    html[data-theme="dark"] :is(.datepicker table tr td.day:hover, .datepicker table tr td.focused,
        .datepicker .datepicker-switch:hover, .datepicker .prev:hover, .datepicker .next:hover,
        .daterangepicker td.available:hover, .daterangepicker th.available:hover,
        .daterangepicker td.in-range, .daterangepicker .ranges li:hover) {
        background: var(--tcse-hover); color: var(--tcse-text);
    }
    html[data-theme="dark"] :is(.datepicker table tr td.disabled, .datepicker table tr td.old,
        .datepicker table tr td.new, .daterangepicker td.off, .daterangepicker td.disabled) {
        background: var(--tcse-surface); color: var(--tcse-text-muted);
    }
    html[data-theme="dark"] .datepicker table tr td.active,
    html[data-theme="dark"] .daterangepicker td.active { background: var(--tcse-primary); color: #fff; }

    /* Login has a separate document and its own light palette. */
    html[data-theme="dark"] .login-logo { background: #fff; padding: 8px; border-radius: 8px; }
    html[data-theme="dark"] .login-scene { background: linear-gradient(135deg, #101925, #20364d); }
    html[data-theme="dark"] :is(.login-title, .login-module-badge, .login-module-badge i) { color: var(--tcse-link); }

    html[data-theme="dark"] .loading-overlay { background: rgba(12, 20, 31, .75); }
    html[data-theme="dark"] :is(.loading-overlay-content, .fc-list-filter-wrap) {
        background: var(--tcse-surface); color: var(--tcse-text); border-color: var(--tcse-border);
    }
    html[data-theme="dark"] .fc-list-filter-label { color: var(--tcse-text-muted); }
    html[data-theme="dark"] #fc-list-filter { border-color: var(--tcse-field-border); }

    /* Calendar's native dark palette is activated by data-color-scheme. Keep
       custom appointment colors and their paired text colors intact. */
    html[data-theme="dark"] :is(.fc-turnobloq_clean-button, .fc-turnobloq_clean-button a,
        .fc-turnobloq_clean-button i, .fc-timegrid-slot-label, .fc-timegrid-slot-label-cushion,
        .fc-breezy-LMv, .fc-breezy-a3B, .fc-breezy-mNS) { color: var(--tcse-text) !important; }
    html[data-theme="dark"] :is(.fc-day-sat, .fc-day-sun) { background-color: #352d2b; }
    html[data-theme="dark"] :is(.fc-day-sat, .fc-day-sun).fc-Og {
        background-image: repeating-linear-gradient(
            to bottom,
            transparent 0,
            transparent 18px,
            var(--tcse-border) 18px,
            var(--tcse-border) 19px
        );
    }
    html[data-theme="dark"] #calendar .fc-bg-event {
        background-image: repeating-linear-gradient(
            to bottom,
            transparent 0,
            transparent 18px,
            var(--tcse-border) 18px,
            var(--tcse-border) 19px
        ) !important;
    }
    html[data-theme="dark"] :is(.turno1, .fc-vg:has(> .turno1)) { background-color: #203d2e; }
    html[data-theme="dark"] :is(.turno2, .fc-vg:has(> .turno2)) { background-color: #2a4a35; }
    html[data-theme="dark"] :is(.turno3, .fc-vg:has(> .turno3)) { background-color: #384e2d; }
    html[data-theme="dark"] :is(.turno4, .fc-vg:has(> .turno4)) { background-color: #31563e; }
    html[data-theme="dark"] .fc-timegrid-slot-lane { border-bottom-color: var(--tcse-border) !important; }
    html[data-theme="dark"] .fc-vg:has(> .fc-timegrid-slot-label) { box-shadow: inset 0 -1px 0 var(--tcse-border); }

    /* Calendar-specific overrides for custom clinical backgrounds. */
    html[data-theme="dark"] #calendar .fc-feriado {
        background-color: #263b30 !important;
        color: #bce1bd !important;
    }
    html[data-theme="dark"] #calendar .fc-urgencia-internado {
        background-color: #422e32 !important;
        color: #ffb3b3 !important;
    }
    html[data-theme="dark"] #calendar .fc-cerebro-estandar {
        background-color: #253f35 !important;
        color: #ace1bd !important;
    }
    html[data-theme="dark"] #calendar .ecografo-boedo-shift {
        background-color: color-mix(in oklab, var(--fc-event-color) 25%, #172332) !important;
        color: var(--tcse-text) !important;
    }
    html[data-theme="dark"] #calendar .fc-event-white-text {
        background-color: color-mix(in oklab, var(--fc-event-color, #428bca) 35%, #172b43) !important;
        border-color: #6e91b7 !important;
    }
    html[data-theme="dark"] #calendar .fc-event-white-text .fc-breezy-GjO {
        background-color: transparent !important;
    }
    html[data-theme="dark"] #calendar .fc-event-white-text .fc-nota-trash,
    html[data-theme="dark"] #calendar .fc-event-white-text .fc-nota-trash * {
        color: #ffb0b8 !important;
    }
    html[data-theme="dark"] #calendar .fc-event-white-text .fc-nota-trash:hover,
    html[data-theme="dark"] #calendar .fc-event-white-text .fc-nota-trash:hover * {
        color: #ffe1e5 !important;
    }
    html[data-theme="dark"] #calendar .fc-toolbar-title .tcse-calendar-service-prefix,
    html[data-theme="dark"] #calendar .fc-toolbar-title .tcse-calendar-service-prefix--ct {
        color: var(--tcse-link) !important;
    }
    html[data-theme="dark"] #calendar .fc-toolbar-title .tcse-calendar-service-prefix--mr {
        color: var(--tcse-warning-ink) !important;
    }
    html[data-theme="dark"] #calendar .fc-toolbar-title .tcse-calendar-service-prefix--cr {
        color: var(--tcse-danger-ink) !important;
    }
    html[data-theme="dark"] #calendar .fc-toolbar-title .tcse-calendar-service-prefix--us {
        color: var(--tcse-success-ink) !important;
    }
    html[data-theme="dark"] #calendar button:not(.btn) {
        color: var(--tcse-text) !important;
    }
    html[data-theme="dark"] #calendar button[class*="-button"]:not(.btn) {
        background: var(--tcse-surface-muted);
        border-color: var(--tcse-border);
    }
    html[data-theme="dark"] #calendar button:not(.btn):not(:disabled):hover {
        background: var(--tcse-hover);
    }
    html[data-theme="dark"] #calendar button[aria-pressed="true"] {
        background: #345375;
        color: #fff;
    }
    html[data-theme="dark"] #calendar button:disabled {
        color: var(--tcse-text-muted) !important;
        opacity: .65;
    }
    html[data-theme="dark"] #calendar button:focus-visible {
        outline: 2px solid var(--tcse-link);
        outline-offset: 2px;
    }
    /* Attachment markers (PM/DF/DD) are generated inside event titles with
       inline green borders. Give them a calmer dark surface and a stronger
       edge so the camera glyph and label remain legible. */
    html[data-theme="dark"] #calendar :is(.fc-cam-badge, #calevent_btn_whatsapp) {
        background-color: #176b4b !important;
        border-color: #72d6a9 !important;
        color: #f3fff9 !important;
        box-shadow: 0 0 0 1px rgba(114, 214, 169, .16);
    }
    html[data-theme="dark"] #calendar :is(.fc-cam-badge, #calevent_btn_whatsapp):hover,
    html[data-theme="dark"] #calendar :is(.fc-cam-badge, #calevent_btn_whatsapp):focus {
        background-color: #21845d !important;
        border-color: #a2f0c9 !important;
        color: #ffffff !important;
    }
    html[data-theme="dark"] #calendar :is(.fc-cam-badge, #calevent_btn_whatsapp) :is(i, .fc-cam-tag) {
        color: inherit !important;
    }
    html[data-theme="dark"] :is(.fc-timegrid-slot-label.guardia, .fc-vg:has(> .fc-timegrid-slot-label.guardia)) {
        background-color: #513c35;
    }

    /* Appointment surfaces retain the source status hue without the light fill.
       The event-color marker excludes toolbar buttons that share Breezy classes. */
    html[data-theme="dark"] #calendar .fc-breezy-bCs[style*="--fc-event-color"]:not(.fc-event-white-text) {
        background-color: color-mix(in oklab, var(--fc-event-color) 25%, #172332) !important;
        border-color: color-mix(in oklab, var(--fc-event-color) 65%, #172332) !important;
        color: #edf3fa !important;
    }
    /* Internado (#F7E5A5) otherwise reads too close to urgencia peach when muted. */
    html[data-theme="dark"] #calendar .fc-breezy-bCs[style*="--fc-event-color: #F7E5A5"]:not(.fc-event-white-text),
    html[data-theme="dark"] #calendar .fc-breezy-bCs[style*="--fc-event-color:#F7E5A5"]:not(.fc-event-white-text) {
        background-color: color-mix(in oklab, #FFE066 42%, #172332) !important;
        border-color: color-mix(in oklab, #FFE066 78%, #172332) !important;
    }
    html[data-theme="dark"] #calendar .fc-breezy-bCs[style*="--fc-event-color"]:not(.fc-event-white-text)
        :is(.fc-breezy-WLU, .fc-breezy-TZ4, .fc-breezy-OLq, .fc-breezy-1Zl, .fc-event-title, .fc-event-time) {
        color: #edf3fa !important;
    }

    /* Theme only CKEditor's UI; saved report HTML is never modified. */
    html[data-theme="dark"] {
        --ck-color-base-background: var(--tcse-surface);
        --ck-color-base-foreground: var(--tcse-surface-muted);
        --ck-color-base-border: var(--tcse-border);
        --ck-color-base-text: var(--tcse-text);
        --ck-color-text: var(--tcse-text);
        --ck-color-toolbar-background: var(--tcse-surface-muted);
        --ck-color-toolbar-border: var(--tcse-border);
        --ck-color-panel-background: var(--tcse-surface);
        --ck-color-panel-border: var(--tcse-border);
        --ck-color-dialog-background: var(--tcse-surface);
        --ck-color-dropdown-panel-background: var(--tcse-surface);
        --ck-color-dropdown-panel-border: var(--tcse-border);
        --ck-color-input-background: var(--tcse-surface);
        --ck-color-input-text: var(--tcse-text);
        --ck-color-input-border: var(--tcse-field-border);
        --ck-color-input-disabled-background: var(--tcse-surface-muted);
        --ck-color-input-disabled-text: var(--tcse-text-muted);
        --ck-color-labeled-field-label-background: var(--tcse-surface);
        --ck-color-list-background: var(--tcse-surface);
        --ck-color-list-button-hover-background: var(--tcse-hover);
        --ck-color-button-default-hover-background: var(--tcse-hover);
        --ck-color-button-default-active-background: var(--tcse-hover);
        --ck-color-button-on-background: var(--tcse-info-surface);
        --ck-color-button-on-hover-background: var(--tcse-hover);
        --ck-color-button-on-active-background: var(--tcse-hover);
        --ck-color-button-on-color: var(--tcse-info-ink);
        --ck-color-focus-border: var(--tcse-link);
        --ck-color-engine-placeholder-text: var(--tcse-text-muted);
    }
    /* The report page remains white like the resulting PDF, including legacy
       pasted text with explicit colors. Toolbars and dialogs follow the theme. */
    html[data-theme="dark"] .ck.ck-editor__editable.ck-content { background: #fff !important; color: #1f2d3d; color-scheme: light; }
}
