/* ============================================================================
   daily-reports.css — Daily Report module styles.
   Built from the binding visual contract docs/daily-report-accordion-mockup.html.
   All classes are `dr-`-prefixed and scoped under #daily-reports-container so the
   generic mockup names (.btn/.grid/.cell/.meta/...) never collide with global app CSS.
   The only net-new chrome vs. Meetings is the accordion wrapper (plan D8).
   ============================================================================ */

#daily-reports-container {
    box-sizing: border-box;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    font-size: 13px;
    color: #1a1a1a;
    background: #f7f8f9;
}
#daily-reports-container * { box-sizing: border-box; }
#daily-reports-container .dr-spacer { flex: 1; }
#daily-reports-container .dr-muted { color: #adb5bd; }

/* ── shared buttons / pills ────────────────────────────────────────────── */
#daily-reports-container .dr-btn {
    padding: 6px 13px; border-radius: 5px; border: 1px solid #dee2e6; background: #fff;
    cursor: pointer; font-size: 12px; font-weight: 500; color: #495057;
}
#daily-reports-container .dr-btn:hover { background: #f8f9fa; border-color: #adb5bd; }
#daily-reports-container .dr-btn.dr-success { background: #198754; color: #fff; border-color: #198754; }
#daily-reports-container .dr-btn.dr-success:hover { background: #157347; }
#daily-reports-container .dr-btn.dr-primary { background: #2563eb; color: #fff; border-color: #2563eb; }
#daily-reports-container .dr-btn:disabled { opacity: .55; cursor: not-allowed; }
#daily-reports-container .dr-btn.dr-sm { padding: 3px 9px; font-size: 11px; }
#daily-reports-container .dr-pill { font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: 14px; }
#daily-reports-container .dr-pill.dr-draft { background: #fff3cd; color: #664d03; }
#daily-reports-container .dr-pill.dr-locked { background: #d1e7dd; color: #0f5132; }
#daily-reports-container .dr-pill.dr-locked[data-act] { cursor: pointer; }
#daily-reports-container .dr-pill.dr-locked[data-act]:hover { background: #bcd9c9; }

/* ============================================================================
   LEVEL 1 — day list + calendar
   ============================================================================ */
#daily-reports-container #dr-level1 { display: flex; flex-direction: column; height: 100%; min-height: 0; }
#daily-reports-container .dr-l1-header {
    display: flex; align-items: center; gap: 14px; padding: 12px 18px;
    background: #fff; border-bottom: 1px solid #dee2e6; flex-shrink: 0;
}
#daily-reports-container .dr-l1-header h2 { margin: 0; font-size: 18px; font-weight: 800; color: #111827; }
#daily-reports-container .dr-l1-header .dr-sep { width: 1px; height: 22px; background: #e5e7eb; }
#daily-reports-container .dr-sb-item { font-size: 12px; color: #6b7280; }
#daily-reports-container .dr-sb-item .dr-sb-n { font-weight: 800; font-size: 15px; color: #374151; margin-right: 3px; }
#daily-reports-container .dr-sb-item.dr-hl .dr-sb-n { color: #2563eb; }
#daily-reports-container .dr-sb-item.dr-warn .dr-sb-n { color: #dc3545; }

#daily-reports-container .dr-l1-tabs {
    display: flex; gap: 4px; padding: 8px 18px 0; background: #fff;
    border-bottom: 1px solid #dee2e6; flex-shrink: 0;
}
#daily-reports-container .dr-l1-tab {
    padding: 7px 14px; border: none; background: transparent; cursor: pointer;
    font-size: 12.5px; color: #6b7280; border-bottom: 2px solid transparent; font-weight: 500;
}
#daily-reports-container .dr-l1-tab:hover { color: #374151; }
#daily-reports-container .dr-l1-tab.dr-active { color: #2563eb; border-bottom-color: #2563eb; font-weight: 700; }

#daily-reports-container .dr-l1-body { flex: 1; overflow-y: auto; padding: 14px 18px; min-height: 0; }

/* day list */
#daily-reports-container .dr-day-list { display: flex; flex-direction: column; gap: 8px; }
#daily-reports-container .dr-day-row {
    display: flex; align-items: center; gap: 14px; padding: 12px 16px; background: #fff;
    border: 1px solid #e5e7eb; border-radius: 9px; cursor: pointer;
}
#daily-reports-container .dr-day-row:hover { border-color: #93c5fd; box-shadow: 0 2px 8px rgba(37,99,235,.08); }
#daily-reports-container .dr-day-date { min-width: 168px; }
#daily-reports-container .dr-day-date .dr-d-day { font-weight: 700; font-size: 13.5px; color: #212529; }
#daily-reports-container .dr-day-date .dr-d-sub { font-size: 11px; color: #adb5bd; }
#daily-reports-container .dr-day-wx { font-size: 12px; color: #6b7280; min-width: 130px; }
#daily-reports-container .dr-day-totals { display: flex; gap: 16px; font-size: 12px; color: #6b7280; }
#daily-reports-container .dr-day-totals b { color: #374151; }
#daily-reports-container .dr-day-row .dr-spacer { flex: 1; }

/* calendar */
#daily-reports-container .dr-cal { background: #fff; border: 1px solid #e5e7eb; border-radius: 10px; padding: 14px; }
#daily-reports-container .dr-cal-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
#daily-reports-container .dr-cal-head .dr-cal-title { font-weight: 700; font-size: 14px; }
#daily-reports-container .dr-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
#daily-reports-container .dr-cal-dow { text-align: center; font-size: 10px; font-weight: 700; color: #9ca3af; text-transform: uppercase; padding-bottom: 4px; }
#daily-reports-container .dr-cal-cell {
    min-height: 64px; border: 1px solid #eef0f3; border-radius: 7px; padding: 6px; position: relative;
    font-size: 12px; color: #374151; cursor: pointer; background: #fff;
}
#daily-reports-container .dr-cal-cell:hover { border-color: #93c5fd; background: #f8faff; }
#daily-reports-container .dr-cal-cell.dr-empty { background: #fafbfc; cursor: default; border-color: #f1f3f5; }
#daily-reports-container .dr-cal-cell.dr-today { border-color: #2563eb; box-shadow: inset 0 0 0 1px #2563eb; }
#daily-reports-container .dr-cal-cell .dr-cal-dot {
    position: absolute; bottom: 6px; left: 6px; width: 8px; height: 8px; border-radius: 50%; background: #2563eb;
}
#daily-reports-container .dr-cal-cell.dr-locked .dr-cal-dot { background: #198754; }
#daily-reports-container .dr-cal-cell .dr-cal-mini { position: absolute; bottom: 4px; right: 6px; font-size: 9px; color: #adb5bd; }

