/**
 * NIS2 Reports - Professional Report Styling
 * Print-friendly styles for Executive, Technical, and CNCS reports
 *
 * @version 1.0.0
 * @created 2025-10-31
 */

/* ============================================
   ROOT VARIABLES
   ============================================ */
:root {
    /* NIS2 Brand Colors */
    --nis2-primary: #667eea;
    --nis2-secondary: #764ba2;
    --nis2-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);

    /* Severity Colors */
    --color-critical: #dc2626;
    --color-high: #ea580c;
    --color-medium: #f59e0b;
    --color-low: #10b981;

    /* Maturity Colors */
    --maturity-immature: #dc2626;
    --maturity-basic: #f59e0b;
    --maturity-intermediate: #3b82f6;
    --maturity-advanced: #10b981;
    --maturity-optimized: #059669;

    /* Status Colors */
    --status-compliant: #10b981;
    --status-partial: #f59e0b;
    --status-noncompliant: #dc2626;

    /* Neutral Colors */
    --color-bg: #ffffff;
    --color-text: #1f2937;
    --color-text-light: #6b7280;
    --color-border: #e5e7eb;
    --color-bg-light: #f9fafb;

    /* Typography */
    --font-sans: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    --font-mono: 'Courier New', Courier, monospace;

    /* Spacing */
    --space-xs: 0.25rem;
    --space-sm: 0.5rem;
    --space-md: 1rem;
    --space-lg: 1.5rem;
    --space-xl: 2rem;
    --space-2xl: 3rem;

    /* Borders */
    --border-radius: 8px;
    --border-radius-lg: 12px;
    --border-width: 1px;

    /* Shadows */
    --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}

/* ============================================
   GLOBAL STYLES
   ============================================ */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: var(--font-sans);
    font-size: 11pt;
    line-height: 1.6;
    color: var(--color-text);
    background: var(--color-bg);
}

.report-container {
    max-width: 210mm; /* A4 width */
    margin: 0 auto;
    padding: var(--space-xl);
    background: var(--color-bg);
}

/* ============================================
   TYPOGRAPHY
   ============================================ */
h1, h2, h3, h4, h5, h6 {
    font-weight: 600;
    line-height: 1.2;
    margin-bottom: var(--space-md);
    color: var(--color-text);
}

h1 { font-size: 28pt; }
h2 { font-size: 20pt; }
h3 { font-size: 16pt; }
h4 { font-size: 14pt; }
h5 { font-size: 12pt; }
h6 { font-size: 11pt; }

p {
    margin-bottom: var(--space-md);
}

a {
    color: var(--nis2-primary);
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
}

strong {
    font-weight: 600;
}

/* ============================================
   REPORT HEADER
   ============================================ */
.report-header {
    margin-bottom: var(--space-2xl);
    padding-bottom: var(--space-xl);
    border-bottom: 3px solid var(--nis2-primary);
}

.report-logo h1 {
    background: var(--nis2-gradient);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    font-size: 24pt;
    font-weight: 700;
    margin-bottom: var(--space-sm);
}

.report-title-block {
    margin: var(--space-lg) 0;
}

.report-title {
    font-size: 28pt;
    color: var(--color-text);
    margin-bottom: var(--space-sm);
}

.report-subtitle {
    font-size: 18pt;
    color: var(--color-text-light);
    font-weight: 400;
}

.report-metadata {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--space-md);
    margin-top: var(--space-lg);
}

.metadata-item {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
}

