/* Zelofy Clean brand system
   Palette supplied with the Zelofy droplet identity. Operational success,
   warning, progress, and danger colors remain semantic and unchanged. */
:root {
  --zc-brand-cyan: #0bc4f7;
  --zc-brand-blue: #2563eb;
  --zc-brand-violet: #6d5cf6;
  --zc-brand-ice: #d6e8ff;
  --zc-brand-canvas: #f7faff;
  --zc-brand-line: #eaf0f7;
  --zc-brand-paper: #fff;
  --zc-brand-ink: #0b1739;
  --zc-brand-text: #516078;
  --zc-brand-muted: #66758d;
  --zc-brand-gradient: linear-gradient(135deg, #2563eb 0%, #2563eb 48%, #6d5cf6 100%);
  --zc-brand-spectrum: linear-gradient(135deg, #0bc4f7 0%, #2563eb 55%, #6d5cf6 100%);
  --zc-brand-shadow: 0 16px 40px rgba(37, 99, 235, .12);
  --bs-primary: #2563eb;
  --bs-primary-rgb: 37, 99, 235;
  --bs-link-color: #2563eb;
  --bs-link-hover-color: #1d4ed8;
}

/* Building-specific native widget appearance */
.building-widget-theme-card{width:min(720px,calc(100vw - 28px))}
.building-widget-theme-body{display:grid;gap:18px}
.building-widget-preview{--building-primary:#063f8c;--building-secondary:#d4af37;position:relative;isolation:isolate;display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:118px;padding:22px;border:1px solid color-mix(in srgb,var(--building-secondary) 34%,transparent);border-radius:24px;background:linear-gradient(135deg,var(--building-primary),#050608 88%);box-shadow:0 20px 42px color-mix(in srgb,var(--building-primary) 28%,transparent);overflow:hidden}.building-widget-preview:after{content:"";position:absolute;z-index:-1;inset:-60% -20% auto 40%;height:180%;background:radial-gradient(circle,color-mix(in srgb,var(--building-secondary) 34%,transparent),transparent 66%)}
.building-widget-preview-brand{display:flex;align-items:center;gap:14px;min-width:0}.building-widget-preview-brand>span:last-child{display:grid;gap:3px;min-width:0}.building-widget-preview-brand strong{font-size:18px;letter-spacing:.04em;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.building-widget-preview-brand small{color:rgba(255,255,255,.68);font-weight:650}
.building-widget-preview-logo{display:grid;place-items:center;width:176px;height:58px;flex:0 1 176px;overflow:hidden;color:var(--building-secondary)}
.building-widget-preview-logo b{font-size:20px;letter-spacing:.04em}.building-widget-preview-logo img{display:none;width:100%;height:100%;object-fit:contain;padding:2px}.building-widget-preview-logo.has-image b{display:none}.building-widget-preview-logo.has-image img{display:block}
.building-widget-preview-value{font-size:30px;line-height:1;color:var(--building-secondary);white-space:nowrap}
.building-widget-colors{grid-template-columns:repeat(2,minmax(0,1fr))}.building-widget-color-input{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid #dce5f0;border-radius:12px;background:#fff}.building-widget-color-input input{width:48px;height:34px;padding:0;border:0;background:transparent;cursor:pointer}.building-widget-color-input output{font-weight:800;color:#253650;letter-spacing:.04em}
.building-widget-logo-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;padding:0;border:0}.building-widget-logo-options legend{margin-bottom:9px;font-weight:800;color:#263752}.building-widget-logo-options label{cursor:pointer}.building-widget-logo-options input{position:absolute;opacity:0;pointer-events:none}.building-widget-logo-options span{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:9px;align-items:center;min-height:78px;padding:12px;border:1px solid #dce5f0;border-radius:16px;background:#fff;transition:.18s ease}.building-widget-logo-options i{grid-row:1/3;font-size:22px;color:#57708f}.building-widget-logo-options b{color:#142744}.building-widget-logo-options small{color:#75859a;line-height:1.2}.building-widget-logo-options input:checked+span{border-color:var(--zc-primary,#246beb);background:#f1f6ff;box-shadow:0 0 0 2px color-mix(in srgb,var(--zc-primary,#246beb) 12%,transparent)}.building-widget-logo-options input:focus-visible+span{outline:3px solid color-mix(in srgb,var(--zc-primary,#246beb) 28%,transparent);outline-offset:2px}
@media(max-width:620px){.building-widget-theme-card{width:calc(100vw - 18px)}.building-widget-theme-body{gap:14px}.building-widget-preview{min-height:104px;padding:16px;border-radius:19px}.building-widget-preview-logo{width:148px;height:50px;flex-basis:148px}.building-widget-preview-brand strong{font-size:17px}.building-widget-preview-value{font-size:24px}.building-widget-logo-options{grid-template-columns:1fr}.building-widget-logo-options span{min-height:62px}.building-widget-colors{grid-template-columns:1fr 1fr}}
@media(max-width:390px){.building-widget-preview-value{display:none}.building-widget-colors{grid-template-columns:1fr}}

.node-monitor-card{max-width:660px}.node-monitor-summary{display:flex;align-items:center;gap:14px;padding:16px 18px;border:1px solid #e0e6ef;border-radius:16px;background:#f7f9fc;margin-bottom:16px}.node-monitor-summary .node-monitor-dot{width:13px;height:13px;border-radius:50%;background:#9aa5b7;box-shadow:0 0 0 6px rgba(154,165,183,.14);flex:0 0 auto}.node-monitor-summary div{display:grid;gap:3px}.node-monitor-summary strong{font-size:15px}.node-monitor-summary small{color:#6d7890}.node-monitor-summary.is-online{border-color:#cce9da;background:#f1fbf6}.node-monitor-summary.is-online .node-monitor-dot{background:#1d9b63;box-shadow:0 0 0 6px rgba(29,155,99,.14)}.node-monitor-summary.is-offline{border-color:#f3d0d0;background:#fff5f5}.node-monitor-summary.is-offline .node-monitor-dot{background:#d94b4b;box-shadow:0 0 0 6px rgba(217,75,75,.14)}.node-monitor-components{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:18px}.node-monitor-components article{display:grid;gap:4px;padding:13px;border:1px solid #e4e9f1;border-radius:14px;background:#fff}.node-monitor-components span,.node-monitor-components small{font-size:11px;color:#7b869b}.node-monitor-components strong{font-size:14px}.node-monitor-toggle{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid #dfe6f0;border-radius:14px;background:#f8faff;cursor:pointer}.node-monitor-toggle input{width:20px;height:20px;margin:1px 0 0;accent-color:#1768d7}.node-monitor-toggle span{display:grid;gap:3px}.node-monitor-toggle small{color:#6f7a90}.node-monitor-note{margin:14px 0 0;padding:12px 14px;border-radius:12px;background:#eef5ff;color:#456080;font-size:12px;line-height:1.55}@media(max-width:640px){.node-monitor-components{grid-template-columns:1fr}.node-monitor-card .modal-footer{gap:8px}.node-monitor-card .modal-footer .button{flex:1}.node-monitor-card .footer-spacer{display:none}}

/* Native/WebKit canvas beneath every page. It remains navy during startup and
   overscroll so the operating system never has a white fallback to reveal. */
html { background-color: #07143b; }

body.zc-app,
body.zc-cleaner-app,
body.zc-reviews-app {
  --green2: var(--zc-brand-blue);
  --soft: var(--zc-brand-canvas);
  --ink: var(--zc-brand-ink);
  --muted: var(--zc-brand-muted);
  --line: var(--zc-brand-line);
  --zc-primary: var(--zc-brand-blue);
  --zc-primary-soft: var(--zc-brand-ice);
  --zc-paper: var(--zc-brand-paper);
  --zc-body: var(--zc-brand-canvas);
  --zc-text: var(--zc-brand-text);
  --zc-heading: var(--zc-brand-ink);
  --zc-secondary: var(--zc-brand-muted);
  --zc-border: var(--zc-brand-line);
  color: var(--zc-brand-text);
  background:
    radial-gradient(circle at 12% -8%, rgba(11, 196, 247, .12), transparent 30rem),
    radial-gradient(circle at 92% 4%, rgba(109, 92, 246, .1), transparent 28rem),
    var(--zc-brand-canvas);
}

/* Immediate branded launch state while the first authenticated agenda loads. */
.zc-launch-loader {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: grid;
  place-items: center;
  padding: calc(env(safe-area-inset-top, 0px) + 1.5rem) 1.5rem calc(env(safe-area-inset-bottom, 0px) + 1.5rem);
  background: linear-gradient(180deg, #07143b 0%, #0b2559 56%, #1f4eaa 100%);
  opacity: 1;
  visibility: visible;
  transition: opacity .28s ease, visibility .28s ease;
}
.zc-launch-loader.is-leaving { opacity: 0; visibility: hidden; pointer-events: none; }
.zc-launch-card { width: min(280px, 82vw); display: grid; justify-items: center; text-align: center; }
.zc-launch-mark {
  width: 86px;
  height: 86px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 24px;
  background: #f7faff;
  box-shadow: none;
}
.zc-launch-mark img { width: 78%; height: 78%; object-fit: contain; }
.zc-launch-wordmark { margin-top: 1rem; }
.zc-launch-wordmark strong { display: block; color: #fff; font-size: 1.625rem; font-weight: 600; letter-spacing: -.045em; line-height: 1; }
.zc-launch-wordmark strong span { color: #fff; }
.zc-launch-wordmark small { display: block; margin-top: .375rem; color: #d6e8ff; font-size: .625rem; font-weight: 700; letter-spacing: .45em; transform: translateX(.22em); }
.zc-launch-card p { margin: 1.25rem 0 .75rem; color: #eaf0f7; font-size: .8125rem; font-weight: 500; }
.zc-launch-progress { width: 124px; height: 4px; overflow: hidden; border-radius: 99px; background: rgba(214, 232, 255, .24); }
.zc-launch-progress i { width: 42%; height: 100%; display: block; border-radius: inherit; background: linear-gradient(90deg, #0bc4f7, #d6e8ff, #6d5cf6); animation: zc-launch-progress 1.05s ease-in-out infinite; }
@keyframes zc-launch-progress { 0% { transform: translateX(-110%); } 100% { transform: translateX(340%); } }

body.zc-app h1,
body.zc-app h2,
body.zc-app h3,
body.zc-app h4,
body.zc-cleaner-app h1,
body.zc-cleaner-app h2,
body.zc-cleaner-app h3,
body.zc-reviews-app h1,
body.zc-reviews-app h2,
body.zc-reviews-app h3 { color: var(--zc-brand-ink); }

/* Reusable logo and wordmark */
.zc-brand-mark,
body.zc-app .auth-logo,
body.zc-cleaner-app .auth-logo,
body.zc-reviews-app .loader-mark,
body.zc-reviews-app .auth-mark,
body.zc-reviews-app .brand-mark {
  overflow: hidden;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, .92);
  background: linear-gradient(145deg, #fff, #f1f7ff);
  box-shadow: 0 10px 28px rgba(37, 99, 235, .16);
}
body.zc-app .brand-mark.zc-brand-mark {
  border: 1px solid rgba(255, 255, 255, .92);
  background: linear-gradient(145deg, #fff, #f1f7ff);
  box-shadow: 0 10px 28px rgba(37, 99, 235, .16);
}
.zc-brand-mark img,
body.zc-app .auth-logo img,
body.zc-cleaner-app .auth-logo img,
body.zc-reviews-app .loader-mark img,
body.zc-reviews-app .auth-mark img,
body.zc-reviews-app .brand-mark img {
  width: 82%;
  height: 82%;
  display: block;
  object-fit: contain;
}
body.zc-app .auth-logo,
body.zc-cleaner-app .auth-logo { width: 64px; height: 64px; border-radius: 1.25rem; }
.zc-wordmark { min-width: 0; display: block; }
.zc-wordmark strong { display: block; color: var(--zc-brand-ink); font-size: 1.32rem; font-weight: 600; letter-spacing: -.045em; line-height: 1; }
.zc-brand-y { color: var(--zc-brand-blue); background: var(--zc-brand-spectrum); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.zc-wordmark small { display: flex !important; align-items: center; gap: .42rem; margin-top: .32rem !important; color: var(--zc-brand-blue) !important; font-size: .56rem !important; font-weight: 600; letter-spacing: .35em !important; }
.zc-wordmark small i { width: .9rem; height: 2px; display: block; border-radius: 2px; background: var(--zc-brand-spectrum); }

/* Authentication */
body.zc-app .auth-screen,
body.zc-cleaner-app .auth-screen,
body.zc-reviews-app .auth-page {
  background:
    radial-gradient(circle at 50% 0, rgba(11, 196, 247, .17), transparent 31rem),
    radial-gradient(circle at 100% 100%, rgba(109, 92, 246, .12), transparent 29rem),
    var(--zc-brand-canvas);
}
body.zc-app .auth-card,
body.zc-cleaner-app .auth-card,
body.zc-reviews-app .auth-card {
  border: 1px solid rgba(214, 232, 255, .9);
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 30px 80px rgba(37, 99, 235, .15);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}

/* Shared interactive brand treatment */
body.zc-app .button.primary,
body.zc-cleaner-app .button.primary,
body.zc-reviews-app .primary-button {
  border-color: transparent;
  background: var(--zc-brand-gradient);
  color: #fff;
  box-shadow: 0 10px 24px rgba(37, 99, 235, .24);
}
body.zc-app .button.primary:hover,
body.zc-cleaner-app .button.primary:hover,
body.zc-reviews-app .primary-button:hover { border-color: transparent; background: linear-gradient(135deg, #06b6e7, #1d4ed8 55%, #5b4be8); color: #fff; }
body.zc-app .button:not(.primary):not(.danger):hover,
body.zc-app .icon-button:hover,
body.zc-cleaner-app .button:not(.primary):not(.danger):hover,
body.zc-cleaner-app .icon-button:hover,
body.zc-reviews-app .soft-button:hover,
body.zc-reviews-app .icon-button:hover { border-color: #b7d4ff; color: var(--zc-brand-blue); background: #edf5ff; }
body.zc-app .push-notifications.enabled:hover,
body.zc-cleaner-app .push-notifications.enabled:hover { border-color: #c8f3ab; background: var(--zc-success-soft); color: var(--bs-success-text-emphasis); }
body.zc-app .push-notifications[data-push-state="install"]:hover,
body.zc-cleaner-app .push-notifications[data-push-state="install"]:hover { border-color: #fee2ab; background: var(--zc-warning-soft); color: var(--bs-warning-text-emphasis); }
body.zc-app .button.subtle-danger:hover,
body.zc-cleaner-app .button.subtle-danger:hover { border-color: #ffbab8; background: var(--zc-danger-soft); color: var(--zc-danger); }
body.zc-app input:focus,
body.zc-app select:focus,
body.zc-app textarea:focus,
body.zc-cleaner-app input:focus,
body.zc-cleaner-app select:focus,
body.zc-cleaner-app textarea:focus,
body.zc-reviews-app input:focus { border-color: var(--zc-brand-blue) !important; box-shadow: 0 0 0 3px rgba(37, 99, 235, .12) !important; }
body.zc-app input[type="checkbox"],
body.zc-cleaner-app input[type="checkbox"],
body.zc-reviews-app input[type="checkbox"] { accent-color: var(--zc-brand-blue); }

/* Admin shell */
body.zc-app .shell.zc-layout { background: transparent; }
body.zc-app .zc-sidebar {
  border-right-color: rgba(214, 232, 255, .85);
  background: rgba(247, 250, 255, .91);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}
body.zc-app .zc-sidebar-brand { min-height: 72px; gap: .7rem; padding: .5rem 1rem; }
body.zc-app .zc-sidebar-brand .brand-mark { width: 44px; height: 44px; flex: 0 0 44px; align-self: center; border-radius: .9rem; background: #fff; box-shadow: 0 8px 20px rgba(37,99,235,.12); }
body.zc-app .zc-sidebar-brand .brand-mark img { width: 82%; height: 82%; filter: saturate(1.08) contrast(1.04); }
body.zc-app .zc-sidebar-brand .zc-wordmark { flex: 1 1 auto; }
body.zc-app .zc-sidebar-brand .zc-wordmark strong { color: #102451; }
body.zc-app .zc-sidebar-brand .zc-sidebar-collapse,
body.zc-app .zc-sidebar-brand .zc-sidebar-close { flex: 0 0 auto; }
body.zc-app .zc-nav-link:hover { color: var(--zc-brand-blue); background: rgba(214, 232, 255, .55); }
body.zc-app .zc-nav-link[data-zc-selected="true"] { color: #fff; background: var(--zc-brand-gradient); box-shadow: 0 8px 20px rgba(37, 99, 235, .22); }
body.zc-app .zc-nav-link[data-zc-selected="true"] .zc-nav-external { color: rgba(255, 255, 255, .78); }
body.zc-app .zc-sidebar-footer { border: 1px solid var(--zc-brand-line); box-shadow: 0 8px 22px rgba(37, 99, 235, .08); }
body.zc-app .zc-navbar {
  border-bottom-color: rgba(255, 255, 255, .12);
  background: linear-gradient(115deg, #08152f 0%, #102b5c 52%, #243f87 100%);
  box-shadow: 0 10px 28px rgba(8, 21, 47, .2);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}
body.zc-app .zc-navbar .zc-page-heading small { color: rgba(226, 239, 255, .72); }
body.zc-app .zc-navbar .zc-page-heading h1 { color: #fff; }
body.zc-app .zc-navbar .button,
body.zc-app .zc-navbar .icon-button { border-color: rgba(255,255,255,.2); background: rgba(255,255,255,.1); color: #fff; box-shadow: none; }
body.zc-app .zc-navbar .button:hover,
body.zc-app .zc-navbar .icon-button:hover { border-color: rgba(255,255,255,.42); background: rgba(255,255,255,.18); color: #fff; }
body.zc-app .zc-navbar .push-notifications.enabled,
body.zc-app .zc-navbar .push-notifications.enabled:hover { border-color: rgba(114,225,40,.5); background: rgba(114,225,40,.16); color: #d9ffc0; }
body.zc-app .zc-navbar .push-notifications[data-push-state="install"],
body.zc-app .zc-navbar .push-notifications[data-push-state="install"]:hover { border-color: rgba(253,181,40,.5); background: rgba(253,181,40,.16); color: #ffe2a6; }
/* The compact mobile rule in the base theme draws a second bell with ::before.
   Zelofy already renders the real bell span, so keep one crisp icon only. */
body.zc-app .zc-navbar .zc-push-icon::before { content: none !important; display: none !important; }
body.zc-app .zc-page-intro { overflow: hidden; position: relative; padding: 1rem 1.25rem; border: 1px solid rgba(214, 232, 255, .9); border-radius: .75rem; background: linear-gradient(112deg, rgba(255,255,255,.92), rgba(214,232,255,.56)); }
body.zc-app .zc-page-intro::after { content: ""; position: absolute; right: -3rem; top: -4rem; width: 11rem; height: 11rem; border: 2.25rem solid rgba(11, 196, 247, .08); border-radius: 50%; pointer-events: none; }
body.zc-app .panel,
body.zc-app .stat,
body.zc-app .zc-tool-card { border: 1px solid rgba(234, 240, 247, .95); box-shadow: var(--zc-brand-shadow); }
body.zc-app .stat:first-child { background: linear-gradient(145deg, #fff 15%, rgba(214, 232, 255, .52)); }
body.zc-app .zc-stat-icon.primary,
body.zc-app .zc-tool-icon.primary { color: #fff; background: var(--zc-brand-gradient); box-shadow: 0 8px 20px rgba(37, 99, 235, .2); }
body.zc-app .zc-chart-bar.total,
body.zc-app .zc-chart-legend i.total,
body.zc-app .team-progress:not(.overdue) .team-progress-track i { background: var(--zc-brand-gradient); }
body.zc-app .zc-donut { background: conic-gradient(var(--zc-brand-blue) var(--zc-progress), var(--zc-brand-ice) 0); }
body.zc-app .zc-card-badge,
body.zc-app .priority,
body.zc-app .avatar,
body.zc-app .cleaner-cost-meta { color: var(--zc-brand-blue); background: linear-gradient(135deg, rgba(11,196,247,.12), rgba(109,92,246,.13)); }
body.zc-app .zc-breakdown-row.pending i { border-color: #9cc7ff; }
body.zc-app .zc-performance-card .zc-breakdown-row.total i { background: var(--zc-brand-cyan); }
body.zc-app .zc-performance-card .zc-breakdown-row.lifetime i { background: var(--zc-brand-blue); }
body.zc-app .zc-performance-card .zc-breakdown-row.done i { background: var(--zc-success); }
body.zc-app .zc-performance-card .zc-breakdown-row.remaining i { border: 1px solid #9cc7ff; background: var(--zc-brand-ice); }
body.zc-app .day-head.today { background: linear-gradient(120deg, #dff5ff, #e8e6ff); }
body.zc-app .clean-task:not(.turnover):hover,
body.zc-app .cleaner-list .cleaner-card:hover { border-color: #9cc7ff !important; }
body.zc-app .pill.custom,
body.zc-app .pill.estimated-start,
body.zc-app.mobile-admin .task-badges .pill.estimated-start { border-color: #aacbff; background: #edf4ff; color: #1d4ed8; }
body.zc-app .zc-cost-overview > span { background: linear-gradient(135deg, rgba(11,196,247,.1), rgba(109,92,246,.11)); }

/* Dashboard hierarchy: team first, then attention. The legacy attention rule
   used negative order and made the page feel nested and out of sequence. */
body.zc-app .zc-dashboard-grid > .zc-team-snapshot { order: 0; }
body.zc-app .zc-dashboard-grid > .attention-panel { order: 1; }
body.zc-app .zc-dashboard-grid > .zc-analytics-card { order: 2; }
body.zc-app .zc-dashboard-grid > .zc-performance-card { order: 3; }
body.zc-app .zc-dashboard-grid > .zc-cleaning-cost-card { order: 4; }
body.zc-app .attention-head-actions { align-self: center; }
body.zc-app .attention-total {
  min-width: 0;
  padding: .4375rem .6875rem;
  border: 1px solid #ffd0d5;
  border-radius: 999px;
  background: #fff1f3;
  color: #c1354d;
  font-size: .6875rem;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
}
body.zc-app .attention-panel.has-critical .attention-total { border-color: #ffb8c0; background: #ffe5e9; color: #b4233a; }

/* Airbnb review surface keeps the admin type scale but uses Airbnb identity. */
body.zc-app #airbnb-reviews-modal { background: rgba(34, 34, 34, .52); }
body.zc-app .airbnb-reviews-card { border-color: #f1d7dc; border-radius: 1.25rem; box-shadow: 0 28px 80px rgba(72, 20, 34, .25); }
body.zc-app .airbnb-reviews-head {
  grid-template-columns: 42px minmax(0,1fr) auto 36px;
  gap: .75rem;
  padding: 1rem 1.125rem;
  border-bottom-color: #f4dce1;
  background: linear-gradient(120deg, #fff 0%, #fff5f7 100%);
}
body.zc-app .airbnb-brand-mark {
  position: relative;
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border-radius: .875rem;
  background: #ff385c;
  color: #fff;
  font-size: 1rem;
  font-weight: 700;
  box-shadow: 0 8px 18px rgba(255,56,92,.2);
}
body.zc-app .airbnb-reviews-head small { color: #b52b47; }
body.zc-app .airbnb-reviews-head h2 { color: #222; }
body.zc-app .airbnb-reviews-score { color: #222; }
body.zc-app .airbnb-reviews-score i { color: #ff385c; }
body.zc-app .airbnb-reviews-head .icon-button { border-color: #f0d8dd; background: #fff; color: #5b5660; }
body.zc-app .airbnb-reviews-body { padding: .875rem; background: #fffafb; }
body.zc-app .airbnb-reviews-summary { margin-bottom: .75rem; border-color: #f2d9de; background: #fff1f4; color: #8a4050; }
body.zc-app .airbnb-reviews-list { gap: .75rem; }
body.zc-app .airbnb-review-card { border-color: #eadfe2; border-radius: .875rem; box-shadow: 0 4px 14px rgba(72,20,34,.05); }
body.zc-app .airbnb-review-card > header { border-bottom-color: #f1e5e8; background: #fff7f9; }
body.zc-app .airbnb-review-card > header b { color: #d5264b; }
body.zc-app .airbnb-review-property { border-color: #f2dce1; background: #fff5f7; }
body.zc-app .airbnb-review-property small { color: #a34a5e; }
body.zc-app .airbnb-review-property strong { color: #292326; }
body.zc-app .airbnb-review-section { background: #faf7f8; }
body.zc-app .airbnb-review-section.public { border-left: 3px solid #ff385c; border-radius: 0 .625rem .625rem 0; background: #fff7f9; }
body.zc-app .airbnb-review-section.public > small,
body.zc-app .airbnb-review-section.response > small { color: #b52b47; }
body.zc-app .airbnb-review-section.response { border-left-color: #ff385c; background: #fff1f4; }
body.zc-app .airbnb-review-section p { color: #3f383b; }
body.zc-app .airbnb-reviews-loading::before { border-color: #ffd7df; border-top-color: #ff385c; }

/* Agenda day headers stay inside the card at every mobile width. */
body.zc-app.mobile-admin .schedule,
body.zc-app.mobile-admin .day-column,
body.zc-app.mobile-admin .day-head,
body.zc-app.mobile-admin .day-head-copy { width: 100%; min-width: 0; max-width: 100%; }
body.zc-app.mobile-admin .day-column { overflow: hidden; }
body.zc-app.mobile-admin .day-head { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .75rem; padding: .875rem 1rem; }
body.zc-app.mobile-admin .day-head-copy { display: flex; align-items: baseline; flex-wrap: wrap; gap: .25rem .625rem; overflow: hidden; }
body.zc-app.mobile-admin .day-head strong,
body.zc-app.mobile-admin .day-head small { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.zc-app.mobile-admin .day-head small { width: auto; padding: 0 !important; border-radius: 0; background: transparent !important; color: #53647c !important; }
body.zc-app.mobile-admin .day-close-button { align-self: center; justify-self: end; }

/* Cleaner app */
body.zc-cleaner-app .mobile-shell { background: transparent; }
body.zc-cleaner-app .mobile-top {
  border-bottom-color: rgba(214, 232, 255, .85);
  background: rgba(247, 250, 255, .88);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}
body.zc-cleaner-app .mobile-top .avatar { background: linear-gradient(135deg, #dff5ff, #e8e6ff); color: var(--zc-brand-blue); }
body.zc-cleaner-app .mobile-summary { overflow: hidden; border: 1px solid #cfe3ff; background: linear-gradient(120deg, rgba(255,255,255,.96), rgba(214,232,255,.75)); color: var(--zc-brand-ink); box-shadow: var(--zc-brand-shadow); }
body.zc-cleaner-app .mobile-summary::after { content: ""; position: absolute; right: -2.5rem; top: -3rem; width: 8rem; height: 8rem; border: 1.7rem solid rgba(11,196,247,.1); border-radius: 50%; }
body.zc-cleaner-app .mobile-summary > span { z-index: 1; background: rgba(214, 232, 255, .86); color: #1d4ed8; }
body.zc-cleaner-app .date-section { border: 1px solid rgba(234, 240, 247, .98); box-shadow: var(--zc-brand-shadow); }
body.zc-cleaner-app .mobile-schedule .date-section { overflow: visible; border-color: #d6e8ff; background: rgba(255,255,255,.94); box-shadow: 0 10px 26px rgba(37,99,235,.08); }
body.zc-cleaner-app .mobile-schedule .date-title {
  position: sticky;
  top: calc(64px + env(safe-area-inset-top, 0px));
  z-index: 19;
  min-height: 44px;
  padding: .65rem .75rem;
  border-bottom-color: #d6e8ff;
  border-radius: .625rem .625rem 0 0;
  background: #eef5ff;
  line-height: 1.2;
  box-shadow: 0 5px 12px rgba(11, 23, 57, .1);
}
body.zc-cleaner-app .mobile-schedule .date-title strong {
  flex: 1 1 auto;
  min-width: 0;
  line-height: 1.25;
  text-transform: none;
}
body.zc-cleaner-app .mobile-schedule .date-title em,
body.zc-cleaner-app .mobile-schedule .date-title span {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: auto;
  height: 22px;
  min-height: 22px;
  padding: 0 7px;
  line-height: 1;
}
body.zc-cleaner-app .mobile-schedule .date-title span {
  min-width: 22px;
  margin-left: auto;
}
body.zc-cleaner-app .mobile-schedule .date-section.today { border-color: #94c4ff; background: #f8fbff; box-shadow: 0 12px 30px rgba(37,99,235,.13); }
body.zc-cleaner-app .mobile-schedule .date-section.today .date-title { border-bottom-color: #b8d7ff; background: linear-gradient(120deg, #dff5ff, #e8e6ff); }
body.zc-cleaner-app .date-section.today .date-title { background: linear-gradient(120deg, #dff5ff, #e8e6ff); }
body.zc-cleaner-app .date-section.today .date-title span,
body.zc-cleaner-app .date-section .date-title em { background: var(--zc-brand-gradient); }
body.zc-cleaner-app .mobile-task:hover,
body.zc-cleaner-app .mobile-task.current { border-color: #9cc7ff; background: #edf5ff; }
body.zc-cleaner-app .mobile-task .priority { background: linear-gradient(135deg, #dff5ff, #e8e6ff); color: var(--zc-brand-blue); }
body.zc-cleaner-app .mobile-live-progress { background: linear-gradient(120deg, #eaf7ff, #efedff); }
body.zc-cleaner-app .mobile-live-progress:not(.overdue) > span strong { color: var(--zc-brand-blue); }
body.zc-cleaner-app .mobile-live-progress > i { background: #c7dcff; }
body.zc-cleaner-app .mobile-live-progress:not(.overdue) > i > b,
body.zc-cleaner-app .slide-fill,
body.zc-cleaner-app .checklist-progress i { background: var(--zc-brand-gradient); }
body.zc-cleaner-app .slide-control { border-color: #a8caff; background: #edf5ff; }
body.zc-cleaner-app .slide-knob { color: var(--zc-brand-blue); }
body.zc-cleaner-app .note-add { background: var(--zc-brand-gradient); box-shadow: 0 10px 24px rgba(37, 99, 235, .24); }
/* Completed and checked controls deliberately remain green. */
body.zc-cleaner-app .slide-control.done .slide-fill { background: #72e128; }

/* Primary operational tools that were part of the old green identity. */
body.zc-app .task-progress:not(.overdue):not(.learning) .task-progress-track i,
body.zc-app .task-live-section:not(.overdue):not(.complete) .task-live-track i { background: var(--zc-brand-gradient); }
body.zc-app .task-live-section:not(.overdue):not(.complete) { border-color: #b8d7ff; background: linear-gradient(145deg, #eef8ff, #f7f5ff); box-shadow: 0 8px 24px rgba(37,99,235,.09); }
body.zc-app .task-live-section:not(.overdue):not(.complete) .task-live-head small,
body.zc-app .task-live-section:not(.overdue):not(.complete) .task-live-head > strong { color: var(--zc-brand-blue); }
body.zc-app .task-live-section:not(.overdue):not(.complete) .task-live-head h3 { color: var(--zc-brand-ink); }
body.zc-app .task-live-section:not(.overdue):not(.complete) .task-live-track { background: #d6e8ff; }
body.zc-app .task-live-section:not(.overdue):not(.complete) .task-live-metrics article { border-color: #d6e8ff; }
body.zc-app .task-detail-button { border-color: #b8d7ff; color: var(--zc-brand-blue); box-shadow: 0 2px 7px rgba(37,99,235,.1); }
body.zc-app .task-detail-button:hover { border-color: #7fb5ff; background: #edf5ff; }
body.zc-app .month-event:not(.turnover):hover { border-color: #8dbfff; background: #edf5ff; }
body.zc-app .task-comments-section > header > span,
body.zc-app .task-comment-item > span { background: #eaf3ff; color: var(--zc-brand-blue); }
body.zc-app .selected-property { border-color: #afcfff; background: #eaf3ff; color: #1d4ed8; }
body.zc-app .building-group-option.selected { border-color: #8dbfff; background: #eaf3ff; color: #1d4ed8; }
body.zc-app .building-group-option.selected small { background: #cfe2ff; color: #1d4ed8; }
body.zc-app .times-tabs button.active,
body.zc-app .building-time-badge { background: var(--zc-brand-gradient); color: #fff; }
body.zc-app .day-close-button:not(.active):hover,
body.zc-app .month-day-close:not(.active):hover,
body.zc-app .day-closure-toggle:hover { border-color: #8dbfff; background: #edf5ff; color: var(--zc-brand-blue); }
body.zc-app .day-closure-toggle:focus-visible { outline-color: rgba(37,99,235,.18); }
body.zc-cleaner-app .cleaner-message-mark { border-color: #fff; background: var(--zc-brand-gradient); box-shadow: 0 10px 24px rgba(37,99,235,.2); }
body.zc-cleaner-app .cleaner-message-mark i { background: transparent; border-color: #fff; }
body.zc-cleaner-app .cleaner-message-mark i::before,
body.zc-cleaner-app .cleaner-message-mark i::after { background: #fff; }
body.zc-cleaner-app .cleaner-message-eyebrow { color: var(--zc-brand-blue); }

/* Reviews: Zelofy chrome with gold rating semantics. */
body.zc-reviews-app {
  --air: var(--zc-brand-blue);
  --air-dark: #1d4ed8;
  --air-soft: #eaf3ff;
  --canvas: var(--zc-brand-canvas);
}
body.zc-reviews-app .page-loader { background: var(--zc-brand-canvas); }
body.zc-reviews-app .topbar { border-bottom-color: rgba(214, 232, 255, .85); background: rgba(247, 250, 255, .88); }
body.zc-reviews-app .hero {
  border-color: #cbe1ff;
  background:
    radial-gradient(circle at 88% 16%, rgba(255,255,255,.9), transparent 28%),
    linear-gradient(130deg, #fafdff 0%, #e6f5ff 48%, #e8e5ff 100%);
}
body.zc-reviews-app .hero::after { border-color: rgba(37, 99, 235, .07); }
body.zc-reviews-app .hero-rating { border-color: rgba(255,255,255,.95); background: rgba(255,255,255,.76); box-shadow: 0 18px 50px rgba(37,99,235,.12); }
body.zc-reviews-app .sync-status { border-color: rgba(37,99,235,.16); color: #53647c; }
body.zc-reviews-app .hero-rating strong i,
body.zc-reviews-app .rating-badge i,
body.zc-reviews-app .review-score i { color: #f4b400; }
body.zc-reviews-app .tab.active,
body.zc-reviews-app .sort-picker button.active { color: #fff; background: var(--zc-brand-gradient); box-shadow: 0 7px 18px rgba(37,99,235,.2); }
body.zc-reviews-app .property-card:hover { border-color: #9cc7ff; }
body.zc-reviews-app .property-image.placeholder { background: linear-gradient(145deg, #dff5ff, #e8e6ff); color: var(--zc-brand-blue); }
body.zc-reviews-app .guest-avatar { background: linear-gradient(145deg, #dff5ff, #f1efff); color: var(--zc-brand-blue); }
body.zc-reviews-app .review-section.response { border-left-color: var(--zc-brand-blue); background: #edf5ff; }
body.zc-reviews-app .full-review-section.public { border-left-color: var(--zc-brand-blue); background: #f4f8ff; }
body.zc-reviews-app .full-review-section.host { border-color: #cbe1ff; background: linear-gradient(135deg, #eaf5ff, #f2efff); }
body.zc-reviews-app .full-review-section.public > span,
body.zc-reviews-app .full-review-section.host > span { color: #1d4ed8; }
body.zc-reviews-app .modal-loading i { border-color: #d6e8ff; border-top-color: var(--zc-brand-blue); }
body.zc-reviews-app .eyebrow,
body.zc-reviews-app .property-action span { color: var(--zc-brand-blue); }
body.zc-reviews-app .loader-mark { animation: zc-brand-pulse 1.25s ease-in-out infinite; }
@keyframes zc-brand-pulse { 50% { transform: scale(.94); box-shadow: 0 5px 18px rgba(37,99,235,.12); } }

@media (max-width: 760px) {
  body.zc-app .zc-sidebar-brand { position: relative; display: grid; grid-template-columns: 46px auto; justify-content: center; gap: .8rem; padding-inline: 3.5rem; }
  body.zc-app .zc-sidebar-brand .brand-mark { width: 46px; height: 46px; flex-basis: 46px; }
  body.zc-app .zc-sidebar-brand .zc-sidebar-close { position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); }
  body.zc-app .zc-wordmark strong { font-size: 1.18rem; }
  body.zc-app .zc-wordmark small { font-size: .5rem !important; }
  body.zc-reviews-app { background: var(--zc-brand-canvas); }
  body.zc-app .airbnb-reviews-head { grid-template-columns: 38px minmax(0,1fr) auto 34px; gap: .5rem; }
  body.zc-app .airbnb-brand-mark { width: 38px; height: 38px; }
  body.zc-app #airbnb-reviews-modal {
    z-index: 1200;
    width: 100vw;
    height: 100dvh;
    box-sizing: border-box;
    place-items: center;
    padding: calc(env(safe-area-inset-top, 0px) + .75rem) 0 calc(env(safe-area-inset-bottom, 0px) + .75rem);
    overflow: hidden;
  }
  body.zc-app .airbnb-reviews-card {
    display: flex;
    flex-direction: column;
    width: min(760px, calc(100vw - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px) - 2rem));
    max-width: calc(100vw - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px) - 2rem);
    max-height: calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 1.5rem);
    margin: 0;
    justify-self: center;
    overflow: hidden;
    border-radius: 1.125rem;
  }
  body.zc-app .airbnb-reviews-card > .modal-head,
  body.zc-app .airbnb-reviews-card > .modal-footer { flex: 0 0 auto; }
  body.zc-app .airbnb-reviews-body {
    min-height: 0;
    flex: 1 1 auto;
    padding: .625rem;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }
}

@media (max-width: 1199.98px) {
  body.zc-app .zc-sidebar {
    padding-top: env(safe-area-inset-top);
    padding-bottom: env(safe-area-inset-bottom);
  }
  body.zc-app .zc-sidebar-brand {
    min-height: 72px;
    padding: .75rem 1rem;
  }
  body.zc-app.mobile-admin .zc-navbar {
    min-height: calc(64px + env(safe-area-inset-top));
    padding: env(safe-area-inset-top) 1rem 0;
    background: linear-gradient(115deg, #08152f 0%, #102b5c 52%, #243f87 100%);
  }
}

body.zc-app .task-detail-hero h3 { color: #fff; }
body.zc-app.mobile-admin .day-head.today strong { color: var(--zc-brand-ink) !important; }
body.zc-app.mobile-admin .day-head.today small { background: transparent !important; color: #53647c !important; }

/* Mobile admin: every inline sheet respects the iPhone camera and home indicator. */
body.zc-app.mobile-admin .modal {
  z-index: 1200;
  place-items: center;
  padding: calc(env(safe-area-inset-top, 0px) + .75rem) .5rem calc(env(safe-area-inset-bottom, 0px) + .75rem);
  overflow: hidden;
}
body.zc-app.mobile-admin .modal > .modal-card {
  display: flex;
  flex-direction: column;
  max-height: calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 1.5rem);
  margin: 0;
  overflow: hidden;
  border-radius: 1.125rem;
}
body.zc-app.mobile-admin .modal > .modal-card > .modal-head,
body.zc-app.mobile-admin .modal > .modal-card > .modal-footer { flex: 0 0 auto; }
body.zc-app.mobile-admin .modal > .modal-card > .modal-body {
  min-height: 0;
  flex: 1 1 auto;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
body.zc-app.mobile-admin .image-viewer-modal {
  z-index: 1300;
  padding: calc(env(safe-area-inset-top, 0px) + .75rem) .5rem calc(env(safe-area-inset-bottom, 0px) + .75rem);
}
body.zc-app.mobile-admin .image-viewer-card {
  width: min(100%, 760px);
  max-height: calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 1.5rem);
  margin: 0;
}

/* The phone agenda is one clean full-width stream, without the old green nesting. */
body.zc-app.mobile-admin .schedule-wrap { background: #fff; }
body.zc-app.mobile-admin .schedule {
  gap: 0;
  padding: 0;
  background: #fff;
}
body.zc-app.mobile-admin .day-column {
  border: 0;
  border-bottom: 1px solid #d9e6f4;
  border-radius: 0;
  background: #fff;
  box-shadow: none;
}
body.zc-app.mobile-admin .day-column + .day-column::before {
  content: "";
  display: block;
  height: 1.5rem;
  border-top: 1px solid #c9d8ec;
  border-bottom: 1px solid #c2d3ea;
  background: linear-gradient(90deg, #e5edf8 0%, #dce9fb 52%, #e8e8ff 100%);
}
body.zc-app.mobile-admin .day-head {
  min-height: 70px;
  padding: 1rem 1.125rem;
  border-bottom: 1px solid #cddff4;
  border-radius: 0;
  background: linear-gradient(110deg, #edf6ff 0%, #f0efff 100%);
  box-shadow: inset 6px 0 0 #2563eb;
}
body.zc-app.mobile-admin .day-head strong {
  color: var(--zc-brand-ink);
  font-size: 1.0625rem;
  font-weight: 700;
}
body.zc-app.mobile-admin .day-head small {
  color: #405673 !important;
  font-size: .8125rem;
  font-weight: 600;
}
body.zc-app.mobile-admin .day-head.today {
  background: linear-gradient(110deg, #dff5ff 0%, #e8e6ff 100%);
  box-shadow: inset 6px 0 0 #0bc4f7;
}
body.zc-app.mobile-admin .day-body {
  padding: .875rem .75rem 1rem;
  background: #fff;
}
body.zc-app.mobile-admin .day-body > .clean-task:last-child { margin-bottom: 0; }

/* Estimated start belongs with the timing details, not the status badges. */
body.zc-app .task-start-row { display: none; }
body.zc-app.mobile-admin .task-badges .pill.estimated-start { display: none; }
body.zc-app.mobile-admin .task-start-row {
  min-height: 42px;
  display: flex;
  align-items: center;
  padding: .625rem .75rem;
  border-radius: .5rem;
  background: #f5f5f7;
  color: var(--zc-brand-text);
  font-size: .75rem;
}
body.zc-app.mobile-admin .task-start-row .task-estimate { width: 100%; }
body.zc-app.mobile-admin .task-footer > .task-estimate {
  width: 100%;
  flex: 1 1 auto;
}

/* Agenda hierarchy: day -> cleaner -> building -> that cleaner's own priority. */
body.zc-app .cleaner-agenda-group {
  min-width: 0;
  margin: 0;
  border: 1px solid #d7e3f1;
  border-radius: .75rem;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 4px 14px rgba(20, 49, 91, .07);
}
body.zc-app .cleaner-agenda-group + .cleaner-agenda-group { margin-top: .875rem; }
body.zc-app .cleaner-agenda-header {
  min-height: 58px;
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .75rem .875rem;
  background: linear-gradient(120deg, #10244d 0%, #204b94 100%);
  color: #fff;
}
body.zc-app .cleaner-agenda-group.is-unassigned .cleaner-agenda-header {
  background: linear-gradient(120deg, #6d4306 0%, #9b6814 100%);
}
body.zc-app .cleaner-agenda-avatar {
  width: 36px;
  height: 36px;
  flex: 0 0 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255, 255, 255, .3);
  border-radius: .625rem;
  background: rgba(255, 255, 255, .14);
  color: #fff;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .035em;
}
body.zc-app .cleaner-agenda-copy { min-width: 0; display: grid; gap: .125rem; }
body.zc-app .cleaner-agenda-copy strong {
  overflow: hidden;
  color: #fff;
  font-size: .9375rem;
  font-weight: 700;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.zc-app .cleaner-agenda-copy small { color: #d6e8ff; font-size: .6875rem; line-height: 1.2; }
body.zc-app .cleaner-agenda-mode {
  flex: 0 0 auto;
  margin-left: auto;
  padding: .35rem .55rem;
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: 999px;
  background: rgba(255, 255, 255, .13);
  color: #fff;
  font-size: .65rem;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}
body.zc-app .cleaner-agenda-mode.manual { background: rgba(109, 92, 246, .42); }
body.zc-app .cleaner-agenda-mode.mixed { background: rgba(253, 181, 40, .3); }
body.zc-app .cleaner-agenda-mode.completed { background: rgba(114, 225, 40, .22); }
body.zc-app .cleaner-agenda-list {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .625rem;
  padding: .75rem;
  background: #f8fafd;
}
body.zc-app .agenda-building-header {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: .625rem;
  padding: .25rem .125rem;
  color: #315d99;
}
body.zc-app .agenda-building-header::after {
  content: "";
  min-width: 16px;
  height: 1px;
  flex: 1 1 auto;
  background: #cadbef;
}
body.zc-app .agenda-building-header span {
  font-size: .6875rem;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
  white-space: nowrap;
}
body.zc-app .agenda-building-header small {
  order: 3;
  color: #71839a;
  font-size: .625rem;
  white-space: nowrap;
}
body.zc-app .cleaner-agenda-list > .clean-task { margin: 0; }
body.zc-app .agenda-plan-block {
  min-width: 0;
  display: grid;
  grid-template-columns: 2.25rem minmax(0, 1fr) auto;
  align-items: center;
  gap: .625rem;
  padding: .625rem .75rem;
  border: 1px solid #c9dcf5;
  border-radius: .75rem;
  background: linear-gradient(120deg, #f4f9ff, #edf4ff);
  color: #173b6d;
  box-shadow: 0 .25rem .75rem rgba(37, 99, 235, .07);
}
body.zc-app .agenda-plan-block.break { border-color: #f1d69a; background: linear-gradient(120deg, #fffaf0, #fff3d5); color: #7b4b08; }
body.zc-app .agenda-plan-block.post-break-preparation { border-color: #d9cef9; background: linear-gradient(120deg, #faf8ff, #f1edff); color: #5335a3; }
body.zc-app .agenda-plan-icon {
  display: grid;
  place-items: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: .625rem;
  background: #dcecff;
  color: #2563eb;
  font-size: 1rem;
}
body.zc-app .agenda-plan-block.break .agenda-plan-icon { background: #ffebbd; color: #a16207; }
body.zc-app .agenda-plan-block.post-break-preparation .agenda-plan-icon { background: #e8e1ff; color: #6d4eea; }
body.zc-app .agenda-plan-block > span:nth-child(2) { min-width: 0; display: grid; gap: .125rem; }
body.zc-app .agenda-plan-block strong { font-size: .75rem; line-height: 1.15; }
body.zc-app .agenda-plan-block small { color: #6d7f96; font-size: .625rem; line-height: 1.15; }
body.zc-app .agenda-plan-block time { font-size: .75rem; font-weight: 850; white-space: nowrap; }

@media (max-width: 760px) {
  body.zc-app.mobile-admin .day-body { padding-inline: .625rem; }
  body.zc-app.mobile-admin .cleaner-agenda-group + .cleaner-agenda-group { margin-top: 1rem; }
  body.zc-app.mobile-admin .cleaner-agenda-header { min-height: 62px; padding: .75rem; }
  body.zc-app.mobile-admin .cleaner-agenda-copy strong { font-size: .9rem; }
  body.zc-app.mobile-admin .cleaner-agenda-mode { max-width: 42%; overflow: hidden; text-overflow: ellipsis; }
  body.zc-app.mobile-admin .cleaner-agenda-list { gap: .625rem; padding: .625rem; }
  body.zc-app.mobile-admin .agenda-building-header { padding-block: .375rem .125rem; }
  body.zc-app.mobile-admin .mobile-priority-controls .button:disabled { opacity: .38; box-shadow: none; }
}

/* Keep the current day visible while its cleaner groups scroll. The next
   day's header naturally pushes it away at the end of the section. */
body.zc-app.mobile-admin .zc-agenda-panel,
body.zc-app.mobile-admin #week-view,
body.zc-app.mobile-admin .schedule-wrap,
body.zc-app.mobile-admin .day-column {
  overflow: visible;
}
body.zc-app.mobile-admin .day-head {
  position: sticky;
  top: calc(64px + env(safe-area-inset-top, 0px));
  z-index: 24;
  box-shadow: inset 6px 0 0 #2563eb, 0 6px 14px rgba(11, 23, 57, .12);
}
body.zc-app.mobile-admin .day-head.today {
  box-shadow: inset 6px 0 0 #0bc4f7, 0 6px 14px rgba(11, 23, 57, .12);
}
body.zc-app.mobile-admin .zc-navbar {
  z-index: 1000;
  isolation: isolate;
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}
body.zc-app.mobile-admin .cleaner-agenda-group {
  overflow: visible;
}
body.zc-app.mobile-admin .cleaner-agenda-header {
  position: sticky;
  top: calc(134px + env(safe-area-inset-top, 0px));
  z-index: 23;
  min-height: 48px;
  gap: .625rem;
  padding: .5rem .625rem;
  border-radius: 0;
  box-shadow: 0 4px 10px rgba(11, 23, 57, .12);
}
body.zc-app.mobile-admin .cleaner-agenda-avatar {
  width: 30px;
  height: 30px;
  flex-basis: 30px;
  border-radius: .5rem;
  font-size: .65rem;
}
body.zc-app.mobile-admin .cleaner-agenda-copy strong {
  font-size: .8125rem;
}
body.zc-app.mobile-admin .cleaner-agenda-copy small {
  font-size: .625rem;
}
body.zc-app.mobile-admin .cleaner-agenda-mode {
  max-width: 38%;
  padding: .3rem .45rem;
  font-size: .5625rem;
}

/* Cleaner editor: profile, contract and properties become distinct sections. */
body.zc-app .cleaner-editor-card { width: min(780px, 96vw); }
body.zc-app .cleaner-editor-card > .modal-head > div { min-width: 0; }
body.zc-app .cleaner-editor-card > .modal-head small {
  display: block;
  margin-top: .25rem;
  color: var(--zc-brand-muted);
  font-size: .75rem;
}
body.zc-app .cleaner-editor-body {
  display: grid;
  gap: 1rem;
  background: #f4f7fb;
}
body.zc-app .cleaner-form-section {
  min-width: 0;
  padding: 1rem;
  border: 1px solid #dce7f4;
  border-radius: .875rem;
  background: #fff;
  box-shadow: 0 5px 16px rgba(11, 23, 57, .04);
}
body.zc-app .cleaner-form-section > header {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr);
  align-items: center;
  gap: .75rem;
  margin-bottom: 1rem;
}
body.zc-app .cleaner-section-icon {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: .6875rem;
  background: linear-gradient(135deg, #e2f6ff, #eceaff);
  color: var(--zc-brand-blue);
  font-size: 1.125rem;
}
body.zc-app .cleaner-form-section > header h3,
body.zc-app .cleaner-form-section > header p { margin: 0; }
body.zc-app .cleaner-form-section > header h3 { color: var(--zc-brand-ink); font-size: .9375rem; font-weight: 600; }
body.zc-app .cleaner-form-section > header p { margin-top: .1875rem; color: var(--zc-brand-muted); font-size: .75rem; line-height: 1.4; }
body.zc-app .cleaner-form-section .form-grid { gap: .75rem; }
body.zc-app .cleaner-form-section .field { margin-bottom: 0; }
body.zc-app .cleaner-password-field { grid-column: 1 / -1; }
body.zc-app .cleaner-active-option { width: max-content; margin-top: .875rem; }
body.zc-app .employment-type-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .75rem;
}
body.zc-app .employment-type-option { position: relative; cursor: pointer; }
body.zc-app .employment-type-option > input { position: absolute; opacity: 0; pointer-events: none; }
body.zc-app .employment-type-option > span {
  min-height: 84px;
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr);
  grid-template-rows: auto auto;
  align-content: center;
  column-gap: .625rem;
  padding: .75rem;
  border: 1px solid #d9e3ef;
  border-radius: .75rem;
  background: #f9fbfe;
  transition: border-color .15s, background .15s, box-shadow .15s;
}
body.zc-app .employment-type-option > span > i {
  grid-row: 1 / 3;
  align-self: center;
  color: #61728a;
  font-size: 1.375rem;
}
body.zc-app .employment-type-option b { color: var(--zc-brand-ink); font-size: .875rem; font-weight: 600; }
body.zc-app .employment-type-option small { color: var(--zc-brand-muted); font-size: .6875rem; line-height: 1.35; }
body.zc-app .employment-type-option > input:checked + span {
  border-color: #7fb5ff;
  background: #eef6ff;
  box-shadow: 0 0 0 2px rgba(37, 99, 235, .1);
}
body.zc-app .employment-type-option > input:checked + span > i,
body.zc-app .employment-type-option > input:checked + span b { color: var(--zc-brand-blue); }
body.zc-app .employment-type-option > input:focus-visible + span { outline: 3px solid rgba(11, 196, 247, .35); outline-offset: 2px; }
body.zc-app .employment-fields { margin-top: 1rem; }
body.zc-app .cleaner-schedule-block {
  margin-top: .875rem;
  padding: .875rem;
  border: 1px solid #e1e8f1;
  border-radius: .75rem;
  background: #f8fafc;
}
body.zc-app .cleaner-subsection-title { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: .75rem; }
body.zc-app .cleaner-subsection-title strong { color: var(--zc-brand-ink); font-size: .8125rem; }
body.zc-app .cleaner-subsection-title small,
body.zc-app .cleaner-availability-help { color: var(--zc-brand-muted); font-size: .6875rem; }
body.zc-app .cleaner-availability-help { display: block; margin-top: .75rem; line-height: 1.45; }
body.zc-app .daily-rate-note {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  gap: .625rem;
  margin-top: .75rem;
  padding: .75rem;
  border: 1px solid #cce2ff;
  border-radius: .75rem;
  background: #f0f7ff;
  color: #3f5878;
  font-size: .75rem;
  line-height: 1.45;
}
body.zc-app .daily-rate-note i { color: var(--zc-brand-blue); font-size: 1.125rem; }
body.zc-app .cleaner-form-section .guesty-auto-note { margin-top: 0; }
body.zc-app .cleaner-form-section .property-picker { margin-top: .875rem; }

/* Team cards: readable identity, units, schedule, cost and live status rows. */
body.zc-app .cleaner-list .cleaner-card {
  grid-template-columns: 48px minmax(0, 1fr);
  align-items: start;
  gap: .75rem;
  padding: 1rem;
  text-align: left;
}
body.zc-app .cleaner-list .cleaner-card > .avatar { width: 48px; height: 48px; font-size: .8125rem; }
body.zc-app .cleaner-identity > strong {
  min-height: 24px;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .375rem;
  font-size: .9375rem;
  line-height: 1.3;
}
body.zc-app .cleaner-identity .guesty-badge,
body.zc-app .cleaner-identity .status-dot { margin-left: 0; }
body.zc-app .cleaner-meta-row {
  display: flex;
  flex-wrap: wrap;
  gap: .375rem;
  margin-top: .5rem;
}
body.zc-app .cleaner-meta-chip {
  display: inline-flex;
  align-items: center;
  gap: .3125rem;
  padding: .3125rem .5rem;
  border: 1px solid #dfe7f1;
  border-radius: 999px;
  background: #f7f9fc;
  color: #52637a;
  font-size: .75rem;
  line-height: 1.1;
  white-space: nowrap;
}
body.zc-app .cleaner-meta-chip i { color: #687b95; font-size: .8125rem; }
body.zc-app .cleaner-meta-chip.fixed { border-color: #cfe0fa; background: #f1f6ff; color: #315c9c; }
body.zc-app .cleaner-meta-chip.daily { border-color: #d8d3ff; background: #f4f2ff; color: #5748b5; }
body.zc-app .cleaner-cost-meta,
body.zc-app .availability-meta,
body.zc-app .access-pending { margin-top: .5rem !important; font-size: .75rem !important; line-height: 1.35; }
body.zc-app .cleaner-current {
  grid-column: 1 / -1;
  width: 100%;
  min-width: 0;
  margin-top: .125rem;
  padding: .75rem .875rem;
  border: 0;
  border-top: 1px solid #e2e8f0;
  border-radius: .625rem;
  background: #f7f9fc;
  text-align: left;
}
body.zc-app .cleaner-current > small { margin-bottom: .25rem; color: #718198; font-size: .6875rem; text-align: left; }
body.zc-app .cleaner-current > strong { font-size: 1rem; line-height: 1.25; }
body.zc-app .cleaner-current > em { font-size: .75rem; }
body.zc-app .cleaner-current.is-idle { text-align: left; }
body.zc-app .cleaner-card.is-daily .cleaner-current.is-idle strong { color: var(--zc-brand-blue); }

@media (max-width: 760px) {
  body.zc-app.mobile-admin .modal > .modal-card { width: 100%; max-width: 100%; }
  body.zc-app .cleaner-editor-body { padding: .75rem; }
  body.zc-app .cleaner-form-section { padding: .875rem; }
  body.zc-app .employment-type-options { grid-template-columns: 1fr; }
  body.zc-app .employment-type-option > span { min-height: 72px; }
  body.zc-app .cleaner-subsection-title { align-items: flex-start; flex-direction: column; gap: .125rem; }
  body.zc-app .cleaner-editor-card .modal-footer { flex-wrap: wrap; }
  body.zc-app .cleaner-editor-card .modal-footer .footer-spacer { display: none; }
  body.zc-app .cleaner-editor-card .modal-footer .button { flex: 1 1 calc(50% - .5rem); }
  body.zc-app .cleaner-list { padding: .75rem; }
  body.zc-app .cleaner-list .cleaner-card { padding: .875rem; }
  body.zc-app .cleaner-meta-chip { font-size: .72rem; white-space: normal; }
  body.zc-app .selected-properties { gap: .5rem; }
}

@media (prefers-reduced-motion: reduce) {
  body.zc-reviews-app .loader-mark { animation: none; }
}

/* Header team pulse: a compact live roster without leaving the current page. */
body.zc-app .zc-team-live-button {
  position: relative;
  isolation: isolate;
}
body.zc-app .zc-team-live-button > b {
  position: absolute;
  z-index: 2;
  top: -.45rem;
  right: -.4rem;
  min-width: 1.25rem;
  height: 1.25rem;
  display: inline-grid;
  place-items: center;
  padding: 0 .25rem;
  border: 2px solid #102650;
  border-radius: 999px;
  background: #0bc4f7;
  color: #07143b;
  font-size: .625rem;
  font-style: normal;
  font-weight: 700;
  line-height: 1;
  box-shadow: 0 3px 10px rgba(11, 196, 247, .32);
}
body.zc-app .zc-team-live-button.has-active {
  border-color: rgba(11, 196, 247, .72) !important;
  background: rgba(11, 196, 247, .16) !important;
  box-shadow: inset 0 0 0 1px rgba(11, 196, 247, .12), 0 6px 16px rgba(3, 15, 45, .16);
}

body.zc-app .team-live-modal-card {
  width: min(45rem, calc(100vw - 2rem));
  max-height: min(48rem, calc(100dvh - 2rem - env(safe-area-inset-top) - env(safe-area-inset-bottom)));
  overflow: hidden;
}
body.zc-app .team-live-modal-head {
  display: grid;
  grid-template-columns: 2.75rem minmax(0, 1fr) auto;
  align-items: center;
  gap: .75rem;
}
body.zc-app .team-live-modal-head > div { min-width: 0; }
body.zc-app .team-live-modal-head h2,
body.zc-app .team-live-modal-head small { margin: 0; }
body.zc-app .team-live-modal-head small {
  display: block;
  margin-top: .125rem;
  color: var(--zc-brand-muted);
  font-size: .75rem;
}
body.zc-app .team-live-head-icon {
  width: 2.75rem;
  height: 2.75rem;
  display: grid;
  place-items: center;
  border-radius: .75rem;
  background: linear-gradient(135deg, #dff8ff, #ebe9ff);
  color: var(--zc-brand-blue);
  font-size: 1.25rem;
}
body.zc-app .team-live-modal-body {
  display: grid;
  gap: 1rem;
  overflow: auto;
  overscroll-behavior: contain;
}
body.zc-app .team-live-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .625rem;
}
body.zc-app .team-live-summary > span {
  min-width: 0;
  display: grid;
  gap: .125rem;
  padding: .75rem;
  border: 1px solid #e0e7f0;
  border-radius: .75rem;
  background: #f8fafd;
}
body.zc-app .team-live-summary small {
  color: #66758a;
  font-size: .6875rem;
  line-height: 1.25;
}
body.zc-app .team-live-summary strong {
  color: var(--zc-brand-ink);
  font-size: 1.35rem;
  font-weight: 600;
  line-height: 1;
}
body.zc-app .team-live-summary > .working {
  border-color: #9cdff2;
  background: #edfaff;
}
body.zc-app .team-live-summary > .working strong { color: #087ea4; }
body.zc-app .team-live-summary > .available {
  border-color: #bdddac;
  background: #f1faed;
}
body.zc-app .team-live-summary > .available strong { color: #3f7f28; }
body.zc-app .team-live-list {
  display: grid;
  gap: .75rem;
}
body.zc-app .team-live-person {
  overflow: hidden;
  border: 1px solid #dfe6ef;
  border-radius: .875rem;
  background: #fff;
  box-shadow: 0 3px 10px rgba(38, 43, 67, .05);
}
body.zc-app .team-live-person.working {
  border-color: #8bd8ed;
  box-shadow: 0 4px 16px rgba(8, 126, 164, .1);
}
body.zc-app .team-live-person > header {
  min-width: 0;
  display: grid;
  grid-template-columns: 2.75rem minmax(0, 1fr) auto;
  align-items: center;
  gap: .75rem;
  padding: .875rem;
}
body.zc-app .team-live-person > header .avatar {
  width: 2.75rem;
  height: 2.75rem;
  background: linear-gradient(135deg, #e2f6ff, #eceaff);
  color: var(--zc-brand-blue);
}
body.zc-app .team-live-person-copy {
  min-width: 0;
  display: grid;
  gap: .125rem;
}
body.zc-app .team-live-person-copy strong {
  overflow: hidden;
  color: var(--zc-brand-ink);
  font-size: .9375rem;
  font-weight: 600;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.zc-app .team-live-person-copy small {
  overflow: hidden;
  color: #718096;
  font-size: .6875rem;
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.zc-app .team-live-person > header > em {
  display: inline-flex;
  align-items: center;
  min-height: 1.75rem;
  padding: .3125rem .625rem;
  border-radius: 999px;
  background: #eef1f5;
  color: #59677a;
  font-size: .6875rem;
  font-style: normal;
  font-weight: 600;
  line-height: 1.1;
  white-space: nowrap;
}
body.zc-app .team-live-person > header > em.working { background: #e6f8fd; color: #087ea4; }
body.zc-app .team-live-person > header > em.available { background: #edf8e8; color: #3f7f28; }
body.zc-app .team-live-person > header > em.off { background: #fff4db; color: #8a5b05; }
body.zc-app .team-live-person > header > em.inactive { background: #f3f4f6; color: #7a8492; }
body.zc-app .team-live-progress-list {
  display: grid;
  gap: .625rem;
  padding: 0 .875rem .875rem;
}
body.zc-app .team-live-progress-list .team-progress {
  min-width: 0;
  margin: 0;
  padding: .75rem;
  border: 1px solid #cde7ef;
  border-radius: .75rem;
  background: #f3fbfd;
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
body.zc-app .team-live-progress-list .team-progress + .team-progress {
  margin: 0;
  padding-top: .75rem;
}
body.zc-app .team-live-progress-list .team-progress:hover {
  border-color: #75cfe8;
  box-shadow: 0 4px 12px rgba(8, 126, 164, .1);
  transform: translateY(-1px);
}
body.zc-app .team-live-progress-list .team-progress-meta {
  margin: .3rem 0 .5rem;
  color: #63758b;
  font-size: .6875rem;
  font-weight: 500;
  white-space: normal;
}
body.zc-app .team-live-progress-list .team-progress-track { height: .5rem; }
body.zc-app .team-live-next-wrap {
  padding: 0 .875rem .875rem;
}
body.zc-app .team-live-next {
  width: 100%;
  min-width: 0;
  display: grid;
  grid-template-columns: 2.75rem minmax(0, 1fr) 1.5rem;
  align-items: center;
  gap: .75rem;
  padding: .625rem;
  border: 1px solid #d8e5f5;
  border-radius: .75rem;
  background: #f7faff;
  color: inherit;
  text-align: left;
  box-shadow: none;
}
body.zc-app .team-live-next:hover {
  border-color: #9fc5fa;
  background: #eff6ff;
}
body.zc-app .team-live-next.urgent {
  border-color: #f0c77e;
  background: #fff8ea;
}
body.zc-app .team-live-next.custom {
  border-color: #cec5ff;
  background: #f7f4ff;
}
body.zc-app .team-live-next > img {
  width: 2.75rem;
  height: 2.75rem;
  border-radius: .625rem;
  background: #e5edf7;
  object-fit: cover;
}
body.zc-app .team-live-next > span {
  min-width: 0;
  display: grid;
  gap: .0625rem;
}
body.zc-app .team-live-next small {
  color: var(--zc-brand-blue);
  font-size: .625rem;
  font-weight: 600;
  letter-spacing: .04em;
  line-height: 1.2;
  text-transform: uppercase;
}
body.zc-app .team-live-next strong {
  overflow: hidden;
  color: var(--zc-brand-ink);
  font-size: .8125rem;
  font-weight: 600;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.zc-app .team-live-next em {
  overflow: hidden;
  color: #6b7b91;
  font-size: .6875rem;
  font-style: normal;
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.zc-app .team-live-next > i {
  color: var(--zc-brand-blue);
  font-size: 1.25rem;
}
body.zc-app .team-live-idle {
  display: grid;
  grid-template-columns: 2rem minmax(0, 1fr);
  align-items: center;
  gap: .625rem;
  margin: 0 .875rem .875rem;
  padding: .625rem .75rem;
  border-radius: .625rem;
  background: #f7f9fc;
}
body.zc-app .team-live-idle > i {
  width: 2rem;
  height: 2rem;
  display: grid;
  place-items: center;
  border-radius: .5rem;
  background: #fff;
  color: #708096;
  font-size: 1rem;
}
body.zc-app .team-live-idle > span { min-width: 0; display: grid; gap: .125rem; }
body.zc-app .team-live-idle strong { color: #435169; font-size: .75rem; }
body.zc-app .team-live-idle small { color: #7c899b; font-size: .6875rem; }

@media (max-width: 767.98px) {
  body.zc-app.mobile-admin #team-live-modal {
    z-index: 1200;
    place-items: center;
  }
  body.zc-app .zc-navbar .zc-team-live-button {
    width: 2.375rem;
    height: 2.375rem;
    display: grid;
    place-items: center;
    padding: 0;
  }
  body.zc-app .zc-navbar .zc-team-live-button > span { display: none; }
  body.zc-app .zc-team-live-button > b { top: -.4rem; right: -.35rem; }
  body.zc-app .team-live-modal-card {
    width: 100%;
    max-width: 100%;
    max-height: min(42rem, calc(100dvh - max(1.5rem, env(safe-area-inset-top)) - max(1rem, env(safe-area-inset-bottom))));
  }
  body.zc-app .team-live-modal-head {
    position: relative;
    z-index: 2;
    grid-template-columns: 2.5rem minmax(0, 1fr) auto;
    padding: .875rem;
    background: #fff;
  }
  body.zc-app .team-live-head-icon { width: 2.5rem; height: 2.5rem; }
  body.zc-app .team-live-modal-body { padding: .75rem; }
  body.zc-app .team-live-summary { gap: .5rem; }
  body.zc-app .team-live-summary > span { padding: .625rem; }
  body.zc-app .team-live-summary small { font-size: .625rem; }
  body.zc-app .team-live-summary strong { font-size: 1.125rem; }
  body.zc-app .team-live-person > header {
    grid-template-columns: 2.5rem minmax(0, 1fr) auto;
    gap: .625rem;
    padding: .75rem;
  }
  body.zc-app .team-live-person > header .avatar { width: 2.5rem; height: 2.5rem; }
  body.zc-app .team-live-person > header > em {
    grid-column: auto;
    max-width: 7.75rem;
    margin: 0;
    text-align: center;
    white-space: normal;
  }
  body.zc-app .team-live-progress-list { padding: 0 .75rem .75rem; }
  body.zc-app .team-live-next-wrap { padding: 0 .75rem .75rem; }
  body.zc-app .team-live-idle { margin: 0 .75rem .75rem; }
  body.zc-app .team-live-modal-card .modal-footer { padding: .75rem; }
}

/* Native-feeling pull-to-reload for the installed mobile admin. */
body.zc-app.mobile-admin .zc-pull-refresh {
  --pull-distance: 0px;
  position: fixed;
  z-index: 1450;
  top: calc(env(safe-area-inset-top, 0px) + .5rem);
  left: 50%;
  min-height: 2.5rem;
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .5rem .75rem;
  border: 1px solid rgba(214, 232, 255, .3);
  border-radius: 999px;
  background: rgba(8, 21, 47, .94);
  color: #fff;
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, calc(-4rem + var(--pull-distance)));
  transition: opacity .14s ease, transform .14s ease, background .14s ease;
  box-shadow: 0 8px 24px rgba(3, 15, 45, .3);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  will-change: transform, opacity;
}
body.zc-app.mobile-admin .zc-pull-refresh.is-active { opacity: 1; transition: opacity .08s ease; }
body.zc-app.mobile-admin .zc-pull-refresh > i {
  width: 1.5rem;
  height: 1.5rem;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(214, 232, 255, .14);
  color: #8de8ff;
  font-size: 1rem;
  transition: transform .18s ease, background .18s ease;
}
body.zc-app.mobile-admin .zc-pull-refresh > span {
  font-size: .75rem;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
}
body.zc-app.mobile-admin .zc-pull-refresh.is-ready {
  border-color: rgba(11, 196, 247, .6);
  background: rgba(16, 43, 92, .97);
}
body.zc-app.mobile-admin .zc-pull-refresh.is-ready > i {
  background: #0bc4f7;
  color: #07143b;
  transform: rotate(180deg);
}
body.zc-app.mobile-admin .zc-pull-refresh.is-loading { opacity: 1; }
body.zc-app.mobile-admin .zc-pull-refresh.is-loading > i {
  background: #0bc4f7;
  color: #07143b;
  animation: zc-pull-spin .7s linear infinite;
}
html.zc-is-pull-reloading body.zc-app.mobile-admin .zc-main { opacity: .82; transition: opacity .18s ease; }
@keyframes zc-pull-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  body.zc-app.mobile-admin .zc-pull-refresh,
  body.zc-app.mobile-admin .zc-pull-refresh > i { transition: none; }
  body.zc-app.mobile-admin .zc-pull-refresh.is-loading > i { animation: none; }
}

/* Mobile agenda cards use the property photo as a true header banner. The
   operational content remains on a light surface below the divider. */
body.zc-app.mobile-admin .clean-task {
  overflow: hidden;
}
body.zc-app.mobile-admin .clean-task .task-drag-space {
  position: relative;
  min-height: 8.75rem;
  align-content: space-between;
  gap: .75rem;
  margin: -.8125rem -.8125rem 0;
  padding: 1rem 3.5rem 1rem 1rem;
  overflow: hidden;
  border-radius: .8125rem .8125rem 0 0;
  background: #10244d;
  isolation: isolate;
}
body.zc-app.mobile-admin .clean-task .task-drag-space::before {
  content: "";
  position: absolute;
  z-index: 1;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(5, 15, 38, .62) 0%, rgba(7, 21, 52, .4) 48%, rgba(7, 21, 52, .12) 100%),
    linear-gradient(0deg, rgba(5, 15, 38, .52) 0%, rgba(5, 15, 38, .02) 68%);
  pointer-events: none;
}
body.zc-app.mobile-admin .clean-task .task-top {
  grid-template-columns: 2.75rem minmax(0, 1fr);
  gap: .75rem;
  min-height: 4rem;
}
body.zc-app.mobile-admin .clean-task .task-image {
  position: absolute;
  z-index: 0;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  border-radius: 0;
  object-fit: cover;
  object-position: center;
  transform: scale(1.015);
  filter: brightness(1.16) saturate(1.06);
}
body.zc-app.mobile-admin .clean-task .task-top > .priority,
body.zc-app.mobile-admin .clean-task .task-copy,
body.zc-app.mobile-admin .clean-task .task-badges {
  position: relative;
  z-index: 2;
}
body.zc-app.mobile-admin .clean-task .priority,
body.zc-app.mobile-admin .clean-task.turnover .priority,
body.zc-app.mobile-admin .clean-task.custom-task .priority,
body.zc-app.mobile-admin .clean-task.status-in_progress .priority,
body.zc-app.mobile-admin .clean-task.is-cleaned .priority,
body.zc-app.mobile-admin .clean-task.unassigned .priority {
  width: 2.75rem;
  height: 2.75rem;
  border: 1px solid rgba(255, 255, 255, .75);
  border-radius: .75rem;
  background: rgba(255, 255, 255, .94);
  color: #173b78;
  font-size: 1rem;
  text-shadow: none;
  box-shadow: 0 .3rem 1rem rgba(3, 15, 45, .24);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
body.zc-app.mobile-admin .clean-task.turnover .priority { color: #8a4a05; }
body.zc-app.mobile-admin .clean-task.custom-task .priority { color: #4f42b5; }
body.zc-app.mobile-admin .clean-task.status-in_progress .priority { color: #076784; }
body.zc-app.mobile-admin .clean-task.is-cleaned .priority { color: #3f7f28; }
body.zc-app.mobile-admin .clean-task.unassigned .priority { color: #a52b26; }
body.zc-app.mobile-admin .clean-task .task-copy strong {
  overflow: visible;
  color: #fff;
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.25;
  white-space: normal;
  text-overflow: clip;
  text-shadow: 0 2px 7px rgba(0, 0, 0, .48);
}
body.zc-app.mobile-admin .clean-task .task-copy small {
  margin-top: .3rem;
  overflow: visible;
  color: #eaf2ff;
  font-size: .75rem;
  font-weight: 500;
  line-height: 1.35;
  white-space: normal;
  text-overflow: clip;
  text-shadow: 0 1px 5px rgba(0, 0, 0, .58);
}
body.zc-app.mobile-admin .clean-task .task-copy-cleaner { display: none; }
body.zc-app.mobile-admin .clean-task .property-airbnb-rating {
  margin-left: .375rem;
  padding: .25rem .4rem;
  border: 1px solid rgba(255, 221, 126, .52);
  border-radius: .4375rem;
  background: rgba(5, 15, 38, .62);
  color: #fff5d3;
  font-size: .72em;
  text-shadow: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, .18);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
body.zc-app.mobile-admin .clean-task .property-airbnb-rating i { color: #ffd34e; }
body.zc-app.mobile-admin .clean-task .property-airbnb-rating:hover,
body.zc-app.mobile-admin .clean-task .property-airbnb-rating:focus-visible {
  border-color: #ffd34e;
  background: rgba(5, 15, 38, .86);
  color: #fff;
  outline: 2px solid rgba(255, 211, 78, .52);
}
body.zc-app.mobile-admin .clean-task .task-badges {
  align-self: end;
  gap: .4375rem;
}
body.zc-app.mobile-admin .clean-task .task-badges .pill {
  min-height: 1.75rem;
  padding: .4rem .625rem;
  border-color: rgba(255, 255, 255, .76) !important;
  background: rgba(255, 255, 255, .94) !important;
  color: #26344d !important;
  font-size: .6875rem;
  font-weight: 700;
  text-shadow: none;
  box-shadow: 0 .2rem .75rem rgba(3, 15, 45, .2);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
body.zc-app.mobile-admin .clean-task .task-badges .pill.turnover {
  border-color: #ffd675 !important;
  background: #fdb528 !important;
  color: #422a00 !important;
}
body.zc-app.mobile-admin .clean-task .task-badges .pill.custom {
  border-color: #d8d2ff !important;
  background: #eeeaff !important;
  color: #4d3fb1 !important;
}
body.zc-app.mobile-admin .clean-task .task-badges .pill.in_progress {
  border-color: #b1edfb !important;
  background: #e2f9ff !important;
  color: #075e7b !important;
}
body.zc-app.mobile-admin .clean-task .task-badges .pill.cleaned {
  border-color: #c7e9b7 !important;
  background: #effae9 !important;
  color: #356f22 !important;
}
body.zc-app.mobile-admin .clean-task .task-badges .pill.failed,
body.zc-app.mobile-admin .clean-task .task-badges .pill.unassigned,
body.zc-app.mobile-admin .clean-task .task-badges .pill.schedule-risk {
  border-color: #ffc4c0 !important;
  background: #ffe9e7 !important;
  color: #9c211d !important;
}
body.zc-app.mobile-admin .clean-task .task-badges .pill.duty-warning {
  border-color: #ffdda2 !important;
  background: #fff3d9 !important;
  color: #815205 !important;
}
body.zc-app.mobile-admin .clean-task > .task-detail-button {
  z-index: 4;
  top: .75rem;
  right: .75rem;
  width: 2.25rem;
  height: 2.25rem;
  border: 1px solid rgba(255, 255, 255, .8);
  background: rgba(255, 255, 255, .94);
  color: #1d5dc4;
  box-shadow: 0 .3rem 1rem rgba(3, 15, 45, .25);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
body.zc-app.mobile-admin .clean-task .task-actions {
  margin-top: 0;
  padding-top: .875rem;
  border-top-color: #d8e0eb;
}

@media (max-width: 390px) {
  body.zc-app.mobile-admin .clean-task .task-drag-space {
    min-height: 8.25rem;
    padding-right: 3rem;
  }
  body.zc-app.mobile-admin .clean-task .task-copy strong { font-size: .9375rem; }
  body.zc-app.mobile-admin .clean-task .task-copy small { font-size: .6875rem; }
}

/* Date-focused agenda: the native picker keeps iPhone behavior while the
   surrounding control looks and reads like the other Zelofy actions. */
body.zc-app .agenda-date-picker-button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  overflow: hidden;
  cursor: pointer;
  isolation: isolate;
}
body.zc-app .agenda-date-picker-button > i,
body.zc-app .agenda-date-picker-button > span {
  pointer-events: none;
}
body.zc-app .agenda-date-picker-button input {
  position: absolute;
  z-index: 2;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: inherit;
  background: transparent;
  color: transparent;
  font-size: 16px;
  cursor: pointer;
  opacity: 0;
  -webkit-appearance: none;
  appearance: none;
}
body.zc-app .agenda-date-picker-button:focus-within,
body.zc-app .agenda-date-picker-button:focus-visible {
  outline: 3px solid rgba(11, 196, 247, .38);
  outline-offset: 2px;
}
body.zc-app .agenda-date-clear {
  border-color: #b9d5ff;
  background: #edf5ff;
  color: #1d5dc4;
}
body.zc-app .schedule.single-day {
  min-width: 0 !important;
  grid-template-columns: minmax(0, 1fr) !important;
}
body.zc-app .schedule.single-day .day-column {
  width: 100%;
}

body.zc-app.mobile-admin .zc-agenda-panel.is-day-focus .mobile-week-nav {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: .625rem;
  padding-block: .75rem;
}
body.zc-app.mobile-admin .zc-agenda-panel.is-day-focus .mobile-week-nav strong {
  grid-column: 1 / -1;
  grid-row: 1;
  padding: .25rem .5rem;
  color: var(--zc-brand-ink);
  font-size: .75rem;
  line-height: 1.35;
  text-transform: capitalize;
}
body.zc-app.mobile-admin .zc-agenda-panel.is-day-focus .mobile-week-nav .button {
  min-width: 0;
  padding-inline: .5rem;
}
body.zc-app.mobile-admin .zc-agenda-panel.is-day-focus .schedule {
  padding-top: .875rem;
}
body.zc-app.mobile-admin .agenda-date-picker-button,
body.zc-app.mobile-admin .agenda-date-clear {
  min-height: 2.75rem;
}

/* Compact task detail banner: title, date and property share one full-photo
   header instead of stacking a separate white heading above the image. */
body.zc-app .task-detail-modal-card > .task-detail-hero {
  position: relative;
  min-height: 0;
  height: 11rem;
  flex: 0 0 11rem;
  overflow: hidden;
  background: #10244d;
  isolation: isolate;
}
body.zc-app .task-detail-hero > a {
  z-index: 0;
}
body.zc-app .task-detail-hero::after {
  z-index: 1;
  inset: 0;
  background: linear-gradient(180deg, rgba(5, 15, 38, .72) 0%, rgba(7, 21, 52, .08) 48%, rgba(5, 15, 38, .82) 100%);
}
body.zc-app .task-detail-hero > a > img {
  filter: brightness(1.08) saturate(1.05);
}
body.zc-app .task-detail-hero-head {
  position: absolute;
  z-index: 3;
  top: 0;
  right: 0;
  left: 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: .875rem 1rem;
  color: #fff;
  pointer-events: none;
}
body.zc-app .task-detail-hero-head > div {
  min-width: 0;
}
body.zc-app .task-detail-hero-head h2 {
  margin: 0;
  overflow: hidden;
  color: #fff;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-shadow: 0 2px 8px rgba(0, 0, 0, .42);
}
body.zc-app .task-detail-hero-head small {
  display: block;
  margin-top: .25rem;
  overflow: hidden;
  color: #eaf2ff;
  font-size: .6875rem;
  font-weight: 500;
  line-height: 1.35;
  text-overflow: ellipsis;
  text-transform: capitalize;
  white-space: nowrap;
  text-shadow: 0 1px 6px rgba(0, 0, 0, .46);
}
body.zc-app .task-detail-hero-head .icon-button {
  flex: 0 0 auto;
  width: 2.25rem;
  height: 2.25rem;
  border-color: rgba(255, 255, 255, .72);
  background: rgba(255, 255, 255, .92);
  color: #24344f;
  pointer-events: auto;
  box-shadow: 0 .25rem 1rem rgba(3, 15, 45, .25);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
body.zc-app .task-detail-hero > .task-detail-hero-copy {
  z-index: 3;
  right: 1rem;
  bottom: .875rem;
  left: 1rem;
}
body.zc-app .task-detail-hero-copy h3 {
  margin-top: .5rem;
  font-size: 1.75rem;
  text-shadow: 0 2px 9px rgba(0, 0, 0, .48);
}
body.zc-app .task-ignore-button {
  border-color: #ffc8c5;
  background: #fff1f0;
  color: #a62a25;
}
body.zc-app .task-ignore-button,
body.zc-app .task-mark-dirty-button {
  white-space: nowrap;
}
body.zc-app .task-mark-clean-button {
  border-color: #b8dfa5;
  background: #effae9;
  color: #356f22;
  white-space: nowrap;
}
body.zc-app .task-mark-clean-button:hover,
body.zc-app .task-mark-clean-button:focus-visible {
  border-color: #8fcf71;
  background: #e3f6da;
  color: #295b19;
}

/* Dashboard shortcut: today's total opens the same focused-day Agenda used by
   the native date picker, without introducing a second schedule view. */
body.zc-app .stat.stat-link {
  width: 100%;
  appearance: none;
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
body.zc-app .stat.stat-link:hover {
  transform: translateY(-2px);
  border-color: #b9d5ff;
  box-shadow: 0 14px 34px rgba(37, 99, 235, .16);
}
body.zc-app .stat.stat-link:focus-visible {
  outline: 3px solid rgba(11, 196, 247, .42);
  outline-offset: 3px;
}
body.zc-app .stat-link-arrow {
  margin-left: auto;
  color: var(--zc-brand-blue);
  font-size: 1.35rem;
  transition: transform .18s ease;
}
body.zc-app .stat.stat-link:hover .stat-link-arrow { transform: translateX(3px); }

@media (max-width: 560px) {
  body.zc-app.mobile-admin .task-detail-modal-card > .task-detail-hero {
    height: 9.5rem;
    flex-basis: 9.5rem;
  }
  body.zc-app.mobile-admin .task-detail-hero-head {
    padding: .75rem .875rem;
  }
  body.zc-app.mobile-admin .task-detail-hero-copy h3 {
    font-size: 1.5rem;
  }
  body.zc-app.mobile-admin .task-detail-modal-card .modal-footer {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: .625rem;
  }
  body.zc-app.mobile-admin .task-detail-modal-card .modal-footer > .footer-spacer {
    display: none;
  }
  body.zc-app.mobile-admin .task-detail-modal-card .modal-footer > .button,
  body.zc-app.mobile-admin .task-detail-modal-card .task-operation-actions {
    width: 100%;
    min-width: 0;
    margin: 0;
  }
  body.zc-app.mobile-admin .task-detail-modal-card .task-operation-actions {
    grid-column: 1 / -1;
  }
  body.zc-app.mobile-admin .task-detail-modal-card #dismiss-task-detail {
    grid-column: 2;
  }
  body.zc-app.mobile-admin .task-detail-modal-card .modal-footer.three-actions {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  body.zc-app.mobile-admin .task-detail-modal-card .modal-footer.three-actions > .button {
    min-height: 3rem;
    padding: .625rem .25rem;
    gap: .25rem;
    font-size: .6875rem;
    line-height: 1.15;
    white-space: nowrap;
  }
  body.zc-app.mobile-admin .task-detail-modal-card .modal-footer.three-actions #dismiss-task-detail {
    grid-column: auto;
  }
}

/* A completed agenda item collapses to its photo header. Operational controls,
   duration and reservation notes are intentionally omitted by the renderer;
   only a cleaner-authored note gets one compact, tappable summary below it. */
body.zc-app.mobile-admin .clean-task.is-cleaned {
  padding-bottom: 0;
}
body.zc-app.mobile-admin .clean-task.is-cleaned.has-cleaner-comments {
  padding-bottom: .75rem;
}
body.zc-app.mobile-admin .clean-task.is-cleaned .task-drag-space {
  margin-bottom: 0;
}
body.zc-app .cleaned-comment-summary {
  width: 100%;
  min-width: 0;
  display: grid;
  grid-template-columns: 2rem minmax(0, 1fr) auto;
  align-items: center;
  gap: .625rem;
  margin: .75rem 0 0;
  padding: .6875rem .75rem;
  border: 1px solid #d6e8ff;
  border-radius: .625rem;
  background: #f7faff;
  color: #0b1739;
  text-align: left;
  cursor: pointer;
  box-shadow: 0 .2rem .75rem rgba(37, 99, 235, .08);
}
body.zc-app .cleaned-comment-summary > i:first-child {
  width: 2rem;
  height: 2rem;
  display: inline-grid;
  place-items: center;
  border-radius: .5rem;
  background: #e7f2ff;
  color: #2563eb;
  font-size: 1rem;
}
body.zc-app .cleaned-comment-summary > span {
  min-width: 0;
}
body.zc-app .cleaned-comment-summary b,
body.zc-app .cleaned-comment-summary small {
  display: block;
}
body.zc-app .cleaned-comment-summary b {
  color: #0b1739;
  font-size: .75rem;
  font-weight: 700;
  line-height: 1.3;
}
body.zc-app .cleaned-comment-summary small {
  margin-top: .125rem;
  overflow: hidden;
  color: #53627a;
  font-size: .6875rem;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.zc-app .cleaned-comment-summary > i:last-child {
  color: #2563eb;
  font-size: 1.125rem;
}
body.zc-app .cleaned-comment-summary:hover,
body.zc-app .cleaned-comment-summary:focus-visible {
  border-color: #9fc6ff;
  background: #edf5ff;
  outline: none;
}

@media (min-width: 761px) {
  body.zc-app:not(.mobile-admin) .clean-task.is-cleaned {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "summary" "comment";
  }
  body.zc-app:not(.mobile-admin) .clean-task.is-cleaned .cleaned-comment-summary {
    grid-area: comment;
  }
}

/* Manual status is intentionally different from an automatic cleaner finish.
   The actor stays visible on the agenda card and inside the task detail modal. */
body.zc-app .pill.manual-clean {
  border: 1px solid #a9d695;
  background: #effae9;
  color: #356f22;
  text-transform: none;
}
body.zc-app .pill.manual-dirty {
  border: 1px solid #f0aaa5;
  background: #fff0ef;
  color: #9c211d;
  text-transform: none;
}
body.zc-app .pill.manual-ignored {
  border: 1px solid #cfd4de;
  background: #f1f2f5;
  color: #596273;
  text-transform: none;
}
body.zc-app.mobile-admin .clean-task .task-badges .pill.manual-clean {
  border-color: #a9d695 !important;
  background: #effae9 !important;
  color: #356f22 !important;
}
body.zc-app.mobile-admin .clean-task .task-badges .pill.manual-dirty {
  border-color: #f0aaa5 !important;
  background: #fff0ef !important;
  color: #9c211d !important;
}
body.zc-app.mobile-admin .clean-task .task-badges .pill.manual-clean,
body.zc-app.mobile-admin .clean-task .task-badges .pill.manual-dirty {
  max-width: 100%;
  min-height: 1.75rem;
  line-height: 1.2;
  white-space: normal;
}

/* Guesty is the single source of reservation times. A "manual" label means
   Guesty returned a reservation-specific plannedArrival/plannedDeparture. */
body.zc-app .pill.guesty-time-manual {
  border: 1px solid #9fc6ff;
  background: #eaf3ff;
  color: #174ea6;
  letter-spacing: 0;
  text-transform: none;
}
body.zc-app.mobile-admin .clean-task .task-badges .pill.guesty-time-manual {
  border-color: #9fc6ff !important;
  background: #eaf3ff !important;
  color: #174ea6 !important;
}
body.zc-app .task-guesty-times {
  display: grid;
  gap: .375rem;
  min-width: 0;
}
body.zc-app .task-guesty-time {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  color: #3c4056;
  font-size: .75rem;
  line-height: 1.25;
}
body.zc-app .task-guesty-time b,
body.zc-app .task-guesty-time em {
  min-width: 0;
  color: inherit;
  font: inherit;
  font-style: normal;
}
body.zc-app .task-guesty-time b {
  font-weight: 600;
}
body.zc-app .task-guesty-time em {
  margin-left: auto;
  font-variant-numeric: tabular-nums;
  font-weight: 700;
}
body.zc-app .task-guesty-time.is-manual {
  padding: .375rem .5rem;
  border: 1px solid #b9d7ff;
  border-radius: .5rem;
  background: #edf5ff;
  color: #174ea6;
}
body.zc-cleaner-app .mobile-task-hour.is-guesty-manual {
  border: 1px solid #b9d7ff;
  background: #edf5ff;
  color: #174ea6;
}
body.zc-cleaner-app .mobile-task-hour.is-rescheduled {
  border: 1px solid #aebdff;
  background: #eef1ff;
  color: #334db5;
}
body.zc-cleaner-app .mobile-detail-times {
  width: 100%;
  display: grid;
  gap: .3125rem;
}
body.zc-cleaner-app .mobile-detail-times > span {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
}
body.zc-cleaner-app .mobile-detail-times b,
body.zc-cleaner-app .mobile-detail-times em {
  color: inherit;
  font: inherit;
  font-style: normal;
}
body.zc-cleaner-app .mobile-detail-times b {
  font-size: .6875rem;
  font-weight: 600;
}
body.zc-cleaner-app .mobile-detail-times em {
  margin-left: auto;
  font-size: .75rem;
  font-variant-numeric: tabular-nums;
  font-weight: 700;
}
body.zc-cleaner-app .mobile-detail-times > span.is-manual {
  padding: .3125rem .375rem;
  border-radius: .4375rem;
  background: #edf5ff;
  color: #174ea6;
}

/* Cleaner detail: keep Guesty times readable without nested bordered chips. */
body.zc-cleaner-app .detail-status {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  background: #eef1f7;
}
body.zc-cleaner-app .detail-stat.is-guesty-times {
  grid-column: 1 / -1;
  padding: .875rem 1rem;
  text-align: left;
}
body.zc-cleaner-app .detail-stat.is-guesty-times > small {
  margin-bottom: .375rem;
}
body.zc-cleaner-app .detail-stat.is-guesty-times .mobile-detail-times {
  gap: 0;
}
body.zc-cleaner-app .detail-stat.is-guesty-times .mobile-detail-times > span {
  min-height: 2.25rem;
  padding: .4375rem 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: #3c4056;
}
body.zc-cleaner-app .detail-stat.is-guesty-times .mobile-detail-times > span + span {
  border-top: 1px solid #e7eaf0;
}
body.zc-cleaner-app .detail-stat.is-guesty-times .mobile-detail-times b {
  max-width: calc(100% - 5rem);
  font-size: .8125rem;
  line-height: 1.25;
}
body.zc-cleaner-app .detail-stat.is-guesty-times .mobile-detail-times em {
  flex: 0 0 auto;
  box-sizing: border-box;
  width: 4.25rem;
  min-width: 4.25rem;
  margin-left: 1rem;
  padding: .25rem .375rem;
  border-radius: .375rem;
  background: #edf5ff;
  color: #174ea6;
  font-size: .8125rem;
  line-height: 1.25;
  text-align: center;
}
body.zc-cleaner-app .detail-stat.is-guesty-times .mobile-detail-times > span.is-cleaning {
  min-height: 2.25rem;
  margin-bottom: 0;
  padding: .4375rem 0;
  border-radius: 0;
  background: transparent;
  color: #3c4056;
}
body.zc-cleaner-app .detail-stat.is-guesty-times .mobile-detail-times > span.is-cleaning b {
  color: #08749a;
  font-weight: 800;
}
body.zc-cleaner-app .detail-stat.is-guesty-times .mobile-detail-times > span.is-cleaning em {
  background: #dff6fb;
  color: #08749a;
  font-weight: 850;
}
body.zc-cleaner-app .detail-stat.is-guesty-times .mobile-detail-times > span.is-cleaning + span {
  border-top: 1px solid #e7eaf0;
}
body.zc-cleaner-app .detail-stat.is-guesty-times .mobile-detail-times > span.is-early b {
  color: #a85a05;
}

body.zc-cleaner-app .slide-card.schedule-readonly {
  display: grid;
  grid-template-columns: 2.75rem minmax(0, 1fr);
  align-items: center;
  gap: .875rem;
  border: 1px solid #cfe0f6;
  background: #f4f8fd;
}
body.zc-cleaner-app .slide-card.schedule-readonly .schedule-readonly-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: .75rem;
  background: #e1edfc;
  color: #174ea6;
  font-size: 1.125rem;
}
body.zc-cleaner-app .slide-card.schedule-readonly h2,
body.zc-cleaner-app .slide-card.schedule-readonly p {
  margin: 0;
}
body.zc-cleaner-app .slide-card.schedule-readonly p {
  margin-top: .25rem;
  color: #637188;
  font-size: .75rem;
  line-height: 1.45;
}
body.zc-cleaner-app .detail-stat.is-guesty-times .mobile-detail-times > span.is-early em {
  background: #fff1dc;
  color: #a85a05;
}

/* Cleaning-date rescheduling and Zelofy-owned Guesty blocks. */
body.zc-app .pill.rescheduled {
  border: 1px solid #aebdff;
  background: #eef1ff;
  color: #334db5;
  letter-spacing: 0;
  text-transform: none;
}
body.zc-app .clean-task .task-badges .pill.early-checkout {
  border: 1px solid #f0aa35;
  background: #fff0cc;
  color: #8a4a05;
  letter-spacing: 0;
}
body.zc-app .clean-task > .task-property-change {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: .35rem .5rem;
  margin: .75rem 1rem 0;
  padding: .55rem .7rem;
  border: 1px solid #cfe0f5;
  border-radius: .625rem;
  background: #edf5ff;
  color: #405673;
  line-height: 1.3;
}
body.zc-app .clean-task > .task-property-change b { color: #174ea6; }
body.zc-app .clean-task > .task-property-change span { min-width: 0; }
body.zc-app .task-cleaning-date-form {
  display: grid;
  gap: .75rem;
  margin-top: 1rem;
  padding: 0;
  border: 0;
  background: transparent;
}
body.zc-app .task-cleaning-date-form.hidden {
  display: none;
}
body.zc-app .task-cleaning-date-picker {
  display: grid;
  grid-template-columns: 2.5rem minmax(0, 1fr) auto;
  align-items: center;
  gap: .75rem;
  width: 100%;
  min-height: 4rem;
  margin: 0;
  padding: .75rem;
  border: 1px solid #bdd5fb;
  border-radius: .75rem;
  background: #f7faff;
  color: #101b3f;
  font: inherit;
  text-align: left;
  -webkit-appearance: none;
  appearance: none;
  cursor: pointer;
}
body.zc-app .task-cleaning-date-picker:focus-within {
  border-color: #2563eb;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);
}
body.zc-app .task-cleaning-date-picker-copy,
body.zc-app .task-cleaning-date-picker-copy strong,
body.zc-app .task-cleaning-date-picker-copy small {
  display: block;
  min-width: 0;
}
body.zc-app .task-cleaning-date-picker-copy strong {
  color: #101b3f;
  font-size: .9375rem;
  font-weight: 600;
}
body.zc-app .task-cleaning-date-picker-value {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  color: #2563eb;
  white-space: nowrap;
}
body.zc-app .task-cleaning-date-picker-value strong {
  font-size: .8125rem;
  font-variant-numeric: tabular-nums;
}
body.zc-app .task-cleaning-date-picker-value i {
  font-size: 1.125rem;
  transition: transform .16s ease;
}
body.zc-app .task-cleaning-date-picker[aria-expanded="true"] .task-cleaning-date-picker-value i {
  transform: rotate(180deg);
}
body.zc-app .task-cleaning-date-icon {
  flex: 0 0 2.5rem;
  width: 2.5rem;
  height: 2.5rem;
  display: grid;
  place-items: center;
  border-radius: .625rem;
  background: linear-gradient(135deg, #0bc4f7, #2563eb 62%, #6d5cf6);
  color: #fff;
  font-size: 1.125rem;
}
body.zc-app .task-cleaning-calendar {
  padding: .75rem;
  border: 1px solid #bdd5fb;
  border-radius: .75rem;
  background: #fff;
  box-shadow: 0 .75rem 1.75rem rgba(11, 23, 57, .12);
}
body.zc-app .task-cleaning-calendar.hidden {
  display: none;
}
body.zc-app .task-cleaning-calendar > header {
  display: grid;
  grid-template-columns: 2.5rem minmax(0, 1fr) 2.5rem;
  align-items: center;
  gap: .5rem;
  margin-bottom: .625rem;
}
body.zc-app .task-cleaning-calendar > header > strong {
  color: #101b3f;
  font-size: .9375rem;
  font-weight: 600;
  text-align: center;
  text-transform: capitalize;
}
body.zc-app .task-cleaning-calendar > header button {
  width: 2.5rem;
  height: 2.5rem;
  display: grid;
  place-items: center;
  padding: 0;
  border: 1px solid #dbe7f8;
  border-radius: .625rem;
  background: #f7faff;
  color: #2563eb;
  font-size: 1.25rem;
}
body.zc-app .task-cleaning-calendar > header button:disabled {
  opacity: .3;
}
body.zc-app .task-cleaning-calendar-weekdays,
body.zc-app .task-cleaning-calendar-days {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: .25rem;
}
body.zc-app .task-cleaning-calendar-weekdays {
  margin-bottom: .25rem;
}
body.zc-app .task-cleaning-calendar-weekdays span {
  color: #7b8498;
  font-size: .625rem;
  font-weight: 600;
  text-align: center;
  text-transform: uppercase;
}
body.zc-app .task-cleaning-calendar-days button,
body.zc-app .task-cleaning-calendar-days .is-blank {
  min-width: 0;
  height: 2.5rem;
}
body.zc-app .task-cleaning-calendar-days button {
  display: grid;
  place-items: center;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: #101b3f;
  font: 600 .8125rem/1 Inter, sans-serif;
  font-variant-numeric: tabular-nums;
}
body.zc-app .task-cleaning-calendar-days button:not(:disabled):hover,
body.zc-app .task-cleaning-calendar-days button:not(:disabled):focus-visible {
  background: #eaf2ff;
  color: #174cad;
}
body.zc-app .task-cleaning-calendar-days button.is-selected {
  background: linear-gradient(135deg, #2563eb, #6d5cf6);
  color: #fff;
  box-shadow: 0 .25rem .75rem rgba(37, 99, 235, .25);
}
body.zc-app .task-cleaning-calendar-days button.is-today:not(.is-selected) {
  box-shadow: inset 0 0 0 1px #2563eb;
}
body.zc-app .task-cleaning-calendar-days button:disabled {
  color: #c3c9d4;
  text-decoration: line-through;
  cursor: not-allowed;
}
body.zc-app .task-cleaning-block-choice {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: .75rem;
  padding: .75rem;
  border: 1px solid #a9c9ff;
  border-radius: .625rem;
  background: #fff;
  cursor: pointer;
}
body.zc-app .task-cleaning-block-choice.hidden {
  display: none;
}
body.zc-app .task-cleaning-block-choice input {
  width: 1.125rem;
  height: 1.125rem;
  margin: .125rem 0 0;
  accent-color: #2563eb;
}
body.zc-app .task-cleaning-block-choice span,
body.zc-app .task-cleaning-block-choice strong,
body.zc-app .task-cleaning-block-choice small {
  min-width: 0;
  display: block;
}
body.zc-app .task-cleaning-block-choice strong {
  color: #172554;
  font-size: .8125rem;
}
body.zc-app .task-cleaning-block-choice small {
  margin-top: .1875rem;
  color: #334db5;
  font-size: .75rem;
  line-height: 1.4;
}
body.zc-app .task-cleaning-date-form > .button {
  justify-self: start;
}
@media (max-width: 760px) {
  body.zc-app .task-cleaning-date-picker {
    gap: .625rem;
    padding: .625rem;
  }
  body.zc-app .task-cleaning-date-picker-copy strong {
    font-size: .8125rem;
  }
  body.zc-app .task-cleaning-date-picker-value strong {
    font-size: .75rem;
  }
  body.zc-app .task-cleaning-calendar {
    padding: .625rem;
  }
  body.zc-app .task-cleaning-date-form > .button {
    width: 100%;
  }
}

/* Cleaner: unmistakable live state after the start slider is confirmed. */
body.zc-cleaner-app .detail-stat.is-running {
  background: linear-gradient(145deg, #e7f6ff 0%, #eef0ff 100%);
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .18);
}
body.zc-cleaner-app .detail-stat.is-running > small {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .3125rem;
  color: #1d4ed8;
  font-weight: 700;
}
body.zc-cleaner-app .detail-stat.is-running > strong {
  margin-top: .1875rem;
  color: #172554;
  font-size: 1.125rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: .025em;
}
body.zc-cleaner-app .detail-stat.is-running > em {
  display: block;
  margin-top: .125rem;
  color: #4f66a8;
  font-size: .625rem;
  font-style: normal;
  font-weight: 600;
}
body.zc-cleaner-app .cleaning-live-dot {
  width: .5rem;
  height: .5rem;
  display: inline-block;
  flex: 0 0 .5rem;
  border-radius: 50%;
  background: #16a34a;
  box-shadow: 0 0 0 0 rgba(22, 163, 74, .38);
  animation: zc-cleaning-live-pulse 1.7s ease-out infinite;
}
body.zc-cleaner-app .slide-card.cleaning-active {
  position: relative;
  overflow: hidden;
  border: 1px solid #9ac6ff;
  background:
    radial-gradient(circle at 95% 0, rgba(109, 92, 246, .12), transparent 40%),
    linear-gradient(145deg, #f7fbff 0%, #f5f4ff 100%);
  box-shadow: 0 .625rem 1.75rem rgba(37, 99, 235, .15);
}
body.zc-cleaner-app .slide-card.cleaning-active.checklist-required {
  border-color: #9ac6ff;
  background:
    radial-gradient(circle at 95% 0, rgba(109, 92, 246, .12), transparent 40%),
    linear-gradient(145deg, #f7fbff 0%, #f5f4ff 100%);
}
body.zc-cleaner-app .cleaning-active-head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: .625rem;
  margin-bottom: .4375rem;
}
body.zc-cleaner-app .cleaning-active-head > div {
  min-width: 0;
}
body.zc-cleaner-app .cleaning-active-head small {
  display: block;
  color: #267055;
  font-size: .625rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}
body.zc-cleaner-app .cleaning-active-head h2,
body.zc-cleaner-app .slide-card.cleaning-active.checklist-required h2 {
  margin-top: .125rem;
  color: #172554;
}
body.zc-cleaner-app .cleaning-active-head > strong {
  min-width: 5rem;
  padding: .5rem .625rem;
  border: 1px solid rgba(37, 99, 235, .18);
  border-radius: .75rem;
  background: rgba(255, 255, 255, .78);
  color: #1d4ed8;
  font-size: 1.125rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: .03em;
  text-align: center;
  box-shadow: 0 .25rem .75rem rgba(37, 99, 235, .09);
}
body.zc-cleaner-app .slide-card.cleaning-active > p {
  color: #586785;
}
body.zc-cleaner-app .slide-control.is-running {
  isolation: isolate;
  border: 1px solid #9fc5ff;
  background: linear-gradient(90deg, #eaf4ff, #eef0ff);
  opacity: 1;
}
body.zc-cleaner-app .slide-control.is-running .slide-motion {
  position: absolute;
  z-index: 1;
  inset: 0;
  width: 42%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .82), transparent);
  transform: translateX(-120%);
  animation: zc-cleaning-track-flow 2.25s ease-in-out infinite;
  pointer-events: none;
}
body.zc-cleaner-app .slide-control.is-running .slide-label {
  color: #47617f;
}
body.zc-cleaner-app .slide-control.is-running.locked .slide-knob {
  color: #2563eb;
  animation: zc-cleaning-knob-glow 1.7s ease-in-out infinite;
}
body.zc-cleaner-app .slide-control.is-running.finish-ready {
  border-color: #6ca9ff;
  background: linear-gradient(90deg, #dfedff, #ebe9ff);
  box-shadow: 0 0 0 .1875rem rgba(37, 99, 235, .08);
}
body.zc-cleaner-app .slide-control.is-running.finish-ready .slide-label {
  color: #1e429f;
}
@keyframes zc-cleaning-live-pulse {
  0% { box-shadow: 0 0 0 0 rgba(22, 163, 74, .38); }
  65%, 100% { box-shadow: 0 0 0 .5rem rgba(22, 163, 74, 0); }
}
@keyframes zc-cleaning-track-flow {
  0% { transform: translateX(-120%); }
  70%, 100% { transform: translateX(340%); }
}
@keyframes zc-cleaning-knob-glow {
  0%, 100% { box-shadow: 0 .25rem .875rem rgba(37, 99, 235, .18); }
  50% { box-shadow: 0 .25rem 1.125rem rgba(37, 99, 235, .4), 0 0 0 .25rem rgba(37, 99, 235, .08); }
}
@media (prefers-reduced-motion: reduce) {
  body.zc-cleaner-app .cleaning-live-dot,
  body.zc-cleaner-app .slide-control.is-running .slide-motion,
  body.zc-cleaner-app .slide-control.is-running.locked .slide-knob {
    animation: none;
  }
}

/* Keep the normal Admin Agenda actions readable on phones. The focused-date
   state replaces the month-view action with the return-to-week action so the
   controls remain a stable two-by-two grid instead of squeezing five items. */
@media (max-width: 760px) {
  body.zc-app:not(.mobile-admin) .zc-agenda-panel > .panel-head .panel-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: stretch;
    gap: .625rem;
    width: 100%;
    margin-left: 0;
  }
  body.zc-app:not(.mobile-admin) .zc-agenda-panel > .panel-head .panel-actions > .button {
    width: 100%;
    min-width: 0;
    min-height: 2.875rem;
    margin: 0;
    padding-inline: .625rem;
    line-height: 1.2;
    text-align: center;
    white-space: normal;
  }
  body.zc-app:not(.mobile-admin) .zc-agenda-panel > .panel-head .agenda-date-picker-button > i,
  body.zc-app:not(.mobile-admin) .zc-agenda-panel > .panel-head .agenda-date-clear > i {
    flex: 0 0 auto;
  }
  body.zc-app:not(.mobile-admin) .zc-agenda-panel > .panel-head .agenda-date-picker-button > span,
  body.zc-app:not(.mobile-admin) .zc-agenda-panel > .panel-head .agenda-date-clear > span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  body.zc-app:not(.mobile-admin) .zc-agenda-panel.is-day-focus #toggle-calendar-view {
    display: none;
  }
}
/* Admin Agenda: Guesty times are ordinary property metadata, so keep that
   complete line readable on phones and avoid repeating the cleaner beside it. */
@media (max-width: 760px) {
  body.zc-app .clean-task .task-copy-cleaner { display: none; }
}
@media (max-width: 360px) {
  body.zc-app:not(.mobile-admin) .clean-task .task-copy small {
    overflow: visible;
    line-height: 1.25;
    white-space: normal;
    text-overflow: clip;
  }
}

/* The current phone Admin uses the unified shell, not the retired
   .mobile-admin body. Keep both levels of Agenda context visible: the date
   sits below the app bar and the cleaner sits immediately below the date. */
@media (max-width: 760px) {
  body.zc-app:not(.mobile-admin) .zc-agenda-panel,
  body.zc-app:not(.mobile-admin) #week-view,
  body.zc-app:not(.mobile-admin) .schedule-wrap,
  body.zc-app:not(.mobile-admin) .day-column,
  body.zc-app:not(.mobile-admin) .cleaner-agenda-group {
    overflow: visible;
  }

  body.zc-app:not(.mobile-admin) .zc-navbar {
    z-index: 1000;
    isolation: isolate;
    margin-bottom: 0;
    background: #07143b;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  /* The base unified Agenda leaves .75rem above its first day. At the point
     where that day approaches the sticky app bar, the padding exposes the
     controls scrolling underneath as a visible seam. Keep the side and bottom
     breathing room, but let the day surface meet the app bar immediately. */
  body.zc-app:not(.mobile-admin) .schedule {
    padding-top: 0;
  }

  body.zc-app:not(.mobile-admin) .day-head {
    position: sticky;
    top: calc(64px + env(safe-area-inset-top, 0px));
    z-index: 24;
    min-height: 68px;
    box-shadow: inset 6px 0 0 #2563eb, 0 6px 14px rgba(11, 23, 57, .12);
  }
  body.zc-app:not(.mobile-admin) .day-head.today {
    box-shadow: inset 6px 0 0 #0bc4f7, 0 6px 14px rgba(11, 23, 57, .12);
  }

  body.zc-app:not(.mobile-admin) .cleaner-agenda-header {
    position: sticky;
    top: calc(132px + env(safe-area-inset-top, 0px));
    z-index: 23;
    box-shadow: 0 4px 10px rgba(11, 23, 57, .12);
  }
}

/* iOS Home Screen mode draws beneath the translucent system status bar. Keep
   the normal browser header unchanged, but make the standalone Admin header
   own that safe-area height so its title and actions begin below the clock. */
@media (display-mode: standalone) {
  html { background: #07143b; }
  body.zc-app:not(.mobile-admin)::before {
    content: "";
    position: fixed;
    z-index: 999;
    inset: 0 0 auto;
    height: env(safe-area-inset-top, 0px);
    background: #07143b;
    pointer-events: none;
  }
  body.zc-app:not(.mobile-admin) .zc-navbar {
    min-height: calc(64px + env(safe-area-inset-top, 0px));
    padding-top: env(safe-area-inset-top, 0px);
    padding-right: max(1rem, env(safe-area-inset-right, 0px));
    padding-left: max(1rem, env(safe-area-inset-left, 0px));
  }

  /* Keep the enlarged-photo controls away from the status bar. In standalone
     mode the close control joins the bottom action row, so a notification
     banner can never trap the viewer behind an unreachable top-right button. */
  body.zc-app:not(.mobile-admin) .image-viewer-modal {
    padding-top: calc(env(safe-area-inset-top, 0px) + 1rem);
    padding-right: max(1rem, env(safe-area-inset-right, 0px));
    padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 1rem);
    padding-left: max(1rem, env(safe-area-inset-left, 0px));
  }
  body.zc-app:not(.mobile-admin) .image-viewer-card {
    width: 100%;
    height: calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 2rem);
    max-height: 900px;
    margin: 0;
    grid-template-columns: minmax(0, 1fr) auto auto minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr) auto;
    grid-template-areas:
      "photo photo photo photo"
      ". download close .";
  }
  body.zc-app:not(.mobile-admin) .image-viewer-card img {
    grid-area: photo;
  }
  body.zc-app:not(.mobile-admin) .image-viewer-download {
    grid-area: download;
    min-height: 44px;
  }
  body.zc-app:not(.mobile-admin) .image-viewer-close {
    position: static;
    grid-area: close;
    width: 44px;
    height: 44px;
  }
}

/* Keep the normal phone header visible while navigation is open. The drawer
   begins below the complete app bar and goes straight into navigation; its
   duplicated logo/close row is unnecessary because the menu button remains in
   the persistent header. */
@media (max-width: 1199.98px) {
  body.zc-app .zc-sidebar {
    z-index: 1101;
    top: calc(64px + env(safe-area-inset-top, 0px));
    bottom: 0;
    max-height: calc(100dvh - 64px - env(safe-area-inset-top, 0px));
    padding-top: .75rem;
  }
  body.zc-app .zc-sidebar-brand {
    display: none;
  }
  body.zc-app .zc-sidebar-backdrop {
    z-index: 1100;
    top: calc(64px + env(safe-area-inset-top, 0px));
  }
}
/* Shared notification history for Admin and Cleaner. */
body.zc-app .push-notifications,
body.zc-cleaner-app .push-notifications { position: relative; }
body.zc-app .push-unread-count,
body.zc-cleaner-app .push-unread-count {
  position: absolute;
  top: -6px;
  right: -6px;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border: 2px solid #fff;
  border-radius: 999px;
  background: #ff3d5a;
  color: #fff;
  font-size: 10px;
  font-weight: 800;
  line-height: 14px;
  text-align: center;
  box-shadow: 0 4px 10px rgba(255, 61, 90, .28);
}
body.zc-app .push-history-card,
body.zc-cleaner-app .push-history-card {
  width: min(560px, calc(100vw - 28px));
  max-height: min(760px, calc(100dvh - 32px));
  overflow: hidden;
}
body.zc-app .push-history-head,
body.zc-cleaner-app .push-history-head { align-items: center; }
body.zc-app .push-history-head > div,
body.zc-cleaner-app .push-history-head > div { min-width: 0; }
body.zc-app .push-history-head small,
body.zc-cleaner-app .push-history-head small {
  display: block;
  margin-bottom: 3px;
  color: #53708e;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}
body.zc-app .push-history-head h2,
body.zc-cleaner-app .push-history-head h2 { margin: 0; }
body.zc-app .push-history-body,
body.zc-cleaner-app .push-history-body {
  min-height: 190px;
  overflow-y: auto;
  overscroll-behavior: contain;
  background: #f6f9ff;
}
body.zc-app .push-history-list,
body.zc-cleaner-app .push-history-list { display: grid; gap: 10px; }
body.zc-app .push-history-item,
body.zc-cleaner-app .push-history-item {
  position: relative;
  display: grid;
  width: 100%;
  gap: 5px;
  padding: 14px 40px 14px 16px;
  border: 1px solid #dfe7f3;
  border-radius: 16px;
  background: #fff;
  color: #10213f;
  text-align: left;
  box-shadow: 0 8px 22px rgba(23, 52, 94, .06);
}
body.zc-app .push-history-item.unread,
body.zc-cleaner-app .push-history-item.unread {
  border-color: #b8d6ff;
  background: linear-gradient(135deg, #fff 0%, #eef5ff 100%);
}
body.zc-app .push-history-item.urgent,
body.zc-cleaner-app .push-history-item.urgent {
  border-color: #ef9a91;
  background: linear-gradient(135deg, #fff 0%, #fff0ee 100%);
  box-shadow: 0 10px 26px rgba(181, 35, 25, .14);
}
body.zc-app .push-history-item.urgent strong,
body.zc-cleaner-app .push-history-item.urgent strong,
body.zc-app .push-history-item.urgent::after,
body.zc-cleaner-app .push-history-item.urgent::after { color: #b42318; }
body.zc-app .push-history-item.urgent.unread::before,
body.zc-cleaner-app .push-history-item.urgent.unread::before { background: #d92d20; }
body.zc-app .push-history-item.unread:not(.urgent)::before,
body.zc-cleaner-app .push-history-item.unread:not(.urgent)::before {
  content: '';
  position: absolute;
  top: 17px;
  left: 6px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #236cf1;
}
body.zc-app .push-history-item::after,
body.zc-cleaner-app .push-history-item::after {
  content: '›';
  position: absolute;
  top: 50%;
  right: 15px;
  color: #2569da;
  font-size: 26px;
  transform: translateY(-50%);
}
body.zc-app .push-history-item strong,
body.zc-cleaner-app .push-history-item strong { font-size: 15px; line-height: 1.25; }
body.zc-app .push-history-item span,
body.zc-cleaner-app .push-history-item span { color: #52657d; font-size: 13px; line-height: 1.35; }
body.zc-app .push-history-item time,
body.zc-cleaner-app .push-history-item time { color: #8a98aa; font-size: 11px; }
body.zc-app .push-history-empty,
body.zc-cleaner-app .push-history-empty {
  padding: 42px 18px;
  color: #6e7f94;
  text-align: center;
}
body.zc-app .push-history-footer,
body.zc-cleaner-app .push-history-footer { gap: 8px; flex-wrap: wrap; }
@media (max-width: 640px) {
  body.zc-app .push-history-modal,
  body.zc-cleaner-app .push-history-modal { padding: 12px; padding-top: calc(12px + env(safe-area-inset-top)); padding-bottom: calc(12px + env(safe-area-inset-bottom)); }
  body.zc-app .push-history-card,
  body.zc-cleaner-app .push-history-card { width: 100%; max-height: 100%; }
  body.zc-app .push-history-footer .button,
  body.zc-cleaner-app .push-history-footer .button { flex: 1 1 calc(50% - 8px); }
  body.zc-app .push-history-footer .footer-spacer { display: none; }
}

/* Keep the drawer painted behind the complete navbar. Starting both the panel
   and backdrop at the viewport top removes the fragile safe-area edge math;
   the higher opaque navbar covers the underlap while drawer content begins
   below the same safe-area-aware 64px header. */
@media (max-width: 1199.98px) {
  body.zc-app .zc-sidebar {
    top: 0;
    bottom: 0;
    height: 100dvh;
    max-height: 100dvh;
    padding-top: calc(64px + env(safe-area-inset-top, 0px));
    border-top: 0;
    box-shadow: 18px 18px 46px rgba(7, 20, 59, .18);
  }
  body.zc-app.zc-menu-open .zc-navbar {
    z-index: 1102;
  }
  body.zc-app .zc-sidebar .zc-nav { padding-top: .75rem; }
  body.zc-app .zc-sidebar-backdrop {
    top: 0;
  }
}

/* The unified iPhone Admin no longer carries the retired .mobile-admin body
   class. Give its sheets the same safe-area and scrolling contract so a task
   detail is a true modal above the app bar instead of being clipped behind it. */
@media (max-width: 760px) {
  body.zc-app:not(.mobile-admin) .modal {
    z-index: 1200;
    place-items: center;
    padding-top: calc(env(safe-area-inset-top, 0px) + .75rem);
    padding-right: max(.5rem, env(safe-area-inset-right, 0px));
    padding-bottom: calc(env(safe-area-inset-bottom, 0px) + .75rem);
    padding-left: max(.5rem, env(safe-area-inset-left, 0px));
    overflow: hidden;
  }
  body.zc-app:not(.mobile-admin) .modal > .modal-card {
    display: flex;
    flex-direction: column;
    width: min(100%, 760px);
    max-width: 100%;
    max-height: calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 1.5rem);
    margin: 0;
    overflow: hidden;
    border-radius: 1.125rem;
  }
  body.zc-app:not(.mobile-admin) .modal > .modal-card > .modal-head,
  body.zc-app:not(.mobile-admin) .modal > .modal-card > .modal-footer {
    flex: 0 0 auto;
  }
  body.zc-app:not(.mobile-admin) .modal > .modal-card > .modal-body {
    min-height: 0;
    flex: 1 1 auto;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }
  body.zc-app:not(.mobile-admin) .task-detail-modal-card > .task-detail-hero {
    height: 9.5rem;
    flex-basis: 9.5rem;
  }
  body.zc-app:not(.mobile-admin) .task-detail-hero-head {
    padding: .75rem .875rem;
  }
  body.zc-app:not(.mobile-admin) .task-detail-hero-copy h3 {
    font-size: 1.5rem;
  }
}

@media (max-width: 560px) {
  body.zc-app:not(.mobile-admin) .task-detail-modal-card .modal-footer {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: .625rem;
  }
  body.zc-app:not(.mobile-admin) .task-detail-modal-card .modal-footer > .footer-spacer {
    display: none;
  }
  body.zc-app:not(.mobile-admin) .task-detail-modal-card .modal-footer > .button,
  body.zc-app:not(.mobile-admin) .task-detail-modal-card .task-operation-actions {
    width: 100%;
    min-width: 0;
    margin: 0;
  }
  body.zc-app:not(.mobile-admin) .task-detail-modal-card .task-operation-actions {
    grid-column: 1 / -1;
  }
  body.zc-app:not(.mobile-admin) .task-detail-modal-card #dismiss-task-detail {
    grid-column: 2;
  }
  body.zc-app:not(.mobile-admin) .task-detail-modal-card .modal-footer.three-actions {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  body.zc-app:not(.mobile-admin) .task-detail-modal-card .modal-footer.three-actions > .button {
    min-height: 3rem;
    padding: .625rem .25rem;
    gap: .25rem;
    font-size: .6875rem;
    line-height: 1.15;
    white-space: nowrap;
  }
  body.zc-app:not(.mobile-admin) .task-detail-modal-card .modal-footer.three-actions #dismiss-task-detail {
    grid-column: auto;
  }
}

/* Immediate route feedback while the independent review document opens. */
body.zc-app .zc-route-loader {
  position: fixed;
  z-index: 1095;
  inset: calc(64px + env(safe-area-inset-top, 0px)) 0 0;
  display: grid;
  place-items: center;
  padding: 1.25rem;
  background: rgba(247, 250, 255, .94);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
}
body.zc-app .zc-route-loader.hidden { display: none; }
body.zc-app .zc-route-loader > span {
  display: grid;
  justify-items: center;
  gap: .5rem;
  color: #10213f;
  text-align: center;
}
body.zc-app .zc-route-loader i {
  width: 2rem;
  height: 2rem;
  border: 3px solid #d6e8ff;
  border-top-color: #ff385c;
  border-radius: 50%;
  animation: zc-route-spin .7s linear infinite;
}
body.zc-app .zc-route-loader strong { font-size: 1rem; }
body.zc-app .zc-route-loader small { color: #6b7b91; font-size: .75rem; }
@keyframes zc-route-spin { to { transform: rotate(360deg); } }

/* Desktop Agenda is a horizontal seven-day board. Each day keeps a readable
   card width and the board scrolls sideways on ordinary laptop screens; the
   phone stream and its sticky date/cleaner headers remain untouched. */
@media (min-width: 1100px) {
  body.zc-app:not(.mobile-admin) .zc-agenda-panel,
  body.zc-app:not(.mobile-admin) #week-view,
  body.zc-app:not(.mobile-admin) .schedule-wrap {
    min-width: 0;
  }

  body.zc-app:not(.mobile-admin) .schedule-wrap {
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    scrollbar-gutter: stable;
    scrollbar-color: #9fb9dc #edf3fb;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) {
    width: 100%;
    min-width: 2012px;
    grid-template-columns: repeat(7, minmax(280px, 1fr));
    align-items: start;
    gap: .875rem;
    padding: 1rem;
    scroll-snap-type: x proximity;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) > .day-column {
    width: auto;
    min-width: 0;
    min-height: 0;
    align-self: start;
    scroll-snap-align: start;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) > .day-column.empty-day {
    display: block;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .day-head {
    min-height: 70px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: .625rem;
    padding: .75rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .day-head-copy {
    min-width: 0;
    display: grid;
    align-items: start;
    gap: .2rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .day-head-copy small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .day-body {
    min-height: 116px;
    gap: .625rem;
    padding: .625rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .empty-day .day-head {
    border-right: 0;
    border-bottom: 1px solid var(--zc-border);
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .empty-day .day-body {
    min-height: 116px;
    padding: .625rem;
    align-items: center;
    background: #fafafa;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .empty-day .empty {
    padding: 1rem .5rem;
    text-align: center;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-header {
    min-height: 58px;
    gap: .5rem;
    padding: .625rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-avatar {
    width: 32px;
    height: 32px;
    flex-basis: 32px;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-copy strong {
    font-size: .8125rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-mode {
    max-width: 42%;
    overflow: hidden;
    padding: .3rem .45rem;
    font-size: .5625rem;
    text-overflow: ellipsis;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-list {
    gap: .625rem;
    padding: .625rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .clean-task {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    gap: .625rem;
    padding: .75rem 2.75rem .75rem .75rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-drag-space {
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    gap: .625rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-top {
    grid-template-columns: 36px 58px minmax(0, 1fr);
    gap: .625rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .priority {
    width: 36px;
    height: 36px;
    font-size: .875rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-image {
    width: 58px;
    height: 52px;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-copy strong,
  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-copy small {
    overflow: hidden;
    text-overflow: ellipsis;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-copy strong {
    white-space: nowrap;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-copy small {
    white-space: normal;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-badges {
    margin-top: 0;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-actions {
    gap: .5rem;
  }
}

.zc-dashboard-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:22px;margin:18px 0}
.zc-dashboard-status-grid>.panel{min-width:0;height:100%;margin:0}
.zc-dashboard-status-grid .zc-dirty-properties{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.zc-dashboard-status-grid .zc-ready-properties{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}
@media(max-width:1100px){.zc-dashboard-status-grid{grid-template-columns:1fr;gap:18px}}

.zc-dirty-properties-panel{margin:18px 0;padding:0;overflow:hidden;border:1px solid #fecaca;background:linear-gradient(145deg,#fff 0%,#fff9f7 100%)}
.zc-dirty-properties-panel .panel-head{padding:22px 24px;border-bottom:1px solid #fee2e2}
.zc-dirty-count{background:#fff1f2!important;color:#be123c!important;border-color:#fecdd3!important}
.zc-dirty-properties{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px 20px 20px}
.zc-dirty-property{display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:center;gap:13px;padding:14px;border:1px solid #e8edf6;border-radius:16px;background:#fff;box-shadow:0 8px 24px rgba(15,35,80,.06)}
.zc-dirty-property.is-decision{border-color:#f59e0b;background:#fffaf0}
.zc-dirty-property.is-unscheduled{border-color:#fda4af}
.zc-dirty-property.is-highlighted{animation:zc-dirty-highlight 1.1s ease-in-out 2}
@keyframes zc-dirty-highlight{50%{border-color:#2563eb;box-shadow:0 0 0 4px rgba(37,99,235,.16),0 12px 30px rgba(15,35,80,.12)}}
.zc-dirty-property-picture{width:54px;height:54px;border-radius:13px;overflow:hidden;background:#eef4ff;color:#2856b6;display:grid;place-items:center;font-weight:800}
.zc-dirty-property-picture img{width:100%;height:100%;object-fit:cover}
.zc-dirty-property-copy{display:flex;min-width:0;flex-direction:column;gap:3px}
.zc-dirty-property-copy strong{font-size:16px;color:#102142}
.zc-dirty-property-copy small{color:#67758d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zc-dirty-property-copy b{font-size:12px;color:#b42318}
.zc-dirty-property.is-scheduled .zc-dirty-property-copy b{color:#237247}
.zc-dirty-property-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}
@media(max-width:760px){.zc-dirty-properties{grid-template-columns:1fr;padding:12px}.zc-dirty-properties-panel .panel-head{padding:18px}.zc-dirty-property{grid-template-columns:48px minmax(0,1fr);padding:12px}.zc-dirty-property-picture{width:48px;height:48px}.zc-dirty-property-actions{grid-column:1/-1;justify-content:stretch}.zc-dirty-property-actions .button{flex:1;min-height:42px}.zc-dirty-property-copy small{white-space:normal}}

/* Clean, unoccupied units are operational options, not alerts. Keep them in a
   separate calm green panel and show the next arrival before Admin chooses one. */
.zc-ready-properties-panel{margin:18px 0;padding:0;overflow:hidden;border:1px solid #bbf7d0;background:linear-gradient(145deg,#fff 0%,#f5fff8 100%)}
.zc-ready-properties-panel .panel-head{padding:22px 24px;border-bottom:1px solid #dcfce7}
.zc-ready-properties-panel .panel-head>div{min-width:0}
.zc-ready-properties-panel .panel-head p{white-space:normal;overflow-wrap:anywhere}
.zc-ready-count{flex:0 0 auto;margin-left:auto;border-color:#bbf7d0!important;background:#ecfdf3!important;color:#187044!important}
.zc-ready-properties{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:16px 20px 20px}
.zc-ready-property{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:12px;padding:13px;border:1px solid #d5eadc;border-radius:15px;background:#fff;box-shadow:0 8px 22px rgba(28,92,57,.06)}
.zc-ready-property-picture{width:48px;height:48px;display:grid;place-items:center;overflow:hidden;border-radius:13px;background:#ecfdf3;color:#187044;font-weight:800}
.zc-ready-property-picture img{width:100%;height:100%;object-fit:cover}
.zc-ready-property-copy{min-width:0;display:flex;flex-direction:column;gap:3px}
.zc-ready-property-copy strong{color:#102142;font-size:15px}
.zc-ready-property-copy small{overflow:hidden;color:#41745a;font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.zc-ready-property-copy b{overflow:hidden;color:#187044;font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.zc-ready-property>.button{grid-column:1/-1;min-height:38px}
.zc-ready-properties-empty{grid-column:1/-1;min-height:88px;display:flex;align-items:center;justify-content:center;gap:12px;padding:18px;border:1px dashed #bbd8c5;border-radius:15px;background:rgba(255,255,255,.72);color:#526b5d;text-align:left}
.zc-ready-properties-empty>i{font-size:24px;color:#3c8b60}
.zc-ready-properties-empty span{display:grid;gap:3px}
.zc-ready-properties-empty strong{color:#234c35;font-size:14px}
.zc-ready-properties-empty small{font-size:12px}
@media(max-width:1100px){.zc-ready-properties{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.zc-ready-properties{grid-template-columns:1fr;padding:12px}.zc-ready-properties-panel .panel-head{padding:18px}.zc-ready-property-copy small,.zc-ready-property-copy b{white-space:normal}}

.push-device-settings{margin:0 24px 18px;padding:10px 16px;border:1px solid rgba(113,137,180,.2);border-radius:18px;background:linear-gradient(145deg,rgba(245,250,255,.98),rgba(239,242,255,.96));box-shadow:0 14px 34px rgba(7,20,59,.08)}
.push-device-settings.hidden{display:none!important}
.push-device-setting{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;padding:10px 0;border-bottom:1px solid rgba(113,137,180,.15);cursor:pointer}
.push-device-setting:last-of-type{border-bottom:0}
.push-device-setting>div{display:grid;gap:3px;min-width:0}
.push-device-setting strong{color:#07143b;font-size:14px}
.push-device-setting span{color:#6d7890;font-size:12px;line-height:1.35}
.push-device-setting input[role="switch"]{width:48px;height:28px;min-width:48px;appearance:none;border:0;border-radius:999px;background:#cbd4e4;box-shadow:inset 0 0 0 1px rgba(7,20,59,.08);cursor:pointer;transition:background .18s ease;position:relative}
.push-device-setting input[role="switch"]::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 2px 7px rgba(7,20,59,.25);transition:transform .18s ease}
.push-device-setting input[role="switch"]:checked{background:linear-gradient(135deg,#246beb,#6d5cf6)}
.push-device-setting input[role="switch"]:checked::after{transform:translateX(20px)}
.push-device-setting input[role="switch"]:disabled{opacity:.48;cursor:not-allowed}
.push-device-settings-note{display:block;padding:4px 0 8px;color:#7b879d;font-size:11px;line-height:1.4}
@media(max-width:600px){.push-device-settings{margin:0 14px 14px;padding:8px 14px;border-radius:16px}.push-device-setting{min-height:60px}.push-device-setting .button{white-space:nowrap}}

/* Desktop agenda readability: keep the chronological week board, but size each
   day from a readable minimum instead of compressing all seven into the window.
   Wider displays naturally reveal more days and a 4K screen can fit the week. */
@media (min-width: 1100px) {
  body.zc-app:not(.mobile-admin) .schedule-wrap {
    padding-bottom: .25rem;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-behavior: smooth;
    scroll-padding-inline: 1rem;
    scrollbar-width: auto;
    scrollbar-color: #7397c8 #e8eff8;
  }

  body.zc-app:not(.mobile-admin) .schedule-wrap::-webkit-scrollbar {
    height: 13px;
  }

  body.zc-app:not(.mobile-admin) .schedule-wrap::-webkit-scrollbar-track {
    border-radius: 999px;
    background: #e8eff8;
  }

  body.zc-app:not(.mobile-admin) .schedule-wrap::-webkit-scrollbar-thumb {
    border: 3px solid #e8eff8;
    border-radius: 999px;
    background: #7397c8;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) {
    width: max(100%, 3028px);
    min-width: 0;
    grid-template-columns: repeat(7, minmax(420px, 1fr));
    gap: 1rem;
    padding: 1rem 1rem 1.125rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) > .day-column {
    overflow: hidden;
    border: 1px solid #d7e2f1;
    border-radius: 16px;
    background: #f7f9fd;
    box-shadow: 0 10px 28px rgba(25, 54, 103, .08);
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .day-head {
    min-height: 76px;
    padding: .875rem 1rem;
    border-bottom: 1px solid #dbe5f2;
    background: #fff;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .day-head.today {
    box-shadow: inset 5px 0 0 #2563eb;
    background: linear-gradient(120deg, #e8f7ff 0%, #eeedff 100%);
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .day-head-copy {
    gap: .25rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .day-head-copy strong {
    color: #0d2043;
    font-size: 1rem;
    font-weight: 750;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .day-head-copy small {
    color: #66758e;
    font-size: .75rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .day-body {
    gap: .875rem;
    padding: .875rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-group {
    overflow: hidden;
    border: 1px solid #dce5f1;
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 7px 18px rgba(25, 54, 103, .055);
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-header {
    min-height: 68px;
    gap: .75rem;
    padding: .75rem .875rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-avatar {
    width: 40px;
    height: 40px;
    flex-basis: 40px;
    border-radius: 11px;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-copy strong {
    font-size: .9375rem;
    line-height: 1.2;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-copy small {
    margin-top: .15rem;
    font-size: .6875rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-mode {
    max-width: 46%;
    padding: .4rem .625rem;
    font-size: .625rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .cleaner-agenda-list {
    gap: .75rem;
    padding: .75rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .clean-task {
    gap: .75rem;
    padding: .875rem 3.25rem .875rem .875rem;
    border-radius: 13px;
    box-shadow: 0 6px 15px rgba(25, 54, 103, .055);
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-drag-space {
    gap: .75rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-top {
    grid-template-columns: 42px 72px minmax(0, 1fr);
    align-items: center;
    gap: .75rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .priority {
    width: 42px;
    height: 42px;
    border-radius: 10px;
    font-size: 1rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-image {
    width: 72px;
    height: 64px;
    border-radius: 10px;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-copy strong {
    overflow: visible;
    color: #122348;
    font-size: 1rem;
    line-height: 1.25;
    white-space: normal;
    text-overflow: clip;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-copy small {
    margin-top: .25rem;
    overflow: visible;
    color: #65748d;
    font-size: .75rem;
    line-height: 1.4;
    white-space: normal;
    text-overflow: clip;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-badges {
    gap: .4rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-badges .pill {
    min-height: 28px;
    padding: .4rem .6rem;
    font-size: .6875rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-actions {
    gap: .625rem;
    padding-top: .75rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-select {
    min-height: 44px;
    padding-inline: .875rem 2.5rem;
    border-radius: 10px;
    font-size: .8125rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-footer,
  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-start-row {
    min-height: 38px;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding-inline: .125rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-footer span,
  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-start-row span {
    margin-left: auto;
    white-space: nowrap;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-estimate {
    width: 100%;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .5rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .task-estimate > span:last-child {
    margin-left: 0;
    color: #65748d;
    font-weight: 500;
    text-align: right;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .reservation-event-comments {
    gap: .625rem;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .reservation-event-comment {
    padding: .75rem;
    border-radius: 11px;
  }

  body.zc-app:not(.mobile-admin) .schedule:not(.single-day) .empty-day .day-body {
    min-height: 140px;
    background: #fbfcfe;
  }
}

/* Dashboard totals are intentionally concise: title + live number only. Give
   each activity type a crisp, dimensional symbol instead of a flat pastel
   square, while keeping the same semantic color family and compact footprint. */
body.zc-app .stats .zc-stat-icon {
  position: relative;
  width: 50px;
  height: 50px;
  flex: 0 0 50px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .72);
  border-radius: 15px;
  font-size: 1.45rem;
  box-shadow: 0 9px 20px rgba(20, 45, 92, .14), inset 0 1px 0 rgba(255, 255, 255, .48);
}
body.zc-app .stats .zc-stat-icon::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 24% 18%, rgba(255, 255, 255, .56), transparent 42%);
  pointer-events: none;
}
body.zc-app .stats .zc-stat-icon > .ri {
  position: relative;
  z-index: 1;
}
body.zc-app .stats .zc-stat-icon.primary {
  color: #fff;
  background: linear-gradient(145deg, #18c8f5 0%, #2868ef 50%, #7054f5 100%);
}
body.zc-app .stats .zc-stat-icon.warning {
  color: #875300;
  background: linear-gradient(145deg, #fff8db 0%, #ffe9aa 55%, #ffd56d 100%);
}
body.zc-app .stats .zc-stat-icon.info {
  color: #08708b;
  background: linear-gradient(145deg, #e5fbff 0%, #c9f2fb 55%, #a7e5f4 100%);
}
body.zc-app .stats .zc-stat-icon.success {
  color: #34731c;
  background: linear-gradient(145deg, #f0ffe8 0%, #dcf7cd 55%, #bde9a7 100%);
}

/* Keep the unread total as a deliberate badge outside the bell surface. */
body.zc-app .zc-navbar .push-notifications {
  overflow: visible;
  isolation: isolate;
}
body.zc-app .zc-navbar .push-unread-count {
  z-index: 3;
  top: -10px;
  right: -10px;
  min-width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 6px;
  border: 3px solid #243f87;
  font-size: 10px;
  line-height: 1;
  box-shadow: 0 5px 12px rgba(255, 61, 90, .34);
}

@media (max-width: 760px) {
  body.zc-app .stats .zc-stat-icon {
    width: 38px;
    height: 38px;
    flex-basis: 38px;
    border-radius: 12px;
    font-size: 1.125rem;
  }
  body.zc-app .zc-navbar .push-unread-count {
    top: -6px;
    right: -6px;
    min-width: 18px;
    height: 18px;
    padding: 0 4px;
    border-width: 2px;
    font-size: 9px;
  }
}

/* Every dashboard card header uses one title column and one fixed right-edge
   metadata column. Counts, time ranges and month labels therefore share the
   same alignment regardless of title or subtitle length. Keep this final in
   the cascade so older panel-specific flex rules cannot pull badges inward. */
body.zc-app [data-zc-page="dashboard"] .panel-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  column-gap: 1rem;
}
body.zc-app [data-zc-page="dashboard"] .panel-head > :first-child {
  min-width: 0;
}
body.zc-app [data-zc-page="dashboard"] .panel-head > .zc-card-badge,
body.zc-app [data-zc-page="dashboard"] .panel-head > .button,
body.zc-app [data-zc-page="dashboard"] .panel-head > .attention-head-actions {
  grid-column: 2;
  justify-self: end;
  align-self: center;
  margin-left: 0;
  flex: 0 0 auto;
}
body.zc-app [data-zc-page="dashboard"] .panel-head > .zc-card-badge {
  min-width: max-content;
  justify-content: center;
  text-align: center;
  white-space: nowrap;
}

@media (max-width: 560px) {
  body.zc-app [data-zc-page="dashboard"] .panel-head {
    column-gap: .75rem;
  }
}

/* Cleaning team: genuine data-table columns on desktop, labeled cards on mobile. */
body.zc-app [data-zc-page="team"] .cleaners-panel {
  overflow-x: auto;
  overflow-y: hidden;
}
body.zc-app [data-zc-page="team"] .cleaner-table-head,
body.zc-app [data-zc-page="team"] .cleaner-list .cleaner-card {
  display: grid;
  grid-template-columns:
    48px
    minmax(155px, 1.15fr)
    minmax(122px, .85fr)
    78px
    minmax(110px, .75fr)
    minmax(110px, .72fr)
    minmax(175px, 1.35fr)
    minmax(120px, .9fr)
    minmax(190px, 1.35fr);
  align-items: center;
  column-gap: 1rem;
  width: 100%;
  min-width: 1220px;
}
body.zc-app [data-zc-page="team"] .cleaner-table-head {
  min-height: 44px;
  padding: .625rem 1.25rem;
  border-top: 1px solid #e5ebf3;
  border-bottom: 1px solid #dce4ef;
  background: linear-gradient(180deg, #f9fbfe 0%, #f3f6fb 100%);
  color: #718198;
  font-size: .6875rem;
  font-weight: 800;
  letter-spacing: .055em;
  text-transform: uppercase;
}
body.zc-app [data-zc-page="team"] .cleaner-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  min-width: 1220px;
  padding: 0;
}
body.zc-app [data-zc-page="team"] .cleaner-list .cleaner-card {
  min-height: 78px;
  padding: .75rem 1.25rem;
  border: 0 !important;
  border-bottom: 1px solid #e5eaf2 !important;
  border-radius: 0 !important;
  background: #fff;
  color: #13213d;
  text-align: left;
  box-shadow: none;
  transition: background .16s ease, box-shadow .16s ease;
}
body.zc-app [data-zc-page="team"] .cleaner-list .cleaner-card:last-child {
  border-bottom: 0 !important;
}
body.zc-app [data-zc-page="team"] .cleaner-list .cleaner-card:hover,
body.zc-app [data-zc-page="team"] .cleaner-list .cleaner-card:focus-visible {
  border-color: #e5eaf2 !important;
  background: #f8fbff;
  box-shadow: inset 4px 0 0 #2f68ef;
}
body.zc-app [data-zc-page="team"] .cleaner-list .cleaner-card > .avatar {
  width: 42px;
  height: 42px;
  align-self: center;
  border: 1px solid #e1e8f2;
  background: linear-gradient(145deg, #edf5ff, #f3efff);
  color: #3267d8;
  font-size: .8125rem;
  font-weight: 800;
}
body.zc-app [data-zc-page="team"] .cleaner-cell,
body.zc-app [data-zc-page="team"] .cleaner-current {
  min-width: 0;
}
body.zc-app [data-zc-page="team"] .cleaner-name-cell {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .25rem;
}
body.zc-app [data-zc-page="team"] .cleaner-name-cell > strong {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .375rem;
  color: #0d1b38;
  font-size: .9375rem;
  line-height: 1.25;
}
body.zc-app [data-zc-page="team"] .cleaner-name-cell .access-pending {
  margin: 0 !important;
  padding: .1875rem .4375rem;
  font-size: .625rem;
}
body.zc-app [data-zc-page="team"] .cleaner-phone-cell,
body.zc-app [data-zc-page="team"] .cleaner-schedule-cell {
  display: flex;
  align-items: center;
  gap: .4375rem;
  color: #4f607a;
  font-size: .8125rem;
  white-space: nowrap;
}
body.zc-app [data-zc-page="team"] .cleaner-phone-cell i,
body.zc-app [data-zc-page="team"] .cleaner-schedule-cell i {
  color: #7488a5;
  font-size: .9375rem;
}
body.zc-app [data-zc-page="team"] .cleaner-units-cell strong {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 38px;
  min-height: 30px;
  padding: .25rem .625rem;
  border: 1px solid #d9e6fb;
  border-radius: 999px;
  background: #f1f6ff;
  color: #285ebf;
  font-size: .8125rem;
}
body.zc-app [data-zc-page="team"] .cleaner-break-cell {
  color: #596982;
  font-size: .8125rem;
  white-space: nowrap;
}
body.zc-app [data-zc-page="team"] .cleaner-payment-cell span,
body.zc-app [data-zc-page="team"] .cleaner-duty-cell span {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  padding: .375rem .625rem;
  border-radius: .5rem;
  font-size: .75rem;
  font-weight: 700;
  line-height: 1.25;
}
body.zc-app [data-zc-page="team"] .cleaner-payment-cell span {
  background: #eef2ff;
  color: #435ad0;
}
body.zc-app [data-zc-page="team"] .cleaner-payment-cell.missing span {
  background: #fff5f2;
  color: #b55443;
}
body.zc-app [data-zc-page="team"] .cleaner-duty-cell span {
  background: #f2f5f9;
  color: #6a788e;
}
body.zc-app [data-zc-page="team"] .cleaner-duty-cell.off span {
  background: #fff2df;
  color: #92631b;
}
body.zc-app [data-zc-page="team"] .cleaner-duty-cell.hours span,
body.zc-app [data-zc-page="team"] .cleaner-duty-cell.daily span {
  background: #f2efff;
  color: #6550bd;
}
body.zc-app [data-zc-page="team"] .cleaner-current {
  align-self: stretch;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: .125rem;
  margin: 0;
  padding: .4375rem .75rem;
  border: 1px solid #e2e8f0;
  border-radius: .625rem;
  background: #f7f9fc;
}
body.zc-app [data-zc-page="team"] .cleaner-current > strong {
  color: #172642;
  font-size: .8125rem;
  line-height: 1.25;
}
body.zc-app [data-zc-page="team"] .cleaner-current > em,
body.zc-app [data-zc-page="team"] .cleaner-current > small {
  color: #738198;
  font-size: .6875rem;
  font-style: normal;
}
body.zc-app [data-zc-page="team"] .cleaner-current.is-working {
  border-color: #bfe8d0;
  background: #f0fbf5;
}
body.zc-app [data-zc-page="team"] .cleaner-current.is-off {
  border-color: #f0dec0;
  background: #fff9ef;
}

@media (max-width: 1100px) {
  body.zc-app [data-zc-page="team"] .cleaners-panel {
    overflow: hidden;
  }
  body.zc-app [data-zc-page="team"] .cleaner-table-head {
    display: none;
  }
  body.zc-app [data-zc-page="team"] .cleaner-list {
    min-width: 0;
    gap: .75rem;
    padding: .75rem;
  }
  body.zc-app [data-zc-page="team"] .cleaner-list .cleaner-card {
    grid-template-columns: 44px minmax(0, 1fr);
    gap: .625rem .75rem;
    min-width: 0;
    padding: .875rem;
    border: 1px solid #dfe7f1 !important;
    border-radius: .75rem !important;
  }
  body.zc-app [data-zc-page="team"] .cleaner-list .cleaner-card:last-child {
    border-bottom: 1px solid #dfe7f1 !important;
  }
  body.zc-app [data-zc-page="team"] .cleaner-name-cell {
    grid-column: 2;
    align-self: center;
  }
  body.zc-app [data-zc-page="team"] .cleaner-cell:not(.cleaner-name-cell) {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: 108px minmax(0, 1fr);
    align-items: center;
    gap: .75rem;
    min-height: 34px;
    padding-top: .5rem;
    border-top: 1px solid #edf1f6;
    white-space: normal;
  }
  body.zc-app [data-zc-page="team"] .cleaner-cell:not(.cleaner-name-cell)::before,
  body.zc-app [data-zc-page="team"] .cleaner-current::before {
    content: attr(data-label);
    color: #8290a5;
    font-size: .625rem;
    font-weight: 800;
    letter-spacing: .045em;
    text-transform: uppercase;
  }
  body.zc-app [data-zc-page="team"] .cleaner-phone-cell i,
  body.zc-app [data-zc-page="team"] .cleaner-schedule-cell i {
    display: none;
  }
  body.zc-app [data-zc-page="team"] .cleaner-current {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: 108px minmax(0, 1fr);
    gap: .25rem .75rem;
    padding: .75rem;
  }
  body.zc-app [data-zc-page="team"] .cleaner-current > strong,
  body.zc-app [data-zc-page="team"] .cleaner-current > small,
  body.zc-app [data-zc-page="team"] .cleaner-current > em,
  body.zc-app [data-zc-page="team"] .cleaner-current > .team-progress {
    grid-column: 2;
  }
}

/* Cleaner agenda: readable task cards on narrow Android screens. */
body.zc-cleaner-app .mobile-plan-block {
  display: grid;
  grid-template-columns: 2.75rem minmax(0, 1fr) auto;
  align-items: center;
  gap: .75rem;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  margin: 0 0 .75rem;
  padding: .75rem;
  border: 1px solid #bcd7fb;
  border-radius: .875rem;
  background: linear-gradient(125deg, #f6faff, #eaf3ff);
  color: #173b6d;
  box-shadow: 0 .375rem 1rem rgba(37, 99, 235, .09);
}
body.zc-cleaner-app .mobile-plan-block.break { border-color: #efd18c; background: linear-gradient(125deg, #fffaf0, #fff0c9); color: #754606; }
body.zc-cleaner-app .mobile-plan-block.post-break-preparation { border-color: #d7cbfa; background: linear-gradient(125deg, #faf8ff, #eee9ff); color: #52349e; }
body.zc-cleaner-app .mobile-plan-icon {
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: .75rem;
  background: #d8eaff;
  color: #2563eb;
  font-size: 1.125rem;
  font-weight: 850;
}
body.zc-cleaner-app .mobile-plan-block.break .mobile-plan-icon { background: #ffe7ac; color: #9a5b05; }
body.zc-cleaner-app .mobile-plan-block.post-break-preparation .mobile-plan-icon { background: #e7dfff; color: #6d4eea; }
body.zc-cleaner-app .mobile-plan-block > span:nth-child(2) { min-width: 0; display: grid; gap: .1875rem; }
body.zc-cleaner-app .mobile-plan-block strong { font-size: .875rem; line-height: 1.15; }
body.zc-cleaner-app .mobile-plan-block small { color: #6c7c91; font-size: .6875rem; line-height: 1.2; }
body.zc-cleaner-app .mobile-plan-block time { font-size: .8125rem; font-weight: 900; white-space: nowrap; }
body.zc-cleaner-app .mobile-task {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: .625rem;
  width: 100%;
  min-width: 0;
  margin: 0 0 .75rem;
  padding: .75rem;
  border-radius: .875rem;
}
body.zc-cleaner-app .mobile-task-head {
  display: grid;
  grid-template-columns: 2.5rem 3.625rem minmax(0, 1fr) 1.25rem;
  align-items: center;
  gap: .625rem;
  width: 100%;
  min-width: 0;
}
body.zc-cleaner-app .mobile-task-head > .priority {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: .75rem;
  font-size: 1rem;
}
body.zc-cleaner-app .mobile-task-head > img {
  width: 3.625rem;
  height: 3.625rem;
  border-radius: .75rem;
  object-fit: cover;
}
body.zc-cleaner-app .mobile-task-copy {
  min-width: 0;
}
body.zc-cleaner-app .mobile-task-copy strong {
  font-size: 1.0625rem;
  line-height: 1.2;
}
body.zc-cleaner-app .mobile-task-copy small {
  margin-top: .25rem;
  color: #6e7d92;
  font-size: .75rem;
  line-height: 1.3;
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
}
body.zc-cleaner-app .mobile-task-head > .chevron {
  align-self: center;
  justify-self: end;
  font-size: 1.5rem;
}
body.zc-cleaner-app .mobile-task-chips {
  display: flex;
  flex-wrap: wrap;
  gap: .375rem;
  width: 100%;
  min-width: 0;
  margin: 0;
  padding-top: .625rem;
  border-top: 1px solid rgba(126, 145, 170, .2);
}
body.zc-cleaner-app .mobile-task-start {
  display: flex;
  align-items: center;
  width: 100%;
  min-width: 0;
  padding: .625rem .75rem;
  border: 1px solid #b9d7ff;
  border-radius: .625rem;
  background: #edf5ff;
  color: #174ea6;
  font-size: .75rem;
  font-style: normal;
  font-weight: 850;
  line-height: 1.25;
}
body.zc-cleaner-app .mobile-task-notice,
body.zc-cleaner-app .mobile-task-duty {
  min-height: 1.75rem;
  padding: .4375rem .625rem;
  border-radius: .5rem;
  font-size: .6875rem;
  line-height: 1.2;
  white-space: normal;
}
body.zc-cleaner-app .mobile-task .mobile-live-progress {
  width: 100%;
  margin-top: 0;
}

/* Header occupancy summary: one read-only snapshot, safe on narrow phones. */
body.zc-app #occupancy-modal .occupancy-card {
  width: min(35rem, 100%); max-height: calc(100dvh - 3rem);
  display: flex; flex-direction: column; overflow: hidden;
  border-radius: 1.5rem; background: #fff;
}
body.zc-app #occupancy-modal .occupancy-head {
  display: flex; align-items: center; gap: .875rem; padding: 1.25rem 1.5rem;
  flex: 0 0 auto; border-bottom: 1px solid #edf0f6;
}
body.zc-app #occupancy-modal h2 { margin: 0; font-size: 1.25rem; line-height: 1.25; }
body.zc-app #occupancy-modal .occupancy-head > button { margin-left: auto; flex: 0 0 auto; }
body.zc-app #occupancy-modal .occupancy-icon {
  display: grid; place-items: center; width: 2.75rem; height: 2.75rem; flex: 0 0 auto;
  border-radius: .875rem; background: #edf3ff; color: #2960df; font-size: 1.5rem;
}
body.zc-app #occupancy-modal .occupancy-body { padding: 1.5rem; overflow-y: auto; min-height: 0; }
body.zc-app #occupancy-modal .occupancy-rate { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
body.zc-app #occupancy-modal .occupancy-eyebrow { display: block; color: #66748c; font-size: .68rem; font-weight: 750; letter-spacing: .12em; }
body.zc-app #occupancy-modal .occupancy-rate strong { display: block; font-size: 3.4rem; line-height: 1.2; letter-spacing: -.055em; color: #215dde; font-variant-numeric: tabular-nums; }
body.zc-app #occupancy-modal .occupancy-now { display: inline-flex; gap: .35rem; align-items: center; padding: .4rem .7rem; border-radius: 999px; background: #edf7f3; color: #27765c; font-size: .75rem; font-weight: 650; }
body.zc-app #occupancy-modal .occupancy-progress { height: .45rem; margin: 1rem 0 1.5rem; overflow: hidden; border-radius: 999px; background: #eaf0fa; }
body.zc-app #occupancy-modal .occupancy-progress > span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg,#2463e7,#7960ef); }
body.zc-app #occupancy-modal .occupancy-metrics { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .6rem; }
body.zc-app #occupancy-modal .occupancy-metrics article { display: flex; flex-direction: column; align-items: flex-start; gap: .3rem; min-width: 0; padding: 1rem .875rem; border: 1px solid #e8edf5; border-radius: .875rem; background: #f8faff; }
body.zc-app #occupancy-modal .occupancy-metrics article.is-occupied { background: #edf3ff; border-color: #d9e5ff; }
body.zc-app #occupancy-modal .occupancy-metrics i { font-size: 1.15rem; color: #5674ac; }
body.zc-app #occupancy-modal .occupancy-metrics strong { color: #162846; font-size: 1.8rem; line-height: 1.1; font-variant-numeric: tabular-nums; }
body.zc-app #occupancy-modal .occupancy-metrics span { color: #66748c; font-size: .74rem; line-height: 1.3; overflow-wrap: anywhere; }
body.zc-app #occupancy-modal .occupancy-note { margin: 1.2rem 0 0; color: #66748c; font-size: .75rem; line-height: 1.55; }
body.zc-app #occupancy-modal .occupancy-warning { color: #936018; font-size: .75rem; margin: .75rem 0 0; }
body.zc-app #occupancy-modal .occupancy-empty { padding: 1.25rem 0; color: #354964; }
body.zc-app #occupancy-modal .occupancy-footer { display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex: 0 0 auto; padding: 1rem 1.5rem; border-top: 1px solid #edf0f6; }
body.zc-app #occupancy-modal .occupancy-footer small { color: #6e7c90; font-size: .7rem; }
@media (max-width: 420px) {
  body.zc-app #occupancy-modal .occupancy-head, body.zc-app #occupancy-modal .occupancy-body, body.zc-app #occupancy-modal .occupancy-footer { padding: 1rem; }
  body.zc-app #occupancy-modal .occupancy-head { gap: .625rem; }
  body.zc-app #occupancy-modal h2 { font-size: 1.1rem; }
  body.zc-app #occupancy-modal .occupancy-metrics article { padding: .75rem .55rem; }
  body.zc-app #occupancy-modal .occupancy-metrics span { font-size: .7rem; }
}

/* Same-day turnovers must always share one unmistakable pending state. */
body.zc-cleaner-app .mobile-task.turnover:not(.is-cleaned):not(.current) {
  border-color: #efb34c !important;
  background: linear-gradient(145deg, #fff9eb 0%, #fff1cf 100%) !important;
  box-shadow: 0 .5rem 1.25rem rgba(181, 108, 14, .14);
}
body.zc-cleaner-app .mobile-task.turnover:not(.is-cleaned):not(.current) .priority {
  background: linear-gradient(145deg, #ffe9b3, #ffd681);
  color: #8a4a05;
  box-shadow: inset 0 0 0 1px rgba(202, 125, 18, .16);
}
body.zc-cleaner-app .mobile-task.turnover:not(.is-cleaned):not(.current) .mobile-task-copy small {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  width: fit-content;
  max-width: 100%;
  padding: .1875rem .375rem;
  border: 1px solid rgba(211, 127, 13, .24);
  border-radius: 999px;
  background: rgba(255, 224, 158, .66);
  color: #8a4a05;
  font-size: .625rem;
  font-weight: 850;
  letter-spacing: -.015em;
  line-height: 1.1;
  white-space: nowrap;
}
body.zc-cleaner-app .mobile-task.turnover:not(.is-cleaned):not(.current) .mobile-task-copy small::before {
  content: "";
  flex: 0 0 auto;
  width: .3125rem;
  height: .3125rem;
  border-radius: 50%;
  background: #f29d16;
  box-shadow: 0 0 0 .125rem rgba(242, 157, 22, .16);
}

/* Keep the slide action comfortably above Android's system navigation and
   iPhone's home indicator. Android browsers often report a zero safe area,
   so retain a fixed minimum as well. */
@media (max-width: 720px) {
  body.zc-cleaner-app #mobile-detail-view .detail-content {
    padding-bottom: max(3rem, calc(env(safe-area-inset-bottom, 0px) + 2rem));
    scroll-padding-bottom: max(3rem, calc(env(safe-area-inset-bottom, 0px) + 2rem));
  }
}

@media (max-width: 380px) {
  body.zc-cleaner-app .mobile-task {
    padding: .6875rem;
  }
  body.zc-cleaner-app .mobile-task-head {
    grid-template-columns: 2.375rem 3.375rem minmax(0, 1fr) 1rem;
    gap: .5rem;
  }
  body.zc-cleaner-app .mobile-task-head > .priority {
    width: 2.375rem;
    height: 2.375rem;
  }
  body.zc-cleaner-app .mobile-task-head > img {
    width: 3.375rem;
    height: 3.375rem;
  }
  body.zc-cleaner-app .mobile-task-copy strong {
    font-size: 1rem;
  }
}

/* Ferramentas: complete, clickable cleaner-priority overview for every unit. */
body.zc-app .zc-property-priority-overview-panel {
  grid-column: 1 / -1;
  min-width: 0;
  overflow: hidden;
}
body.zc-app .zc-property-priority-overview-head {
  align-items: center;
  gap: 1rem;
}
body.zc-app .zc-property-priority-overview-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .625rem;
  min-width: 0;
}
body.zc-app .zc-property-priority-count {
  flex: 0 0 auto;
  padding: .35rem .625rem;
  border-radius: 999px;
  background: #eef4ff;
  color: #275dad;
  font-size: .6875rem;
  font-weight: 750;
}
body.zc-app .zc-property-priority-search {
  width: min(220px, 30vw);
  min-width: 150px;
  height: 38px;
  display: flex;
  align-items: center;
  gap: .45rem;
  padding: 0 .7rem;
  border: 1px solid #dce5f0;
  border-radius: .6875rem;
  background: #f8faff;
  color: #697a92;
}
body.zc-app .zc-property-priority-search input {
  width: 100%;
  min-width: 0;
  height: auto;
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  background: transparent;
  box-shadow: none;
  color: var(--zc-brand-ink);
  font: inherit;
  font-size: .75rem;
}
body.zc-app .zc-property-priority-search:focus-within {
  border-color: #77aef8;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, .1);
}
body.zc-app .zc-property-priority-overview {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .625rem;
  padding: 1rem;
  background: #f5f8fc;
}
body.zc-app .zc-property-priority-unit {
  width: 100%;
  min-width: 0;
  min-height: 74px;
  display: grid;
  grid-template-columns: minmax(82px, auto) minmax(0, 1fr) 18px;
  align-items: center;
  gap: .75rem;
  padding: .75rem;
  border: 1px solid #dfe7f1;
  border-radius: .875rem;
  background: #fff;
  color: inherit;
  text-align: left;
  box-shadow: 0 4px 14px rgba(11, 23, 57, .04);
  cursor: pointer;
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
body.zc-app .zc-property-priority-unit:hover {
  border-color: #8db8f3;
  box-shadow: 0 8px 22px rgba(29, 78, 152, .1);
  transform: translateY(-1px);
}
body.zc-app .zc-property-priority-unit:focus-visible {
  outline: 3px solid rgba(37, 99, 235, .2);
  outline-offset: 2px;
}
body.zc-app .zc-property-priority-unit-name {
  min-width: 0;
  display: grid;
  gap: .15rem;
}
body.zc-app .zc-property-priority-unit-name strong {
  color: var(--zc-brand-ink);
  font-size: .875rem;
  font-weight: 750;
}
body.zc-app .zc-property-priority-unit-name small {
  color: #77869a;
  font-size: .625rem;
}
body.zc-app .zc-property-priority-cleaners {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: .4rem;
  overflow: hidden;
}
body.zc-app .zc-property-priority-cleaner {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  padding: .25rem .45rem .25rem .25rem;
  border: 1px solid #e0e7f2;
  border-radius: 999px;
  background: #f8faff;
  color: #435570;
  white-space: nowrap;
}
body.zc-app .zc-property-priority-cleaner.is-first {
  border-color: #9fc3fa;
  background: linear-gradient(135deg, #eef6ff, #f0efff);
  color: #1859b9;
}
body.zc-app .zc-property-priority-cleaner > b {
  width: 18px;
  height: 18px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: #e8eef7;
  font-size: .6rem;
}
body.zc-app .zc-property-priority-cleaner.is-first > b {
  background: #2563eb;
  color: #fff;
}
body.zc-app .zc-property-priority-cleaner > .avatar {
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: #e8f1ff;
  color: #2c64b8;
  font-size: .55rem;
  font-style: normal;
  font-weight: 800;
}
body.zc-app .zc-property-priority-cleaner > strong {
  max-width: 104px;
  overflow: hidden;
  text-overflow: ellipsis;
  color: inherit;
  font-size: .675rem;
  font-weight: 700;
}
body.zc-app .zc-property-priority-unassigned {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  color: #a33f42;
  font-size: .7rem;
  font-weight: 650;
}
body.zc-app .zc-property-priority-open {
  color: #6f8098;
  font-size: 1.05rem;
}

@media (max-width: 920px) {
  body.zc-app .zc-property-priority-overview { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 720px) {
  body.zc-app .zc-property-priority-overview-head {
    align-items: stretch;
    flex-direction: column;
  }
  body.zc-app .zc-property-priority-overview-actions {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    width: 100%;
  }
  body.zc-app .zc-property-priority-search { width: 100%; min-width: 0; }
  body.zc-app .zc-property-priority-overview { padding: .75rem; }
  body.zc-app .zc-property-priority-unit {
    grid-template-columns: 64px minmax(0, 1fr) 16px;
    gap: .5rem;
    padding: .6875rem;
  }
  body.zc-app .zc-property-priority-cleaners {
    align-items: stretch;
    flex-direction: column;
    gap: .25rem;
  }
  body.zc-app .zc-property-priority-cleaner { width: fit-content; max-width: 100%; }
  body.zc-app .zc-property-priority-cleaner > strong { max-width: 150px; }
}
@media (max-width: 390px) {
  body.zc-app .zc-property-priority-overview-actions { grid-template-columns: auto minmax(0, 1fr); }
  body.zc-app #edit-property-priorities { grid-column: 1 / -1; width: 100%; justify-content: center; }
}

/* Agenda order remains its own badge. Planned, real start and real finish are
   separate compact time cards, distinguished by color and fixed order. */
body.zc-app .clean-task .priority {
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}
body.zc-app .clean-task .priority > b {
  color: inherit;
  font-size: .92em;
  font-weight: 800;
  line-height: 1;
}
body.zc-app .agenda-time-cards {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .25rem;
  margin-top: .3rem;
}
body.zc-app .agenda-time-cards > time {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.9rem;
  padding: .2rem .35rem;
  border: 1px solid #c8d9f3;
  border-radius: .42rem;
  background: #f5f8fd;
  color: #234c86;
  font-size: .625rem;
  font-weight: 850;
  letter-spacing: -.01em;
  line-height: 1;
  white-space: nowrap;
}
body.zc-app .agenda-time-cards > .actual-start-card {
  border-color: #9ddbe3;
  background: #eefbfc;
  color: #087181;
}
body.zc-app .agenda-time-cards > .actual-finish-card {
  border-color: #b9dca8;
  background: #f1f9ed;
  color: #3f7f28;
}
body.zc-app.mobile-admin .agenda-time-cards > time {
  border-color: rgba(255, 255, 255, .76);
  background: rgba(255, 255, 255, .94);
  color: #173b78;
  text-shadow: none;
  box-shadow: 0 .2rem .65rem rgba(3, 15, 45, .2);
}
body.zc-app.mobile-admin .agenda-time-cards > .actual-start-card {
  border-color: #a8e8ef;
  color: #087181;
}
body.zc-app.mobile-admin .agenda-time-cards > .actual-finish-card {
  border-color: #c8e9b9;
  color: #3f7f28;
}

/* Direct history shortcut for completed-work analysis. */
body.zc-app .agenda-history-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
}
body.zc-app .agenda-history-button.is-active {
  border-color: #9cc7ff;
  background: #edf5ff;
  color: #1d5dc4;
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .08);
}
body.zc-app.mobile-admin .agenda-history-button { min-height: 2.75rem; }
/* Daily interval controls shared by Admin and Cleaner. */
body.zc-app button.agenda-plan-block.break,
body.zc-cleaner-app button.mobile-plan-block.break {
  width: 100%;
  font: inherit;
  text-align: left;
  cursor: pointer;
  appearance: none;
}
body.zc-app button.agenda-plan-block.break { grid-template-columns: 2.25rem minmax(0, 1fr) auto 1rem; }
body.zc-cleaner-app button.mobile-plan-block.break { grid-template-columns: 2.75rem minmax(0, 1fr) auto 1rem; }
body.zc-app .agenda-plan-block.break.ignored,
body.zc-cleaner-app .mobile-plan-block.break.ignored {
  border-color: #cbd2dc;
  background: linear-gradient(125deg, #f3f4f6, #e7e9ed);
  color: #657080;
  box-shadow: none;
  filter: grayscale(.7);
  opacity: .7;
}
body.zc-app .agenda-plan-block.break.ignored .agenda-plan-icon,
body.zc-cleaner-app .mobile-plan-block.break.ignored .mobile-plan-icon {
  background: #dfe3e8;
  color: #707987;
}
body.zc-app .agenda-plan-block.break.in_progress,
body.zc-cleaner-app .mobile-plan-block.break.in_progress {
  border-color: #eba929;
  background: linear-gradient(120deg, #fff4ce, #ffe29a);
  color: #6f3f00;
  animation: zc-break-pulse 1.65s ease-in-out infinite;
}
body.zc-app .agenda-plan-block.break.completed,
body.zc-cleaner-app .mobile-plan-block.break.completed {
  border-color: #cbd6d0;
  background: linear-gradient(125deg, #f4f7f5, #e9eeeb);
  color: #53635a;
  box-shadow: none;
}
.break-live-dot {
  display: inline-block;
  width: .5rem;
  height: .5rem;
  margin-right: .375rem;
  border-radius: 999px;
  background: #f59e0b;
  box-shadow: 0 0 0 .25rem rgba(245, 158, 11, .18);
  animation: zc-break-dot 1s ease-in-out infinite;
}
.break-open { align-self: center; font-size: 1.15rem; font-style: normal; font-weight: 900; }
@keyframes zc-break-pulse {
  0%, 100% { box-shadow: 0 .375rem 1rem rgba(217, 119, 6, .12); }
  50% { box-shadow: 0 .5rem 1.4rem rgba(217, 119, 6, .28); }
}
@keyframes zc-break-dot { 0%, 100% { opacity: .55; transform: scale(.82); } 50% { opacity: 1; transform: scale(1); } }
.break-confirm-card { width: min(26rem, calc(100vw - 2rem)); }
.break-confirm-card .modal-head { justify-content: flex-start; }
.break-confirm-card .modal-head > div { min-width: 0; }
.break-confirm-card .modal-head small { display: block; color: #748298; font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.break-confirm-card .modal-body { display: grid; gap: 1rem; }
.break-confirm-card .modal-body p { margin: 0; color: #435167; font-size: .95rem; line-height: 1.55; }
.break-primary-action,
.break-primary-action > .button { width: 100%; }
.break-primary-action > .button {
  min-height: 3.25rem;
  justify-content: center;
  font-size: 1rem;
  font-weight: 800;
}
.break-skip-zone {
  display: grid;
  gap: .75rem;
  padding: .9rem;
  border: 1px solid #f0d5a3;
  border-radius: .875rem;
  background: #fff9ed;
}
.break-skip-zone > span { display: grid; gap: .25rem; }
.break-skip-zone strong { color: #684816; font-size: .875rem; }
.break-skip-zone small { color: #80673e; font-size: .75rem; line-height: 1.45; }
.break-skip-zone > .button {
  width: 100%;
  min-height: 2.75rem;
  justify-content: center;
}
.break-confirm-card .break-confirm-footer {
  display: block;
  padding-top: .75rem;
}
.break-confirm-card .break-confirm-footer > .button {
  width: 100%;
  justify-content: center;
}
.break-confirm-icon {
  display: grid;
  flex: 0 0 auto;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: .8rem;
  background: #fff0c8;
  color: #96600a;
  font-size: 1.2rem;
}
body.zc-cleaner-app .break-readonly { border-color: #e5bd58; background: #fff8e8; }
@media (prefers-reduced-motion: reduce) {
  body.zc-app .agenda-plan-block.break.in_progress,
  body.zc-cleaner-app .mobile-plan-block.break.in_progress,
  .break-live-dot { animation: none; }
}

/* 2026-09-03 · ignored-cleaning safety workflow */
.ignore-task-card{width:min(620px,calc(100vw - 28px));overflow:hidden}
.ignore-task-head{align-items:center;background:linear-gradient(135deg,#fff8ef 0%,#fff 72%);border-bottom:1px solid #f0dcc3}
.ignore-task-head>div{min-width:0;flex:1}
.ignore-task-head small{display:block;color:#9b5a18;font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;margin-bottom:3px}
.ignore-task-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:15px;background:#fff0dc;color:#b85f14;font-size:1.4rem;flex:none}
.ignore-task-body{display:grid;gap:18px;padding:24px}
.ignore-task-summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 17px;border-radius:15px;background:#f4f7fc;border:1px solid #e3e9f2}
.ignore-task-summary strong{font-size:1.08rem;color:#10213e}
.ignore-task-summary span{color:#63708a;font-size:.9rem;text-align:right}
.ignore-task-warning{padding:16px 18px;border:1px solid #efc985;border-radius:16px;background:#fff8e8;color:#654014}
.ignore-task-warning b{display:block;margin-bottom:5px;color:#934810}
.ignore-task-warning p,.ignore-task-critical p{margin:0;line-height:1.48}
.ignore-task-body .field{display:grid;gap:7px}
.ignore-task-body .field>span{font-weight:750;color:#18243b}
.ignore-task-body textarea,.ignore-task-body input{width:100%;box-sizing:border-box}
.ignore-task-body textarea{resize:vertical;min-height:104px}
.ignore-task-body .field>small{color:#6b768c;line-height:1.4}
.ignore-task-critical{display:grid;gap:12px;padding:18px;border-radius:17px;border:2px solid #d85935;background:#fff4f0;color:#692615;box-shadow:0 10px 30px rgba(157,60,29,.12)}
.ignore-task-critical>strong{display:flex;align-items:center;gap:8px;color:#a1341d;font-size:1rem}
.ignore-task-critical b{color:#8d2716}
.task-restore-button{box-shadow:0 8px 20px rgba(36,94,197,.2)}
.ignored-task-safety{margin:0 24px 22px;padding:20px;border-radius:18px;border:2px solid #e8a957;background:linear-gradient(145deg,#fff8e7,#fffdf8);box-shadow:0 12px 30px rgba(137,79,16,.1);color:#4d3216}
.ignored-task-safety header{display:flex;align-items:center;gap:13px;margin-bottom:15px}
.ignored-task-safety header>i{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:#f5a93b;color:#fff;font-size:1.25rem}
.ignored-task-safety header span{display:grid;gap:2px}
.ignored-task-safety header small{color:#a45d14;font-size:.67rem;font-weight:900;letter-spacing:.1em}
.ignored-task-safety header strong{font-size:1.08rem;color:#5b3510}
.ignored-task-safety dl{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0}
.ignored-task-safety dl>div{padding:11px 13px;border-radius:12px;background:rgba(255,255,255,.72);border:1px solid #f1d8b8}
.ignored-task-safety dl>.reason{grid-column:1/-1}
.ignored-task-safety dt{font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#a66b2c}
.ignored-task-safety dd{margin:4px 0 0;font-weight:700;color:#4c331b;overflow-wrap:anywhere}
.ignored-task-safety>p{margin:14px 0 0;line-height:1.48;color:#76512b}
.ignored-agenda-list{display:grid;gap:10px;margin-top:14px;padding-top:14px;border-top:1px dashed #e8a95a}
.ignored-agenda-list>header{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#9d5212;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}
.ignored-agenda-list>header span{display:grid;place-items:center;min-width:24px;height:24px;border-radius:999px;background:#f59c32;color:#fff;font-weight:900}
.ignored-agenda-task{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:11px;width:100%;padding:12px;border:1px solid #e89c45;border-radius:15px;background:linear-gradient(135deg,#fff8e9,#fff);color:#15213a;text-align:left;box-shadow:0 7px 16px rgba(140,73,10,.08);cursor:pointer}
.ignored-agenda-task:hover{border-color:#cf6f17;transform:translateY(-1px);box-shadow:0 10px 22px rgba(140,73,10,.13)}
.ignored-agenda-task>img{width:48px;height:48px;border-radius:12px;object-fit:cover;background:#f1f3f8}
.ignored-agenda-task>span{display:grid;gap:3px;min-width:0}
.ignored-agenda-task small{color:#a14d10;font-size:.58rem;font-weight:900;letter-spacing:.05em;white-space:normal}
.ignored-agenda-task strong{font-size:1rem}
.ignored-agenda-task em{font-style:normal;color:#71573d;font-size:.75rem;line-height:1.35;overflow-wrap:anywhere}
.ignored-agenda-task>b{display:flex;align-items:center;gap:2px;color:#a65410;font-size:.72rem;white-space:nowrap}
.attention-item.severity-critical .attention-type{background:#fff0eb;color:#a83622}
@media(max-width:700px){
  .ignore-task-body{padding:18px;gap:15px}
  .ignore-task-summary{align-items:flex-start;flex-direction:column}
  .ignore-task-summary span{text-align:left}
  .ignore-task-card .modal-footer{display:grid;grid-template-columns:1fr;gap:9px}
  .ignore-task-card .modal-footer .footer-spacer{display:none}
  .ignore-task-card .modal-footer button{width:100%}
  .ignored-task-safety{margin:0 16px 18px;padding:17px}
  .ignored-task-safety dl{grid-template-columns:1fr}
  .ignored-task-safety dl>.reason{grid-column:auto}
  .ignored-agenda-task{grid-template-columns:42px minmax(0,1fr)}
  .ignored-agenda-task>img{width:42px;height:42px}
  .ignored-agenda-task>b{grid-column:2;justify-self:start}
}