/* level-1 bottom bar */
#daily-reports-container .dr-l1-bottom {
    background: #fff; border-top: 1px solid #dee2e6; padding: 7px 18px; display: flex; align-items: center;
    gap: 16px; font-size: 11px; color: #6c757d; flex-shrink: 0;
}
#daily-reports-container .dr-l1-bottom .dr-n { font-weight: 700; color: #212529; }

/* empty state */
#daily-reports-container .dr-empty {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 12px; padding: 60px 20px; color: #6b7280; text-align: center;
}
#daily-reports-container .dr-empty .dr-empty-ic { font-size: 40px; opacity: .35; }

/* ============================================================================
   LEVEL 2 — chrome (two-row header + meta strip + day toolbar + bottom bar)
   ============================================================================ */
#daily-reports-container #dr-level2 { display: none; flex-direction: column; height: 100%; min-height: 0; }
#daily-reports-container .dr-topbar {
    background: #fff; border-bottom: 1px solid #dee2e6; padding: 8px 16px;
    display: flex; align-items: center; gap: 10px; flex-shrink: 0;
}
#daily-reports-container .dr-tb-left,
#daily-reports-container .dr-tb-right { display: flex; align-items: center; gap: 8px; }
#daily-reports-container .dr-saved { font-size: 11px; color: #adb5bd; white-space: nowrap; }
#daily-reports-container .dr-kpistrip { display: flex; align-items: center; white-space: nowrap; }
#daily-reports-container .dr-kpistrip .dr-k { font-size: 12px; color: #475569; padding: 1px 11px; }
#daily-reports-container .dr-kpistrip .dr-k + .dr-k { border-left: 1px solid #e5e7eb; }
#daily-reports-container .dr-kpistrip .dr-k b { color: #0f172a; font-weight: 800; }
#daily-reports-container .dr-kpistrip .dr-k-gap { color: #92400e; cursor: pointer; }
#daily-reports-container .dr-kpistrip .dr-k-gap:hover { text-decoration: underline; }
#daily-reports-container .dr-back { cursor: pointer; color: #6c757d; font-size: 16px; padding: 2px 6px; border-radius: 4px; }
#daily-reports-container .dr-back:hover { color: #2563eb; background: #eff6ff; }
#daily-reports-container .dr-arr {
    width: 26px; height: 26px; border: 1px solid #dee2e6; border-radius: 6px; background: #fff;
    display: grid; place-items: center; color: #6c757d; cursor: pointer;
}
#daily-reports-container .dr-arr:hover { color: #2563eb; border-color: #93c5fd; }
#daily-reports-container .dr-daypick {
    display: flex; align-items: center; gap: 6px; background: #f8f9fa; border: 1px solid #dee2e6;
    border-radius: 6px; padding: 5px 10px; cursor: pointer; font-weight: 700; color: #212529; position: relative;
}
#daily-reports-container .dr-daypick .dr-a { font-size: 10px; color: #6c757d; font-weight: 400; }
#daily-reports-container .dr-daypick input[type=date] { border: none; background: transparent; font: inherit; cursor: pointer; }

#daily-reports-container .dr-lnk { color: #2563eb; cursor: pointer; }
#daily-reports-container .dr-lnk:hover { text-decoration: underline; }

/* ── accordion ─────────────────────────────────────────────────────────── */
#daily-reports-container .dr-acc { flex: 1; overflow: auto; padding: 10px 14px 20px; min-height: 0; }
#daily-reports-container .dr-sec { background: #fff; border: 1px solid #e5e7eb; border-radius: 9px; margin-bottom: 9px; overflow: hidden; }
#daily-reports-container .dr-sec-h { display: flex; align-items: center; gap: 10px; padding: 11px 14px; cursor: pointer; user-select: none; }
#daily-reports-container .dr-sec-h:hover { background: #fafbfc; }
#daily-reports-container .dr-sec-h .dr-chev { color: #9ca3af; font-size: 11px; width: 12px; transition: transform .12s; }
#daily-reports-container .dr-sec.dr-open > .dr-sec-h .dr-chev { transform: rotate(90deg); }
#daily-reports-container .dr-sec-h .dr-sdot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
#daily-reports-container .dr-sec-h .dr-stitle { font-weight: 700; font-size: 13.5px; color: #212529; }
#daily-reports-container .dr-sec-h .dr-ssum { font-size: 12px; color: #6c757d; }
#daily-reports-container .dr-sec-h .dr-ssum.dr-empty-sum { color: #adb5bd; font-style: italic; }
#daily-reports-container .dr-sec-h .dr-swarn { color: #d97706; font-size: 11px; }
#daily-reports-container .dr-sec-h .dr-sright { margin-left: auto; display: flex; align-items: center; gap: 8px; }
#daily-reports-container .dr-miniadd { font-size: 11px; color: #2563eb; cursor: pointer; font-weight: 600; }
#daily-reports-container .dr-miniadd:hover { text-decoration: underline; }
#daily-reports-container .dr-kebab { color: #cbd0d6; cursor: pointer; }
#daily-reports-container .dr-sec-body { border-top: 1px solid #eef0f3; display: none; }
#daily-reports-container .dr-sec.dr-open > .dr-sec-body { display: block; }
#daily-reports-container .dr-sec-placeholder { padding: 12px 16px; color: #adb5bd; }
#daily-reports-container .dr-sec-controls {
    display: flex; align-items: center; gap: 8px; padding: 6px 14px; background: #fbfcfd;
    border-bottom: 1px solid #eef0f3; font-size: 11px; color: #6c757d;
}
#daily-reports-container .dr-tsel { border: 1px solid #dee2e6; border-radius: 3px; padding: 3px 6px; font-size: 11px; background: #fff; color: #495057; cursor: pointer; }

/* dot colors per section */
#daily-reports-container .dr-sdot-weather { background: #0dcaf0; }
#daily-reports-container .dr-sdot-manpower { background: #2563eb; }
#daily-reports-container .dr-sdot-notes { background: #6c757d; }
#daily-reports-container .dr-sdot-equip { background: #fd7e14; }
#daily-reports-container .dr-sdot-deliv { background: #198754; }
#daily-reports-container .dr-sdot-visit { background: #14b8a6; }
#daily-reports-container .dr-sdot-inspect { background: #0d6efd; }
#daily-reports-container .dr-sdot-safety { background: #dc3545; }
#daily-reports-container .dr-sdot-accident { background: #be123c; }
#daily-reports-container .dr-sdot-delay { background: #d63384; }
#daily-reports-container .dr-sdot-dumpster { background: #6f42c1; }
#daily-reports-container .dr-sdot-waste { background: #795548; }
#daily-reports-container .dr-sdot-photos { background: #7c3aed; }