.metadata-label {
    font-size: 9pt;
    color: var(--color-text-light);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.metadata-value {
    font-size: 11pt;
    color: var(--color-text);
    font-weight: 500;
}

/* ============================================
   REPORT SECTIONS
   ============================================ */
.report-section {
    margin-bottom: var(--space-2xl);
    page-break-inside: avoid;
}

.section-title {
    font-size: 20pt;
    color: var(--nis2-primary);
    margin-bottom: var(--space-lg);
    padding-bottom: var(--space-sm);
    border-bottom: 2px solid var(--color-border);
}

.section-intro {
    font-size: 11pt;
    color: var(--color-text-light);
    margin-bottom: var(--space-lg);
    line-height: 1.6;
}

/* ============================================
   EXECUTIVE REPORT - SCORE DISPLAY
   ============================================ */
.executive-score-card {
    background: var(--color-bg-light);
    border: var(--border-width) solid var(--color-border);
    border-radius: var(--border-radius-lg);
    padding: var(--space-xl);
    margin-bottom: var(--space-xl);
}

.score-display-large {
    display: flex;
    align-items: center;
    gap: var(--space-xl);
    margin-bottom: var(--space-xl);
    padding-bottom: var(--space-xl);
    border-bottom: var(--border-width) solid var(--color-border);
}

.score-circle {
    position: relative;
    width: 200px;
    height: 200px;
    flex-shrink: 0;
}

.score-svg {
    transform: rotate(-90deg);
}

.score-bg {
    fill: none;
    stroke: var(--color-border);
    stroke-width: 10;
}

.score-bar {
    fill: none;
    stroke: url(#progressGradient);
    stroke-width: 10;
    stroke-linecap: round;
    transition: stroke-dasharray 1s ease-in-out;
}

.score-value {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 48pt;
    font-weight: 700;
    color: var(--nis2-primary);
}

.score-info h3 {
    font-size: 24pt;
    margin-bottom: var(--space-sm);
}

.maturity-description {
    font-size: 11pt;
    color: var(--color-text-light);
}

/* Maturity Level Colors */
.maturity-immature { color: var(--maturity-immature); }
.maturity-basic { color: var(--maturity-basic); }
.maturity-intermediate { color: var(--maturity-intermediate); }
.maturity-advanced { color: var(--maturity-advanced); }
.maturity-optimized { color: var(--maturity-optimized); }

/* Executive Stats Grid */
.executive-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--space-md);
}

.stat-box {
    text-align: center;
    padding: var(--space-lg);
    border-radius: var(--border-radius);
    border: 2px solid;
}

.stat-box.success {
    background: rgba(16, 185, 129, 0.1);
    border-color: var(--status-compliant);
}

.stat-box.warning {
    background: rgba(245, 158, 11, 0.1);
    border-color: var(--status-partial);
}

.stat-box.danger {
    background: rgba(220, 38, 38, 0.1);
    border-color: var(--status-noncompliant);
}

.stat-box.info {
    background: rgba(59, 130, 246, 0.1);
    border-color: var(--nis2-primary);
}

.stat-number {
    display: block;
    font-size: 32pt;
    font-weight: 700;
    margin-bottom: var(--space-xs);
}

.stat-label {
    display: block;
    font-size: 10pt;
    font-weight: 600;
    margin-bottom: var(--space-xs);
}

.stat-sublabel {
    display: block;
    font-size: 9pt;
    color: var(--color-text-light);
}

/* ============================================
   KEY FINDINGS
   ============================================ */
.findings-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: var(--space-lg);
}

.finding-card {
    border: 2px solid;
    border-radius: var(--border-radius);
    padding: var(--space-lg);
}

.finding-card.strengths {
    background: rgba(16, 185, 129, 0.05);
    border-color: var(--status-compliant);
}

.finding-card.gaps {
    background: rgba(220, 38, 38, 0.05);
    border-color: var(--status-noncompliant);
}

.finding-card h3 {
    font-size: 14pt;
    margin-bottom: var(--space-md);
    display: flex;
    align-items: center;
    gap: var(--space-sm);
}

.findings-list {
    list-style: none;
}

.findings-list li {
    padding: var(--space-sm) 0;
    border-bottom: var(--border-width) solid var(--color-border);
    display: flex;
    justify-content: space-between;
    align-items: start;
}

.findings-list li:last-child {
    border-bottom: none;
}

