*{box-sizing:border-box}
body{margin:0;font-family:Arial,Helvetica,sans-serif;background:#f4f7fb;color:#1f2937}
a{color:#1557b0;text-decoration:none}
.topbar{height:68px;background:#173b67;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 22px;position:sticky;top:0;z-index:5}
.brand{font-weight:700;font-size:19px}.subbrand{font-size:12px;opacity:.82;margin-top:2px}
.userbox{font-size:13px}.userbox a{color:#fff;margin-left:16px;border:1px solid rgba(255,255,255,.45);padding:7px 10px;border-radius:6px}
.layout{display:flex;min-height:calc(100vh - 68px)}
.sidebar{width:235px;background:#102a49;padding:16px 10px;flex:none}
.sidebar a{display:block;color:#e7eef7;padding:10px 12px;border-radius:6px;margin:2px 0;font-size:14px}
.sidebar a:hover{background:#204b7b}
.menu-title{color:#8eabc9;font-size:11px;text-transform:uppercase;letter-spacing:.08em;padding:17px 12px 6px}
.content{flex:1;padding:22px;min-width:0}
.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.page-head h1{font-size:23px;margin:0;color:#173b67}
.card{background:#fff;border:1px solid #dbe3ec;border-radius:9px;padding:18px;margin-bottom:18px;box-shadow:0 2px 7px rgba(20,45,75,.04)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:18px}
.stat{background:#fff;border-left:4px solid #173b67;border-radius:8px;padding:16px;box-shadow:0 2px 7px rgba(20,45,75,.05)}
.stat .num{font-size:28px;font-weight:700;color:#173b67}.stat .label{font-size:13px;color:#64748b;margin-top:4px}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{border:1px solid #dbe3ec;padding:8px 9px;text-align:left;font-size:13px;vertical-align:top}
th{background:#edf3f9;color:#173b67}
.table-wrap{overflow:auto;max-width:100%}
input,select,textarea{width:100%;border:1px solid #c9d4e1;border-radius:6px;padding:9px 10px;background:#fff;font-size:14px}
label{font-size:12px;color:#526173;font-weight:700;display:block;margin-bottom:5px}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}
.btn{border:0;border-radius:6px;padding:9px 13px;cursor:pointer;display:inline-block;font-size:13px;background:#173b67;color:#fff}
.btn.secondary{background:#64748b}.btn.danger{background:#b42318}.btn.light{background:#e8eef5;color:#173b67}
.inline{display:inline}
.alert{padding:11px 13px;border-radius:7px;margin-bottom:15px}
.alert.success{background:#eaf8ef;color:#166534}.alert.error{background:#feeeee;color:#991b1b}
.searchbar{display:grid;grid-template-columns:2fr 1fr auto;gap:9px;align-items:end}
.small{font-size:12px;color:#64748b}.muted{color:#8492a6}
.login-body{min-height:100vh;background:#eef4fa;display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{width:420px;max-width:100%;background:#fff;border-radius:12px;padding:28px;box-shadow:0 15px 40px rgba(20,45,75,.15)}
.login-card h1{margin:0 0 5px;color:#173b67}.login-card p{color:#64748b;margin-top:0}
.login-card .field{margin:13px 0}
.report-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.report-link{background:#fff;border:1px solid #dbe3ec;border-radius:9px;padding:18px;display:block;color:#1f2937}
.report-link strong{display:block;color:#173b67;font-size:16px;margin-bottom:6px}
.mark-input{width:75px;padding:5px;text-align:center}
.nowrap{white-space:nowrap}
.center{text-align:center}
@media(max-width:820px){.sidebar{width:65px}.sidebar a{font-size:0;text-align:center}.sidebar a::first-letter{font-size:20px}.menu-title{display:none}.content{padding:12px}.topbar{padding:0 12px}}
@media print{
 .topbar,.sidebar,.no-print,.page-head{display:none!important}
 .layout,.content{display:block;padding:0;margin:0}
 body{background:#fff}
 .card{border:0;box-shadow:none;padding:0}
 th{position:static}
}

/* Wide Excel-style marksheets */
.excel-sheet th,.excel-sheet td{min-width:68px}
.excel-sheet .frozen-sn{position:sticky;left:0;z-index:3;min-width:48px;width:48px;background:#f7fafc}
.excel-sheet .frozen-name{position:sticky;left:48px;z-index:3;min-width:210px;background:#fff}
.excel-sheet thead .frozen-sn,.excel-sheet thead .frozen-name{z-index:5;background:#edf3f9}
.excel-sheet tbody tr:nth-child(even) .frozen-sn,
.excel-sheet tbody tr:nth-child(even) .frozen-name{background:#fbfdff}
.excel-sheet .mark-input{min-width:62px;width:68px}
@media print{
 .excel-sheet .frozen-sn,.excel-sheet .frozen-name{position:static}
}


/* =========================================================
   TABLE HEADER NORMALIZATION
   =========================================================
   Ordinary CRUD/report tables must NOT inherit sticky headers.
   Sticky headers are reserved for explicitly wide Excel-style grids.
*/

/* Normal tables */


/*
 * Excel-style grids inside the normal application shell.
 * The top application bar is 68px high.
 */


/* Frozen left columns for wide entry/report grids */
.excel-sheet tbody .frozen-sn,
.excel-sheet tbody .frozen-name {
    position: sticky;
    z-index: 3;
}

/*
 * Pages with two heading rows (report_school_marksheet.php and
 * marks_school_grid.php) contain their own more specific offsets.
 * Standalone report pages such as marksheet5.php override top:68px
 * with top:0 locally.
 */

@media print {
    table thead th,
    
}





/* =========================================================
   V17 - GLOBAL TABLE HEADER NORMALIZATION
   =========================================================
   All table headings stick at the TOP of their scroll container.
   No inherited 68px/104px offset is used globally.
*/

/* Ordinary tables */
table thead th {
    position: sticky;
    top: 0 !important;
    z-index: 20;
    background: #edf3f9;
}

/* Explicit standard tables */
.standard-table thead th {
    position: sticky !important;
    top: 0 !important;
    z-index: 20 !important;
    background: #edf3f9;
}

/* Wide Excel-style marks tables */
.excel-sheet thead th {
    position: sticky !important;
    top: 0 !important;
    z-index: 30 !important;
    background: #edf3f9;
}

/*
 * Frozen left columns remain horizontally sticky.
 * Vertical positioning is controlled only by the thead rule above.
 */
.excel-sheet .frozen-sn,
.excel-sheet .frozen-name {
    position: sticky;
}

/* Header frozen cells must stay above body frozen cells. */
.excel-sheet thead .frozen-sn,
.excel-sheet thead .frozen-name {
    top: 0 !important;
    z-index: 40 !important;
    background: #edf3f9;
}

.excel-sheet tbody .frozen-sn,
.excel-sheet tbody .frozen-name {
    z-index: 5;
    background: #fff;
}

/* Printing should never use sticky headers. */
@media print {
    table thead th,
    .standard-table thead th,
    .excel-sheet thead th,
    .excel-sheet thead .frozen-sn,
    .excel-sheet thead .frozen-name {
        position: static !important;
        top: auto !important;
    }
}