/* ── tabs (accordion→tabs migration; LAYOUT='tabs') ──────────────────────── */
/* Daily Brief is pinned above the tab strip (plan D1) — direct child of #dr-level2. */
#daily-reports-container #dr-level2 > .dr-sec.dr-brief { margin: 10px 14px 6px; flex-shrink: 0; }
#daily-reports-container .dr-tabstrip {
    display: flex; gap: 2px; padding: 0 12px; background: #fff; border-bottom: 1px solid #dee2e6;
    overflow-x: auto; flex-shrink: 0; white-space: nowrap;
}
#daily-reports-container .dr-tab {
    display: inline-flex; align-items: center; gap: 7px; padding: 9px 13px; border: none; background: transparent;
    border-bottom: 2px solid transparent; cursor: pointer; color: #6c757d; font-size: 13px; font-weight: 600; white-space: nowrap;
}
#daily-reports-container .dr-tab:hover { color: #374151; background: #fafbfc; }
#daily-reports-container .dr-tab.dr-active { color: #2563eb; border-bottom-color: #2563eb; }
#daily-reports-container .dr-tab .dr-sdot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
#daily-reports-container .dr-tab .dr-tab-count {
    font-size: 10.5px; font-weight: 700; color: #495057; background: #eef0f3; border-radius: 9px;
    padding: 0 6px; min-width: 16px; text-align: center;
}
#daily-reports-container .dr-tab.dr-active .dr-tab-count { background: #dbeafe; color: #1e40af; }
#daily-reports-container .dr-tab .dr-swarn { color: #d97706; font-size: 11px; }
#daily-reports-container .dr-sok { color: #198754; font-size: 11px; font-weight: 700; }
#daily-reports-container .dr-tabpanels { flex: 1; overflow: auto; padding: 12px 14px 20px; min-height: 0; }
#daily-reports-container .dr-tabpanel { display: none; }
#daily-reports-container .dr-tabpanel.dr-active { display: block; }
/* a panel's body is always shown (the panel itself is shown/hidden) — overrides the accordion hide rule */
#daily-reports-container .dr-tabpanel .dr-sec-body { display: block; border-top: none; }
#daily-reports-container .dr-panelhead { display: flex; align-items: center; gap: 10px; padding: 2px 2px 12px; }
#daily-reports-container .dr-panelhead .dr-sdot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
#daily-reports-container .dr-panelhead .dr-stitle { font-weight: 700; font-size: 14.5px; color: #212529; }
#daily-reports-container .dr-panelhead .dr-ssum { font-size: 12px; color: #6c757d; }
#daily-reports-container .dr-panelhead .dr-ssum.dr-empty-sum { color: #adb5bd; font-style: italic; }
#daily-reports-container .dr-panelhead .dr-sright { margin-left: auto; display: flex; align-items: center; gap: 8px; }

/* ── Manpower trend chart (project worker curve, latest 10 workdays) — shown above the Manpower grid ── */
#daily-reports-container .dr-mp-trend {
    border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; padding: 10px 12px 6px; margin-bottom: 12px;
}
#daily-reports-container .dr-mp-trend-h { display: flex; align-items: baseline; gap: 10px; margin-bottom: 4px; }
#daily-reports-container .dr-mp-trend-t { font-weight: 700; font-size: 12.5px; color: #374151; }
#daily-reports-container .dr-mp-trend-sub { font-size: 11px; color: #9ca3af; margin-left: auto; }
#daily-reports-container .dr-mp-trend-body { width: 100%; }
#daily-reports-container .dr-mp-empty { color: #9ca3af; font-size: 12px; font-style: italic; padding: 22px 8px; text-align: center; }
#daily-reports-container .dr-mp-legend { display: flex; flex-wrap: wrap; gap: 4px 14px; padding: 6px 2px 2px; font-size: 11px; color: #374151; }
#daily-reports-container .dr-mp-leg { display: inline-flex; align-items: center; gap: 5px; }
#daily-reports-container .dr-mp-sw { width: 10px; height: 10px; border-radius: 2px; display: inline-block; flex: 0 0 auto; }

/* ── R7 — wrapping chip strip (SECTION_NAV='wrap', DEFAULT): all 13 sections wrap onto ~2 rows as
   rounded chips — full discoverability + every count/⚠ badge visible, no horizontal scroll, and no
   second left column beside the app's global sidebar. See docs/daily-report-section-nav-options-mockup.html. */
#daily-reports-container .dr-tabstrip.dr-wrap {
    flex-wrap: wrap; overflow-x: visible; white-space: normal;
    row-gap: 6px; column-gap: 6px; padding: 9px 12px;
}
#daily-reports-container .dr-tabstrip.dr-wrap .dr-tab {
    border: 1px solid #e3e6ea; border-radius: 8px; padding: 5px 11px;
}
#daily-reports-container .dr-tabstrip.dr-wrap .dr-tab:hover { background: #f3f5f8; color: #374151; }
#daily-reports-container .dr-tabstrip.dr-wrap .dr-tab.dr-active {
    background: #eff4ff; border-color: #bfdbfe; color: #1d4ed8;
}

/* ── R7 — left section rail (SECTION_NAV='rail'): vertical nav for all 13 sections, no horizontal scroll ── */
#daily-reports-container .dr-railwrap { display: flex; flex: 1; min-height: 0; }
#daily-reports-container .dr-tabstrip.dr-rail {
    flex-direction: column; width: 210px; flex-shrink: 0; overflow-y: auto; overflow-x: hidden;
    padding: 8px; gap: 2px; border-bottom: none; border-right: 1px solid #dee2e6; background: #fbfcfd; white-space: normal;
}
#daily-reports-container .dr-tabstrip.dr-rail .dr-tab {
    width: 100%; justify-content: flex-start; border-bottom: none; border-left: 2px solid transparent;
    border-radius: 6px; padding: 8px 10px;
}
#daily-reports-container .dr-tabstrip.dr-rail .dr-tab:hover { background: #eef2f7; }
#daily-reports-container .dr-tabstrip.dr-rail .dr-tab.dr-active { background: #e7f0ff; border-left-color: #2563eb; color: #1e40af; }
#daily-reports-container .dr-tabstrip.dr-rail .dr-tab-title { flex: 1; overflow: hidden; text-overflow: ellipsis; }
#daily-reports-container .dr-railwrap .dr-tabpanels { flex: 1; min-height: 0; }

/* ── grid (ported from the mockup) ─────────────────────────────────────── */
#daily-reports-container table.dr-grid { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; }
#daily-reports-container table.dr-grid thead th {
    background: #f8f9fa; border-bottom: 2px solid #dee2e6; padding: 7px 10px; text-align: left;
    font-size: 11px; font-weight: 600; color: #495057; white-space: nowrap;   /* match Documents header: 11px/600, no uppercase */
}
#daily-reports-container .dr-req { color: #dc3545; }
#daily-reports-container table.dr-grid td { padding: 0; border-bottom: 1px solid #e9ecef; border-right: 1px solid #e9ecef; vertical-align: middle; }   /* match Documents grid lines (#e9ecef) */
#daily-reports-container table.dr-grid td .dr-cell { padding: 6px 10px; min-height: 32px; line-height: 1.5; cursor: cell; white-space: pre-wrap; word-wrap: break-word; }
/* Data-row cells match the other modules' grids EXACTLY: 14px font, ~35px row height, same padding —
   was cramped at 13px / 17px (padding:0). Scoped to tr[data-row] so group headers / add-rows keep their
   own inner padding; put on the <td> itself so inline-editing never strips it. */