.finding-score {
    font-size: 10pt;
    font-weight: 600;
    padding: var(--space-xs) var(--space-sm);
    border-radius: 4px;
    background: var(--color-bg-light);
    white-space: nowrap;
}

.finding-score.severity-CRÍTICA {
    background: var(--color-critical);
    color: white;
}

.finding-score.severity-ALTA {
    background: var(--color-high);
    color: white;
}

/* ============================================
   RISK SUMMARY
   ============================================ */
.risk-summary {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-xl);
    align-items: start;
}

.risk-matrix-mini {
    padding: var(--space-md);
    background: var(--color-bg-light);
    border-radius: var(--border-radius);
}

.risk-breakdown h4 {
    margin-bottom: var(--space-md);
}

.risk-levels {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-md);
    margin-bottom: var(--space-lg);
}

.risk-level {
    text-align: center;
    padding: var(--space-md);
    border-radius: var(--border-radius);
    border: 2px solid;
}

.risk-level.critical {
    background: rgba(220, 38, 38, 0.1);
    border-color: var(--color-critical);
}

.risk-level.high {
    background: rgba(234, 88, 12, 0.1);
    border-color: var(--color-high);
}

.risk-level.medium {
    background: rgba(245, 158, 11, 0.1);
    border-color: var(--color-medium);
}

.risk-level.low {
    background: rgba(16, 185, 129, 0.1);
    border-color: var(--color-low);
}

.risk-count {
    display: block;
    font-size: 24pt;
    font-weight: 700;
    margin-bottom: var(--space-xs);
}

.risk-label {
    display: block;
    font-size: 10pt;
    font-weight: 600;
}

.risk-description {
    padding: var(--space-md);
    background: var(--color-bg-light);
    border-radius: var(--border-radius);
    font-size: 10pt;
    line-height: 1.6;
}

/* ============================================
   RECOMMENDATIONS
   ============================================ */
.recommendations-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
}

.recommendation-card {
    border: 2px solid var(--color-border);
    border-radius: var(--border-radius);
    overflow: hidden;
}

.recommendation-card.priority-crítica {
    border-color: var(--color-critical);
}

.recommendation-card.priority-alta {
    border-color: var(--color-high);
}

.recommendation-card.priority-média {
    border-color: var(--color-medium);
}

.rec-header {
    display: flex;
    align-items: center;
    gap: var(--space-md);
    padding: var(--space-md);
    background: var(--color-bg-light);
    border-bottom: var(--border-width) solid var(--color-border);
}

.rec-number {
    font-size: 18pt;
    font-weight: 700;
    color: var(--nis2-primary);
    min-width: 40px;
    text-align: center;
}

.rec-header h4 {
    flex: 1;
    margin-bottom: 0;
}

.priority-badge {
    padding: var(--space-xs) var(--space-sm);
    border-radius: 4px;
    font-size: 9pt;
    font-weight: 600;
    text-transform: uppercase;
    color: white;
}

.priority-badge.crítica {
    background: var(--color-critical);
}

.priority-badge.alta {
    background: var(--color-high);
}

.priority-badge.média {
    background: var(--color-medium);
}

.priority-badge.baixa {
    background: var(--color-low);
}

.rec-body {
    padding: var(--space-lg);
}

.rec-detail {
    margin-bottom: var(--space-sm);
    font-size: 10pt;
}

.rec-actions {
    margin-top: var(--space-md);
}

.rec-actions ol {
    margin-left: var(--space-lg);
    margin-top: var(--space-sm);
}

.rec-actions li {
    margin-bottom: var(--space-xs);
}

/* ============================================
   DOMAIN OVERVIEW
   ============================================ */
.domain-radar {
    margin-bottom: var(--space-xl);
    padding: var(--space-lg);
    background: var(--color-bg-light);
    border-radius: var(--border-radius);
    text-align: center;
}

.domain-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: var(--space-md);
}

