/* Compliance calendar (owner + approver). Builds on sales.css (sp-*) and the attribution ledger palette. */
.cp-page { --cp-brass: #b8901f; --cp-teal: #3f8597; --cp-rust: #c4553a; --cp-sage: #4f9a69; --cp-line: rgba(184,144,31,.28);
  display: grid; gap: 14px; min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
.cp-page * { box-sizing: border-box; }
.cp-head { display: grid; gap: 2px; border-bottom: 3px double var(--cp-line); padding-bottom: 10px; }
.cp-head p { margin: 0; }
.cp-kicker { font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--cp-brass); font-weight: 700; }
.cp-title { margin: 0; font-size: clamp(1.5rem, 3vw, 2.1rem); letter-spacing: -.01em; }
.cp-title:focus { outline: none; }
.cp-msg { padding: 8px 12px; border-radius: 10px; border: 1px solid var(--cp-line); border-left: 4px solid var(--cp-teal); }
.cp-msg-success { border-left-color: var(--cp-sage); } .cp-msg-warning { border-left-color: var(--cp-brass); } .cp-msg-danger { border-left-color: var(--cp-rust); }
.cp-controls { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; padding: 12px 14px; border: 1px solid var(--cp-line); border-radius: 12px; background: var(--panel, transparent); }
.cp-field { display: grid; gap: 4px; min-width: 0; flex: 1 1 180px; }
.cp-field label { font-size: .74rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 600; }
.cp-field select, .cp-field input, .cp-field textarea { min-height: 40px; width: 100%; font: inherit; }
.cp-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.cp-tally { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0; }
.cp-t { border: 1px solid var(--cp-line); border-radius: 12px; padding: 10px 12px; }
.cp-t dt { font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted, inherit); }
.cp-t dd { margin: 2px 0 0; font-size: 1.5rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.cp-t-hot { border-color: var(--cp-rust); } .cp-t-hot dd { color: var(--cp-rust); }
.cp-split { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 14px; align-items: start; }
.cp-card { min-width: 0; }
.cp-group + .cp-group { margin-top: 14px; }
.cp-group-h { display: flex; align-items: center; gap: 8px; margin: 0 0 8px; font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; color: var(--cp-brass); border-bottom: 1px dotted var(--cp-line); padding-bottom: 4px; }
.cp-group-over .cp-group-h { color: var(--cp-rust); }
.cp-count { font-size: .7rem; border: 1px solid currentColor; border-radius: 999px; padding: 0 7px; letter-spacing: 0; }
.cp-items, .cp-seeds, .cp-log { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.cp-item { display: grid; grid-template-columns: 54px minmax(0, 1fr); gap: 12px; padding: 10px 12px; border: 1px solid var(--cp-line); border-left: 4px solid var(--cp-line); border-radius: 10px; }
.cp-over { border-left-color: var(--cp-rust); background: rgba(196,85,58,.08); }
.cp-closed { opacity: .72; }
.cp-date { display: grid; place-items: center; align-content: center; border-radius: 8px; border: 1px solid var(--cp-line); min-height: 54px; }
.cp-date-m { font-size: .66rem; text-transform: uppercase; letter-spacing: .12em; color: var(--cp-brass); }
.cp-date-d { font-size: 1.3rem; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1; }
.cp-body { min-width: 0; display: grid; gap: 4px; }
.cp-top { display: flex; flex-wrap: wrap; gap: 6px; justify-content: space-between; align-items: center; }
.cp-meta, .cp-evidence { margin: 0; font-size: .82rem; opacity: .88; }
.cp-evidence { border-left: 3px solid var(--cp-sage); padding-left: 8px; }
.cp-status { display: inline-block; font-size: .7rem; font-weight: 600; padding: 1px 8px; border-radius: 999px; border: 1px solid var(--cp-line); white-space: nowrap; }
.cp-st-overdue { color: var(--cp-rust); border-color: currentColor; } .cp-st-done { color: var(--cp-sage); border-color: currentColor; }
.cp-st-in_progress { color: var(--cp-teal); border-color: currentColor; } .cp-st-open { color: var(--cp-brass); border-style: dashed; }
.cp-st-waived { opacity: .7; text-decoration: line-through; }
.cp-seed { display: flex; gap: 8px; align-items: center; justify-content: space-between; padding: 8px 0; border-bottom: 1px dotted var(--cp-line); }
.cp-seed > span { display: grid; min-width: 0; }
.cp-scrim { position: fixed; inset: 0; z-index: 60; display: grid; place-items: center; padding: 16px; background: rgba(8,8,10,.62); }
.cp-dialog { width: min(560px, 100%); max-height: calc(100dvh - 32px); overflow: auto; border-radius: 14px; border: 1px solid var(--cp-line); background: var(--panel-2, var(--panel, #1a1814)); padding: 16px; display: grid; gap: 12px; }
.cp-dlg-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; border-bottom: 1px solid var(--cp-line); padding-bottom: 8px; }
.cp-dlg-head h2 { margin: 0; font-size: 1.15rem; flex: 1 1 auto; }
.cp-form { display: grid; gap: 10px; }
.cp-row { display: flex; flex-wrap: wrap; gap: 10px; }
.cp-dlg-foot { justify-content: flex-end; border-top: 1px solid var(--cp-line); padding-top: 10px; }
.cp-log li { display: grid; gap: 2px; padding: 6px 0 6px 10px; border-left: 2px solid var(--cp-line); }
.cp-log-what { font-weight: 600; }
.cp-empty { display: grid; gap: 4px; justify-items: start; padding: 14px 4px; }
.cp-neutral h1 { font-size: 1.3rem; }
@media (max-width: 900px) { .cp-split { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 720px) {
  .cp-tally { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .cp-t { padding: 8px; } .cp-t dd { font-size: 1.15rem; }
  .cp-item { grid-template-columns: minmax(0, 1fr); }
  .cp-date { grid-auto-flow: column; justify-content: start; gap: 6px; min-height: 0; padding: 2px 8px; border: 0; }
  .cp-actions .btn { flex: 1 1 auto; min-height: 40px; }
  .cp-scrim { padding: 0; align-items: end; }
  .cp-dialog { width: 100%; max-height: 92dvh; border-radius: 14px 14px 0 0; }
}
@media (prefers-reduced-motion: no-preference) { .cp-dialog { animation: cp-rise .18s ease-out; } @keyframes cp-rise { from { transform: translateY(8px); opacity: 0; } to { transform: none; opacity: 1; } } }
.cp-fixed-l { font-size: .74rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 600; }
