/* Shardhan layout layer: cli-views (see agent brief)
   Client portal INNER VIEWS — Due Dates, Records Vault, Audit Trail, Invoices,
   modals / slide-overs / dialogs and the branded error state. Prefix: cv-  */

:root {
  --cv-ink: var(--sd-ink, #12352B);
  --cv-ink-2: #2F3E39;
  --cv-muted: var(--sd-muted, #5F6B67);
  --cv-faint: #6B7773;
  --cv-line: #E3E9E6;
  --cv-line-2: #EEF2F0;
  --cv-soft: #F6F8F7;
  --cv-forest: var(--sd-forest-700, #0B3B2E);
  --cv-forest-2: var(--sd-forest-600, #12523D);
  --cv-saffron: var(--sd-saffron, #EB7A1C);
  --cv-saffron-50: var(--sd-saffron-50, #FFF4E6);
  --cv-blue: var(--sd-blue, #1F4FA8);
  --cv-ok: #1FA35A;  --cv-ok-ink: #0F6B34;  --cv-ok-bg: #E3F4E8;  --cv-ok-bd: #C4E6CF;
  --cv-warn: #E39A0B; --cv-warn-ink: #9A5B00; --cv-warn-bg: #FFF3D6; --cv-warn-bd: #F5D79A;
  --cv-bad: #DC2626;  --cv-bad-ink: #B91C1C;  --cv-bad-bg: #FDECEC;  --cv-bad-bd: #F6C9C9;
  --cv-r: 14px;
  --cv-ease: var(--ease-out, cubic-bezier(.16, 1, .3, 1));
}

/* ------------------------------------------------------------ primitives */
/* opacity-only: a transform here would trap position:fixed dialogs rendered inside the view */
.cv-view { animation: cv-fade .35s ease-out both; }
@keyframes cv-rise { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes cv-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes cv-sheet { from { opacity: 0; transform: translateY(-10px) scaleY(.96); } to { opacity: 1; transform: none; } }
@keyframes cv-pop { from { opacity: 0; transform: translateY(14px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes cv-spin { to { transform: rotate(360deg); } }
@keyframes cv-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }

.cv-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }
.cv-eyebrow { display: flex; align-items: center; gap: 8px; font: 600 11px/1 var(--font-body); letter-spacing: 1.6px; text-transform: uppercase; color: #C2570C; }
.cv-eyebrow::before { content: ""; width: 18px; height: 2px; border-radius: 2px; background: var(--cv-saffron); }
.cv-title { font: 700 26px/1.15 var(--font-display); letter-spacing: -.02em; color: var(--cv-ink); margin: 8px 0 0; }
.cv-sub { font-size: 13px; color: var(--cv-muted); margin-top: 6px; max-width: 580px; line-height: 1.5; }
.cv-head--slim { justify-content: flex-end; align-items: center; margin: -4px 0 12px; }
.cv-head-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cv-meta-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; color: var(--cv-ink-2); background: #fff; border: 1px solid var(--cv-line); padding: 6px 11px; border-radius: 999px; }
.cv-meta-chip .si { font-size: 14px; color: var(--cv-saffron); }

.cv-card { background: #fff; border: 1px solid var(--sd-border, #DCE3E0); border-radius: var(--cv-r); box-shadow: var(--shadow-1); }
.cv-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 18px; border-bottom: 1px solid var(--cv-line-2); }
.cv-card-title { font: 700 14px/1.3 var(--font-display); color: var(--cv-ink); display: flex; align-items: center; gap: 8px; }
.cv-card-title .si { font-size: 16px; color: var(--cv-saffron); }
.cv-count { font-size: 11.5px; color: var(--cv-muted); font-weight: 600; }

.cv-seg { display: inline-flex; align-items: center; gap: 2px; padding: 3px; border-radius: 11px; background: #E9EFEC; border: 1px solid #DCE4E0; }
.cv-seg-btn { border: 0; background: transparent; color: #3C4B46; font: 600 12.5px/1 var(--font-body); padding: 8px 14px; border-radius: 8px; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; transition: background .18s, color .18s, box-shadow .18s; text-transform: capitalize; }
.cv-seg-btn .si { font-size: 15px; }
.cv-seg-btn:hover { color: var(--cv-ink); background: rgba(255, 255, 255, .55); }
.cv-seg-btn.is-on { background: #fff; color: var(--cv-ink); box-shadow: 0 1px 2px rgba(4, 24, 18, .12), 0 0 0 1px rgba(4, 24, 18, .04); }
.cv-seg-btn.is-on .si { color: var(--cv-saffron); }
.cv-seg--sm .cv-seg-btn { padding: 6px 10px; font-size: 12px; }
.cv-seg--icons .cv-seg-btn { padding: 6px 9px; }

.cv-btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; border: 1px solid #D3DCD8; background: #fff; color: var(--cv-ink); font: 600 12.5px/1 var(--font-body); padding: 9px 14px; border-radius: 9px; cursor: pointer; text-decoration: none; white-space: nowrap; transition: border-color .15s, background .15s, transform .15s, box-shadow .15s; }
.cv-btn .si { font-size: 15px; }
.cv-btn:hover { border-color: #B9C8C2; background: var(--cv-soft); }
.cv-btn:active { transform: translateY(1px); }
.cv-btn--primary { background: var(--cv-forest); border-color: var(--cv-forest); color: #fff; }
.cv-btn--primary:hover { background: var(--cv-forest-2); border-color: var(--cv-forest-2); }
.cv-btn--accent { background: var(--cv-saffron); border-color: var(--cv-saffron); color: #fff; }
.cv-btn--accent:hover { background: #D96A0F; border-color: #D96A0F; }
.cv-btn--danger { color: var(--cv-bad-ink); border-color: var(--cv-bad-bd); }
.cv-btn--danger:hover { background: var(--cv-bad-bg); border-color: #EFB1B1; }
.cv-btn--sm { padding: 7px 10px; font-size: 12px; border-radius: 8px; }
.cv-btn--icon { width: 32px; height: 32px; padding: 0; }
.cv-btn--block { width: 100%; }
.cv-btn[disabled] { opacity: .55; cursor: not-allowed; }

.cv-select { appearance: none; -webkit-appearance: none; border: 1px solid #D3DCD8; border-radius: 9px; padding: 9px 34px 9px 12px; font: 600 13px/1.2 var(--font-body); color: var(--cv-ink); cursor: pointer; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24'%3E%3Cpath fill='%236E7A76' d='M12 15.6 6.4 10h11.2z'/%3E%3C/svg%3E") no-repeat right 11px center; transition: border-color .15s, box-shadow .15s; }
.cv-select:hover { border-color: #B9C8C2; }
.cv-select:focus { outline: none; border-color: var(--cv-saffron); box-shadow: 0 0 0 3px rgba(235, 122, 28, .16); }
.cv-select:disabled { opacity: .55; cursor: not-allowed; }
.cv-select--lg { padding: 12px 38px 12px 14px; font-size: 14px; width: 100%; }
.cv-input { width: 100%; box-sizing: border-box; border: 1px solid #D3DCD8; border-radius: 10px; padding: 11px 14px; font: 500 14px/1.3 var(--font-body); color: var(--cv-ink); background: #fff; outline: none; transition: border-color .15s, box-shadow .15s; }
.cv-input:focus { border-color: var(--cv-saffron); box-shadow: 0 0 0 3px rgba(235, 122, 28, .16); }
.cv-input.is-err { border-color: #EFB1B1; }
.cv-label { display: block; font: 600 11px/1 var(--font-body); letter-spacing: .8px; text-transform: uppercase; color: var(--cv-ink-2); margin-bottom: 7px; }
.cv-label em { font-style: normal; color: var(--cv-faint); text-transform: none; letter-spacing: 0; font-weight: 500; }

.cv-pill { display: inline-flex; align-items: center; gap: 5px; font: 600 11px/1 var(--font-body); padding: 5px 9px; border-radius: 999px; white-space: nowrap; border: 1px solid transparent; flex: none; }
.cv-pill::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: .9; }
.cv-pill--ok { color: var(--cv-ok-ink); background: var(--cv-ok-bg); border-color: var(--cv-ok-bd); }
.cv-pill--warn { color: var(--cv-warn-ink); background: var(--cv-warn-bg); border-color: var(--cv-warn-bd); }
.cv-pill--bad { color: var(--cv-bad-ink); background: var(--cv-bad-bg); border-color: var(--cv-bad-bd); }
.cv-pill--muted { color: #4F5B57; background: #EEF2F0; border-color: #E0E7E4; }
.cv-pill--plain::before { display: none; }
.cv-code { display: inline-flex; align-items: center; font: 600 11px/1 var(--font-mono); color: var(--cv-ink); background: #E4EFEA; padding: 4px 7px; border-radius: 6px; letter-spacing: .2px; flex: none; }
.cv-days { display: inline-flex; align-items: center; gap: 4px; font: 600 10.5px/1 var(--font-mono); padding: 5px 8px; border-radius: 6px; white-space: nowrap; flex: none; background: #EEF2F0; color: #4F5B57; }
.cv-days .si { font-size: 12px; }
.cv-days--soon { background: var(--cv-saffron-50); color: #B45309; }
.cv-days--late { background: var(--cv-bad-bg); color: var(--cv-bad-ink); }
.cv-days--done { background: var(--cv-ok-bg); color: var(--cv-ok-ink); }
.cv-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex: none; }
.cv-dot--ok { background: var(--cv-ok); } .cv-dot--warn { background: var(--cv-warn); } .cv-dot--bad { background: var(--cv-bad); }

/* ------------------------------------------------------------ illustration-like empty states */
.cv-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 48px 22px; }
.cv-empty-art { position: relative; width: 132px; height: 104px; margin-bottom: 18px; }
.cv-empty-art::before { content: ""; position: absolute; left: 50%; top: 50%; width: 104px; height: 104px; transform: translate(-50%, -50%); border-radius: 50%; background: radial-gradient(circle at 50% 45%, #FFF4E6 0 40%, #F1F7F4 41% 100%); border: 1px dashed #CFDCD6; }
.cv-empty-art .cv-ea-main { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 58px; height: 58px; border-radius: 16px; background: linear-gradient(145deg, var(--cv-forest-2), var(--cv-forest)); color: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 14px 26px -10px rgba(4, 24, 18, .55); }
.cv-empty-art .cv-ea-main .si { font-size: 28px; }
.cv-empty-art .cv-ea-sat { position: absolute; width: 30px; height: 30px; border-radius: 10px; background: #fff; border: 1px solid var(--cv-line); box-shadow: var(--shadow-1); display: flex; align-items: center; justify-content: center; animation: cv-float 4s ease-in-out infinite; }
.cv-empty-art .cv-ea-sat .si { font-size: 15px; }
.cv-empty-art .cv-ea-sat--a { left: 0; top: 10px; color: var(--cv-saffron); }
.cv-empty-art .cv-ea-sat--b { right: 0; bottom: 8px; color: var(--cv-ok); animation-delay: -2s; }
.cv-empty-title { font: 700 16px/1.3 var(--font-display); color: var(--cv-ink); margin-bottom: 6px; }
.cv-empty-text { font-size: 13px; color: var(--cv-muted); max-width: 380px; line-height: 1.55; }
.cv-empty-actions { display: flex; gap: 10px; margin-top: 18px; flex-wrap: wrap; justify-content: center; }
.cv-empty--err .cv-ea-main { background: linear-gradient(145deg, #E25555, #B91C1C); }
.cv-loading { padding: 48px 20px; text-align: center; color: var(--cv-muted); font-size: 13px; display: flex; align-items: center; justify-content: center; gap: 10px; }
.cv-spinner { width: 16px; height: 16px; border-radius: 50%; border: 2px solid #D3DCD8; border-top-color: var(--cv-saffron); animation: cv-spin .7s linear infinite; }

/* ============================================================ DUE DATES */
.cv-fyp { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); overflow: hidden; min-height: 420px; }
.cv-fyp-art { position: relative; background:
    radial-gradient(360px 220px at 100% 0%, rgba(255, 154, 61, .28), transparent 70%),
    radial-gradient(300px 240px at 0% 100%, rgba(47, 191, 113, .22), transparent 70%),
    linear-gradient(160deg, var(--cv-forest-2), var(--cv-forest) 60%, #062A20);
  color: #fff; padding: 34px 32px; display: flex; flex-direction: column; justify-content: space-between; gap: 26px; }
.cv-fyp-art::after { content: ""; position: absolute; inset: 0; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='44'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='.06'%3E%3Cpath d='M22 0 44 22 22 44 0 22Z'/%3E%3Ccircle cx='22' cy='22' r='7'/%3E%3C/g%3E%3C/svg%3E"); pointer-events: none; }
.cv-fyp-kicker { font: 600 11px/1 var(--font-body); letter-spacing: 1.8px; text-transform: uppercase; color: #FFB877; }
.cv-fyp-h { font: 700 26px/1.2 var(--font-display); margin: 10px 0 8px; letter-spacing: -.02em; }
.cv-fyp-p { font-size: 13px; line-height: 1.6; color: rgba(255, 255, 255, .78); max-width: 330px; }
.cv-fyp-mini { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; max-width: 320px; }
.cv-fyp-mini span { display: block; border-radius: 7px; padding: 8px 0 7px; text-align: center; font: 600 10.5px/1 var(--font-body); color: rgba(255, 255, 255, .8); background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .1); }
.cv-fyp-mini span.is-hot { background: rgba(255, 154, 61, .3); border-color: rgba(255, 184, 119, .5); color: #fff; }
.cv-fyp-form { padding: 34px 34px; display: flex; flex-direction: column; justify-content: center; gap: 18px; }
.cv-fyp-form h3 { margin: 0; font: 700 18px/1.3 var(--font-display); color: var(--cv-ink); }
.cv-fyp-form .cv-sub { margin-top: -10px; }
.cv-fyp-quick { display: flex; gap: 8px; flex-wrap: wrap; }
.cv-fyp-q { border: 1px dashed #C9D5CF; background: var(--cv-soft); color: var(--cv-ink-2); font: 600 12px/1 var(--font-body); padding: 8px 12px; border-radius: 999px; cursor: pointer; transition: all .15s; display: inline-flex; gap: 6px; align-items: center; }
.cv-fyp-q:hover { border-style: solid; border-color: var(--cv-saffron); background: var(--cv-saffron-50); color: var(--cv-ink); }
.cv-fyp-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.cv-fyp-go { align-self: flex-start; padding: 12px 22px; font-size: 13.5px; }

.cv-cal-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 10px 12px; margin-bottom: 16px; }
.cv-cal-bar-l, .cv-cal-bar-r { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cv-cal-nav { display: flex; align-items: center; gap: 8px; min-width: 0; }
.cv-cal-period { font: 700 16px/1.2 var(--font-display); color: var(--cv-ink); padding: 0 6px; min-width: 0; }
.cv-cal-period small { display: block; font: 500 11px/1.2 var(--font-body); color: var(--cv-muted); margin-top: 2px; }
.cv-legend { display: flex; align-items: center; gap: 14px; font-size: 11.5px; color: var(--cv-muted); font-weight: 600; flex-wrap: wrap; }
.cv-legend span { display: inline-flex; align-items: center; gap: 6px; }

/* KPI band above FY heat strip */
.cv-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; margin-bottom: 14px; overflow: hidden; }
.cv-kpi { padding: 14px 18px; border-right: 1px solid var(--cv-line-2); position: relative; }
.cv-kpi:last-child { border-right: 0; }
.cv-kpi b { display: block; font: 700 24px/1 var(--font-display); color: var(--cv-ink); }
.cv-kpi span { display: flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 600; color: var(--cv-muted); margin-top: 7px; }
.cv-kpi::before { content: ""; position: absolute; left: 0; top: 14px; bottom: 14px; width: 3px; border-radius: 0 3px 3px 0; background: var(--k, var(--cv-forest)); }

/* FY heat-strip */
.cv-heat-wrap { padding: 16px 18px 14px; }
.cv-heat-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.cv-heat { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 6px; }
.cv-heat-cell { position: relative; border: 1px solid transparent; border-radius: 10px; padding: 10px 6px 9px; cursor: pointer; text-align: center; background: var(--h, #F1F5F3); color: var(--hc, var(--cv-ink)); transition: transform .18s var(--cv-ease), box-shadow .18s; min-width: 0; }
.cv-heat-cell:hover { transform: translateY(-3px); box-shadow: 0 10px 20px -12px rgba(4, 24, 18, .55); }
.cv-heat-cell.is-now { border-color: var(--cv-saffron); box-shadow: 0 0 0 2px rgba(235, 122, 28, .25); }
.cv-heat-cell.is-now::after { content: "Now"; position: absolute; top: -8px; left: 50%; transform: translateX(-50%); font: 700 8.5px/1 var(--font-body); letter-spacing: .6px; text-transform: uppercase; background: var(--cv-saffron); color: #fff; padding: 3px 5px; border-radius: 4px; }
.cv-heat-m { font: 600 11px/1 var(--font-body); opacity: .85; }
.cv-heat-n { font: 700 22px/1 var(--font-display); margin: 7px 0 3px; }
.cv-heat-y { font: 500 9.5px/1 var(--font-mono); opacity: .7; }
.cv-heat-bar { display: flex; height: 4px; border-radius: 3px; overflow: hidden; margin: 8px 4px 0; background: rgba(255, 255, 255, .5); }
.cv-heat-bar i { display: block; height: 100%; }
.cv-heat-scale { display: flex; align-items: center; gap: 4px; font-size: 10.5px; color: var(--cv-muted); font-weight: 600; }
.cv-heat-scale i { width: 16px; height: 10px; border-radius: 3px; display: inline-block; }

/* Month agenda layout */
.cv-month { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 16px; align-items: start; }
.cv-grid-card { overflow: hidden; }
.cv-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cv-grid-dn { padding: 10px 0; text-align: center; font: 600 10.5px/1 var(--font-body); letter-spacing: 1px; text-transform: uppercase; color: var(--cv-faint); background: var(--cv-soft); border-bottom: 1px solid var(--cv-line); }
.cv-grid-dn.is-we { color: #C2570C; }
.cv-cell { position: relative; min-height: 96px; padding: 8px 8px 6px; border-right: 1px solid var(--cv-line-2); border-bottom: 1px solid var(--cv-line-2); cursor: pointer; transition: background .15s; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.cv-cell:nth-child(7n) { border-right: 0; }
.cv-cell:hover { background: #FAFBFA; }
.cv-cell.is-pad { background: repeating-linear-gradient(135deg, #F8FAF9 0 6px, #F3F6F5 6px 12px); cursor: default; }
.cv-cell.is-we:not(.is-pad) { background: #FCFDFC; }
.cv-cell.is-sel { background: #FFF8F0; box-shadow: inset 0 0 0 2px rgba(235, 122, 28, .45); }
.cv-cell-top { display: flex; align-items: center; justify-content: space-between; gap: 4px; }
.cv-cell-n { width: 26px; height: 26px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font: 600 12.5px/1 var(--font-display); color: var(--cv-ink); }
.cv-cell.is-today .cv-cell-n { background: var(--cv-forest); color: #fff; box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--cv-saffron); }
.cv-cell-dots { display: flex; gap: 3px; align-items: center; }
.cv-cell-dots .cv-dot { width: 7px; height: 7px; }
.cv-cell-more { font: 600 9.5px/1 var(--font-mono); color: var(--cv-muted); }
.cv-tag { display: flex; align-items: center; gap: 5px; font: 600 10.5px/1.2 var(--font-body); color: var(--cv-ink); padding: 4px 6px; border-radius: 6px; background: #F1F5F3; border-left: 3px solid var(--t, var(--cv-warn)); cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: background .15s, transform .15s; }
.cv-tag:hover { background: #E6EEEA; transform: translateX(1px); }
.cv-agenda { position: sticky; top: 90px; overflow: hidden; }
.cv-agenda-body { max-height: 560px; overflow-y: auto; padding: 6px 0; }
.cv-ag-day { padding: 10px 16px 6px; }
.cv-ag-date { display: flex; align-items: baseline; gap: 8px; margin-bottom: 8px; }
.cv-ag-date b { font: 700 20px/1 var(--font-display); color: var(--cv-ink); }
.cv-ag-date span { font: 600 11px/1 var(--font-body); color: var(--cv-muted); text-transform: uppercase; letter-spacing: .8px; }
.cv-ag-date.is-sel b { color: var(--cv-saffron); }
.cv-ag-item { display: flex; align-items: center; gap: 10px; padding: 9px 10px; margin-bottom: 6px; border-radius: 10px; border: 1px solid var(--cv-line); background: #fff; cursor: pointer; border-left: 4px solid var(--t, var(--cv-warn)); transition: border-color .15s, box-shadow .15s, transform .15s; }
.cv-ag-item:hover { box-shadow: var(--shadow-1); transform: translateY(-1px); }
.cv-ag-item-main { flex: 1; min-width: 0; }
.cv-ag-item-t { font-size: 12.5px; font-weight: 600; color: var(--cv-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cv-ag-item-s { font-size: 11px; color: var(--cv-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.cv-ag-empty { padding: 34px 20px; text-align: center; color: var(--cv-muted); font-size: 12.5px; }
.cv-ag-empty .si { display: block; font-size: 30px; color: #B9C4C0; margin-bottom: 8px; }

/* Week strip */
.cv-week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; margin-bottom: 16px; }
.cv-wday { position: relative; background: #fff; border: 1px solid var(--cv-line); border-radius: 12px; padding: 12px 8px 10px; text-align: center; cursor: pointer; transition: transform .18s var(--cv-ease), border-color .15s, box-shadow .15s; min-width: 0; }
.cv-wday:hover { transform: translateY(-2px); box-shadow: var(--shadow-1); }
.cv-wday-dn { font: 600 10.5px/1 var(--font-body); letter-spacing: 1px; text-transform: uppercase; color: var(--cv-faint); }
.cv-wday-n { font: 700 24px/1 var(--font-display); color: var(--cv-ink); margin: 8px 0 4px; }
.cv-wday-m { font: 500 10px/1 var(--font-mono); color: var(--cv-muted); }
.cv-wday-dots { display: flex; justify-content: center; gap: 3px; margin-top: 9px; min-height: 7px; }
.cv-wday-dots .cv-dot { width: 7px; height: 7px; }
.cv-wday.is-today { border-color: var(--cv-saffron); }
.cv-wday.is-sel { background: var(--cv-forest); border-color: var(--cv-forest); }
.cv-wday.is-sel .cv-wday-dn, .cv-wday.is-sel .cv-wday-m { color: rgba(255, 255, 255, .7); }
.cv-wday.is-sel .cv-wday-n { color: #fff; }

/* Day view */
.cv-dayhead { display: flex; align-items: center; gap: 18px; padding: 18px 20px; margin-bottom: 14px; }
.cv-dayhead-tile { width: 74px; height: 78px; border-radius: 14px; overflow: hidden; flex: none; text-align: center; border: 1px solid var(--cv-line); box-shadow: var(--shadow-1); background: #fff; }
.cv-dayhead-tile span { display: block; background: var(--cv-forest); color: #fff; font: 700 10.5px/1 var(--font-body); letter-spacing: 1.2px; text-transform: uppercase; padding: 6px 0; }
.cv-dayhead-tile b { display: block; font: 700 32px/1 var(--font-display); color: var(--cv-ink); padding-top: 10px; }
.cv-dayhead-t { font: 700 20px/1.2 var(--font-display); color: var(--cv-ink); }
.cv-dayhead-s { font-size: 12.5px; color: var(--cv-muted); margin-top: 4px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.cv-dcards { display: flex; flex-direction: column; gap: 12px; }
.cv-dcard { overflow: hidden; border-left: 5px solid var(--t, var(--cv-warn)); }
.cv-dcard-h { display: flex; align-items: center; gap: 12px; padding: 14px 18px; cursor: pointer; transition: background .15s; flex-wrap: wrap; }
.cv-dcard-h:hover { background: var(--cv-soft); }
.cv-dcard-h-main { flex: 1; min-width: 180px; }
.cv-dcard-h-t { font: 700 14.5px/1.3 var(--font-display); color: var(--cv-ink); }
.cv-dcard-h-s { font-size: 12px; color: var(--cv-muted); margin-top: 3px; }
.cv-dcard-row { display: flex; align-items: center; gap: 10px; padding: 10px 18px 10px 22px; border-top: 1px solid var(--cv-line-2); cursor: pointer; font-size: 12.5px; transition: background .15s; }
.cv-dcard-row:hover { background: #FAFBFA; }
.cv-dcard-row-t { flex: 1; min-width: 0; font-weight: 600; color: var(--cv-ink); }
.cv-dcard-row-t small { display: block; font-weight: 500; color: var(--cv-muted); font-size: 11px; margin-top: 2px; }

/* Date-grouped timeline (event list) */
.cv-tl { margin-top: 16px; overflow: hidden; }
.cv-tl-body { padding: 8px 18px 14px; }
.cv-tl-day { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 14px; position: relative; }
.cv-tl-date { text-align: center; padding-top: 12px; }
.cv-tl-date b { display: block; font: 700 22px/1 var(--font-display); color: var(--cv-ink); }
.cv-tl-date span { display: block; font: 600 10px/1 var(--font-body); color: var(--cv-muted); text-transform: uppercase; letter-spacing: .9px; margin-top: 5px; }
.cv-tl-date em { display: block; font: 500 9.5px/1 var(--font-mono); font-style: normal; color: var(--cv-faint); margin-top: 4px; }
.cv-tl-items { position: relative; padding: 10px 0 10px 18px; border-left: 2px solid var(--cv-line); display: flex; flex-direction: column; gap: 8px; }
.cv-tl-day:first-child .cv-tl-items { border-image: linear-gradient(transparent 18px, var(--cv-line) 18px) 1; }
.cv-tl-items::before { content: ""; position: absolute; left: -7px; top: 22px; width: 12px; height: 12px; border-radius: 50%; background: #fff; border: 3px solid var(--t, var(--cv-warn)); }
.cv-tl-item { display: flex; align-items: center; gap: 12px; padding: 11px 14px; border-radius: 11px; border: 1px solid var(--cv-line); background: #fff; cursor: pointer; position: relative; overflow: hidden; transition: box-shadow .18s, transform .18s var(--cv-ease), border-color .15s; }
.cv-tl-item::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--t, var(--cv-warn)); }
.cv-tl-item:hover { transform: translateX(3px); box-shadow: var(--shadow-1); border-color: #D3DCD8; }
.cv-tl-item-main { flex: 1; min-width: 0; }
.cv-tl-item-t { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--cv-ink); min-width: 0; }
.cv-tl-item-t > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-tl-item-s { font-size: 11.5px; color: var(--cv-muted); margin-top: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cv-tl-side { display: flex; align-items: center; gap: 8px; flex: none; }
.cv-tl-more { padding: 10px 16px 14px; font-size: 11.5px; color: var(--cv-muted); text-align: center; }
.cv-chev { color: var(--cv-faint); font-size: 16px; flex: none; }

/* ============================================================ RECORDS VAULT */
.cv-vault-tools { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.cv-search { flex: 1; min-width: 220px; position: relative; }
.cv-search > .si { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); font-size: 17px; color: var(--cv-muted); pointer-events: none; }
.cv-search input { width: 100%; box-sizing: border-box; padding: 12px 38px 12px 42px; border: 1px solid #D3DCD8; border-radius: 11px; font: 500 14px/1.2 var(--font-body); background: #fff; color: var(--cv-ink); outline: none; transition: border-color .15s, box-shadow .15s; box-shadow: var(--shadow-1); }
.cv-search input:focus { border-color: var(--cv-saffron); box-shadow: 0 0 0 3px rgba(235, 122, 28, .16); }
.cv-search-x { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); cursor: pointer; font-size: 18px; color: var(--cv-muted); line-height: 1; }
.cv-filter-btn.is-on { border-color: var(--cv-saffron); background: var(--cv-saffron-50); }
.cv-filter-btn .cv-filter-n { background: var(--cv-saffron); color: #fff; font-size: 10px; border-radius: 999px; padding: 2px 6px; }

.cv-sheet { position: relative; margin: -2px 0 14px; padding: 18px 20px 16px; border-top: 3px solid var(--cv-saffron); border-radius: 0 0 var(--cv-r) var(--cv-r); transform-origin: top center; animation: cv-sheet .28s var(--cv-ease) both; }
.cv-sheet-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; gap: 10px; }
.cv-sheet-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.cv-sheet-grid .cv-select { width: 100%; font-weight: 500; }
.cv-sheet-f { display: flex; gap: 10px; margin-top: 16px; justify-content: flex-end; align-items: center; flex-wrap: wrap; }
.cv-sheet-f .cv-hint { margin-right: auto; font-size: 11.5px; color: var(--cv-muted); }

.cv-vault { display: flex; overflow: hidden; min-height: 540px; }
.cv-vault-tree { width: 280px; flex: none; border-right: 1px solid var(--cv-line); background: linear-gradient(180deg, #F7FAF8, #F2F6F4); display: flex; flex-direction: column; }
.cv-vault-tree-h { display: flex; align-items: center; gap: 9px; padding: 14px 16px; border-bottom: 1px solid var(--cv-line); font: 700 13px/1 var(--font-display); color: var(--cv-ink); }
.cv-vault-tree-h .cv-vt-ico { width: 28px; height: 28px; border-radius: 8px; background: var(--cv-forest); color: #FFB877; display: flex; align-items: center; justify-content: center; }
.cv-vault-tree-h .cv-vt-ico .si { font-size: 15px; }
.cv-vault-tree-b { padding: 8px 0; overflow-y: auto; max-height: 560px; flex: 1; }
.cv-vault-main { flex: 1; min-width: 0; display: flex; flex-direction: column; position: relative; }
.cv-vault-bar { padding: 12px 18px; border-bottom: 1px solid var(--cv-line-2); display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; min-height: 56px; background: #fff; }
.cv-crumbs { display: flex; align-items: center; gap: 2px; flex-wrap: wrap; min-width: 0; }
.cv-crumb { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600; color: var(--cv-muted); padding: 5px 8px; border-radius: 7px; cursor: pointer; max-width: 170px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: background .15s, color .15s; }
.cv-crumb:hover { background: var(--cv-soft); color: var(--cv-ink); }
.cv-crumb .si { font-size: 14px; }
.cv-crumb.is-cur { color: var(--cv-ink); background: #EEF4F1; }
.cv-crumb-sep { color: #B9C4C0; font-size: 14px; }
.cv-vault-actions { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.cv-vsep { width: 1px; height: 22px; background: var(--cv-line); margin: 0 3px; }
.cv-vault-body { flex: 1; padding: 18px 20px; overflow-y: auto; max-height: 600px; }
.cv-vault-foot { font-size: 11px; color: var(--cv-faint); margin-top: 10px; display: flex; align-items: center; gap: 6px; }
.cv-vault-foot .si { font-size: 13px; color: var(--cv-ok); }

.cv-fhero { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; flex-wrap: wrap; }
.cv-fhero-ico { width: 46px; height: 46px; border-radius: 13px; display: flex; align-items: center; justify-content: center; background: linear-gradient(145deg, #FFE3C7, #FFF4E6); color: #C2570C; flex: none; border: 1px solid #F8D5B0; }
.cv-fhero-ico .si { font-size: 23px; }
.cv-fhero-main { flex: 1; min-width: 160px; }
.cv-fhero-t { font: 700 17px/1.25 var(--font-display); color: var(--cv-ink); }
.cv-fhero-s { font-size: 12px; color: var(--cv-muted); margin-top: 3px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.cv-prog { display: flex; align-items: center; gap: 10px; min-width: 200px; }
.cv-prog-track { flex: 1; height: 6px; border-radius: 4px; background: var(--cv-line-2); overflow: hidden; }
.cv-prog-track i { display: block; height: 100%; border-radius: 4px; background: linear-gradient(90deg, var(--cv-saffron), #FF9A3D); transition: width .4s var(--cv-ease); }
.cv-prog.is-done .cv-prog-track i { background: linear-gradient(90deg, var(--cv-ok-ink), var(--cv-ok)); }
.cv-prog b { font: 600 11.5px/1 var(--font-mono); color: var(--cv-ink-2); white-space: nowrap; }

.cv-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(var(--tw, 170px), 1fr)); gap: var(--tg, 12px); }
.cv-tile { position: relative; background: #fff; border: 1px solid var(--cv-line); border-radius: 14px; padding: 16px 14px 13px; cursor: pointer; text-align: center; transition: transform .2s var(--cv-ease), box-shadow .2s, border-color .15s; min-width: 0; }
.cv-tile:hover { transform: translateY(-3px); box-shadow: var(--shadow-2); border-color: #D3DCD8; }
.cv-tile.is-sel { border-color: var(--cv-saffron); box-shadow: 0 0 0 3px rgba(235, 122, 28, .16); background: #FFFBF6; }
.cv-tile-ico { position: relative; height: var(--ti, 64px); display: flex; align-items: center; justify-content: center; margin-bottom: 10px; }
.cv-tile-ico > .si { font-size: var(--ti, 64px); line-height: 1; color: var(--fc, #EB7A1C); filter: drop-shadow(0 6px 10px rgba(4, 24, 18, .12)); }
.cv-ftype { position: absolute; bottom: 2px; left: 50%; transform: translateX(8px); font: 700 9px/1 var(--font-mono); letter-spacing: .5px; color: #fff; background: var(--fc, #5B6763); padding: 3px 5px; border-radius: 4px; border: 2px solid #fff; }
.cv-tile-n { font-size: var(--tf, 13px); font-weight: 600; color: var(--cv-ink); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-tile-s { font-size: 11px; color: var(--cv-muted); margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-tile .cv-pill { position: absolute; top: 9px; right: 9px; font-size: 9.5px; padding: 3px 7px; }
.cv-tiles--small .cv-tile { padding: 11px 10px 9px; border-radius: 11px; }
.cv-tiles--small .cv-tile .cv-pill { position: static; margin-top: 6px; }
.cv-tiles--large .cv-tile { padding: 22px 16px 16px; }

.cv-rows { border: 1px solid var(--cv-line); border-radius: 12px; overflow: hidden; background: #fff; }
.cv-row { display: flex; align-items: center; gap: 12px; padding: 9px 14px; border-top: 1px solid var(--cv-line-2); cursor: pointer; transition: background .12s; }
.cv-row:first-child { border-top: 0; }
.cv-row:hover { background: #FAFBFA; }
.cv-row.is-sel { background: #FFF8F0; box-shadow: inset 3px 0 0 var(--cv-saffron); }
.cv-row-ico { width: 30px; height: 30px; border-radius: 8px; display: flex; align-items: center; justify-content: center; flex: none; background: var(--fb, #FFF1E2); color: var(--fc, #EB7A1C); }
.cv-row-ico .si { font-size: 17px; }
.cv-row-n { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; color: var(--cv-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-row-m { font-size: 11.5px; color: var(--cv-muted); flex: none; }
.cv-row-b { font: 700 9px/1 var(--font-mono); color: var(--fc); background: var(--fb); padding: 4px 6px; border-radius: 4px; flex: none; letter-spacing: .4px; }
.cv-table-h, .cv-table-r { display: grid; grid-template-columns: 34px minmax(0, 1fr) 90px 90px 100px 96px; gap: 10px; align-items: center; padding: 9px 14px; }
.cv-table-h { background: var(--cv-soft); font: 600 10px/1 var(--font-body); letter-spacing: .9px; text-transform: uppercase; color: var(--cv-faint); border-bottom: 1px solid var(--cv-line); }
.cv-table-r { border-top: 1px solid var(--cv-line-2); cursor: pointer; font-size: 12px; color: #4F5B57; transition: background .12s; }
.cv-table-r:hover { background: #FAFBFA; }
.cv-table-r.is-sel { background: #FFF8F0; }
.cv-table-r .cv-row-n { font-size: 12.5px; }
.cv-table-act { display: flex; gap: 4px; justify-content: flex-end; }
.cv-iconbtn { width: 28px; height: 28px; border-radius: 8px; border: 1px solid #D3DCD8; background: #fff; color: var(--cv-ink-2); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; text-decoration: none; transition: background .15s, border-color .15s; }
.cv-iconbtn .si { font-size: 14px; }
.cv-iconbtn:hover { background: var(--cv-soft); border-color: #B9C8C2; }
.cv-iconbtn--danger { color: var(--cv-bad-ink); border-color: var(--cv-bad-bd); }
.cv-iconbtn--danger:hover { background: var(--cv-bad-bg); }

.cv-fy-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.cv-fy-card { position: relative; border-radius: 14px; overflow: hidden; cursor: pointer; border: 1px solid var(--cv-line); background: #fff; transition: transform .2s var(--cv-ease), box-shadow .2s; }
.cv-fy-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-2); }
.cv-fy-card-top { padding: 16px 16px 14px; color: #fff; background: radial-gradient(200px 120px at 100% 0, rgba(255, 154, 61, .35), transparent 70%), linear-gradient(150deg, var(--cv-forest-2), var(--cv-forest)); display: flex; justify-content: space-between; align-items: flex-start; }
.cv-fy-card-top b { font: 700 17px/1.2 var(--font-display); }
.cv-fy-card-top small { display: block; font-size: 10.5px; letter-spacing: 1.2px; text-transform: uppercase; color: #FFB877; font-weight: 600; margin-bottom: 6px; }
.cv-fy-card-top .si { font-size: 26px; color: rgba(255, 255, 255, .5); }
.cv-fy-card-b { padding: 12px 16px; font-size: 12px; color: var(--cv-muted); display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.cv-sec-h { display: flex; align-items: center; justify-content: space-between; margin: 0 0 12px; gap: 10px; }
.cv-sec-h b { font: 700 14px/1.2 var(--font-display); color: var(--cv-ink); }
.cv-sec-h span { font-size: 11.5px; color: var(--cv-muted); font-weight: 600; }
.cv-sec-gap { margin-top: 22px; padding-top: 18px; border-top: 1px dashed var(--cv-line); }

.cv-hl { background: linear-gradient(transparent 55%, rgba(255, 154, 61, .45) 55%); color: inherit; padding: 0 1px; border-radius: 2px; }
.cv-sres-h { display: flex; align-items: baseline; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.cv-sres-h b { font: 700 14px/1.2 var(--font-display); color: var(--cv-ink); }
.cv-sres-h span { font-size: 12px; color: var(--cv-muted); }
.cv-sres { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 10px; }
.cv-scard { display: flex; gap: 12px; align-items: flex-start; padding: 13px 14px; border: 1px solid var(--cv-line); border-radius: 12px; background: #fff; cursor: pointer; transition: transform .18s var(--cv-ease), box-shadow .18s, border-color .15s; min-width: 0; }
.cv-scard:hover { transform: translateY(-2px); box-shadow: var(--shadow-1); border-color: #D3DCD8; }
.cv-scard.is-top { border-color: #F5C58E; background: linear-gradient(180deg, #FFFAF3, #fff); }
.cv-scard-main { flex: 1; min-width: 0; }
.cv-scard-t { font-size: 13px; font-weight: 600; color: var(--cv-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-scard-p { font-size: 11px; color: var(--cv-muted); margin-top: 4px; line-height: 1.45; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.cv-scard-k { display: inline-block; font: 600 9.5px/1 var(--font-body); letter-spacing: .6px; text-transform: uppercase; color: var(--cv-blue); background: #E8EEF9; padding: 3px 6px; border-radius: 4px; margin-top: 7px; }
.cv-closest { margin-top: 18px; padding-top: 16px; border-top: 1px dashed var(--cv-line); }
.cv-closest-k { font: 600 10.5px/1 var(--font-body); letter-spacing: 1.2px; text-transform: uppercase; color: var(--cv-faint); margin-bottom: 12px; }

.cv-fchips { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.cv-fchip { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 600; padding: 5px 6px 5px 10px; border-radius: 999px; background: #E8EEF9; color: #1E3A8A; }
.cv-fchip span { cursor: pointer; width: 16px; height: 16px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, .7); font-size: 12px; line-height: 1; }
.cv-fchip--fy { background: #E4EFEA; color: var(--cv-ink); }
.cv-fchip--comp { background: var(--cv-saffron-50); color: #9A5B00; }
.cv-fgroup { border: 1px solid var(--cv-line); border-radius: 12px; overflow: hidden; margin-bottom: 12px; background: #fff; }
.cv-fgroup-h { display: flex; align-items: center; gap: 6px; padding: 9px 14px; background: var(--cv-soft); border-bottom: 1px solid var(--cv-line); font-size: 11.5px; font-weight: 600; color: var(--cv-ink-2); flex-wrap: wrap; }
.cv-fgroup-h .si { font-size: 14px; color: var(--cv-saffron); }

/* Recent tab */
.cv-recent { padding: 18px 20px; min-height: 480px; }

/* ============================================================ AUDIT TRAIL */
.cv-audit { max-width: 920px; }
.cv-audit-tools { padding: 14px 16px; margin-bottom: 18px; display: flex; flex-direction: column; gap: 12px; }
.cv-audit-tools .cv-search input { box-shadow: none; background: var(--cv-soft); }
.cv-audit-filters { display: flex; flex-wrap: wrap; gap: 10px; justify-content: space-between; align-items: center; }
.cv-audit-count { font-size: 12px; color: var(--cv-muted); margin: 0 0 10px; display: flex; align-items: center; gap: 8px; }
.cv-at-day { position: relative; padding-left: 0; margin-bottom: 8px; }
.cv-at-day-h { position: sticky; top: 80px; z-index: 2; display: inline-flex; align-items: center; gap: 8px; margin: 6px 0 10px; padding: 6px 12px 6px 8px; border-radius: 999px; background: #fff; border: 1px solid var(--cv-line); box-shadow: var(--shadow-1); font: 700 12px/1 var(--font-display); color: var(--cv-ink); }
.cv-at-day-h i { width: 20px; height: 20px; border-radius: 50%; background: var(--cv-forest); color: #FFB877; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; font-style: normal; }
.cv-at-day-h small { font: 500 11px/1 var(--font-body); color: var(--cv-muted); }
.cv-at-list { position: relative; margin-left: 18px; padding-left: 30px; }
.cv-at-list::before { content: ""; position: absolute; left: 0; top: 0; bottom: 14px; width: 2px; background: linear-gradient(180deg, var(--cv-line), var(--cv-line) 85%, transparent); }
.cv-at-item { position: relative; margin-bottom: 12px; animation: cv-rise .35s var(--cv-ease) both; }
.cv-at-node { position: absolute; left: -48px; top: 10px; width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--nb, #E8F1EC); color: var(--nc, var(--cv-blue)); border: 3px solid #F4F7F6; box-shadow: 0 0 0 1px var(--cv-line); }
.cv-at-node .si { font-size: 16px !important; }
.cv-at-card { background: #fff; border: 1px solid var(--cv-line); border-radius: 12px; padding: 13px 16px; transition: box-shadow .18s, border-color .15s; }
.cv-at-card:hover { box-shadow: var(--shadow-1); border-color: #D3DCD8; }
.cv-at-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.cv-at-t { font-size: 13.5px; font-weight: 600; color: var(--cv-ink); line-height: 1.35; }
.cv-at-time { font: 500 11px/1 var(--font-mono); color: var(--cv-faint); white-space: nowrap; padding-top: 3px; }
.cv-at-d { font-size: 12.5px; color: #5B6763; margin-top: 5px; line-height: 1.5; }
.cv-at-meta { display: flex; gap: 6px; margin-top: 9px; flex-wrap: wrap; }
.cv-at-cat { font: 600 10px/1 var(--font-body); letter-spacing: .6px; text-transform: uppercase; padding: 4px 8px; border-radius: 5px; color: var(--nc); background: var(--nb); }
.cv-at-period { font: 600 10.5px/1 var(--font-mono); padding: 4px 8px; border-radius: 5px; color: var(--cv-ink-2); background: #EEF2F0; }
.cv-at-more { text-align: center; margin: 6px 0 10px; }

/* ============================================================ INVOICES */
.cv-bband { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr); overflow: hidden; margin-bottom: 22px; }
.cv-bband-hero { position: relative; padding: 24px 26px; color: #fff; background: radial-gradient(320px 200px at 100% 0%, rgba(255, 154, 61, .32), transparent 70%), linear-gradient(155deg, var(--cv-forest-2), var(--cv-forest) 65%, #062A20); }
.cv-bband-hero::after { content: "\20B9"; position: absolute; right: 18px; bottom: -26px; font: 700 150px/1 var(--font-display); color: rgba(255, 255, 255, .06); pointer-events: none; }
.cv-bband-k { font: 600 11px/1 var(--font-body); letter-spacing: 1.6px; text-transform: uppercase; color: #FFB877; }
.cv-bband-amt { font: 700 36px/1.1 var(--font-display); margin: 12px 0 6px; letter-spacing: -.02em; }
.cv-bband-amt small { font-size: 18px; opacity: .8; margin-right: 2px; }
.cv-bband-s { font-size: 12.5px; color: rgba(255, 255, 255, .75); }
.cv-bband-tag { display: inline-flex; align-items: center; gap: 6px; margin-top: 16px; font-size: 11.5px; font-weight: 600; padding: 6px 10px; border-radius: 999px; background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .16); }
.cv-bband-split { padding: 22px 24px; display: flex; flex-direction: column; justify-content: center; gap: 14px; }
.cv-bband-split-h { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.cv-bband-split-h b { font: 700 13.5px/1 var(--font-display); color: var(--cv-ink); }
.cv-bband-split-h span { font-size: 12px; color: var(--cv-muted); }
.cv-sbar { display: flex; height: 14px; border-radius: 8px; overflow: hidden; background: #EEF2F0; gap: 2px; }
.cv-sbar i { display: block; height: 100%; transition: width .5s var(--cv-ease); min-width: 0; }
.cv-sbar-legend { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.cv-sbar-legend div { border-left: 3px solid var(--k); padding: 2px 0 2px 10px; }
.cv-sbar-legend b { display: block; font: 700 16px/1.2 var(--font-display); color: var(--cv-ink); }
.cv-sbar-legend span { font-size: 11.5px; color: var(--cv-muted); font-weight: 600; }
.cv-inv-sec { display: flex; align-items: center; justify-content: space-between; margin: 0 0 12px; gap: 10px; }
.cv-inv-sec b { font: 700 15px/1.2 var(--font-display); color: var(--cv-ink); display: flex; align-items: center; gap: 8px; }
.cv-inv-sec b .si { color: var(--cv-saffron); font-size: 17px; }
.cv-inv-sec span { font-size: 12px; color: var(--cv-muted); font-weight: 600; }
.cv-invs { align-items: start; display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: 14px; }
.cv-inv { position: relative; overflow: hidden; padding: 20px 20px 16px; }
.cv-ribbon { position: absolute; top: 16px; right: -40px; width: 150px; transform: rotate(45deg); text-align: center; font: 700 10px/1 var(--font-body); letter-spacing: 1.2px; text-transform: uppercase; color: #fff; padding: 6px 0; background: var(--r, var(--cv-warn)); box-shadow: 0 4px 10px -4px rgba(0, 0, 0, .35); }
.cv-inv-top { display: flex; align-items: flex-start; gap: 14px; padding-right: 60px; }
.cv-inv-ico { width: 44px; height: 44px; border-radius: 12px; display: flex; align-items: center; justify-content: center; background: #E4EFEA; color: var(--cv-forest); flex: none; }
.cv-inv-ico .si { font-size: 22px; }
.cv-inv-no { font: 600 11px/1 var(--font-mono); color: var(--cv-muted); letter-spacing: .3px; }
.cv-inv-t { font: 700 16px/1.25 var(--font-display); color: var(--cv-ink); margin-top: 5px; }
.cv-inv-amt { display: flex; align-items: flex-end; justify-content: space-between; gap: 10px; margin: 16px 0 12px; padding: 14px 16px; border-radius: 12px; background: var(--cv-soft); border: 1px solid var(--cv-line-2); flex-wrap: wrap; }
.cv-inv-amt b { font: 700 26px/1 var(--font-display); color: var(--cv-ink); }
.cv-inv-amt small { display: block; font-size: 11px; color: var(--cv-muted); font-weight: 600; margin-bottom: 6px; text-transform: uppercase; letter-spacing: .8px; }
.cv-inv-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 14px; font-size: 12.5px; }
.cv-inv-grid small { display: block; color: var(--cv-faint); font-size: 10.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .6px; margin-bottom: 3px; }
.cv-inv-grid div > span { font-weight: 600; color: var(--cv-ink); }
.cv-inv-pay { margin-top: 14px; padding: 12px 14px; border-radius: 10px; border: 1px dashed #D3DCD8; font-size: 12px; color: #5B6763; }
.cv-inv-pay-h { font-weight: 700; color: var(--cv-ink); margin-bottom: 8px; display: flex; align-items: center; gap: 6px; }
.cv-inv-pay-g { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 16px; }
.cv-inv-pay a { color: var(--cv-blue); font-weight: 600; text-decoration: none; }
.cv-inv-rej { margin-top: 8px; color: var(--cv-bad-ink); display: flex; gap: 6px; align-items: flex-start; }
.cv-inv-act { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--cv-line-2); }
.cv-inv-act .cv-btn { flex: 1; }
.cv-allpaid { display: flex; align-items: center; gap: 14px; padding: 18px 20px; border-radius: var(--cv-r); background: linear-gradient(90deg, #EAF7EF, #F6FBF8); border: 1px solid var(--cv-ok-bd); color: var(--cv-ok-ink); font-weight: 600; font-size: 13.5px; }
.cv-allpaid .si { font-size: 26px; }
.cv-hist { margin-top: 28px; }
.cv-hrows { display: flex; flex-direction: column; gap: 8px; }
.cv-hrow { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) 120px 150px 110px 168px; gap: 14px; align-items: center; padding: 12px 16px 12px 20px; position: relative; overflow: hidden; transition: box-shadow .18s, transform .18s var(--cv-ease); }
.cv-hrow::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 5px; background: var(--r, var(--cv-warn)); }
.cv-hrow:hover { box-shadow: var(--shadow-2); transform: translateY(-1px); }
.cv-hrow-p { font-weight: 700; font-size: 13px; color: var(--cv-ink); font-family: var(--font-display); }
.cv-hrow-p small { display: block; font: 500 11px/1.3 var(--font-body); color: var(--cv-muted); margin-top: 2px; }
.cv-hrow-no { font: 500 12px/1 var(--font-mono); color: var(--cv-ink-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-hrow-amt { font: 700 14px/1 var(--font-display); color: var(--cv-ink); text-align: right; }
.cv-hrow-due { font-size: 12px; color: var(--cv-muted); }
.cv-hrow-due small { display: block; font-size: 10px; text-transform: uppercase; letter-spacing: .6px; color: var(--cv-faint); font-weight: 600; margin-bottom: 2px; }
.cv-hrow-act { display: flex; gap: 6px; justify-content: flex-end; }
.cv-hrows-h { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) 120px 150px 110px 168px; gap: 14px; padding: 0 16px 6px 20px; font: 600 10px/1 var(--font-body); letter-spacing: .9px; text-transform: uppercase; color: var(--cv-faint); }
.cv-hrows-h span:nth-child(3) { text-align: right; }

/* payment modal (DOM-injected) */
.cv-pm { background: #fff; border-radius: 16px; max-width: 470px; width: 100%; max-height: 90vh; overflow-y: auto; box-shadow: var(--shadow-3); animation: cv-pop .3s var(--cv-ease) both; }
.cv-pm-head { display: flex; align-items: flex-start; gap: 14px; padding: 20px 22px; border-bottom: 1px solid var(--cv-line-2); background: linear-gradient(180deg, #F7FAF8, #fff); }
.cv-pm-ico { width: 42px; height: 42px; border-radius: 12px; background: var(--cv-forest); color: #FFB877; display: flex; align-items: center; justify-content: center; flex: none; }
.cv-pm-ico .si { font-size: 21px; }
.cv-pm-t { font: 700 17px/1.25 var(--font-display); color: var(--cv-ink); }
.cv-pm-s { font-size: 12px; color: var(--cv-muted); margin-top: 3px; }

/* ============================================================ MODALS / SLIDE-OVERS */
.cv-overlay { position: fixed; inset: 0; background: rgba(4, 24, 18, .52); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; padding: 20px; animation: cv-fade .2s ease-out both; }
.cv-dialog { background: #fff; border-radius: 18px; width: 100%; max-width: 420px; box-shadow: var(--shadow-3); overflow: hidden; animation: cv-pop .32s var(--cv-ease) both; }
.cv-dialog-h { padding: 26px 26px 6px; text-align: center; }
.cv-medal { width: 58px; height: 58px; margin: 0 auto 14px; border-radius: 18px; display: flex; align-items: center; justify-content: center; position: relative; background: linear-gradient(145deg, var(--cv-forest-2), var(--cv-forest)); color: #FFB877; box-shadow: 0 14px 26px -12px rgba(4, 24, 18, .6); }
.cv-medal::after { content: ""; position: absolute; inset: -7px; border-radius: 22px; border: 1px dashed #CFDCD6; }
.cv-medal .si { font-size: 26px; }
.cv-medal--danger { background: linear-gradient(145deg, #E25555, #B91C1C); color: #fff; box-shadow: 0 14px 26px -12px rgba(185, 28, 28, .6); }
.cv-medal--danger::after { border-color: #F3C4C4; }
.cv-dialog-t { font: 700 17px/1.3 var(--font-display); color: var(--cv-ink); }
.cv-dialog-s { font-size: 13px; color: var(--cv-muted); margin-top: 6px; line-height: 1.5; }
.cv-dialog-s b { color: var(--cv-ink-2); }
.cv-dialog-b { padding: 16px 26px 24px; }
.cv-dialog-f { display: flex; gap: 10px; margin-top: 20px; }
.cv-dialog-f .cv-btn { flex: 1; padding: 11px 16px; font-size: 13px; }
.cv-err { margin-top: 8px; font-size: 12px; color: var(--cv-bad-ink); font-weight: 500; display: flex; align-items: center; gap: 6px; }
.cv-btn .cv-spin-w { width: 14px; height: 14px; border: 2px solid rgba(255, 255, 255, .3); border-top-color: #fff; border-radius: 50%; animation: cv-spin .6s linear infinite; }

/* Filing modal */
.cv-fm { background: #fff; border-radius: 18px; width: 600px; max-width: 100%; max-height: 88vh; overflow: auto; box-shadow: var(--shadow-3); animation: cv-pop .32s var(--cv-ease) both; }
.cv-fm-status { display: flex; align-items: center; gap: 10px; padding: 10px 22px; font: 700 11.5px/1 var(--font-body); letter-spacing: 1.2px; text-transform: uppercase; color: var(--si, #9A5B00); background: var(--sb, #FFF3D6); border-bottom: 1px solid var(--sbd, #F5D79A); }
.cv-fm-status .si { font-size: 17px; }
.cv-fm-status span { margin-left: auto; font: 500 11.5px/1 var(--font-body); letter-spacing: 0; text-transform: none; opacity: .9; }
.cv-fm-head { position: relative; padding: 22px 24px 18px; display: flex; gap: 16px; align-items: flex-start; color: #fff; background: radial-gradient(320px 200px at 100% 0%, rgba(255, 154, 61, .25), transparent 70%), linear-gradient(150deg, var(--cv-forest-2), var(--cv-forest)); }
.cv-fm-code { width: 56px; height: 56px; border-radius: 14px; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .18); display: flex; align-items: center; justify-content: center; font: 700 12px/1 var(--font-mono); color: #FFB877; flex: none; text-align: center; word-break: break-all; padding: 4px; }
.cv-fm-title { font: 700 20px/1.2 var(--font-display); letter-spacing: -.02em; }
.cv-fm-sub { font-size: 12.5px; color: rgba(255, 255, 255, .72); margin-top: 6px; }
.cv-x { border: 0; background: rgba(255, 255, 255, .12); color: #fff; width: 34px; height: 34px; border-radius: 10px; cursor: pointer; font-size: 18px; flex: none; display: flex; align-items: center; justify-content: center; transition: background .15s, transform .2s; }
.cv-x:hover { background: rgba(255, 255, 255, .22); transform: rotate(90deg); }
.cv-x--dark { background: #F1F5F3; color: var(--cv-ink); }
.cv-x--dark:hover { background: #E4ECE8; }
.cv-fm-facts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-bottom: 1px solid var(--cv-line-2); }
.cv-fm-fact { padding: 14px 16px; border-right: 1px solid var(--cv-line-2); min-width: 0; }
.cv-fm-fact:last-child { border-right: 0; }
.cv-fm-fact small { display: flex; align-items: center; gap: 5px; font: 600 10px/1 var(--font-body); letter-spacing: .9px; text-transform: uppercase; color: var(--cv-faint); }
.cv-fm-fact small .si { font-size: 13px; color: var(--cv-saffron); }
.cv-fm-fact div { font-size: 13px; font-weight: 600; color: var(--cv-ink); margin-top: 7px; overflow-wrap: anywhere; }
.cv-fm-body { padding: 20px 24px 22px; }
.cv-fm-sec { font: 700 11px/1 var(--font-body); letter-spacing: 1.2px; text-transform: uppercase; color: var(--cv-faint); margin: 0 0 10px; display: flex; align-items: center; justify-content: space-between; }
.cv-docchips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }
.cv-docchip { display: inline-flex; align-items: center; gap: 8px; max-width: 100%; padding: 7px 12px 7px 7px; border-radius: 999px; border: 1px solid var(--cv-line); background: #fff; font-size: 12px; font-weight: 600; color: var(--cv-ink); cursor: pointer; text-decoration: none; transition: border-color .15s, background .15s, transform .15s; }
.cv-docchip:hover { border-color: var(--cv-saffron); background: var(--cv-saffron-50); transform: translateY(-1px); }
.cv-docchip i.si { width: 24px; height: 24px; border-radius: 50%; background: var(--fb, #FDECEC); color: var(--fc, #D64545); display: inline-flex; align-items: center; justify-content: center; font-size: 13px; }
.cv-docchip span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cv-docchip--none { cursor: default; color: var(--cv-faint); border-style: dashed; font-weight: 500; }
.cv-docchip--none:hover { transform: none; background: #fff; border-color: var(--cv-line); }
.cv-hist-tl { position: relative; padding-left: 22px; margin-bottom: 20px; }
.cv-hist-tl::before { content: ""; position: absolute; left: 6px; top: 6px; bottom: 6px; width: 2px; background: var(--cv-line); }
.cv-hist-i { position: relative; padding: 0 0 14px; }
.cv-hist-i::before { content: ""; position: absolute; left: -21px; top: 4px; width: 10px; height: 10px; border-radius: 50%; background: var(--cv-ok); box-shadow: 0 0 0 3px #fff, 0 0 0 4px var(--cv-ok-bd); }
.cv-hist-i-t { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; font-weight: 600; color: var(--cv-ink); flex-wrap: wrap; }
.cv-hist-i-t span { font-weight: 600; font-size: 11.5px; color: var(--cv-ok-ink); }
.cv-hist-i-n { font-size: 12px; color: #4F5B57; margin-top: 4px; }
.cv-hist-i .cv-docchip { margin-top: 8px; }
.cv-hist-empty { font-size: 12.5px; color: var(--cv-muted); padding: 14px 16px; border: 1px dashed var(--cv-line); border-radius: 12px; text-align: center; margin-bottom: 20px; }
.cv-fm-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.cv-fm-actions .cv-btn { padding: 12px 16px; font-size: 13px; }
.cv-fm-actions .cv-btn--grow { flex: 1; min-width: 190px; }

/* Law slide-over (extends .lawpanel from base CSS) */
.lawpanel.cv-lp { width: 520px; }
.lawpanel.cv-lp .lawpanel-header { position: relative; overflow: hidden; background: radial-gradient(360px 220px at 100% 0%, rgba(255, 154, 61, .28), transparent 70%), linear-gradient(155deg, var(--cv-forest-2), var(--cv-forest) 65%, #062A20); padding: 22px 24px 20px; }
.lawpanel.cv-lp .lawpanel-header::after { content: ""; position: absolute; inset: 0; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='44'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='.05'%3E%3Cpath d='M22 0 44 22 22 44 0 22Z'/%3E%3C/g%3E%3C/svg%3E"); pointer-events: none; }
.lawpanel.cv-lp .lawpanel-header > * { position: relative; z-index: 1; }
.cv-lp-k { font: 600 10.5px/1 var(--font-body); letter-spacing: 1.6px; text-transform: uppercase; color: #FFB877; display: flex; align-items: center; gap: 8px; }
.cv-lp-k .cv-lp-code { font: 600 11px/1 var(--font-mono); letter-spacing: .3px; color: #fff; background: rgba(255, 255, 255, .14); padding: 4px 8px; border-radius: 6px; text-transform: none; }
.cv-lp-t { font: 700 20px/1.25 var(--font-display); letter-spacing: -.02em; margin-top: 10px; }
.cv-lp-d { font-size: 12.5px; color: rgba(255, 255, 255, .72); margin-top: 6px; display: flex; align-items: center; gap: 6px; }
.cv-lp-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; margin-top: 18px; border-radius: 12px; overflow: hidden; background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .12); }
.cv-lp-stat { padding: 10px 12px; border-right: 1px solid rgba(255, 255, 255, .1); }
.cv-lp-stat:last-child { border-right: 0; }
.cv-lp-stat b { display: block; font: 700 18px/1 var(--font-display); }
.cv-lp-stat span { display: flex; align-items: center; gap: 5px; font-size: 10.5px; color: rgba(255, 255, 255, .7); margin-top: 5px; font-weight: 600; }
.cv-lp-stat span i { width: 6px; height: 6px; border-radius: 50%; display: inline-block; background: var(--k); }
.cv-lp-prog { display: flex; height: 5px; border-radius: 4px; overflow: hidden; margin-top: 12px; background: rgba(255, 255, 255, .12); gap: 2px; }
.cv-lp-prog i { display: block; height: 100%; }
.lawpanel.cv-lp .lawpanel-body { background: #F7FAF8; padding: 18px 20px 28px; }
.cv-steps { position: relative; }
.cv-step { position: relative; display: flex; gap: 14px; padding-bottom: 12px; }
.cv-step::before { content: ""; position: absolute; left: 15px; top: 34px; bottom: 0; width: 2px; background: var(--cv-line); }
.cv-step:last-child::before { display: none; }
.cv-step-n { width: 32px; height: 32px; border-radius: 50%; flex: none; display: flex; align-items: center; justify-content: center; font: 700 12px/1 var(--font-display); background: #fff; color: var(--t, var(--cv-warn-ink)); border: 2px solid var(--t, var(--cv-warn)); position: relative; z-index: 1; }
.cv-step-n .si { font-size: 15px; }
.cv-step-c { flex: 1; min-width: 0; background: #fff; border: 1px solid var(--cv-line); border-radius: 12px; padding: 12px 14px; transition: box-shadow .18s, transform .18s var(--cv-ease), border-color .15s; }
.cv-step.is-link .cv-step-c { cursor: pointer; }
.cv-step.is-link:hover .cv-step-c { box-shadow: var(--shadow-1); transform: translateX(2px); border-color: #D3DCD8; }
.cv-step-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.cv-step-t { font-size: 13.5px; font-weight: 600; color: var(--cv-ink); line-height: 1.3; }
.cv-step-s { font-size: 11.5px; color: var(--cv-muted); margin-top: 3px; }
.cv-step-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.cv-step-meta span { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: #4F5B57; background: #F1F5F3; padding: 4px 8px; border-radius: 6px; font-weight: 500; }
.cv-step-meta span .si { font-size: 12px; color: var(--cv-faint); }
.cv-step-go { display: flex; align-items: center; justify-content: flex-end; gap: 4px; font-size: 11.5px; font-weight: 600; color: var(--cv-blue); margin-top: 8px; }
.cv-lp-sec { font: 700 10.5px/1 var(--font-body); letter-spacing: 1.3px; text-transform: uppercase; color: var(--cv-faint); margin: 2px 0 14px; display: flex; align-items: center; gap: 8px; }
.cv-lp-sec::after { content: ""; flex: 1; height: 1px; background: var(--cv-line); }

/* generic slide-over header (drawer / company data / office) */
.cv-soh { display: flex; align-items: flex-start; gap: 14px; }
.cv-soh-ico { width: 44px; height: 44px; border-radius: 12px; background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .18); color: #FFB877; display: flex; align-items: center; justify-content: center; flex: none; }
.cv-soh-ico .si { font-size: 21px; }
.cv-soh-main { flex: 1; min-width: 0; }
.cv-soh-k { font: 600 10.5px/1 var(--font-body); letter-spacing: 1.5px; text-transform: uppercase; color: #FFB877; }
.cv-soh-t { font: 700 19px/1.25 var(--font-display); margin-top: 7px; overflow: hidden; text-overflow: ellipsis; letter-spacing: -.01em; }
.cv-soh-s { font-size: 12.5px; color: rgba(255, 255, 255, .72); margin-top: 5px; }
.lawpanel.cv-so .lawpanel-header { background: radial-gradient(360px 220px at 100% 0%, rgba(255, 154, 61, .24), transparent 70%), linear-gradient(155deg, var(--cv-forest-2), var(--cv-forest) 65%, #062A20); }

/* group modal */
.cv-gm { background: #fff; border-radius: 18px; width: 540px; max-width: 100%; max-height: 88vh; overflow: auto; box-shadow: var(--shadow-3); animation: cv-pop .32s var(--cv-ease) both; }
.cv-gm-row { display: flex; align-items: center; gap: 12px; padding: 12px 20px; border-top: 1px solid var(--cv-line-2); cursor: pointer; transition: background .15s; border-left: 4px solid var(--t, var(--cv-warn)); }
.cv-gm-row:hover { background: var(--cv-soft); }

/* toast */
.cv-toast { position: fixed; bottom: 26px; left: 50%; transform: translateX(-50%); z-index: 80; display: flex; align-items: center; gap: 10px; background: var(--cv-forest); color: #fff; padding: 12px 18px 12px 14px; border-radius: 12px; font-size: 13px; font-weight: 500; box-shadow: 0 16px 34px -10px rgba(0, 0, 0, .4); border-left: 4px solid var(--cv-saffron); animation: cv-toast .35s var(--cv-ease) both; max-width: calc(100vw - 32px); }
.cv-toast .si { color: #FFB877; font-size: 17px; }
@keyframes cv-toast { from { opacity: 0; transform: translate(-50%, 14px); } to { opacity: 1; transform: translate(-50%, 0); } }

/* ============================================================ BRANDED ERROR */
.cv-err-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; background: radial-gradient(900px 500px at 100% 0%, rgba(235, 122, 28, .08), transparent 60%), radial-gradient(800px 500px at 0% 100%, rgba(19, 128, 63, .08), transparent 60%), #F4F7F6; }
.cv-err-card { width: 100%; max-width: 460px; background: #fff; border: 1px solid var(--sd-border, #DCE3E0); border-radius: 20px; overflow: hidden; box-shadow: var(--shadow-2); text-align: center; animation: cv-pop .4s var(--cv-ease) both; }
.cv-err-band { height: 5px; background: var(--sd-tricolour, linear-gradient(90deg, #FF9933, #F4F4F0, #138808)); }
.cv-err-brand { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 22px 0 0; font: 700 13px/1 var(--font-display); letter-spacing: 1.8px; color: var(--cv-ink); }
.cv-err-in { padding: 18px 34px 32px; }
.cv-err-code { display: inline-block; font: 600 11px/1 var(--font-mono); color: var(--cv-bad-ink); background: var(--cv-bad-bg); padding: 5px 9px; border-radius: 6px; margin-bottom: 12px; }

/* ============================================================ RESPONSIVE */
@media (max-width: 1180px) {
  .cv-month { grid-template-columns: 1fr; }
  .cv-agenda { position: static; }
  .cv-agenda-body { max-height: none; }
  .cv-hrow, .cv-hrows-h { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) 110px 130px 168px; }
  .cv-hrow-due, .cv-hrows-h span:nth-child(5) { display: none; }
}
@media (max-width: 900px) {
  .cv-fyp { grid-template-columns: 1fr; }
  .cv-fyp-art { padding: 26px 22px; }
  .cv-heat { grid-template-columns: repeat(6, minmax(0, 1fr)); row-gap: 12px; }
  .cv-vault { flex-direction: column; }
  .cv-vault-tree { width: auto; border-right: 0; border-bottom: 1px solid var(--cv-line); }
  .cv-vault-tree-b { max-height: 240px; }
  .cv-bband { grid-template-columns: 1fr; }
  .cv-invs { grid-template-columns: 1fr; }
  .cv-sheet-grid { grid-template-columns: 1fr; }
  .cv-fm-facts { grid-template-columns: 1fr 1fr; }
  .cv-fm-fact:nth-child(2) { border-right: 0; }
  .cv-fm-fact:nth-child(-n+2) { border-bottom: 1px solid var(--cv-line-2); }
}
@media (max-width: 640px) {
  .cv-title { font-size: 22px; }
  .cv-head--slim { justify-content: flex-start; }
  .cv-kpis { grid-template-columns: 1fr 1fr; }
  .cv-kpi:nth-child(2) { border-right: 0; }
  .cv-kpi:nth-child(-n+2) { border-bottom: 1px solid var(--cv-line-2); }
  .cv-heat { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .cv-fyp-form { padding: 24px 20px; }
  .cv-fyp-fields { grid-template-columns: 1fr; }
  .cv-fyp-go { align-self: stretch; }
  .cv-cal-bar { padding: 10px; }
  .cv-cal-bar-l { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
  .cv-cal-bar-l .cv-select { width: 100%; min-width: 0; }
  .cv-cal-bar-l .cv-vsep { display: none; }
  .cv-cal-nav { grid-column: 1 / -1; }
  .cv-cal-bar-r { width: 100%; justify-content: space-between; flex-wrap: nowrap; }
  .cv-cal-bar-r .cv-seg-btn .si { display: none; }
  .cv-heat-top .cv-count { display: none; }
  .cv-cell { min-height: 58px; padding: 5px 4px; align-items: center; }
  .cv-cell-top { flex-direction: column; gap: 4px; }
  .cv-cell-n { width: 24px; height: 24px; font-size: 12px; }
  .cv-cell .cv-tag, .cv-cell-more { display: none; }
  .cv-grid-dn { font-size: 9.5px; letter-spacing: .4px; }
  .cv-week { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
  .cv-wday { padding: 9px 2px 8px; border-radius: 10px; }
  .cv-wday-n { font-size: 17px; margin: 6px 0 2px; }
  .cv-wday-m { display: none; }
  .cv-wday-dn { font-size: 9px; letter-spacing: .3px; }
  .cv-tl-body { padding: 6px 12px 12px; }
  .cv-tl-day { grid-template-columns: 44px minmax(0, 1fr); gap: 8px; }
  .cv-tl-date b { font-size: 18px; }
  .cv-tl-items { padding-left: 14px; }
  .cv-tl-item { flex-wrap: wrap; padding: 10px 12px; gap: 8px; }
  .cv-tl-side { width: 100%; justify-content: flex-start; }
  .cv-tl-side .cv-chev { margin-left: auto; }
  .cv-dayhead { padding: 14px; gap: 14px; }
  .cv-dayhead-tile { width: 62px; height: 68px; }
  .cv-dayhead-tile b { font-size: 26px; }
  .cv-vault-bar { padding: 10px 12px; }
  .cv-vault-body { padding: 14px; }
  .cv-tiles { --tw: 140px !important; }
  .cv-table-h { display: none; }
  .cv-table-r { grid-template-columns: 34px minmax(0, 1fr) auto; }
  .cv-table-r > :nth-child(3), .cv-table-r > :nth-child(4), .cv-table-r > :nth-child(5) { display: none; }
  .cv-sres { grid-template-columns: 1fr; }
  .cv-audit-filters .cv-seg { max-width: 100%; overflow-x: auto; scrollbar-width: none; }
  .cv-audit-filters .cv-seg-btn { padding: 6px 9px; }
  .cv-at-list { margin-left: 16px; padding-left: 26px; }
  .cv-at-node { left: -43px; width: 32px; height: 32px; }
  .cv-at-top { flex-direction: column; gap: 6px; }
  .cv-at-day-h { top: 64px; }
  .cv-bband-amt { font-size: 30px; }
  .cv-sbar-legend b { font-size: 14px; }
  .cv-inv { padding: 18px 16px 14px; }
  .cv-inv-grid { grid-template-columns: 1fr 1fr; }
  .cv-inv-pay-g { grid-template-columns: 1fr; }
  .cv-hrows-h { display: none; }
  .cv-hrow { grid-template-columns: minmax(0, 1fr) auto; gap: 8px 12px; padding: 14px 14px 14px 18px; }
  .cv-hrow-no { grid-column: 1; }
  .cv-hrow-amt { grid-row: 1; grid-column: 2; }
  .cv-hrow-due { display: block; }
  .cv-hrow-act { grid-column: 1 / -1; justify-content: flex-start; }
  .cv-fm { border-radius: 20px 20px 0 0 !important; }
  .cv-fm-head { padding: 18px 18px 16px; gap: 12px; }
  .cv-fm-code { width: 46px; height: 46px; font-size: 10.5px; }
  .cv-fm-title { font-size: 17px; }
  .cv-fm-body { padding: 16px 18px 20px; }
  .cv-fm-status { padding: 9px 18px; }
  .lawpanel.cv-lp { width: 100%; }
  .cv-lp-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cv-lp-stat:nth-child(2) { border-right: 0; }
  .cv-lp-stat:nth-child(-n+2) { border-bottom: 1px solid rgba(255, 255, 255, .1); }
  .cv-dialog-f { flex-direction: column-reverse; }
}
@media (prefers-reduced-motion: reduce) {
  .cv-view, .cv-sheet, .cv-dialog, .cv-fm, .cv-gm, .cv-at-item, .cv-empty-art .cv-ea-sat, .cv-toast, .cv-pm, .cv-err-card { animation: none !important; }
  .cv-tile, .cv-tl-item, .cv-heat-cell, .cv-wday, .cv-scard, .cv-hrow, .cv-step-c { transition: none !important; }
}

/* law-panel step rows keep the legacy .lawpanel-form-row hook; neutralise its hover box */
.cv-step.lawpanel-form-row, .cv-step.lawpanel-form-row:hover { background: transparent !important; border-color: transparent !important; }
@media (max-width: 900px) {
  .modal-detail-grid.cv-fm-facts { grid-template-columns: 1fr 1fr !important; }
}