.domain-table thead {
    background: var(--nis2-gradient);
    color: white;
}

.domain-table th,
.domain-table td {
    padding: var(--space-sm) var(--space-md);
    text-align: left;
    border-bottom: var(--border-width) solid var(--color-border);
}

.domain-table th {
    font-weight: 600;
    font-size: 10pt;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.domain-table tbody tr:hover {
    background: var(--color-bg-light);
}

.domain-row.critical-domain {
    background: rgba(220, 38, 38, 0.05);
}

.critical-badge {
    display: inline-block;
    margin-left: var(--space-sm);
    padding: 2px 6px;
    background: var(--color-critical);
    color: white;
    font-size: 8pt;
    font-weight: 600;
    border-radius: 3px;
    text-transform: uppercase;
}

.domain-score {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
}

.score-bar-mini {
    width: 60px;
    height: 8px;
    background: var(--color-border);
    border-radius: 4px;
    overflow: hidden;
}

.score-fill {
    height: 100%;
    background: var(--nis2-gradient);
    transition: width 0.5s ease-in-out;
}

/* ============================================
   TECHNICAL REPORT - TABLE OF CONTENTS
   ============================================ */
.toc-section {
    background: var(--color-bg-light);
    padding: var(--space-xl);
    border-radius: var(--border-radius);
}

.toc-list {
    list-style: none;
    counter-reset: toc-counter;
}

.toc-list li {
    counter-increment: toc-counter;
    margin-bottom: var(--space-sm);
}

.toc-list li a {
    display: flex;
    justify-content: space-between;
    padding: var(--space-sm);
    border-bottom: 1px dotted var(--color-border);
}

.toc-list li a:hover {
    background: white;
    text-decoration: none;
}

/* ============================================
   TECHNICAL REPORT - INFO TABLE
   ============================================ */
.info-table {
    width: 100%;
    border-collapse: collapse;
    margin: var(--space-md) 0;
}

.info-table th {
    width: 40%;
    padding: var(--space-sm) var(--space-md);
    text-align: left;
    background: var(--color-bg-light);
    font-weight: 600;
    border: var(--border-width) solid var(--color-border);
}

.info-table td {
    padding: var(--space-sm) var(--space-md);
    border: var(--border-width) solid var(--color-border);
}

/* ============================================
   TECHNICAL REPORT - RESULTS SUMMARY
   ============================================ */
.results-summary-tech {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--space-lg);
    margin: var(--space-lg) 0;
}

.summary-metric {
    text-align: center;
    padding: var(--space-lg);
    background: var(--color-bg-light);
    border-radius: var(--border-radius);
    border: var(--border-width) solid var(--color-border);
}

.metric-label {
    display: block;
    font-size: 10pt;
    color: var(--color-text-light);
    margin-bottom: var(--space-sm);
}

.metric-value {
    display: block;
    font-size: 20pt;
    font-weight: 700;
    color: var(--nis2-primary);
}

.metric-value.large {
    font-size: 32pt;
}

/* ============================================
   TECHNICAL REPORT - SCORING TABLE
   ============================================ */
.scoring-table {
    width: 100%;
    border-collapse: collapse;
    margin: var(--space-md) 0;
}

.scoring-table thead {
    background: var(--color-bg-light);
}

.scoring-table th,
.scoring-table td {
    padding: var(--space-sm) var(--space-md);
    text-align: left;
    border: var(--border-width) solid var(--color-border);
}

.scoring-table th {
    font-weight: 600;
}

/* ============================================
   TECHNICAL REPORT - DOMAIN DETAIL
   ============================================ */
.domain-detail {
    margin-bottom: var(--space-2xl);
    padding: var(--space-lg);
    border: var(--border-width) solid var(--color-border);
    border-radius: var(--border-radius);
}

.domain-detail.critical-domain {
    border-color: var(--color-critical);
    border-width: 2px;
}

