.academic-tabs,.academic-actions{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.academic-tabs .btn{font-size:13px}.import-export-bar{display:flex;gap:8px;flex-wrap:nowrap;margin:16px 0;padding:12px;background:#f4f6f2;border-radius:8px;border:1px solid #e2e8e1;overflow-x:auto}.import-export-bar .btn{font-size:12px;padding:8px 14px;white-space:nowrap;flex-shrink:0}.import-export-bar form{display:inline-flex;flex-shrink:0}.btn-group{display:flex;gap:6px;flex-wrap:wrap}.action-buttons{display:flex;gap:6px;flex-wrap:wrap}.action-buttons .btn.small{padding:5px 10px;font-size:11px}.btn.small{padding:6px 12px;font-size:11px}.btn-form{padding:6px 14px;font-size:12px;border-radius:6px;margin-top:12px;align-self:flex-start}.academic-table{overflow:auto}.academic-table td{max-width:260px;overflow-wrap:anywhere}.submission{padding:16px;margin:12px 0;border:1px solid #d5e3df;border-radius:8px}.announcement-list{margin-top:16px}.announcement-item{border:1px solid #dce7e1;border-radius:8px;padding:16px;margin-bottom:12px;background:#fff}.announcement-item.priority-urgent{border-left:4px solid #dc3545}.announcement-item.priority-important{border-left:4px solid #ffc107}.announcement-item.priority-normal{border-left:4px solid #165b46}.announcement-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.announcement-header h3{margin:0;font-size:15px;color:#165b46}.announcement-meta{font-size:11px;color:#52766a;margin-bottom:8px}.announcement-content{font-size:13px;line-height:1.6;color:#333}.badge-warning{background:#fff3cd;color:#856404}.badge-info{background:#d1ecf1;color:#0c5460}.badge-normal{background:#e8f0ec;color:#165b46}.activity-timeline{margin-top:16px}.activity-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid #e8f0ec}.activity-item:last-child{border-bottom:none}.activity-icon{font-size:20px;flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#f0f5f3;border-radius:50%}.activity-content{flex:1}.activity-content p{margin:4px 0;font-size:12px;color:#52766a}.activity-content small{font-size:10px;color:#9cafaa}.rich-content img,.rich-content video,.rich-area img,.rich-area video{max-width:100%;height:auto}.rich-content iframe,.rich-area iframe{width:100%;aspect-ratio:16/9;border:0}.student-body{margin:0;font:16px/1.6 system-ui,sans-serif;background:#f0f5f3;color:#183c32}.student-header{background:#123e33;color:white;padding:20px 5%;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}.student-header a{color:white;text-decoration:none}.student-header strong{display:block}.student-header nav{display:flex;gap:20px;align-items:center}.student-main{max-width:1050px;padding:24px;margin:auto}.student-body .panel{background:white;border:1px solid #dce7e1;border-radius:14px;padding:28px;margin-bottom:20px}.auth-panel{max-width:480px;margin:30px auto}.student-body label{display:block;margin:16px 0;font-weight:600}.student-body input,.student-body textarea{display:block;box-sizing:border-box;width:100%;padding:12px;border:1px solid #9cafaa;border-radius:6px;font:inherit}.student-body .btn,.print-toolbar button{display:inline-block;background:#165b46;color:white;padding:10px 18px;border:0;border-radius:6px;text-decoration:none;cursor:pointer;font:inherit}.student-body .outline{background:#e2eee9;color:#165b46}.student-body .notice{padding:15px;background:#dfefe3;border-left:4px solid #287a41}.student-body .error{background:#ffebe8;border-color:#ba3826}.eyebrow{font-size:12px;letter-spacing:.08em;color:#52766a}.print-body{font:12px/1.5 Arial,sans-serif;background:#eee;color:#162e28;margin:0}.print-toolbar{padding:20px;text-align:center}.report-sheet{box-sizing:border-box;max-width:210mm;margin:20px auto;padding:15mm;background:white}.report-sheet header{text-align:center;border-bottom:3px solid #1b5142;padding-bottom:15px}.report-sheet h1{font-size:20px}.report-sheet h2{font-size:16px}.report-identity,.signatures{display:flex;justify-content:space-between;gap:20px}.report-sheet table{border-collapse:collapse;width:100%}.report-sheet th,.report-sheet td{border:1px solid #aaa;padding:7px;vertical-align:top}.report-sheet small{display:block}.report-sheet thead{display:table-header-group}.report-sheet tr{break-inside:avoid}.signatures{margin-top:35px;text-align:center;break-inside:avoid}.cards{display:flex;flex-wrap:wrap;gap:8mm;padding:10mm}.student-card{box-sizing:border-box;width:85.6mm;height:54mm;overflow:hidden;break-inside:avoid;background:white;border:1px solid #215b48;border-radius:3mm}.student-card header{background:#164c3b;color:white;padding:3mm 4mm;line-height:1.3}.student-card header span{display:block;font-size:9px}.card-content{display:flex;gap:3mm;padding:3mm 4mm}.card-content img,.photo-placeholder{width:18mm;height:23mm;object-fit:cover;background:#edf3f0;flex-shrink:0}.card-content h2{font-size:12px;margin:0}.card-content p{font-size:9px;margin:1mm 0}.student-card footer{font-size:8px;padding:0 4mm}.academic-actions form{margin:0}@page{size:A4;margin:10mm}@media print{.print-toolbar{display:none}.print-body{background:white}.report-sheet{margin:0;padding:0;max-width:none}.cards{padding:0}.student-card{-webkit-print-color-adjust:exact;print-color-adjust:exact}}@media(max-width:600px){.student-main{padding:12px}.student-body .panel{padding:18px}.report-sheet{padding:10px}.report-identity{flex-wrap:wrap}}

/* Shared layout primitives for the student and teacher portals. */
.student-body *, .student-body *::before, .student-body *::after { box-sizing: border-box; }
.student-body h1 { font-size: clamp(24px, 3vw, 32px); line-height: 1.3; }
.student-body h2 { font-size: 21px; line-height: 1.4; }
.student-body h1, .student-body h2, .student-body h3, .student-body p { overflow-wrap: anywhere; }
.student-header { align-items: center; }
.student-header > a { min-width: 0; overflow-wrap: anywhere; }
.student-header nav { flex-wrap: wrap; gap: 8px 16px; }
.student-header nav a { padding-block: 8px; }
.student-header nav form { margin: 0; }
.student-header nav button { padding: 8px 14px; border: 1px solid #ffffff70;
    border-radius: 6px; background: transparent; color: white; font: inherit; cursor: pointer; }
.student-body :is(a, button, input, select, textarea):focus-visible { outline: 3px solid #91a463; outline-offset: 3px; }
.student-main { width: 100%; min-width: 0; }
.student-body .panel { min-width: 0; }
.student-body .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(150px, 100%), 1fr)); gap: 16px; margin-bottom: 20px; }
.student-body .stat-card { background: #165b46; color: white; padding: 20px; border-radius: 10px; text-align: center; }
.student-body .stat-card.alt { background: #e1edbd; color: #165b46; }
.student-body .stat-card .number { font-size: 28px; font-weight: 700; }
.student-body .stat-card .label { font-size: 13px; }
.student-body .section-title, .student-body .assignment-item { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.student-body .assignment-item .info, .activity-content { min-width: 0; }
.student-body .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.student-body .form-grid .full { grid-column: 1 / -1; }
.student-body select { width: 100%; padding: 12px; border: 1px solid #9cafaa; border-radius: 6px; background: white; color: inherit; font: inherit; }
.student-body table { width: 100%; border-collapse: collapse; text-align: left; font-size: 14px; }
.student-body th, .student-body td { padding: 12px; border-bottom: 1px solid #dce7e1; vertical-align: top; }
.student-body th { background: #f0f5f3; }
.student-body .table-scroll { max-width: 100%; overflow-x: auto; }
.student-body .table-scroll input[type=number] { min-width: 88px; }
.announcement-header { flex-wrap: wrap; gap: 10px; }
@media (max-width: 600px) {
    .student-header { padding: 16px; gap: 12px; }
    .student-header nav { width: 100%; font-size: 14px; }
    .student-body .form-grid { grid-template-columns: 1fr; }
    .student-body .panel > table { display: block; overflow-x: auto; }
    .student-body input, .student-body select, .student-body textarea { font-size: 16px; }
}
.student-body .academic-table input[type=number] { min-width: 88px; }
.student-body label.checkbox { display: flex; align-items: center; gap: 10px; }
.student-body input[type=checkbox] { width: 18px; height: 18px; padding: 0; flex-shrink: 0; accent-color: #165b46; }
.teacher-profile-panel { padding: 24px; }
.teacher-profile-header { display: flex; gap: 24px; align-items: flex-start; flex-wrap: wrap; }
.teacher-photo-lg { width: 120px; height: 120px; border-radius: 12px; object-fit: cover; flex-shrink: 0; }
.teacher-photo-lg.photo-placeholder { background: #e8f0ec; display: flex; align-items: center; justify-content: center; color: #52766a; font-size: 14px; font-weight: 600; }
.teacher-profile-info { flex: 1; min-width: 0; }
.teacher-profile-info h2 { margin: 0 0 8px; font-size: 24px; }
.teacher-profile-info p { margin: 0 0 6px; color: #52766a; font-size: 13px; }
.teacher-badge { display: inline-block; padding: 4px 12px; border-radius: 20px; font-size: 11px; font-weight: 600; }
.teacher-badge.badge-pns { background: #d4edda; color: #155724; }
.teacher-badge.badge-pppk { background: #cce5ff; color: #004085; }
.teacher-badge.badge-honorer { background: #fff3cd; color: #856404; }
.teacher-badge.badge-magang-kontrak { background: #f8d7da; color: #721c24; }
.teacher-badge.badge-tidak-tetap { background: #e2e3e5; color: #383d41; }
.teacher-subjects { margin-top: 20px; padding-top: 16px; border-top: 1px solid #e8f0ec; }
.teacher-subjects h3 { font-size: 14px; margin: 0 0 10px; }
.subject-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.subject-tag { background: #e8f0ec; color: #165b46; padding: 4px 12px; border-radius: 16px; font-size: 12px; font-weight: 500; }
.teacher-bio { margin-top: 16px; padding-top: 16px; border-top: 1px solid #e8f0ec; }
.teacher-bio h3 { font-size: 14px; margin: 0 0 8px; }
.teacher-bio p { font-size: 13px; line-height: 1.7; color: #333; }
.table-user { display: flex; align-items: center; gap: 10px; }
.table-avatar { width: 32px; height: 32px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.table-footer { padding: 12px 0; font-size: 12px; color: #52766a; }
.avatar-sm { width: 32px; height: 32px; border-radius: 50%; background: #165b46; color: white; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; flex-shrink: 0; }
.status-badge { display: inline-block; padding: 3px 10px; border-radius: 12px; font-size: 10px; font-weight: 600; }
.status-badge.badge-pns { background: #d4edda; color: #155724; }
.status-badge.badge-pppk { background: #cce5ff; color: #004085; }
.status-badge.badge-honorer { background: #fff3cd; color: #856404; }
.status-badge.badge-magang-kontrak { background: #f8d7da; color: #721c24; }
.status-badge.badge-tidak-tetap { background: #e2e3e5; color: #383d41; }