/* 한국성서대학교 모바일 (kbuMobile 임시 대체) — granary AccessLog.aspx 구성을 따르고, 색은 라벤더 계열(헤더·버튼 #5E4FB0, 제목 #4A3D99, 배경 #F5F3FC) */
/* 글꼴: Noto Sans KR (Google Fonts, master/mobile.master에서 불러옴) */

* {box-sizing:border-box;}
body {display:flex; flex-direction:column; min-height:100vh; margin:0; background:#F5F3FC; color:#222; font-family:'Noto Sans KR','Malgun Gothic','Apple SD Gothic Neo',sans-serif; font-size:15px; line-height:1.5; -webkit-text-size-adjust:100%;}
a {color:inherit;}
.blind {position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0);}

/* 상단 헤더 */
.m_header {position:sticky; top:0; z-index:10; display:flex; align-items:center; justify-content:center; height:52px; background:#5E4FB0;}
.m_header .logo img {display:block; width:170px;}
.m_header .back {position:absolute; left:4px; top:4px; width:44px; height:44px; border:0; background:none; cursor:pointer;}
.m_header .back::before {content:''; position:absolute; left:18px; top:16px; width:11px; height:11px; border-left:2px solid #fff; border-bottom:2px solid #fff; transform:rotate(45deg);}

/* 하단 탭 메뉴 */
.m_nav {position:sticky; bottom:0; z-index:10; background:#fff; border-top:1px solid #E2DDF5; padding-bottom:env(safe-area-inset-bottom);}
.m_nav ul {display:flex; margin:0; padding:0; list-style:none;}
.m_nav li {flex:1;}
.m_nav a {display:flex; flex-direction:column; align-items:center; gap:2px; padding:7px 0 6px; color:#666; font-size:12px; text-decoration:none;}
.m_nav a.on {color:#5E4FB0; font-weight:700;}
.m_nav svg {width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round;}

/* 본문 */
.m_wrap {flex:1; width:100%; max-width:620px; margin:0 auto; padding:16px 16px 28px;}
.m_wrap h1 {margin:4px 0 14px; color:#4A3D99; font-size:20px;}
.m_wrap h2 {margin:0 0 10px; color:#4A3D99; font-size:17px;}

.m_card {margin-bottom:14px; background:#fff; border:1px solid #E2DDF5; border-radius:8px; padding:18px;}
.m_empty {margin:0; color:#888; text-align:center;}
.m_help {margin:0 0 14px; color:#666; font-size:13px;}

.m_field {margin-bottom:14px;}
.m_field label {display:block; margin-bottom:5px; font-weight:700;}
.m_field input[type=text], .m_field input[type=password], .m_field input[type=tel], .m_field input[type=email], .m_field select, .m_field textarea {width:100%; padding:11px 10px; border:1px solid #CFC8EA; border-radius:4px; background:#fff; font:inherit; font-size:16px;}
.m_check {display:flex; align-items:center; gap:6px; margin-bottom:14px; font-size:14px;}

.m_btn {display:block; width:100%; margin-bottom:8px; padding:13px; border:0; border-radius:4px; background:#5E4FB0; color:#fff; font:inherit; font-size:16px; font-weight:700; text-align:center; text-decoration:none; cursor:pointer;}
.m_btn:hover {background:#4A3D99;}
.m_btn_sub {background:#fff; color:#5E4FB0; border:1px solid #5E4FB0;}
.m_btn_sub:hover {background:#EEEAFB;}
.m_btn_small {display:inline-block; width:auto; margin:0; padding:7px 14px; font-size:13px;}

.m_message {display:block; margin-bottom:14px; padding:12px; border-radius:4px; background:#e8f3ec; color:#0e6c2d;}
.m_error {background:#fbeaea; color:#b3261e;}

/* 로그인 */
.m_login {padding-top:28px;}
.m_login h1 {text-align:center;}
.m_login .m_foot_note {margin:14px 0 0; color:#888; font-size:12px; text-align:center;}

/* 사용자 정보 */
.m_profile {display:flex; align-items:center; gap:14px;}
.m_profile .photo {flex:none; width:72px; height:92px; border-radius:6px; background:#EEEAFB; object-fit:cover;}
.m_profile .info {flex:1; min-width:0;}
.m_profile .name {margin:0 0 2px; font-size:19px; font-weight:700;}
.m_profile .sub {margin:0; color:#666; font-size:13px;}
.m_profile form {margin-top:8px;}

/* 바로가기 */
.m_shortcut {display:grid; grid-template-columns:repeat(4, 1fr); gap:8px; margin:0 0 14px; padding:0; list-style:none;}
.m_shortcut a {display:flex; align-items:center; justify-content:center; min-height:64px; padding:8px 4px; background:#fff; border:1px solid #E2DDF5; border-radius:8px; color:#4A3D99; font-size:13px; font-weight:700; text-align:center; text-decoration:none; word-break:keep-all;}
.m_shortcut a.disabled {color:#aaa;}

/* 오늘의 강의 */
.m_today {margin:0 0 10px; color:#666; font-size:13px;}
.m_lectures {margin:0; padding:0; list-style:none;}
.m_lectures li {display:flex; gap:12px; padding:10px 0; border-top:1px solid #ECE8F8;}
.m_lectures li:first-child {border-top:0;}
.m_lectures .time {flex:none; width:52px; color:#5E4FB0; font-weight:700;}
.m_lectures .subject {font-weight:700;}
.m_lectures .room {color:#666; font-size:13px;}

/* 전체 메뉴 */
.m_menu {margin:0; padding:0; list-style:none; background:#fff; border:1px solid #E2DDF5; border-radius:8px; overflow:hidden;}
.m_menu > li + li {border-top:1px solid #ECE8F8;}
.m_menu details summary {display:flex; justify-content:space-between; align-items:center; padding:15px 18px; font-weight:700; cursor:pointer; list-style:none;}
.m_menu details summary::-webkit-details-marker {display:none;}
.m_menu details summary::after {content:''; width:8px; height:8px; border-right:2px solid #888; border-bottom:2px solid #888; transform:rotate(45deg); transition:transform .15s;}
.m_menu details[open] summary {color:#5E4FB0;}
.m_menu details[open] summary::after {transform:rotate(-135deg);}
.m_menu ul {margin:0; padding:0 0 8px; list-style:none; background:#F8F6FD;}
.m_menu ul a, .m_menu ul span {display:block; padding:11px 18px 11px 30px; text-decoration:none;}
.m_menu ul span {color:#aaa;}
.m_menu ul span small {margin-left:6px; font-size:11px;}

/* 설정 */
.m_list {margin:0; padding:0; list-style:none; background:#fff; border:1px solid #E2DDF5; border-radius:8px;}
.m_list li + li {border-top:1px solid #ECE8F8;}
.m_list a, .m_list span {display:flex; justify-content:space-between; padding:15px 18px; text-decoration:none;}
.m_list .value {color:#888; font-size:13px;}

/* 표 (조회 화면 공통) */
.m_table {width:100%; border-collapse:collapse; font-size:14px;}
.m_table th, .m_table td {padding:8px 6px; border-bottom:1px solid #ECE8F8; text-align:left; vertical-align:top;}
.m_table th {background:#F5F3FC; white-space:nowrap;}
.m_dl {margin:0;}
.m_dl dt {color:#666; font-size:13px;}
.m_dl dd {margin:0 0 10px; font-weight:700;}

/* 조회 화면 공통 (StudentMng · GradeMng) */
.m_term {margin:0 0 14px;}
.m_term select, .m_filter select {width:100%; padding:11px 10px; border:1px solid #CFC8EA; border-radius:4px; background:#fff; color:#4A3D99; font:inherit; font-size:16px; font-weight:700;}
.m_filter {display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:0 0 14px;}
.m_filter .wide {grid-column:1 / -1;}
.m_scroll {overflow-x:auto; -webkit-overflow-scrolling:touch;}
.m_table td.num, .m_table th.num {text-align:right; white-space:nowrap;}
.m_table td.center, .m_table th.center {text-align:center;}
.m_table tr.sub td, .m_table tr.sub th {background:#F8F6FD; font-weight:700;}
.m_table tfoot td, .m_table tfoot th {border-top:2px solid #E2DDF5; font-weight:700;}
.m_card h2 + .m_scroll, .m_card h2 + .m_table {margin-top:4px;}
.m_notes {margin:0 0 14px; padding-left:18px; color:#666; font-size:13px;}
.m_notes li {margin-bottom:3px;}
.m_stats {display:grid; grid-template-columns:repeat(2, 1fr); gap:8px; margin:0 0 14px;}
.m_stats div {padding:12px; background:#fff; border:1px solid #E2DDF5; border-radius:8px;}
.m_stats dt {color:#666; font-size:12px;}
.m_stats dd {margin:2px 0 0; color:#4A3D99; font-size:18px; font-weight:700;}
.m_badge {display:inline-block; padding:2px 8px; border-radius:10px; background:#EEEAFB; color:#4A3D99; font-size:12px; font-weight:700; white-space:nowrap;}
.m_badge.ok {background:#e8f3ec; color:#0e6c2d;}
.m_badge.warn {background:#fdf3dc; color:#8a5a00;}
.m_badge.bad {background:#fbeaea; color:#b3261e;}
.m_link {color:#5E4FB0; font-weight:700; text-decoration:none;}
.m_actions {display:flex; gap:8px;}
.m_actions .m_btn {flex:1;}

/* 강의시간표 */
.m_timetable {width:100%; border-collapse:collapse; table-layout:fixed; font-size:12px;}
.m_timetable th {padding:6px 2px; background:#F5F3FC; color:#4A3D99;}
.m_timetable td {height:40px; padding:2px; border:1px solid #ECE8F8; vertical-align:top;}
.m_timetable .lec {margin-bottom:2px; padding:4px; border-radius:4px; background:#EEEAFB; color:#4A3D99; word-break:keep-all;}
.m_timetable .lec b {display:block; font-size:12px;}
.m_timetable .lec span {display:block; color:#666; font-size:11px;}

/* 채플 출석률 */
.m_donut {position:relative; width:160px; height:160px; margin:6px auto 12px; border-radius:50%;}
.m_donut::after {content:''; position:absolute; inset:22px; border-radius:50%; background:#fff;}
.m_donut span {position:absolute; inset:0; z-index:1; display:flex; flex-direction:column; align-items:center; justify-content:center; font-size:22px; font-weight:700;}
.m_donut span small {color:#666; font-size:12px; font-weight:400;}

/* 수업평가 문항 */
.m_question {padding:12px 0; border-top:1px solid #ECE8F8;}
.m_question:first-of-type {border-top:0;}
.m_question p {margin:0 0 8px;}
.m_scale {display:flex; justify-content:space-between; gap:4px;}
.m_scale label {flex:1; padding:8px 0; border:1px solid #CFC8EA; border-radius:4px; text-align:center; cursor:pointer;}
.m_scale input {position:absolute; opacity:0;}
.m_scale input:checked + span {color:#fff;}
.m_scale label:has(input:checked) {background:#5E4FB0; border-color:#5E4FB0; color:#fff;}

/* 모바일 학생증 */
.m_idcard {overflow:hidden; margin:4px 0 12px; background:#fff; border:1px solid #E2DDF5; border-radius:12px;}
.m_idcard_head {padding:12px 16px; background:#5E4FB0; color:#fff; font-size:12px; font-weight:700; letter-spacing:.5px;}
.m_idcard_body {display:flex; gap:16px; align-items:center; padding:18px 16px;}
.m_idcard_body .photo {flex:none; width:96px; height:124px; border-radius:6px; background:#EEEAFB; object-fit:cover;}
.m_idcard_body p {margin:0 0 4px;}
.m_idcard_body .name {font-size:22px; font-weight:700;}
.m_idcard_body .no {color:#4A3D99; font-size:18px; font-weight:700;}
.m_idcard_body .sub {color:#666; font-size:13px;}
.m_idcard_qr {display:flex; justify-content:center; padding:4px 0 20px;}
.m_idcard_qr img, .m_idcard_qr canvas {padding:8px; background:#fff;}

/* 공지사항 */
.m_board {margin:0; padding:0; list-style:none;}
.m_board li {border-top:1px solid #ECE8F8;}
.m_board li:first-child {border-top:0;}
.m_board a {display:block; padding:12px 0; text-decoration:none;}
.m_board .title {display:block; font-weight:700; word-break:break-all;}
.m_board .meta {color:#888; font-size:12px;}
.m_search {display:grid; grid-template-columns:90px 1fr auto; gap:6px; margin:0 0 14px;}
.m_search select, .m_search input {padding:10px 8px; border:1px solid #CFC8EA; border-radius:4px; background:#fff; font:inherit; font-size:15px; min-width:0;}
.m_pager {display:flex; justify-content:center; gap:6px; margin:4px 0 14px;}
.m_pager a, .m_pager span {min-width:36px; padding:7px 10px; border:1px solid #E2DDF5; border-radius:4px; background:#fff; text-align:center; text-decoration:none;}
.m_pager span {background:#5E4FB0; border-color:#5E4FB0; color:#fff; font-weight:700;}
.m_content {overflow-x:auto; word-break:break-word;}
.m_content img {max-width:100%; height:auto;}
.m_content table {max-width:100%;}

/* 학생식당 메뉴 */
.m_meal h2 {display:flex; justify-content:space-between; align-items:center;}
.m_meal.today {border:2px solid #5E4FB0;}
.m_meal .cols {display:grid; grid-template-columns:1fr 1fr; gap:12px;}
.m_meal h3 {margin:0 0 4px; color:#5E4FB0; font-size:13px;}
.m_meal ul {margin:0; padding:0; list-style:none; font-size:14px;}

/* footer */
.m_footer {padding:18px 16px; background:#2B2545; color:#aeaeae; font-size:12px; text-align:center;}
.m_footer p {margin:0 0 6px;}
.m_footer p:last-child {margin-bottom:0;}
.m_footer a {color:#fce365;}
.m_footer .col {display:inline-block;}
.m_footer .point {color:#fff;}