.domain-summary-box {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--space-md);
    margin: var(--space-md) 0 var(--space-lg) 0;
    padding: var(--space-md);
    background: var(--color-bg-light);
    border-radius: var(--border-radius);
}

.summary-item {
    text-align: center;
}

.summary-label {
    display: block;
    font-size: 9pt;
    color: var(--color-text-light);
    margin-bottom: var(--space-xs);
}

.summary-value {
    display: block;
    font-size: 16pt;
    font-weight: 600;
}

/* Requirements Table */
.requirements-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: var(--space-md);
}

.requirements-table thead {
    background: var(--color-bg-light);
}

.requirements-table th,
.requirements-table td {
    padding: var(--space-sm);
    text-align: left;
    border: var(--border-width) solid var(--color-border);
    font-size: 10pt;
}

.requirements-table th {
    font-weight: 600;
}

.req-row.compliant {
    background: rgba(16, 185, 129, 0.05);
}

.req-row.partial {
    background: rgba(245, 158, 11, 0.05);
}

.req-row.noncompliant {
    background: rgba(220, 38, 38, 0.05);
}

.req-id {
    font-family: var(--font-mono);
    font-size: 9pt;
    font-weight: 600;
}

.score-badge {
    display: inline-block;
    padding: 4px 8px;
    border-radius: 4px;
    font-weight: 600;
    font-size: 10pt;
    color: white;
}

.score-badge.score-0 {
    background: var(--maturity-immature);
}

.score-badge.score-1 {
    background: var(--maturity-basic);
}

.score-badge.score-2 {
    background: var(--maturity-intermediate);
}

.score-badge.score-3 {
    background: var(--maturity-advanced);
}

.score-badge.score-4 {
    background: var(--maturity-optimized);
}

/* ============================================
   NON-COMPLIANCES
   ============================================ */
.noncomp-card {
    margin-bottom: var(--space-lg);
    border: 2px solid;
    border-radius: var(--border-radius);
    overflow: hidden;
}

.noncomp-card.severity-crítica {
    border-color: var(--color-critical);
}

.noncomp-card.severity-alta {
    border-color: var(--color-high);
}

.noncomp-card.severity-média {
    border-color: var(--color-medium);
}

.noncomp-header {
    display: flex;
    align-items: center;
    gap: var(--space-md);
    padding: var(--space-md);
    background: var(--color-bg-light);
    border-bottom: var(--border-width) solid var(--color-border);
}

.noncomp-number {
    font-family: var(--font-mono);
    font-size: 12pt;
    font-weight: 700;
    color: var(--nis2-primary);
    min-width: 80px;
}

.noncomp-header h4 {
    flex: 1;
    margin-bottom: 0;
}

.severity-badge {
    padding: var(--space-xs) var(--space-sm);
    border-radius: 4px;
    font-size: 9pt;
    font-weight: 600;
    text-transform: uppercase;
    color: white;
}

.severity-badge.crítica {
    background: var(--color-critical);
}

.severity-badge.alta {
    background: var(--color-high);
}

.severity-badge.média {
    background: var(--color-medium);
}

.noncomp-body {
    padding: var(--space-lg);
}

.noncomp-detail {
    margin-bottom: var(--space-sm);
    font-size: 10pt;
}

.noncomp-sanctions {
    margin-top: var(--space-md);
    padding: var(--space-md);
    background: rgba(220, 38, 38, 0.05);
    border-left: 4px solid var(--color-critical);
    border-radius: 4px;
}

/* ============================================
   REMEDIATION PLAN
   ============================================ */
.remediation-card {
    margin-bottom: var(--space-lg);
    border: 2px solid var(--color-border);
    border-radius: var(--border-radius);
    overflow: hidden;
}

.remediation-card.priority-crítica {
    border-color: var(--color-critical);
}

.remediation-card.priority-alta {
    border-color: var(--color-high);
}

.remediation-card.priority-média {
    border-color: var(--color-medium);
}

