/* Reusable component foundations. Safe to adapt into the existing index.html. */
.cn-card{background:var(--cn-surface);border:1px solid var(--cn-line);border-radius:var(--cn-radius-card);box-shadow:var(--cn-shadow-sm)}
.cn-button{min-height:42px;padding:0 16px;border-radius:12px;border:1px solid transparent;font:700 14px/1 var(--cn-font);cursor:pointer;transition:.18s ease}
.cn-button--primary{background:var(--cn-gradient-primary);color:#fff;box-shadow:0 8px 20px rgba(37,99,235,.20)}
.cn-button--secondary{background:#fff;border-color:var(--cn-line);color:var(--cn-navy-900)}
.cn-button--ghost{background:transparent;color:var(--cn-blue-600)}
.cn-input{min-height:44px;width:100%;padding:10px 13px;border:1px solid #D6E1ED;border-radius:12px;background:#FBFDFF;color:var(--cn-text);outline:none}
.cn-input:focus{background:#fff;border-color:#82AEF1;box-shadow:0 0 0 4px rgba(37,99,235,.075)}
.cn-badge{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:0 10px;border-radius:999px;font:700 12px/1 var(--cn-font)}
.cn-badge--success{background:#E9F9F2;color:#087A57}.cn-badge--warn{background:#FFF4DD;color:#9A6300}.cn-badge--danger{background:#FFF0F0;color:#B42318}.cn-badge--info{background:#ECF3FF;color:#245CB7}
.cn-sidebar{background:linear-gradient(180deg,#0B2447,#06172E);color:#D9E7F4}.cn-sidebar__item{border-radius:12px}.cn-sidebar__item.is-active{background:linear-gradient(135deg,#1E5BE3,#2578F0);color:#fff}
.cn-hero{position:relative;overflow:hidden;border-radius:20px;background:#F7FBFF;border:1px solid #D7E5EF}
.cn-progress{height:8px;border-radius:999px;background:#E4ECF5;overflow:hidden}.cn-progress>i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2563EB,#14B8A6)}

/* v4 additions for app v2.4 */
.cn-kpi{padding:18px;border:1px solid var(--cn-line);border-radius:16px;background:#fff}.cn-kpi__value{font:750 30px/1 var(--cn-font);color:var(--cn-navy-900)}.cn-kpi__label{margin-top:7px;color:var(--cn-muted);font:600 12px/1.4 var(--cn-font)}
.cn-deadline{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;padding:14px;border:1px solid var(--cn-line);border-radius:14px;background:#fff}.cn-deadline[data-state="OVERDUE"]{border-left:4px solid var(--cn-danger)}.cn-deadline[data-state="TODAY"]{border-left:4px solid var(--cn-warning)}.cn-deadline[data-state="SOON"]{border-left:4px solid var(--cn-info)}
.cn-notification{display:grid;grid-template-columns:10px 1fr auto;gap:12px;padding:15px 0;border-bottom:1px solid var(--cn-line)}.cn-notification__dot{width:9px;height:9px;border-radius:50%;background:var(--cn-info);margin-top:6px}.cn-notification[data-priority="CRITICAL"] .cn-notification__dot{background:var(--cn-danger)}.cn-notification[data-priority="IMPORTANT"] .cn-notification__dot{background:var(--cn-warning)}
.cn-timeline{display:grid;gap:0}.cn-timeline__step{position:relative;padding:0 0 24px 36px}.cn-timeline__step:before{content:"";position:absolute;left:11px;top:20px;bottom:0;width:2px;background:#DCE6F0}.cn-timeline__step:last-child:before{display:none}.cn-timeline__dot{position:absolute;left:0;top:0;width:24px;height:24px;border-radius:50%;border:2px solid #BFD0E3;background:#fff}.cn-timeline__step.is-done .cn-timeline__dot{background:var(--cn-teal-500);border-color:var(--cn-teal-500)}.cn-timeline__step.is-current .cn-timeline__dot{background:var(--cn-blue-600);border-color:var(--cn-blue-600);box-shadow:0 0 0 5px rgba(37,99,235,.12)}
.cn-file-card{display:grid;grid-template-columns:auto 1fr auto;gap:12px;padding:14px;border:1px solid var(--cn-line);border-radius:14px;background:var(--cn-surface-2)}.cn-file-card__hash{font:500 10px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--cn-muted);overflow-wrap:anywhere}
.cn-audit-status{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:999px;font:700 11px/1 var(--cn-font);background:#ECF3FF;color:#245CB7}.cn-audit-status[data-status="VERIFIED_WITH_CONDITIONS"]{background:#E9F9F2;color:#087A57}.cn-audit-status[data-status="SUBJECT_CHECK_REQUIRED"],.cn-audit-status[data-status="PROCEDURE_CHECK_REQUIRED"]{background:#FFF4DD;color:#9A6300}.cn-audit-status[data-status="SPECIAL_LAW_CHECK_REQUIRED"],.cn-audit-status[data-status="SPECIAL_SUBJECT_REQUIRED"]{background:#F2ECFF;color:#6D3FD4}.cn-audit-status[data-status="SPECIAL_PROCEDURE_PRIMARY"]{background:#E6FAF7;color:#0B8175}
.cn-storage-status{display:flex;gap:10px;align-items:center;padding:12px 14px;border-radius:13px;border:1px solid var(--cn-line);background:#fff}.cn-storage-status.is-ok{border-color:#BFE9D8;background:#F0FBF6}.cn-storage-status.is-warn{border-color:#F0D9A0;background:#FFF9E9}