#daily-reports-container table.dr-grid tr[data-row] > td { font-size: 14px; line-height: 1.15; padding: 4px 10px; height: 35px; }
#daily-reports-container table.dr-grid tr:hover td { background: #fafbfc; }

/* ── Per-column filter row (Meetings parity: always present, same chrome) ── */
#daily-reports-container table.dr-grid .filter-row th { background: #fff; padding: 3px 4px; border-bottom: none; }
#daily-reports-container table.dr-grid .filter-row input.column-filter { width: 100%; border: 1px solid #e9ecef; border-radius: 3px; padding: 3px 6px; font-size: 11px; color: #495057; background: #fff; }
#daily-reports-container table.dr-grid .filter-row input.column-filter:focus { outline: none; border-color: #2563eb; box-shadow: 0 0 0 1px rgba(37,99,235,.15); }
#daily-reports-container table.dr-grid .filter-row input.column-filter::placeholder { color: #ced4da; }

/* ── Per-section Excel toolbar host + Group-by control (Meetings parity) ── */
#daily-reports-container .dr-grid-toolbar { flex-shrink: 0; }
#daily-reports-container .dr-custom-toolbar { background: #fff; border-bottom: 1px solid #dee2e6; padding: 4px 12px; display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
/* "Group" control styled locally so it always renders correctly without depending on meetings.css being loaded. */
#daily-reports-container .dr-custom-toolbar .tb-label { font-size: 11px; font-weight: 600; color: #6c757d; margin-right: 2px; }
#daily-reports-container .dr-custom-toolbar .tb-select { font-size: 12px; color: #374151; background: #fff; border: 1px solid #ced4da; border-radius: 4px; padding: 3px 8px; cursor: pointer; }
#daily-reports-container .dr-custom-toolbar .tb-select:hover { border-color: #2563eb; }
#daily-reports-container table.dr-grid td.dr-focused .dr-cell { outline: 2px solid #2563eb; outline-offset: -2px; background: #f0f7ff; }
#daily-reports-container table.dr-grid td.dr-readonly .dr-cell { background: #fafafa; color: #6c757d; font-weight: 600; }
#daily-reports-container .dr-drag-cell { padding: 6px 8px; cursor: grab; white-space: nowrap; color: #212529; }
#daily-reports-container .dr-drag { color: #adb5bd; font-size: 11px; letter-spacing: -2px; margin-right: 4px; }
#daily-reports-container .dr-num-stepper { display: inline-flex; align-items: center; gap: 6px; }
#daily-reports-container .dr-num-stepper .dr-v { font-weight: 600; min-width: 12px; text-align: center; }
#daily-reports-container .dr-num-stepper .dr-pm { color: #adb5bd; font-size: 14px; cursor: pointer; user-select: none; width: 14px; text-align: center; }
#daily-reports-container .dr-num-stepper .dr-pm:hover { color: #2563eb; }
/* Item 2 — Files cell is plain clickable text ("Attach" / "N files"), no paperclip emoji. */
#daily-reports-container .dr-clip { color: #2563eb; cursor: pointer; font-size: 12px; }
#daily-reports-container .dr-clip:hover { text-decoration: underline; }
#daily-reports-container .dr-clip.dr-clip-empty { color: #9ca3af; }
#daily-reports-container .dr-clip.dr-has { color: #2563eb; font-weight: 600; }
#daily-reports-container .dr-cc { font-family: ui-monospace, Menlo, monospace; font-size: 11px; color: #495057; background: #f3f4f6; padding: 1px 6px; border-radius: 4px; cursor: pointer; }
#daily-reports-container .dr-chk { font-size: 14px; cursor: pointer; }
#daily-reports-container .dr-rel { color: #2563eb; cursor: pointer; font-size: 11px; }
#daily-reports-container .dr-rel.dr-empty-rel { color: #cbd0d6; }
#daily-reports-container .dr-taskpick { color: #0d6efd; cursor: pointer; }

/* group header rows */
#daily-reports-container .dr-gh td { padding: 5px 10px; font-weight: 700; font-size: 11.5px; border-bottom: 1px solid #dee2e6; }
#daily-reports-container .dr-gh .dr-inner { display: inline-flex; align-items: center; gap: 6px; }
#daily-reports-container .dr-gh .dr-toggle { cursor: pointer; font-size: 10px; color: #adb5bd; }
#daily-reports-container .dr-gh .dr-gsum { font-weight: 600; color: #6c757d; }
#daily-reports-container .dr-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
#daily-reports-container .dr-gh.dr-cat-0 td { background: #fff5f5; border-top: 2px solid #fca5a5; color: #991b1b; }
#daily-reports-container .dr-dot.dr-cat-0 { background: #dc3545; }
#daily-reports-container .dr-gh.dr-cat-1 td { background: #eff6ff; border-top: 2px solid #93c5fd; color: #1e40af; }
#daily-reports-container .dr-dot.dr-cat-1 { background: #0d6efd; }
#daily-reports-container .dr-gh.dr-cat-2 td { background: #f5f3ff; border-top: 2px solid #c4b5fd; color: #5b21b6; }
#daily-reports-container .dr-dot.dr-cat-2 { background: #6f42c1; }
#daily-reports-container .dr-gh.dr-cat-3 td { background: #f0fdf4; border-top: 2px solid #86efac; color: #166534; }
#daily-reports-container .dr-dot.dr-cat-3 { background: #198754; }
#daily-reports-container .dr-gh.dr-cat-4 td { background: #fff7ed; border-top: 2px solid #fdba74; color: #9a3412; }
#daily-reports-container .dr-dot.dr-cat-4 { background: #fd7e14; }

#daily-reports-container .dr-cat-add .dr-c { padding: 5px 14px; cursor: pointer; color: #6c757d; font-size: 11px; display: flex; align-items: center; gap: 6px; }
#daily-reports-container .dr-cat-add .dr-plus { color: #2563eb; font-weight: 700; }
#daily-reports-container .dr-cat-add .dr-c:hover { color: #2563eb; }
#daily-reports-container .dr-add-row td { border-bottom: none; }
#daily-reports-container .dr-add-row .dr-c { display: flex; align-items: center; gap: 8px; padding: 9px 14px; cursor: pointer; color: #2563eb; font-size: 12.5px; font-weight: 500; }
#daily-reports-container .dr-add-row .dr-c:hover { background: #eff6ff; }
#daily-reports-container .dr-add-row .dr-plus {
    width: 20px; height: 20px; border-radius: 50%; background: #2563eb; color: #fff;
    display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 700;
}