.rem-header {
    display: flex;
    align-items: center;
    gap: var(--space-md);
    padding: var(--space-md);
    background: var(--color-bg-light);
    border-bottom: var(--border-width) solid var(--color-border);
}

.rem-number {
    font-size: 18pt;
    font-weight: 700;
    color: var(--nis2-primary);
    min-width: 40px;
    text-align: center;
}

.rem-header h4 {
    flex: 1;
    margin-bottom: 0;
}

.rem-body {
    padding: var(--space-lg);
}

.rem-info-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--space-md);
    margin-bottom: var(--space-lg);
}

.rem-info {
    padding: var(--space-sm);
    background: var(--color-bg-light);
    border-radius: var(--border-radius);
    font-size: 10pt;
}

.rem-steps {
    margin-bottom: var(--space-md);
}

.rem-steps ol {
    margin-left: var(--space-lg);
    margin-top: var(--space-sm);
}

.rem-steps li {
    margin-bottom: var(--space-sm);
}

.rem-resources ul {
    margin-left: var(--space-lg);
    margin-top: var(--space-sm);
}

/* ============================================
   TIMELINE
   ============================================ */
.timeline-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--space-lg);
    margin: var(--space-lg) 0;
}

.timeline-phase {
    padding: var(--space-md);
    background: var(--color-bg-light);
    border-radius: var(--border-radius);
    border-left: 4px solid var(--nis2-primary);
}

.timeline-phase h4 {
    font-size: 12pt;
    margin-bottom: var(--space-sm);
    color: var(--nis2-primary);
}

.timeline-items {
    list-style: none;
}

.timeline-items li {
    padding: var(--space-xs) 0;
    font-size: 10pt;
    border-bottom: 1px dotted var(--color-border);
}

.timeline-items li:last-child {
    border-bottom: none;
}

.timeline-items li.empty {
    color: var(--color-text-light);
    font-style: italic;
}

.milestones-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: var(--space-md);
}

.milestones-table th,
.milestones-table td {
    padding: var(--space-sm) var(--space-md);
    text-align: left;
    border: var(--border-width) solid var(--color-border);
}

.milestones-table th {
    background: var(--color-bg-light);
    font-weight: 600;
}

/* ============================================
   ANNEXES
   ============================================ */
.glossary {
    margin: var(--space-md) 0;
}

.glossary dt {
    font-weight: 600;
    margin-top: var(--space-md);
    color: var(--nis2-primary);
}

.glossary dd {
    margin-left: var(--space-lg);
    margin-bottom: var(--space-sm);
}

.references {
    margin: var(--space-md) 0;
    margin-left: var(--space-xl);
}

.references li {
    margin-bottom: var(--space-sm);
}

/* ============================================
   CNCS REPORT - OFFICIAL STYLING
   ============================================ */
.report-cncs .report-header {
    background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 100%);
    color: white;
    padding: var(--space-xl);
    border-bottom: none;
}

.cncs-header {
    display: flex;
    justify-content: space-between;
    align-items: start;
}

.cncs-logo-area h1 {
    color: white;
    font-size: 20pt;
    margin-bottom: var(--space-xs);
    -webkit-text-fill-color: white;
}

.cncs-subtitle {
    color: rgba(255, 255, 255, 0.9);
    font-size: 12pt;
}

.official-stamp {
    text-align: center;
    padding: var(--space-md);
    background: rgba(255, 255, 255, 0.1);
    border: 2px solid white;
    border-radius: var(--border-radius);
}

.official-stamp p {
    color: white;
    margin-bottom: var(--space-xs);
    font-weight: 600;
}

.doc-number {
    font-family: var(--font-mono);
    font-size: 14pt;
}

/* CNCS Sections */
.cncs-section {
    border: var(--border-width) solid var(--color-border);
    border-radius: var(--border-radius);
    padding: var(--space-xl);
    background: white;
}

.cncs-section .section-title {
    color: #1e3a8a;
    border-bottom-color: #1e3a8a;
}

