/* Connected client/admin/staff spaces only; public pages do not load this file. */
:root[data-app-theme] { color-scheme: light; }
.theme-switch {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  flex-shrink: 0; min-height: 44px; padding: 0 12px;
  border: 1px solid var(--line-str); border-radius: 999px;
  background: var(--bg); color: var(--ink-soft); cursor: pointer;
  font: 500 .76rem var(--sans);
}
.theme-switch[hidden] { display: none; }
.theme-switch:hover { border-color: var(--mint); }
.theme-switch:focus-visible { outline: 3px solid var(--mint); outline-offset: 3px; }
.theme-switch .theme-switch-track {
  display: inline-flex; align-items: center; width: 32px; height: 20px;
  padding: 2px; border-radius: 999px; background: var(--line-str);
}
.theme-switch .theme-switch-thumb {
  display: block; width: 16px; height: 16px; border-radius: 50%; background: #fff;
  box-shadow: 0 1px 3px #0003; transition: transform .16s ease;
}
.theme-switch[aria-checked="true"] .theme-switch-track { background: var(--mint); }
.theme-switch[aria-checked="true"] .theme-switch-thumb { transform: translateX(12px); background: #10251b; }
.login-appearance { display: flex; justify-content: flex-end; margin: -20px 0 8px; }
/* Quiet login control: only the glyph is visible; the touch target stays 44px. */
.login-appearance .theme-switch {
  width: 44px; height: 44px; padding: 0; gap: 0;
  border: 0; border-radius: 50%; background: transparent; color: var(--muted);
}
.login-appearance .theme-switch-label,
.login-appearance .theme-switch-track { display: none; }
.login-appearance .theme-switch-icon { width: 18px; height: 18px; stroke-width: 1.5; }
.login-appearance .theme-switch:hover,
.login-appearance .theme-switch:focus-visible { color: var(--ink); }
.login-appearance .theme-switch:focus-visible { outline-width: 2px; }
@media (max-width: 900px) {
  .app-header .theme-switch-label { display: none; }
  .app-header .theme-switch { gap: 6px; padding: 0 9px; }
}
@media (max-width: 380px) {
  .app-header .theme-switch-icon { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .theme-switch .theme-switch-thumb { transition: none; }
}

:root[data-app-theme="dark"] {
  color-scheme: dark;
  --bg: #17231e; --bg-soft: #0e1813;
  --ink: #edf5ef; --ink-soft: #c4d4ca; --muted: #a0b3a6;
  --green: #8ad8aa; --green-dk: #a5e9be; --mint: #71cf98; --mint-lt: #9de7b9;
  --tint: #233d2e; --line: #31473a; --line-str: #4a6554;
  --shadow-sm: 0 2px 10px #0003; --shadow-md: 0 16px 40px #0005; --shadow-lg: 0 24px 60px #0006;
  --app-success-bg: #1c392a; --app-success-ink: #a0e6b7; --app-success-border: #395d45;
  --app-blue-bg: #1e314b; --app-blue-ink: #accaff;
  --app-amber-bg: #3e321c; --app-amber-ink: #f5d48a;
  --app-error: #ffb5bc; --app-danger-bg: #a3293b; --app-toast-bg: #273e31;
}
html[data-app-theme="dark"] body { background: var(--bg-soft); }
[data-app-theme="dark"] :is(
  .login-card, .card, .dash-stat, .stat-card, .admin-item, .form-card,
  .admin-dashboard-panel, .tabs, .planning-day, .planning-week-nav button,
  .planning-legend, .planning-detail-card, .recurrence-item, .doc-panel, .doc-item, .ticket-admin-card,
  .modal, .pw-dialog, .ticket-dialog, .ticket-dialog-header,
  .app-user-popover, .photo-strip-item, .photo-item, .summary-row,
  .empty-state.error-state, .photo-empty, .checkbox-grid label
) { background-color: var(--bg); color: var(--ink); border-color: var(--line); }
[data-app-theme="dark"] :is(.app-header, .client-bottom-nav) { background: rgba(23,35,30,.97); }
[data-app-theme="dark"] :is(input, textarea, select, .site-selector, .search-input, .site-filter-select) {
  background-color: var(--bg-soft); color: var(--ink); border-color: var(--line-str);
  accent-color: var(--mint);
}
[data-app-theme="dark"] ::placeholder { color: var(--muted); opacity: 1; }
[data-app-theme="dark"] :is(input, textarea, select):focus {
  outline: 2px solid var(--mint); outline-offset: 2px;
}
[data-app-theme="dark"] :is(.btn-secondary, .btn-icon, .icon-button) {
  background-color: var(--bg); color: var(--ink-soft); border-color: var(--line-str);
}
[data-app-theme="dark"] :is(.btn-primary, .tab.active, .checkbox-grid label:has(input:checked)),
[data-app-theme="dark"] :is(.btn-secondary, .btn-icon:not(.danger), .icon-button, .app-header-logout):hover {
  background: var(--green); color: #10251b; border-color: var(--green);
}
[data-app-theme="dark"] .btn-primary:hover { background: var(--green-dk); }
[data-app-theme="dark"] :is(.btn-danger, .btn-icon.danger:hover) {
  background: var(--app-danger-bg); color: #fff; border-color: var(--app-danger-bg);
}
[data-app-theme="dark"] .client-status-card { background: #1d4631; border: 1px solid #356047; }
[data-app-theme="dark"] .client-report-button { background: var(--green); color: #10251b; }
[data-app-theme="dark"] .client-report-button:hover { background: var(--green-dk); }
[data-app-theme="dark"] .client-bottom-nav button { color: var(--muted); }
[data-app-theme="dark"] .client-bottom-nav button.active { color: var(--green); }
[data-app-theme="dark"] .toast { background: var(--app-toast-bg); color: var(--ink); border: 1px solid var(--line-str); }
[data-app-theme="dark"] :is(.badge-completed, .badge-resolved) { background: var(--app-success-bg); color: var(--app-success-ink); }
[data-app-theme="dark"] .badge-in_progress { background: var(--app-amber-bg); color: var(--app-amber-ink); }
[data-app-theme="dark"] .badge-open { background: #46242a; color: var(--app-error); }
[data-app-theme="dark"] :is(.login-card, .pw-dialog) .error-msg { background: #46242a; color: var(--app-error); border-color: #74414b; }
[data-app-theme="dark"] :is(.ticket-meta, .ticket-facts dt) { color: var(--muted); }
[data-app-theme="dark"] :is(.ticket-error, .pp-remove) { color: var(--app-error); }
[data-app-theme="dark"] :is(.ticket-history li, .ticket-dialog-header) { border-color: var(--line); }
[data-app-theme="dark"] .planning-visit.status-completed { opacity: 1; }
[data-app-theme="dark"] .planning-visit.status-cancelled { opacity: .8; }
[data-app-theme="dark"] :is(.modal-overlay, .planning-detail-modal),
[data-app-theme="dark"] :is(.ticket-dialog, .pw-dialog)::backdrop { background: rgba(0,0,0,.65); }


/* Staff workspace: retain semantic colors and leave photos untouched. */
[data-app-theme="dark"] .round-progress-bar { background: var(--bg); border-color: var(--line); }
[data-app-theme="dark"] .complete-bar { background: rgba(23,35,30,.97); }
[data-app-theme="dark"] .staff-hero { background: #1d4631; border: 1px solid #356047; }
[data-app-theme="dark"] .staff-hero-cta { background: var(--green); color: #10251b; }
[data-app-theme="dark"] .staff-hero-cta:hover { background: var(--green-dk); }
[data-app-theme="dark"] .checkpoint-btn { background: var(--bg); color: var(--green); border-color: var(--line-str); }
[data-app-theme="dark"] .checkpoint-btn:hover,
[data-app-theme="dark"] .checkpoint-check.done { background: var(--green); color: #10251b; border-color: var(--green); }
[data-app-theme="dark"] .hero-action { color: #10251b; }
[data-app-theme="dark"] .hero-action.done { background: var(--app-success-bg); color: var(--app-success-ink); }