/* R3 — friendly empty state (rendered inside the grid as a full-width row when a section has no entries) */
#daily-reports-container .dr-empty-row td { border-bottom: none; }
#daily-reports-container .dr-empty-state {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 6px; padding: 34px 20px; text-align: center; color: #6b7280;
}
#daily-reports-container .dr-empty-state .dr-empty-ic { font-size: 34px; opacity: .4; line-height: 1; margin-bottom: 2px; }
#daily-reports-container .dr-empty-state .dr-empty-msg { font-size: 13.5px; font-weight: 700; color: #374151; }
#daily-reports-container .dr-empty-state .dr-empty-sub { font-size: 11.5px; color: #adb5bd; }
#daily-reports-container .dr-empty-state .dr-empty-add {
    margin-top: 10px; display: inline-flex; align-items: center; gap: 8px; padding: 7px 16px;
    border: 1px solid #2563eb; border-radius: 7px; background: #2563eb; color: #fff;
    font-size: 12.5px; font-weight: 600; cursor: pointer;
}
#daily-reports-container .dr-empty-state .dr-empty-add:hover { background: #1d4ed8; border-color: #1d4ed8; }
#daily-reports-container .dr-empty-state .dr-empty-add .dr-plus { font-size: 15px; font-weight: 700; line-height: 1; }

/* ── R4 — Notes as a stacked note list (bespoke view, not a grid) ───────────── */
#daily-reports-container .dr-notes { display: flex; flex-direction: column; gap: 10px; }
#daily-reports-container .dr-note-card {
    background: #fff; border: 1px solid #e5e7eb; border-radius: 9px; padding: 10px 12px;
    border-left: 3px solid #d1d5db;
}
#daily-reports-container .dr-note-card.dr-note-issue { border-left-color: #dc3545; background: #fffaf9; }
#daily-reports-container .dr-note-head { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
#daily-reports-container .dr-note-flag {
    border: 1px solid #d1d5db; background: #fff; color: #6b7280; border-radius: 13px;
    padding: 2px 10px; font-size: 11px; font-weight: 600; cursor: pointer; white-space: nowrap;
}
#daily-reports-container .dr-note-flag:hover { border-color: #f5a3ad; color: #b02a37; }
#daily-reports-container .dr-note-flag.on { background: #fdecee; border-color: #f1aeb5; color: #b02a37; }
#daily-reports-container .dr-note-flag:disabled { cursor: default; opacity: .7; }
#daily-reports-container .dr-note-loc-input {
    border: 1px solid transparent; background: #f3f4f6; border-radius: 6px; padding: 3px 9px;
    font-size: 12px; color: #374151; max-width: 240px;
}
#daily-reports-container .dr-note-loc-input:hover { border-color: #dee2e6; }
#daily-reports-container .dr-note-loc-input:focus { outline: none; background: #fff; border-color: #2563eb; }
#daily-reports-container .dr-note-loc-text { font-size: 12px; color: #6b7280; }
#daily-reports-container .dr-note-chip { font-size: 11px; color: #adb5bd; }
#daily-reports-container .dr-note-chip.has { color: #2563eb; font-weight: 600; }
#daily-reports-container .dr-note-rel, #daily-reports-container .dr-note-clip { cursor: pointer; }
#daily-reports-container .dr-note-rel:hover, #daily-reports-container .dr-note-clip:hover { color: #2563eb; text-decoration: underline; }
#daily-reports-container .dr-note-del { color: #c0392b; cursor: pointer; font-weight: 700; opacity: .5; font-size: 12px; }
#daily-reports-container .dr-note-del:hover { opacity: 1; }
#daily-reports-container .dr-note-text {
    width: 100%; border: 1px solid #e5e7eb; border-radius: 7px; padding: 7px 10px; font: inherit;
    font-size: 13px; color: #1f2937; resize: vertical; min-height: 38px;
}
#daily-reports-container .dr-note-text:focus { outline: none; border-color: #2563eb; box-shadow: 0 0 0 2px #dbeafe; }
#daily-reports-container .dr-note-text-ro { font-size: 13px; color: #374151; line-height: 1.5; white-space: pre-wrap; }
#daily-reports-container .dr-note-add {
    align-self: flex-start; display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px;
    border: 1px dashed #c7ccd1; border-radius: 8px; background: #fbfcfd; color: #2563eb;
    font-size: 12.5px; font-weight: 600; cursor: pointer; margin-top: 2px;
}
#daily-reports-container .dr-note-add:hover { border-color: #93c5fd; background: #eff6ff; }
#daily-reports-container .dr-note-add .dr-plus {
    width: 18px; height: 18px; border-radius: 50%; background: #2563eb; color: #fff;
    display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700;
}

/* ── R5/R6 — record-form view (Accidents incident form, Safety cards, Visitors list, Dumpster mini-form) ── */
#daily-reports-container .dr-recs { display: flex; flex-direction: column; gap: 12px; }
#daily-reports-container .dr-rec-card { background: #fff; border: 1px solid #e5e7eb; border-radius: 9px; padding: 12px 14px; border-left: 3px solid #d1d5db; }
#daily-reports-container .dr-rec-card.dr-rec-flagged { border-left-color: #dc3545; }
#daily-reports-container .dr-rec-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
#daily-reports-container .dr-rec-title { font-weight: 700; font-size: 13px; color: #212529; }
#daily-reports-container .dr-rec-badge {
    font-size: 10px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase;
    background: #fdecee; color: #b02a37; border: 1px solid #f1aeb5; border-radius: 5px; padding: 2px 7px;
}
#daily-reports-container .dr-rec-del { color: #c0392b; cursor: pointer; font-weight: 700; opacity: .5; font-size: 12px; }
#daily-reports-container .dr-rec-del:hover { opacity: 1; }
#daily-reports-container .dr-rec-rel, #daily-reports-container .dr-rec-clip { cursor: pointer; }
#daily-reports-container .dr-rec-rel:hover, #daily-reports-container .dr-rec-clip:hover { color: #2563eb; text-decoration: underline; }
#daily-reports-container .dr-rec-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; }
#daily-reports-container .dr-rf-field { display: flex; flex-direction: column; gap: 4px; }
#daily-reports-container .dr-rf-wide { grid-column: 1 / -1; }
#daily-reports-container .dr-rf-label { font-size: 10.5px; font-weight: 700; color: #6b7280; text-transform: uppercase; letter-spacing: .03em; }
#daily-reports-container .dr-rf-input, #daily-reports-container .dr-rf-text {
    border: 1px solid #dee2e6; border-radius: 6px; padding: 6px 9px; font: inherit; font-size: 13px; color: #1f2937; width: 100%;
}
#daily-reports-container .dr-rf-text { resize: vertical; min-height: 40px; }
#daily-reports-container .dr-rf-input:focus, #daily-reports-container .dr-rf-text:focus { outline: none; border-color: #2563eb; box-shadow: 0 0 0 2px #dbeafe; }
#daily-reports-container .dr-rf-pick {
    border: 1px solid #dee2e6; border-radius: 6px; padding: 6px 9px; font-size: 13px; color: #1f2937; cursor: pointer; background: #fff; min-height: 31px;
}
#daily-reports-container .dr-rf-pick:hover { border-color: #93c5fd; background: #f8faff; }
#daily-reports-container .dr-rf-ph { color: #adb5bd; }
#daily-reports-container .dr-rf-ro { font-size: 13px; color: #374151; padding: 2px 0; white-space: pre-wrap; }
#daily-reports-container .dr-rf-toggle { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: #374151; cursor: pointer; }
#daily-reports-container .dr-rf-toggle input { width: 15px; height: 15px; cursor: pointer; }
/* Item 11 — match the grid's solid-blue "+ Add … entry" button (.dr-empty-add) so form sections
   (Visitors, Safety, Accidents, Dumpster) share one add-button style instead of the old dashed-grey pill. */