/* CNCS Tables */
.cncs-table {
    width: 100%;
    border-collapse: collapse;
    margin: var(--space-md) 0;
}

.cncs-table th {
    width: 30%;
    padding: var(--space-sm) var(--space-md);
    text-align: left;
    background: var(--color-bg-light);
    font-weight: 600;
    border: var(--border-width) solid var(--color-border);
}

.cncs-table td {
    padding: var(--space-sm) var(--space-md);
    border: var(--border-width) solid var(--color-border);
}

.cncs-table label {
    display: inline-block;
    margin-right: var(--space-lg);
}

.cncs-table input[type="checkbox"] {
    margin-right: var(--space-xs);
}

/* CNCS Compliance Table */
.cncs-compliance-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: var(--space-md);
    font-size: 9pt;
}

.cncs-compliance-table thead {
    background: #1e3a8a;
    color: white;
}

.cncs-compliance-table th,
.cncs-compliance-table td {
    padding: var(--space-xs) var(--space-sm);
    text-align: center;
    border: var(--border-width) solid var(--color-border);
}

.cncs-compliance-table th:nth-child(1),
.cncs-compliance-table td:nth-child(1) {
    width: 10%;
}

.cncs-compliance-table th:nth-child(2),
.cncs-compliance-table td:nth-child(2) {
    width: 40%;
    text-align: left;
}

.cncs-compliance-table th:nth-child(7),
.cncs-compliance-table td:nth-child(7) {
    width: 20%;
    text-align: left;
}

.checkbox-cell {
    text-align: center;
}

.observations-cell {
    font-size: 9pt;
    color: var(--color-text-light);
}

/* CNCS Assessment */
.cncs-assessment {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-lg);
    margin: var(--space-lg) 0;
}

.assessment-metric {
    text-align: center;
    padding: var(--space-lg);
    background: var(--color-bg-light);
    border: 2px solid #1e3a8a;
    border-radius: var(--border-radius);
}

.cncs-noncomp-summary {
    width: 100%;
    border-collapse: collapse;
    margin-top: var(--space-md);
}

.cncs-noncomp-summary thead {
    background: var(--color-bg-light);
}

.cncs-noncomp-summary th,
.cncs-noncomp-summary td {
    padding: var(--space-sm);
    text-align: left;
    border: var(--border-width) solid var(--color-border);
    font-size: 10pt;
}

.cncs-action-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: var(--space-md);
}

.cncs-action-table thead {
    background: var(--color-bg-light);
}

.cncs-action-table th,
.cncs-action-table td {
    padding: var(--space-sm);
    text-align: left;
    border: var(--border-width) solid var(--color-border);
    font-size: 10pt;
}

/* Declaration Box */
.declaration-box {
    padding: var(--space-xl);
    background: rgba(30, 58, 138, 0.05);
    border: 2px solid #1e3a8a;
    border-radius: var(--border-radius);
    margin: var(--space-lg) 0;
}

.declaration-box h3 {
    color: #1e3a8a;
    margin-bottom: var(--space-md);
}

.declaration-box p {
    line-height: 1.8;
    text-align: justify;
}

/* Signature Area */
.signature-area {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-2xl);
    margin: var(--space-xl) 0;
}

.signature-block p {
    margin-bottom: var(--space-sm);
}

.signature-block strong {
    color: #1e3a8a;
}

.signature-line p {
    margin-bottom: var(--space-md);
    padding-bottom: var(--space-xs);
    border-bottom: 1px solid var(--color-text);
}

.stamp-area {
    margin: var(--space-xl) 0;
    text-align: center;
}

.stamp-label {
    font-weight: 600;
    margin-bottom: var(--space-sm);
    color: #1e3a8a;
}

.stamp-box {
    width: 200px;
    height: 200px;
    margin: 0 auto;
    border: 2px dashed var(--color-border);
    border-radius: var(--border-radius);
}

