:root{--forest:#102f24;--green:#1f6b4b;--gold:#d9aa45;--ink:#12221b}
*{box-sizing:border-box}body{font-family:'DM Sans',sans-serif}h1,h2,h3{font-family:'Manrope',sans-serif}
.eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:.18em;font-weight:900;color:#1f6b4b}.eyebrow-light{font-size:10px;text-transform:uppercase;letter-spacing:.18em;font-weight:900;color:#e8bf63}
.portal-feature{border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.06);border-radius:16px;padding:13px;color:#fff;display:flex;align-items:center;gap:9px;font-size:12px;font-weight:700}.portal-feature svg{width:17px;color:#e8bf63}
.role-btn{border:1px solid #e2e8e5;background:#fff;border-radius:12px;padding:10px 5px;font-size:11px;font-weight:800;color:#64748b;display:flex;flex-direction:column;align-items:center;gap:5px}.role-btn svg{width:17px}.role-btn.active{background:#edf7f0;color:#1f6b4b;border-color:#b8d5c7}
.portal-card{background:#fff;border:1px solid #e2e8e5;border-radius:20px;box-shadow:0 8px 25px rgba(16,47,36,.04)}.field-label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:#64748b;margin-bottom:6px}.field-input{width:100%;border:1px solid #dbe2df;border-radius:11px;padding:12px 13px;outline:none}.field-input:focus{border-color:#1f6b4b;box-shadow:0 0 0 3px rgba(31,107,75,.1)}.status-box{padding:11px 13px;border-radius:11px;background:#fff7ed;color:#9a3412;font-size:12px;font-weight:700}
.portal-sidebar{position:fixed;z-index:50;inset:0 auto 0 0;width:288px;background:#102f24;color:#fff;display:flex;flex-direction:column}.portal-nav{width:100%;display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:11px;color:rgba(255,255,255,.62);font-size:13px;font-weight:700;text-align:left}.portal-nav:hover{background:rgba(255,255,255,.07);color:#fff}.portal-nav.active{background:#1f6b4b;color:#fff}.portal-nav svg{width:17px}
.portal-topbar{height:76px;position:sticky;top:0;z-index:30;background:rgba(255,255,255,.9);backdrop-filter:blur(14px);border-bottom:1px solid #e2e8e5;display:flex;align-items:center;justify-content:space-between;padding:0 24px}.preview-badge{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;padding:7px 10px;border-radius:999px;background:#fffbeb;color:#a16207}.avatar{width:38px;height:38px;border-radius:12px;background:#edf7f0;color:#1f6b4b;display:grid;place-items:center;font-weight:900}
.portal-stat{background:#fff;border:1px solid #e2e8e5;border-radius:20px;padding:18px;min-height:155px}.stat-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center}.stat-icon svg{width:18px}.stat-icon.green{background:#edf7f0;color:#1f6b4b}.stat-icon.gold{background:#fffbeb;color:#a16207}.stat-icon.blue{background:#eff6ff;color:#0369a1}.stat-icon.slate{background:#f1f5f9;color:#475569}.stat-label{margin-top:14px;font-size:11px;font-weight:800;color:#64748b}.stat-value{font:800 29px 'Manrope',sans-serif;margin-top:2px}.stat-note{font-size:10px;color:#94a3b8;margin-top:2px}
.card-head{padding:19px 20px;border-bottom:1px solid #eef1ef;display:flex;justify-content:space-between;gap:12px}.card-head h3{font-size:16px;font-weight:800}.card-head p{font-size:11px;color:#94a3b8;margin-top:3px}.card-head button{font-size:11px;color:#1f6b4b;font-weight:800}.notice-row{padding:16px 20px;display:flex;gap:13px;align-items:flex-start}.notice-dot{width:9px;height:9px;border-radius:50%;background:#d9aa45;margin-top:6px;flex:none}.notice-row h4{font-size:13px;font-weight:800}.notice-row p{font-size:11px;color:#64748b;margin-top:3px}.event-row{display:flex;gap:12px;padding:13px 20px}.event-date{width:43px;height:43px;border-radius:12px;background:#edf7f0;color:#1f6b4b;display:grid;place-items:center;font-weight:900}.event-row strong{font-size:12px}.event-row small{display:block;font-size:10px;color:#94a3b8;margin-top:3px}
.page-heading{margin-bottom:24px}.page-heading h1{font-size:32px;font-weight:800;letter-spacing:-.03em;margin-top:3px}.page-heading p{font-size:14px;color:#64748b;margin-top:5px}.summary-cell{background:#f8faf9;border:1px solid #e2e8e5;border-radius:14px;padding:18px}.summary-cell b{display:block;font:800 24px 'Manrope',sans-serif}.summary-cell span{font-size:10px;color:#64748b}.portal-table{width:100%;border-collapse:collapse;font-size:12px}.portal-table th{background:#fafcfb;padding:12px 15px;text-align:left;font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#64748b}.portal-table td{padding:14px 15px;border-top:1px solid #eef1ef}.preview-note{margin-top:12px;font-size:11px;color:#94a3b8}.content-list{display:grid;gap:14px}.tag{display:inline-flex;padding:5px 8px;border-radius:999px;background:#edf7f0;color:#1f6b4b;font-size:9px;font-weight:900;text-transform:uppercase}.tag.blue{background:#eff6ff;color:#0369a1}.due{font-size:10px;font-weight:800;color:#a16207;background:#fffbeb;padding:6px 8px;border-radius:999px;height:max-content}.calendar-row{display:flex;align-items:center;gap:15px;padding:16px 4px;border-bottom:1px solid #eef1ef}.calendar-row:last-child{border-bottom:0}.calendar-row>b{width:48px;height:48px;border-radius:14px;background:#edf7f0;color:#1f6b4b;display:grid;place-items:center;font:800 17px 'Manrope',sans-serif}.calendar-row strong{display:block;font-size:13px}.calendar-row small{display:block;color:#94a3b8;font-size:10px;margin-top:3px}
@media(max-width:1024px){.portal-sidebar{transform:translateX(-100%);transition:.2s}.portal-sidebar.open{transform:none}.portal-topbar{padding:0 16px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.student-row{display:flex;align-items:center;gap:13px;padding:13px;border:1px solid #eef1ef;border-radius:14px}.student-avatar{width:42px;height:42px;border-radius:13px;background:#edf7f0;color:#1f6b4b;display:grid;place-items:center;font-weight:900;font-size:12px}\n.attendance-action{border-radius:11px;padding:11px 14px;font-size:11px;font-weight:900}.attendance-action.primary{background:#1f6b4b;color:#fff}.attendance-action.secondary{background:#f8faf9;border:1px solid #dbe2df;color:#1f6b4b}.attendance-student{display:flex;align-items:center;gap:12px;padding:11px;border:1px solid #eef1ef;border-radius:14px}.attendance-student b{display:block;font-size:12px}.attendance-student small{display:block;color:#94a3b8;font-size:10px;margin-top:2px}.attendance-choice{display:flex;gap:5px}.att-btn{padding:7px 9px;border-radius:9px;font-size:9px;font-weight:900;border:1px solid #e2e8e5;background:#fff;color:#64748b}.att-btn.selected.present{background:#edf7f0;color:#166534;border-color:#b7dec5}.att-btn.selected.absent{background:#fef2f2;color:#b91c1c;border-color:#fecaca}.att-btn.selected.leave{background:#fffbeb;color:#a16207;border-color:#fde68a}.attendance-kpi{background:#fff;border:1px solid #e2e8e5;border-radius:18px;padding:17px}.attendance-kpi span{font-size:10px;font-weight:900;text-transform:uppercase;color:#64748b}.attendance-kpi b{display:block;font:800 28px 'Manrope',sans-serif;margin-top:5px}.attendance-kpi small{font-size:10px;color:#94a3b8}.history-row{display:grid;grid-template-columns:80px 90px 1fr;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid #eef1ef;font-size:11px}.history-row:last-child{border-bottom:0}.history-present{color:#166534}.history-absent{color:#b91c1c}.history-leave{color:#a16207}@media(max-width:640px){.attendance-choice{flex-wrap:wrap}.history-row{grid-template-columns:1fr 1fr}.history-row small{grid-column:1/-1}}
.academic-mark{padding:9px 10px!important}.teacher-admin-only.hidden{display:none!important}
@media print{.portal-sidebar,.portal-topbar,.page-heading,.preview-note,#printResult{display:none!important}.portal-page.hidden{display:none!important}.portal-page[data-pageview="results"]{display:block!important}.portal-card{box-shadow:none;border:1px solid #ddd}}
@media(max-width:640px){.attendance-student{align-items:flex-start;flex-wrap:wrap}.attendance-student .attendance-choice{width:100%;margin-left:54px}.academic-mark{max-width:95px!important}}

/* Phase 7 — accessibility and interaction refinement */
html{scroll-behavior:smooth}::selection{background:#d9aa45;color:#102f24}button,a,input,select,textarea{transition:box-shadow .2s ease,border-color .2s ease,transform .2s ease}button:hover{transform:translateY(-1px)}:focus-visible{outline:3px solid rgba(217,170,69,.65);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
