<style>
    /* Dotted column separators everywhere; horizontal dotted line ONLY between
       students (none between a student's own subject rows). Matches SCCZ sample. */
    #supplementary-consolidated-exam-report {
        border-collapse: collapse;
        border: 1px dotted #000;
    }
    #supplementary-consolidated-exam-report th,
    #supplementary-consolidated-exam-report td {
        font-size: 12px;
        padding: 4px;
        vertical-align: middle;
        border: none;
    }
    /* vertical separator only where a lead column or a new block begins */
    #supplementary-consolidated-exam-report .block-edge {
        border-left: 1px dotted #000;
    }
    #supplementary-consolidated-exam-report thead th {
        border-top: 1px dotted #000;
        border-bottom: 1px dotted #000;
        font-weight: bold;
    }
    #supplementary-consolidated-exam-report tbody tr.student-start td {
        border-top: 1px dotted #000;
    }
    /* keep each student's block on one page (avoids overlap with repeated header) */
    #supplementary-consolidated-exam-report tbody {
        page-break-inside: avoid;
    }
    .no-border {
        border: none !important;
    }
    .header-title {
        font-size: 22px;
        font-weight: bold;
        text-transform: uppercase;
        letter-spacing: 0.5px;
    }
    .header-sub {
        font-size: 13px;
        font-weight: bold;
        text-transform: uppercase;
    }
    .meta-row {
        font-size: 13px;
        font-weight: bold;
        text-transform: uppercase;
    }
    .center { text-align: center; }
    .left { text-align: left; }
    .right { text-align: right; }
    .legend {
        font-size: 11px;
        margin-top: 10px;
    }
    .sign {
        font-size: 12px;
        font-weight: bold;
        text-transform: uppercase;
        margin-top: 18px;
    }
</style>

{# SCCZ tabulation format: subjects are listed inline (code in each cell) and
   wrapped column-major into a fixed number of blocks. No subject headers. #}
{% set blockCount = data.blockCount|default(3) %}
{# College header + meta block sit OUTSIDE the bordered report table. #}
<div class="center" style="margin-bottom:2px;">
    <div class="header-title">{{ data.collegeAndOtherData.collegeName }}</div>
    {% if data.collegeAndOtherData.universityName %}<div class="header-sub">{{ data.collegeAndOtherData.universityName }}</div>{% endif %}
    <div class="header-sub" style="margin-top:6px;">{{ data.examRegistrationData.name|upper }}</div>
</div>
<table style="width:100%;border:none;table-layout:fixed;margin-bottom:6px;">
    <tr>
        <td class="no-border left meta-row" style="width:33.33%;">PROGRAMME: {{ data.examRegistrationData.degreeName }} {{ data.examRegistrationData.deptName }}</td>
        <td class="no-border center meta-row" style="width:33.33%;">RESULT FOR SEMESTER-{{ data.examRegistrationData.semInRomanLetter }}</td>
        <td class="no-border right meta-row" style="width:33.33%;">BATCH: {{ data.examRegistrationData.batchStartYear }}</td>
    </tr>
    <tr>
        <td class="no-border left meta-row" style="width:33.33%;">Date of Publication: {{ data.examRegistrationData.publishingStartDate ? data.examRegistrationData.publishingStartDate|date('d/m/Y') : '__________' }}</td>
        <td class="no-border" style="width:33.33%;"></td>
        <td class="no-border" style="width:33.33%;"></td>
    </tr>
</table>

<table style="width:100%;" id="supplementary-consolidated-exam-report">
    <thead>
        <tr>
            <th rowspan="2" class="center">S.NO</th>
            <th rowspan="2" class="center block-edge">ROLL.NO</th>
            <th rowspan="2" class="center block-edge">NAME OF THE STUDENT</th>
            {% for b in 1..blockCount %}
                <th rowspan="2" class="center block-edge">C.CODE</th>
                <th rowspan="2" class="center">CIA</th>
                <th colspan="2" class="center">ESE</th>
                <th rowspan="2" class="center">TOT</th>
                <th rowspan="2" class="center">R</th>
            {% endfor %}
        </tr>
        <tr>
            {% for b in 1..blockCount %}
                <th class="center">PRA</th>
                <th class="center">THE</th>
            {% endfor %}
        </tr>
    </thead>
        {% set slno = 0 %}
        {% for student in data.studentData %}
            {% set slno = slno + 1 %}
            {% set subs = student.subjects|default([]) %}
            {% set n = subs|length %}
            {# Balanced column-major: 3 blocks, remainder subjects go to the
               earlier blocks. e.g. 10 subjects -> sizes [4,3,3], 4 rows. #}
            {% set rem = n % blockCount %}
            {% set base = (n - rem) / blockCount %}
            {% set rows = rem > 0 ? base + 1 : base %}
            {% if rows < 1 %}{% set rows = 1 %}{% endif %}
            <tbody class="student-block">
            {% for i in 0..(rows - 1) %}
                <tr{% if i == 0 %} class="student-start"{% endif %}>
                    {% if i == 0 %}
                        <td rowspan="{{ rows }}" class="center">{{ slno }}</td>
                        <td rowspan="{{ rows }}" class="center block-edge">{{ student.rollNo }}</td>
                        <td rowspan="{{ rows }}" class="left block-edge">{{ student.name|upper }}</td>
                    {% endif %}
                    {% for b in 0..(blockCount - 1) %}
                        {% set sizeB = base + (b < rem ? 1 : 0) %}
                        {% set startB = (b * base) + min(b, rem) %}
                        {% if i < sizeB %}
                            {% set sub = subs[startB + i] %}
                            <td class="center block-edge">{{ sub.code }}</td>
                            <td class="center">{{ sub.ciaDisplay }}</td>
                            <td class="center">{{ sub.praDisplay is null ? '--' : sub.praDisplay }}</td>
                            <td class="center">{{ sub.theDisplay is null ? '--' : sub.theDisplay }}</td>
                            <td class="center">{{ sub.totDisplay }}</td>
                            <td class="center">{{ sub.resultDisplay }}</td>
                        {% else %}
                            <td class="center block-edge"></td>
                            <td class="center"></td>
                            <td class="center"></td>
                            <td class="center"></td>
                            <td class="center"></td>
                            <td class="center"></td>
                        {% endif %}
                    {% endfor %}
                </tr>
            {% endfor %}
            </tbody>
        {% endfor %}
</table>

<table style="width:100%;border:none;">
    <tr>
        <td class="no-border legend center">** R--&gt; Result&nbsp;&nbsp;&nbsp;&nbsp;P--&gt; Passed&nbsp;&nbsp;&nbsp;&nbsp;AA--&gt; Absent&nbsp;&nbsp;&nbsp;&nbsp;</td>
    </tr>
    <tr>
        <td class="no-border">
            <table style="width:100%;border:none;">
                <tr>
                    <td class="no-border left sign">Controller of Examinations</td>
                    <td class="no-border right sign">Principal</td>
                </tr>
            </table>
        </td>
    </tr>
</table>