.annexes-list {
    margin-left: var(--space-xl);
}

.annexes-list li {
    margin-bottom: var(--space-sm);
}

.annexes-note {
    margin-top: var(--space-lg);
    padding: var(--space-md);
    background: var(--color-bg-light);
    border-left: 4px solid #1e3a8a;
    border-radius: 4px;
}

/* ============================================
   REPORT FOOTER
   ============================================ */
.report-footer {
    margin-top: var(--space-2xl);
    padding-top: var(--space-xl);
    border-top: 2px solid var(--color-border);
}

.footer-content {
    margin-bottom: var(--space-md);
}

.footer-disclaimer {
    padding: var(--space-md);
    background: rgba(245, 158, 11, 0.1);
    border-left: 4px solid var(--color-medium);
    border-radius: 4px;
    font-size: 9pt;
    line-height: 1.6;
    margin-bottom: var(--space-md);
}

.footer-info {
    text-align: center;
    font-size: 9pt;
    color: var(--color-text-light);
}

.cncs-footer .footer-official {
    text-align: center;
    padding: var(--space-md);
    background: #1e3a8a;
    color: white;
    border-radius: var(--border-radius);
    margin-bottom: var(--space-md);
}

.cncs-footer .footer-official p {
    margin-bottom: var(--space-xs);
}

.footer-doc-info {
    text-align: center;
    font-size: 9pt;
    color: var(--color-text-light);
    margin-bottom: var(--space-md);
}

.footer-classification {
    text-align: center;
    padding: var(--space-sm);
    background: var(--color-critical);
    color: white;
    font-weight: 700;
    font-size: 10pt;
    border-radius: var(--border-radius);
}

/* ============================================
   PAGE BREAKS FOR PRINT
   ============================================ */
.page-break {
    page-break-after: always;
    break-after: page;
}

@media print {
    .page-break {
        page-break-after: always;
        break-after: page;
    }
}

/* ============================================
   PRINT STYLES
   ============================================ */
@media print {
    @page {
        size: A4;
        margin: 20mm;
    }

    body {
        background: white;
        font-size: 10pt;
    }

    .report-container {
        max-width: 100%;
        padding: 0;
    }

    /* Avoid breaks inside these elements */
    .report-section,
    .recommendation-card,
    .noncomp-card,
    .remediation-card,
    .finding-card,
    .domain-detail,
    table {
        page-break-inside: avoid;
        break-inside: avoid;
    }

    /* Hide interactive elements in print */
    button,
    input[type="checkbox"]:not(:checked),
    a {
        display: none !important;
    }

    /* Print-friendly colors */
    .report-header,
    .cncs-header {
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    /* Ensure charts are visible */
    canvas {
        max-width: 100%;
        height: auto !important;
    }

    /* Table improvements */
    table {
        font-size: 9pt;
    }

    /* Avoid orphaned headings */
    h1, h2, h3, h4, h5, h6 {
        page-break-after: avoid;
        break-after: avoid;
    }
}

/* ============================================
   RESPONSIVE STYLES (For Screen Preview)
   ============================================ */
@media screen and (max-width: 768px) {
    .report-container {
        padding: var(--space-md);
    }

    .score-display-large {
        flex-direction: column;
        text-align: center;
    }

    .executive-stats {
        grid-template-columns: 1fr;
    }

    .findings-grid {
        grid-template-columns: 1fr;
    }

    .risk-summary {
        grid-template-columns: 1fr;
    }

    .domain-summary-box {
        grid-template-columns: 1fr;
    }

    .signature-area {
        grid-template-columns: 1fr;
    }

    .timeline-container {
        grid-template-columns: 1fr;
    }
}

/* ============================================
   ACCESSIBILITY
   ============================================ */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

/* High contrast mode support */
@media (prefers-contrast: high) {
    :root {
        --color-border: #000000;
        --color-bg-light: #f0f0f0;
    }
}
