@import"https://fonts.googleapis.com/css2?family=Sarabun:wght@300;400;500;600;700&display=swap";:root{font-family:Sarabun,sans-serif;color:#17345f;background:#f4f8ff;--blue:#0d6efd;--deep:#0645a5;--line:#dbe8fa}*{box-sizing:border-box}body{margin:0}.app{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:280px;background:linear-gradient(180deg,#075ac9,#063d91);color:#fff;padding:20px;display:flex;flex-direction:column;z-index:5}.brand,.identity{display:flex;flex-direction:column;align-items:center;text-align:center}.crest,.login-crest{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;background:#fff;color:#075ac9;font-weight:700;font-size:22px;margin-bottom:10px}.brand small,.identity small{opacity:.8}.identity{border-block:1px solid #ffffff33;margin:20px -4px;padding:14px 4px}.sidebar nav{display:grid;gap:5px;overflow:auto}.sidebar button{border:0;background:transparent;color:#fff;text-align:left;padding:10px 12px;border-radius:9px;font:inherit;cursor:pointer}.sidebar button.active,.sidebar button:hover{background:#ffffff25}.sidebar .logout{margin-top:auto;color:#ffe1e1}main{margin-left:280px;padding:28px;min-height:100vh}header{display:flex;justify-content:space-between;align-items:start;margin-bottom:25px}h1{font-size:25px;margin:0;color:#083d8c}header p{margin:4px 0;color:#6a7d99}.role{background:#e7f0ff;color:#0a55bc;border-radius:30px;padding:8px 15px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:20px}.stats article,.panel{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 5px 18px #154b9210}.stats article{padding:20px;display:flex;justify-content:space-between;align-items:center}.stats strong{font-size:32px;color:var(--blue)}.panel{padding:22px}.panel h2{margin-top:0}.toolbar{display:flex;justify-content:space-between;margin-bottom:18px}.toolbar button,.login button{border:0;background:var(--blue);color:#fff;padding:10px 20px;border-radius:8px;font:inherit}.search{padding:10px 14px;border:1px solid #cbdcf2;border-radius:8px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:12px;border-bottom:1px solid #e6eef9;text-align:left}th{background:#f4f8ff;color:#345778}.status{display:inline-block;padding:4px 10px;border-radius:20px}.status.pending{background:#fff3cd;color:#866300}.status.reviewed{background:#cff4fc;color:#075b6a}.status.approved{background:#d1e7dd;color:#0f5132}.status.revision{background:#f8d7da;color:#842029}.empty{text-align:center;color:#7c8ea7;padding:45px}.loading{position:fixed;right:25px;top:25px;background:#0d6efd;color:#fff;padding:10px 16px;border-radius:10px;z-index:20}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#e6f1ff,#f8fbff)}.login form{width:min(420px,92vw);background:#fff;padding:38px;border-radius:20px;box-shadow:0 18px 50px #0d4f9f28;text-align:center}.login-crest{background:#0d6efd;color:#fff;margin:0 auto}.login h1{margin:15px 0 3px}.login p{color:#6d7f99}.login label{display:block;text-align:left;margin-top:16px}.login input{width:100%;padding:12px;margin-top:6px;border:1px solid #c7d9f1;border-radius:8px}.login button{width:100%;margin-top:22px}.profile dl{display:grid;grid-template-columns:180px 1fr;gap:12px}.profile dt{font-weight:600}.bottom-nav{display:none}@media(max-width:900px){.sidebar{display:none}main{margin-left:0;padding:18px 14px 80px}.stats{grid-template-columns:repeat(2,1fr)}header{display:block}.role{display:inline-block;margin-top:8px}.bottom-nav{display:flex;position:fixed;bottom:0;inset-inline:0;background:#fff;border-top:1px solid var(--line);z-index:9;overflow:auto}.bottom-nav button{min-width:95px;flex:1;border:0;background:#fff;padding:12px 6px;color:#526c90}.bottom-nav button.active{color:#0d6efd;font-weight:700}.profile dl{grid-template-columns:1fr}}.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.profile-form label{display:block;margin:14px 0}.profile-form input{width:100%;padding:11px;margin-top:5px;border:1px solid #cbdcf2;border-radius:8px}.profile-form button{border:0;background:#0d6efd;color:#fff;padding:10px 20px;border-radius:8px;font:inherit}@media(max-width:900px){.profile-grid{grid-template-columns:1fr}}.presentation-form{margin-top:1rem}.presentation-form>label{display:flex;flex-direction:column;gap:.35rem;margin:.75rem 0;color:#344054}.presentation-form input[type=text],.presentation-form input:not([type]),.presentation-form textarea{padding:.7rem;border:1px solid #d0d5dd;border-radius:.5rem;font:inherit}.presentation-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin:1rem 0}.presentation-options label{display:flex;align-items:center;gap:.45rem}.presentation-options input{width:1.1rem;height:1.1rem}.presentation-form button{border:0;background:#0d6efd;color:#fff;padding:10px 20px;border-radius:8px;font:inherit}@media(max-width:600px){.presentation-options{grid-template-columns:1fr}}.teacher-headline{margin:.45rem 0 .15rem;color:#175cd3;font-weight:600}.teacher-detail{margin:.15rem 0 .65rem;color:#667085;font-size:.9rem;line-height:1.45}.toolbar-actions{display:flex;gap:10px;align-items:center}.import-button{display:inline-flex;align-items:center;background:#fff;color:#0d6efd;border:1px solid #0d6efd;padding:9px 15px;border-radius:8px;cursor:pointer;font-weight:600}@media(max-width:600px){.toolbar{gap:10px;align-items:stretch;flex-direction:column}.toolbar-actions{justify-content:flex-end}.search{width:100%}}.row-actions{display:flex;gap:.45rem;align-items:center;white-space:nowrap}.row-action{display:inline-flex;align-items:center;justify-content:center;border:1px solid #d0d5dd;border-radius:.5rem;background:#fff;color:#344054;padding:.42rem .65rem;font:inherit;font-size:.82rem;text-decoration:none;cursor:pointer}.row-action:hover{background:#f9fafb}.row-action.danger{border-color:#fecdca;color:#b42318}.row-action.danger:hover{background:#fef3f2}.primary-action{background:#155eef!important;color:#fff!important;border-color:#155eef!important}.swal-field{display:block;text-align:left;margin:.65rem 0;color:#344054;font-size:.9rem}.swal-field .swal2-input,.swal-field .swal2-select,.swal-field .swal2-file{box-sizing:border-box;width:100%;margin:.3rem 0 0;height:auto;min-height:2.7rem;font-size:.95rem}.swal-field .swal2-select{padding:.55rem}.swal-field .swal2-file{padding:.55rem;border:1px solid #d0d5dd;border-radius:.35rem}.score-list{max-height:46vh;overflow:auto;margin:1rem 0;border:1px solid #e4e7ec;border-radius:.55rem}.score-row{display:grid;grid-template-columns:1fr 95px;gap:.75rem;align-items:center;padding:.6rem .75rem;text-align:left;border-bottom:1px solid #eaecf0}.score-row:last-child{border-bottom:0}.score-row .swal2-select{width:80px;margin:0;padding:.35rem;font-size:.9rem}.row-action.review{border-color:#b2ccff;color:#175cd3;background:#eff4ff}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;text-align:left}.detail-grid div{padding:.7rem;background:#f9fafb;border-radius:.45rem}.detail-grid span{display:block;color:#667085;font-size:.8rem}.detail-grid strong{display:block;margin-top:.2rem;color:#101828}.detail-scores{width:100%;border-collapse:collapse}.detail-scores td{padding:.55rem .7rem;text-align:left;border-bottom:1px solid #eaecf0}.detail-scores td:last-child{text-align:center;width:90px}.row-action.record{border-color:#a6f4c5;color:#067647;background:#ecfdf3}.record-form{max-height:62vh;overflow:auto;padding-right:.35rem}.record-form .swal2-textarea{box-sizing:border-box;width:100%;margin:.3rem 0 0;min-height:75px;font-size:.92rem}.record-activity{margin:0 0 1rem;padding:.75rem;border:1px solid #d0d5dd;border-radius:.55rem}.record-activity legend{padding:0 .35rem;color:#175cd3;font-weight:700;font-size:.95rem}.project-activities{width:100%;border-collapse:collapse}.project-activities th,.project-activities td{padding:.6rem;text-align:left;border-bottom:1px solid #eaecf0}.project-activities th{background:#f9fafb;font-size:.82rem}.project-activities td:nth-child(n+3):nth-child(-n+5){text-align:right}.check-field{display:flex;align-items:center;gap:.55rem;margin:.85rem 0;text-align:left;color:#344054}.check-field input{width:1.1rem;height:1.1rem}.list-toolbar{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.list-toolbar>select{min-height:2.5rem;border:1px solid #d0d5dd;border-radius:.45rem;background:#fff;padding:.45rem .65rem;color:#344054}.list-toolbar .toolbar-actions{margin-left:auto}.result-count{margin:.2rem 0 .8rem;color:#667085;font-size:.85rem}@media(max-width:760px){.list-toolbar>*{width:100%}.list-toolbar .toolbar-actions{margin-left:0;display:flex;flex-wrap:wrap}.list-toolbar .toolbar-actions>*{flex:1}.detail-grid{grid-template-columns:1fr}}.form-section{text-align:left;margin:1.2rem 0 .5rem;color:#175cd3;font-size:1rem}.record-form .swal-field .swal2-textarea{width:100%;box-sizing:border-box;margin:.3rem 0 0;min-height:72px;font-size:.92rem}.visit-edit-row{display:grid;grid-template-columns:minmax(240px,1fr) 80px minmax(150px,.6fr);gap:.55rem;align-items:center;padding:.55rem .7rem;border-bottom:1px solid #eaecf0;text-align:left}.visit-edit-row .swal2-select,.visit-edit-row .swal2-input{width:100%;box-sizing:border-box;margin:0;padding:.4rem;font-size:.88rem}@media(max-width:700px){.visit-edit-row{grid-template-columns:1fr 70px}.visit-edit-row .swal2-input{grid-column:1/-1}}.file-hint{text-align:left;margin:-.35rem 0 .75rem;color:#667085;font-size:.82rem}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.dashboard-actions,.grade-summary,.teacher-progress{display:grid;gap:.65rem}.dashboard-actions>button,.grade-summary>div,.teacher-progress>div{padding:.75rem;border:1px solid #eaecf0;border-radius:.55rem;background:#fff}.dashboard-actions>button{text-align:left;font:inherit;cursor:pointer}.dashboard-actions>button:hover{border-color:#84adff;background:#f5f8ff}.dashboard-actions span,.dashboard-actions small,.grade-summary span,.grade-summary small,.teacher-progress small{display:block;color:#667085;margin-top:.2rem}.dashboard-actions small{color:#b54708}.grade-summary>div{display:grid;grid-template-columns:1fr auto}.grade-summary small{grid-column:1/-1}.more-actions{display:block;width:100%;margin-top:.65rem;text-align:center;color:#175cd3;background:#fff;border:1px solid #b2ccff;border-radius:.45rem;padding:.55rem;cursor:pointer}.teacher-progress-head{display:flex;justify-content:space-between;gap:1rem}.progress-track{height:8px;margin:.5rem 0;background:#eaecf0;border-radius:10px;overflow:hidden}.progress-track span{display:block;height:100%;background:#1570ef;border-radius:10px}@media(max-width:850px){.dashboard-grid{grid-template-columns:1fr}}