#daily-reports-container .dr-rec-add {
    align-self: flex-start; display: inline-flex; align-items: center; gap: 8px; padding: 7px 16px;
    border: 1px solid #2563eb; border-radius: 7px; background: #2563eb; color: #fff; font-size: 12.5px; font-weight: 600; cursor: pointer;
}
#daily-reports-container .dr-rec-add:hover { background: #1d4ed8; border-color: #1d4ed8; }
#daily-reports-container .dr-rec-add .dr-plus { font-size: 15px; font-weight: 700; line-height: 1; }
/* Item 4: when the add button is inside the empty-state, center it with the icon + text (override flex-start). */
#daily-reports-container .dr-empty-state .dr-rec-add { align-self: center; margin-top: 12px; }

/* Item 1 — delete-report button on a day-list row (danger-styled; shown only when the action is allowed). */
#daily-reports-container .dr-del-day { background: #fff; border-color: #f1c0c0; color: #c0392b; }
#daily-reports-container .dr-del-day:hover { background: #fef2f2; border-color: #e09a9a; color: #a93226; }

/* ── Daily Brief (Phase 3 surface) ─────────────────────────────────────── */
#daily-reports-container .dr-sec.dr-brief { border-color: #e9e7fd; }
#daily-reports-container .dr-sec.dr-brief .dr-sec-h .dr-stitle { color: #6d28d9; }
#daily-reports-container .dr-tag { font-size: 9px; font-weight: 700; letter-spacing: .04em; background: #ede9fe; color: #6d28d9; border-radius: 5px; padding: 2px 6px; }
#daily-reports-container .dr-brief-body { padding: 12px 16px; color: #374151; line-height: 1.6; background: linear-gradient(180deg, #fbfaff, #fff); }
#daily-reports-container .dr-chip { font-size: 11px; padding: 5px 10px; border-radius: 7px; border: 1px solid #ddd6fe; color: #6d28d9; background: #f5f3ff; cursor: pointer; font-weight: 600; }
#daily-reports-container .dr-brief-gen {
    display: inline-flex; align-items: center; gap: 6px; background: #6d28d9; color: #fff;
    border: 0; border-radius: 8px; padding: 7px 13px; font-size: 12px; font-weight: 700; cursor: pointer;
}
#daily-reports-container .dr-brief-gen:hover { background: #5b21b6; }
#daily-reports-container .dr-brief-foot { margin-top: 10px; color: #9ca3af; font-size: 11px; }
/* §3.6 Daily Brief — inline-editable narrative + provenance line */
#daily-reports-container .dr-brief-text { border-radius: 7px; padding: 2px 4px; margin: -2px -4px; outline: none; transition: background .12s, box-shadow .12s; }
#daily-reports-container .dr-brief-text[contenteditable="true"]:hover { background: #faf9ff; cursor: text; }
#daily-reports-container .dr-brief-text[contenteditable="true"]:focus { background: #fff; box-shadow: 0 0 0 2px #ddd6fe; }
#daily-reports-container .dr-brief-meta { margin-top: 8px; font-size: 10px; color: #8b87a8; }
#daily-reports-container .dr-brief-meta .dr-muted { color: #b6b2cb; }

/* ── Weather strip (special section body) ──────────────────────────────── */
#daily-reports-container .dr-wx-wrap { padding: 12px 16px; }
#daily-reports-container .dr-wx-cards { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
#daily-reports-container .dr-wx-card { border: 1px solid #e5e7eb; border-radius: 8px; padding: 8px 14px; text-align: center; min-width: 88px; }
#daily-reports-container .dr-wx-card .dr-v { font-size: 16px; font-weight: 800; color: #0e7490; }
#daily-reports-container .dr-wx-card .dr-l { font-size: 10px; color: #6b7280; }
#daily-reports-container .dr-wx-hourly { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 4px; }
#daily-reports-container .dr-wx-hour { border: 1px solid #eef0f3; border-radius: 7px; padding: 6px 10px; text-align: center; min-width: 64px; font-size: 11px; color: #374151; flex-shrink: 0; }
#daily-reports-container .dr-wx-hour .dr-t { font-weight: 700; color: #0e7490; }
#daily-reports-container .dr-wx-src { font-size: 10px; color: #adb5bd; margin-top: 8px; }

/* Item 9 — weather icons (mirror the PDF "Daily Snapshot"): an icon on each hourly cell + a current-conditions tile. */
#daily-reports-container .dr-wx-ic { display: block; }
#daily-reports-container .dr-wx-hour { display: flex; flex-direction: column; align-items: center; gap: 3px; }
#daily-reports-container .dr-wx-hour .dr-wx-tmp { font-weight: 700; color: #111827; font-size: 12.5px; }
#daily-reports-container .dr-wx-hour .dr-wx-cond { font-size: 10px; max-width: 62px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 1.2; }
#daily-reports-container .dr-wx-now { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-width: 96px; background: linear-gradient(180deg, #f0f9ff, #fff); }
#daily-reports-container .dr-wx-now .dr-l { font-size: 11px; color: #0e7490; font-weight: 600; max-width: 112px; text-align: center; line-height: 1.2; white-space: normal; }

