:root { --blue:#1f4e78; --line:#e2e6ea; --bg:#f5f7fa; --warn:#fff7e6; --danger:#c0392b; }
* { box-sizing: border-box; }
body { margin:0; font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
       background:var(--bg); color:#1c2530; }
header { background:var(--blue); padding:.8rem 1rem; }
.brand { color:#fff; text-decoration:none; font-weight:700; font-size:1.1rem; }
main { max-width:980px; margin:0 auto; padding:1rem; }
.card { background:#fff; border:1px solid var(--line); border-radius:10px;
        padding:1rem 1.2rem; margin:1rem 0; box-shadow:0 1px 2px rgba(0,0,0,.04); }
.card.warn { background:var(--warn); border-color:#f0d9a8; }
h2 { margin:.2rem 0 .6rem; font-size:1.15rem; }
h3 { margin:.4rem 0; font-size:.95rem; color:#445; }
.muted { color:#7a8694; font-size:.88rem; }
.err { color:var(--danger); }
.pill, .gpa-badge b { background:#eaf1f8; color:var(--blue); border-radius:20px;
        padding:.05rem .55rem; font-size:.85rem; }
.group-head { display:flex; justify-content:space-between; align-items:center; gap:1rem; }

.btn { display:inline-block; border:1px solid var(--blue); color:var(--blue);
       background:#fff; border-radius:8px; padding:.5rem .9rem; text-decoration:none;
       font-size:.92rem; cursor:pointer; }
.btn.primary { background:var(--blue); color:#fff; }
.btn:disabled { opacity:.5; }
.link { background:none; border:none; color:var(--blue); cursor:pointer; font-size:.85rem; }
.link.danger, .danger { color:var(--danger); }

table { width:100%; border-collapse:collapse; margin-top:.4rem; }
th, td { border:1px solid var(--line); padding:.4rem .5rem; text-align:left; font-size:.9rem; }
th { background:#f0f4f8; }
td.num, .center { text-align:center; }
.row-actions { display:flex; gap:.6rem; align-items:center; }
.row-actions form { display:inline; margin:0; }

input, select { font:inherit; padding:.45rem .5rem; border:1px solid #cdd5de;
        border-radius:6px; width:100%; background:#fff; }
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:.7rem; }
.grid2 .wide { grid-column:1/-1; }
label { display:flex; flex-direction:column; gap:.25rem; font-size:.85rem; color:#445; }

.upload input[type=file] { border:1px dashed #b9c4d0; padding:1rem; background:#fafcff; }
.spinner { color:var(--blue); margin-left:.6rem; font-size:.88rem; }
.draftlist { margin:.3rem 0; padding-left:1.1rem; }

.table-wrap { overflow-x:auto; }
#grade-table .course-col { min-width:160px; }
#grade-table .h-col { width:34px; }
.grade-cell { min-width:54px; text-align:center; }
.term-head { min-width:70px; font-weight:600; }
.gpa-badge b { font-size:1rem; }
table.mini td, table.mini th { padding:.25rem .5rem; }
.photos img { max-width:100%; border:1px solid var(--line); border-radius:8px; margin:.3rem 0; }
.actions { display:flex; gap:.8rem; justify-content:flex-end; }

@media (max-width:640px){ .grid2 { grid-template-columns:1fr; } }