/* ── Photos gallery ────────────────────────────────────────────────────── */
#daily-reports-container .dr-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; padding: 14px 16px; }
#daily-reports-container .dr-photo { border: 1px solid #e5e7eb; border-radius: 9px; overflow: hidden; background: #fff; cursor: pointer; }
#daily-reports-container .dr-photo:hover { box-shadow: 0 3px 12px rgba(0,0,0,.10); }
#daily-reports-container .dr-photo .dr-thumb { height: 130px; display: grid; place-items: center; color: rgba(255,255,255,.85); font-size: 26px; position: relative; }
#daily-reports-container .dr-photo .dr-badge {
    position: absolute; left: 6px; bottom: 6px; right: 6px; background: rgba(0,0,0,.55); color: #fff;
    font-size: 9.5px; padding: 3px 6px; border-radius: 5px; line-height: 1.35;
}
#daily-reports-container .dr-photo .dr-cap { padding: 7px 9px; font-size: 11.5px; color: #374151; }
#daily-reports-container .dr-photo .dr-cap-edit { cursor: text; display: flex; align-items: center; gap: 6px; }
#daily-reports-container .dr-cap-text { color: #1f2937; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#daily-reports-container .dr-cap-file { color: #adb5bd; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#daily-reports-container .dr-cap-pencil { margin-left: auto; color: #cbd0d6; font-size: 11px; flex-shrink: 0; }
#daily-reports-container .dr-cap-edit:hover .dr-cap-pencil { color: #2563eb; }
#daily-reports-container .dr-cap-input { width: 100%; border: 1px solid #2563eb; border-radius: 5px; padding: 3px 6px; font: inherit; font-size: 11.5px; color: #1f2937; box-shadow: 0 0 0 2px #dbeafe; outline: none; }
#daily-reports-container .dr-photo-add {
    border: 1px dashed #c7ccd1; border-radius: 9px; display: grid; place-items: center; min-height: 168px;
    color: #6b7280; cursor: pointer; background: #fbfcfd; text-align: center; font-size: 12px;
}
#daily-reports-container .dr-photo-add:hover { border-color: #93c5fd; color: #2563eb; }

/* Item 12 — per-photo download button (overlay on the tile, hover-revealed). */
#daily-reports-container .dr-photo .dr-thumb { position: relative; }
#daily-reports-container .dr-photo-dl {
    position: absolute; top: 6px; right: 6px; width: 26px; height: 26px; border: 0; border-radius: 6px;
    background: rgba(17,24,39,.55); color: #fff; font-size: 14px; line-height: 1; cursor: pointer;
    display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .12s;
}
#daily-reports-container .dr-photo:hover .dr-photo-dl { opacity: 1; }
#daily-reports-container .dr-photo-dl:hover { background: rgba(17,24,39,.85); }

/* ── Upload-in-progress tiles (live feedback while photos upload) ───────────── */
#daily-reports-container .dr-photo-up { cursor: default; }
#daily-reports-container .dr-up-thumb { height: 130px; background: #f3f4f6; display: grid; place-items: center; position: relative; }
#daily-reports-container .dr-up-spin {
    width: 30px; height: 30px; border-radius: 50%;
    border: 3px solid #d1d5db; border-top-color: #2563eb; animation: dr-spin .8s linear infinite;
}
#daily-reports-container .dr-up-ic { position: absolute; font-size: 30px; font-weight: 700; line-height: 1; }
#daily-reports-container .dr-up-pct { position: absolute; bottom: 12px; font-size: 11px; font-weight: 700; color: #374151; }
#daily-reports-container .dr-up-bar { position: absolute; left: 0; right: 0; bottom: 0; height: 4px; background: #e5e7eb; }
#daily-reports-container .dr-up-bar > i { display: block; height: 100%; width: 0; background: #2563eb; transition: width .15s ease; }
/* state: done */
#daily-reports-container .dr-up-st-done .dr-up-thumb { background: #ecfdf5; }
#daily-reports-container .dr-up-st-done .dr-up-spin { display: none; }
#daily-reports-container .dr-up-st-done .dr-up-ic { color: #16a34a; }
#daily-reports-container .dr-up-st-done .dr-up-bar > i { width: 100% !important; background: #16a34a; }
/* state: error */
#daily-reports-container .dr-up-st-error .dr-up-thumb { background: #fef2f2; }
#daily-reports-container .dr-up-st-error .dr-up-spin { display: none; }
#daily-reports-container .dr-up-st-error .dr-up-ic { color: #dc2626; }
#daily-reports-container .dr-up-st-error .dr-up-bar > i { background: #dc2626; }
#daily-reports-container .dr-up-cap .dr-up-err { color: #b91c1c; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#daily-reports-container .dr-up-retry {
    margin-top: 4px; font-size: 11px; font-weight: 600; color: #2563eb; background: #eff6ff;
    border: 1px solid #bfdbfe; border-radius: 5px; padding: 2px 8px; cursor: pointer;
}
#daily-reports-container .dr-up-retry:hover { background: #dbeafe; }
@keyframes dr-spin { to { transform: rotate(360deg); } }

/* photo preview modal */
/* !important-guarded like .dr-modal-overlay below (project modal-CSS rule): a global rule was overriding
   display/position and burying the lightbox in the DOM, so it never appeared on click. Without !important
   it stays invisible — this is the documented "specificity war" trap for this app (item 5 round-3 fix). */
.dr-photo-modal-overlay { position: fixed !important; inset: 0 !important; background: rgba(0,0,0,.92) !important; z-index: 100000 !important; display: flex !important; align-items: stretch !important; justify-content: stretch !important; }
/* Procore-style near-full-screen viewer (fills the window): top action bar + large image stage + collapsible info panel. */
.dr-photo-modal { position: relative !important; display: flex !important; flex-direction: column !important; width: 100vw !important; height: 100vh !important; max-width: 100vw; max-height: 100vh; background: #0b0e14 !important; border-radius: 0 !important; overflow: hidden !important; }
.dr-photo-modal .dr-pm-topbar { flex: 0 0 auto; display: flex; align-items: center; gap: 6px; height: 48px; padding: 0 12px; background: rgba(0,0,0,.55); color: #e5e7eb; }
.dr-photo-modal .dr-pm-flex { flex: 1 1 auto; }
.dr-photo-modal .dr-pm-count { color: #cbd5e1; font-size: 13px; font-weight: 600; padding-left: 4px; }
.dr-photo-modal .dr-pm-tb { width: 36px; height: 36px; border: 0; border-radius: 7px; background: transparent; color: #e5e7eb; font-size: 18px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.dr-photo-modal .dr-pm-tb:hover { background: rgba(255,255,255,.14); }
.dr-photo-modal .dr-pm-close:hover { background: #dc2626; color: #fff; }
.dr-photo-modal .dr-pm-body { flex: 1 1 auto; display: flex; min-height: 0; }
.dr-photo-modal .dr-pm-stage { position: relative; flex: 1 1 auto; display: flex; align-items: center; justify-content: center; min-width: 0; min-height: 0; padding: 16px; }
.dr-photo-modal .dr-pm-photo { max-width: 100%; max-height: 100%; object-fit: contain; box-shadow: 0 8px 40px rgba(0,0,0,.55); }
.dr-photo-modal .dr-pm-ph { color: rgba(255,255,255,.45); font-size: 64px; }
/* Item 5 — prev/next navigation (‹ › buttons + ← → keys), centered over the image stage. */
.dr-photo-modal .dr-pm-nav {
    position: absolute; top: 50%; transform: translateY(-50%); width: 50px; height: 76px; border: 0; border-radius: 9px;
    background: rgba(0,0,0,.42); color: #fff; font-size: 36px; line-height: 1; cursor: pointer;
    display: flex; align-items: center; justify-content: center; z-index: 2; padding: 0;
}
.dr-photo-modal .dr-pm-nav:hover { background: rgba(0,0,0,.72); }
.dr-photo-modal .dr-pm-prev { left: 12px; }
.dr-photo-modal .dr-pm-next { right: 12px; }
/* Right-hand Information panel — toggled by the ⓘ button / "i" key (.dr-pm-show-info on the modal); shown by default. */
.dr-photo-modal .dr-pm-info-panel { flex: 0 0 340px; width: 340px; background: #11161f; border-left: 1px solid rgba(255,255,255,.08); color: #e5e7eb; padding: 20px; overflow-y: auto; display: none; }
.dr-photo-modal.dr-pm-show-info .dr-pm-info-panel { display: block; }
.dr-photo-modal .dr-pm-ip-head { font-size: 11px; letter-spacing: .05em; text-transform: uppercase; color: #9ca3af; margin-bottom: 10px; }
.dr-photo-modal .dr-pm-ip-title { font-size: 16px; font-weight: 600; color: #fff; margin-bottom: 14px; word-break: break-word; }
.dr-photo-modal .dr-pm-ip-row { padding: 10px 0; border-top: 1px solid rgba(255,255,255,.07); }
.dr-photo-modal .dr-pm-ip-k { font-size: 11px; color: #9ca3af; margin-bottom: 3px; }
.dr-photo-modal .dr-pm-ip-v { font-size: 13px; color: #e5e7eb; word-break: break-word; }
.dr-photo-modal .dr-pm-ip-empty { color: #6b7280; font-size: 12px; }

/* ── loading overlay ───────────────────────────────────────────────────── */
#daily-reports-container .dr-loading {
    position: absolute; inset: 0; background: rgba(255,255,255,.7); display: flex; align-items: center;
    justify-content: center; z-index: 50; font-size: 13px; color: #6b7280;
}

/* ============================================================================
   Create-day modal + generic dropdown menu
   ============================================================================ */
/* !important-guarded (project modal-CSS rule): keep the overlay/card visible regardless of global
   specificity wars — the other DR modals inject !important styles from JS; this one ships in CSS. */
.dr-modal-overlay { position: fixed !important; inset: 0 !important; background: rgba(17,24,39,.45) !important; z-index: 100000 !important; display: flex !important; align-items: center !important; justify-content: center !important; }
.dr-modal {
    display: block !important; background: #fff !important; border-radius: 10px; width: 420px; max-width: 92vw; overflow: hidden !important;
    box-shadow: 0 18px 50px rgba(0,0,0,.25); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dr-modal .dr-modal-h { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid #eef0f3; }
.dr-modal .dr-modal-h h3 { margin: 0; font-size: 15px; font-weight: 700; color: #111827; }
.dr-modal .dr-modal-x { cursor: pointer; font-size: 20px; color: #9ca3af; background: none; border: none; }
.dr-modal .dr-modal-b { padding: 18px; }
.dr-modal .dr-modal-b label { font-size: 13px; font-weight: 500; display: block; margin-bottom: 6px; color: #374151; }
.dr-modal .dr-modal-b input[type=date] { width: 100%; padding: 8px 10px; border: 1px solid #dee2e6; border-radius: 6px; font-size: 14px; }
.dr-modal .dr-modal-f { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 18px; border-top: 1px solid #eef0f3; }
.dr-modal .dr-modal-f .dr-btn { padding: 7px 16px; }

/* lightweight popover (day picker / kebab menus) */
/* !important-guarded like the other DR modal layers above (project modal-CSS rule) — without this the
   day ⋮ menu loses the global-CSS specificity war and renders invisibly. */
.dr-popover {
    position: absolute !important; z-index: 100050 !important; background: #fff !important;
    border: 1px solid #e5e7eb !important; border-radius: 8px !important;
    box-shadow: 0 10px 30px rgba(0,0,0,.14) !important; padding: 6px !important; min-width: 180px !important;
    display: block !important; visibility: visible !important; opacity: 1 !important;
}
.dr-popover .dr-pop-item { padding: 7px 12px; font-size: 12.5px; color: #374151; border-radius: 6px; cursor: pointer; display: flex; align-items: center; gap: 8px; }
.dr-popover .dr-pop-item:hover { background: #f1f5ff; color: #2563eb; }
.dr-popover .dr-pop-item.dr-disabled { color: #c1c7cd; cursor: not-allowed; }
.dr-popover .dr-pop-item.dr-disabled:hover { background: transparent; color: #c1c7cd; }
.dr-popover .dr-pop-sep { height: 1px; background: #eef0f3; margin: 4px 0; }

/* Item 6 — entry attachments popover (📎): file list with download + delete, plus an Add action. */
.dr-popover .dr-att-pop { min-width: 244px; max-width: 340px; }
.dr-popover .dr-att-item { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 6px; font-size: 12.5px; color: #374151; }
.dr-popover .dr-att-item:hover { background: #f8fafc; }
.dr-popover .dr-att-ic { flex: 0 0 auto; }
.dr-popover .dr-att-name { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dr-popover .dr-att-meta { flex: 0 0 auto; font-size: 10px; color: #9ca3af; }
.dr-popover .dr-att-dl, .dr-popover .dr-att-del { flex: 0 0 auto; cursor: pointer; width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; border-radius: 5px; font-weight: 700; }
.dr-popover .dr-att-dl { color: #2563eb; }
.dr-popover .dr-att-dl:hover { background: #eff6ff; }
.dr-popover .dr-att-del { color: #c0392b; opacity: .6; }
.dr-popover .dr-att-del:hover { background: #fef2f2; opacity: 1; }
.dr-popover .dr-att-empty { padding: 10px 8px; font-size: 12px; color: #9ca3af; font-style: italic; text-align: center; }
.dr-popover .dr-att-add { display: flex; align-items: center; gap: 8px; margin-top: 4px; padding: 7px 10px; border-top: 1px solid #eef0f3; color: #2563eb; font-size: 12.5px; font-weight: 600; cursor: pointer; }
.dr-popover .dr-att-add:hover { background: #f1f5ff; }
.dr-popover .dr-att-add .dr-plus { font-size: 15px; font-weight: 700; line-height: 1; }

/* #7 empty required cell — visual flag (does not block the inline-add flow) */
#daily-reports-container td.dr-req-empty { box-shadow: inset 3px 0 0 #e74c3c; background: #fff6f6; }
