html,body.bdhv-portal-body{margin:0!important;background:#f4f6f8}.bdhv-portal-body{font-family:"Noto Sans Thai",Tahoma,sans-serif;color:#263442}.bdhv-portal{--portal-primary:#c95f2a;min-height:100vh;display:flex;flex-direction:column}.portal-header{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:76px;padding:10px max(22px,calc((100vw - 1180px)/2));background:#fff;border-bottom:1px solid #dfe5ea;box-shadow:0 3px 18px #2132420d}.portal-brand{display:flex;align-items:center;gap:12px;color:#213242;text-decoration:none}.portal-brand img,.portal-logo-fallback{width:54px;height:54px;object-fit:contain;border-radius:50%}.portal-logo-fallback{display:grid;place-items:center;background:var(--portal-primary);color:#fff;font-weight:900}.portal-brand strong,.portal-brand small{display:block}.portal-brand strong{font-size:20px}.portal-brand small{color:#697986}.portal-header nav{display:flex;align-items:center;gap:8px}.portal-header nav a{padding:9px 12px;border-radius:9px;color:#435563;text-decoration:none;font-weight:650}.portal-header nav a:hover{background:#f1f4f6}.portal-header .portal-login{background:#263f59;color:#fff}.portal-main{flex:1;width:min(1180px,calc(100% - 28px));margin:24px auto 45px}.portal-footer{display:flex;justify-content:space-between;gap:16px;padding:20px max(22px,calc((100vw - 1180px)/2));background:#223445;color:#dce5ec;font-size:13px}.portal-footer strong{color:#fff}.portal-welcome{position:relative;overflow:hidden;min-height:250px;display:flex;align-items:center;padding:40px 48px;border-radius:24px;background:linear-gradient(135deg,#213c58,#315d7c);color:#fff}.portal-welcome.has-banner{background:linear-gradient(90deg,#142d45e8,#234962c7),var(--portal-banner) center/cover}.portal-welcome>div{max-width:720px}.portal-eyebrow,.portal-section-title>span,.portal-panel-head span,.portal-form-title>span,.portal-dashboard-head>div>span,.portal-auth-intro>span{display:inline-block;color:#f2aa74;font-weight:800;letter-spacing:.03em}.portal-welcome h1{margin:8px 0;font-size:clamp(30px,5vw,50px);line-height:1.15}.portal-welcome p{max-width:620px;margin:10px 0 0;font-size:18px;color:#e8f0f5}.portal-section{padding:34px 0}.portal-section-title{text-align:center;margin-bottom:20px}.portal-section-title h2{margin:5px 0;font-size:28px}.portal-role-grid{display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:16px}.portal-role-card{display:flex;gap:17px;min-height:205px;padding:24px;border:1px solid #dbe3e8;border-radius:20px;background:#fff;color:#263442;text-decoration:none;box-shadow:0 10px 30px #2634420d;transition:.2s}.portal-role-card:hover{transform:translateY(-3px);border-color:#9fb2c1;box-shadow:0 15px 35px #26344219}.portal-role-card.is-parent{border-top:5px solid var(--portal-primary);background:linear-gradient(160deg,#fff,#fff8f2)}.portal-role-icon{display:grid;place-items:center;flex:0 0 48px;height:48px;border-radius:14px;background:#eaf0f5;color:#264862;font-size:27px;font-weight:900}.is-parent .portal-role-icon{background:#ffe7d6;color:#a94717}.portal-role-card small{color:#6e7d88}.portal-role-card h3{margin:4px 0 7px;font-size:21px}.portal-role-card p{margin:0 0 14px;color:#667784}.portal-role-card b{color:var(--portal-primary)}.portal-info-strip{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #dce3e7;border-radius:18px;background:#fff}.portal-info-strip div{padding:18px 22px}.portal-info-strip div+div{border-left:1px solid #e1e6e9}.portal-info-strip strong,.portal-info-strip span{display:block}.portal-info-strip span{font-size:13px;color:#6a7984}.portal-auth{display:grid;grid-template-columns:.85fr 1.15fr;gap:32px;max-width:980px;margin:45px auto}.portal-auth-intro{padding:34px;color:#fff;border-radius:24px;background:linear-gradient(145deg,#213b55,#2c5e78)}.portal-auth-intro h1{font-size:34px;margin:7px 0}.portal-auth-intro p,.portal-auth-intro li{color:#dce7ee}.portal-auth-card{padding:30px;border:1px solid #dce3e8;border-radius:24px;background:#fff;box-shadow:0 16px 45px #24384a14}.portal-auth-card h2{margin:0;font-size:27px}.portal-auth-card>p{color:#667784}.portal-auth-card label,.portal-student-form label,.portal-inline-form label{display:block;margin:0 0 15px;font-weight:700}.portal-auth-card input,.portal-auth-card select,.portal-student-form input,.portal-student-form select,.portal-inline-form select{display:block;width:100%;min-height:48px;margin-top:6px;padding:9px 12px;border:1px solid #bfcbd3;border-radius:10px;background:#fff;font:inherit}.portal-login-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:18px 0}.portal-login-tabs button{min-height:44px;border:1px solid #cbd5dc;border-radius:10px;background:#f3f6f8;font:inherit;font-weight:700;cursor:pointer}.portal-login-tabs button.is-active{border-color:var(--portal-primary);background:#fff0e5;color:#9c451d}.portal-password{display:flex;align-items:stretch}.portal-password input{margin-right:-1px;border-radius:10px 0 0 10px}.portal-password button{margin-top:6px;padding:0 12px;border:1px solid #bfcbd3;border-radius:0 10px 10px 0;background:#eef3f6;cursor:pointer}.portal-remember{display:flex!important;align-items:center;gap:8px;font-weight:500!important}.portal-remember input{width:20px!important;min-height:20px!important;margin:0!important}.portal-primary-button,.portal-secondary-button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:9px 18px;border:0;border-radius:11px;background:var(--portal-primary);color:#fff!important;font:inherit;font-weight:800;text-decoration:none;cursor:pointer}.portal-secondary-button{border:1px solid #aebdc7;background:#fff;color:#314b60!important}.portal-auth-card .portal-primary-button{width:100%}.portal-text-link{display:block;margin-top:17px;text-align:center;color:#315d7b}.portal-alert-error,.portal-alert-success{padding:13px 16px;margin-bottom:16px;border-radius:11px;background:#fff0ee;color:#a6251d;font-weight:700}.portal-alert-success{background:#eaf8ef;color:#17623c}.portal-dashboard-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:24px 0}.portal-dashboard-head h1{margin:3px 0;font-size:30px}.portal-dashboard-head p{margin:0;color:#667784}.portal-dashboard-actions{display:flex;gap:9px;flex-wrap:wrap}.portal-stat-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin:20px 0}.portal-stat-grid>div{padding:18px;border:1px solid #dce3e8;border-radius:16px;background:#fff}.portal-stat-grid span,.portal-stat-grid b{display:block}.portal-stat-grid span{color:#697985;font-size:13px}.portal-stat-grid b{font-size:31px;color:#203d55}.portal-stat-grid .is-warning b{color:#9a6208}.portal-stat-grid .is-risk b{color:#b02f49}.portal-panel{margin:18px 0;padding:22px;border:1px solid #dce3e8;border-radius:18px;background:#fff}.portal-panel-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:15px}.portal-panel-head h2{margin:2px 0}.portal-panel-head small{color:#697985}.portal-table-wrap{overflow:auto}.portal-table{width:100%;border-collapse:collapse;min-width:690px}.portal-table th,.portal-table td{padding:11px 9px;border-bottom:1px solid #e3e8eb;text-align:left;vertical-align:middle}.portal-table th{background:#f3f6f8;color:#4d606d;font-size:13px}.portal-mini-progress{display:inline-block;width:70px;height:7px;margin-right:7px;border-radius:99px;background:#e1e7eb;overflow:hidden}.portal-mini-progress i{display:block;height:100%;background:#2f7a60}.portal-student-name{display:flex;align-items:center;gap:10px}.portal-student-name img,.portal-student-name>span{width:40px;height:40px;border-radius:50%;object-fit:cover}.portal-student-name>span{display:grid;place-items:center;background:#e7eef3;color:#31536a;font-weight:800}.portal-student-name strong,.portal-student-name small{display:block}.portal-student-name small{color:#75838d}.portal-status,.portal-risk-badge{display:inline-block;padding:4px 9px;border-radius:99px;background:#edf2f5;font-size:12px;font-weight:800}.portal-status.is-reviewed{background:#e6f6ec;color:#17633c}.portal-status.is-changes_requested,.portal-risk-badge{background:#fff0e7;color:#9a451c}.portal-status.is-missing{background:#f1f3f5;color:#6c7780}.portal-row-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.portal-row-actions a,.portal-row-actions button{color:#275c7b;font-weight:700}.portal-row-actions form{display:flex;gap:4px}.portal-row-actions select,.portal-row-actions button{min-height:31px;border:1px solid #bbc7cf;border-radius:7px;background:#fff}.portal-invite-result{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:17px;border:2px solid #d9a45d;border-radius:14px;background:#fff8e9}.portal-invite-result code{padding:6px 12px;border-radius:7px;background:#213b55;color:#fff;font-size:20px;letter-spacing:.15em}.portal-invite-result span{color:#725a39}.portal-inline-form{display:flex;align-items:end;gap:10px}.portal-inline-form label{margin:0}.portal-form-page{max-width:960px;margin:25px auto}.portal-form-title>a{float:right;color:#315d7b}.portal-form-title h1{margin:4px 0}.portal-form-title p{color:#687985}.portal-student-form{display:grid;grid-template-columns:210px 1fr;gap:26px;padding:25px;border:1px solid #dce3e8;border-radius:20px;background:#fff}.portal-photo-field{text-align:center}.portal-photo-field img,.portal-photo-field>span{display:grid;place-items:center;width:160px;height:200px;margin:0 auto 13px;border-radius:14px;object-fit:cover;background:#edf1f4;color:#788690}.portal-photo-field label{padding:9px;border-radius:10px;background:#eef3f6;color:#304f63;cursor:pointer}.portal-photo-field input{display:none}.portal-photo-field small{color:#75838d}.portal-identity-state{margin:10px 0 18px;padding:12px;border-radius:10px;background:#f1f5f7}.portal-main>.bdhv-app{margin-top:0}.portal-main>.bdhv-app>.bdhv-hero{display:none}
.portal-reason-list{margin:7px 0 0;padding-left:18px;color:#74402c;font-size:12px;line-height:1.55}.portal-reason-list li+li{margin-top:2px}.portal-map-link{white-space:nowrap;font-weight:800;color:var(--portal-primary)}
@media(max-width:850px){.portal-header{position:relative;padding:10px 14px}.portal-brand strong{font-size:16px}.portal-brand small{font-size:11px}.portal-header nav>a:not(.portal-login){display:none}.portal-main{width:min(100% - 18px,1180px);margin-top:12px}.portal-welcome{min-height:210px;padding:28px 24px}.portal-role-grid,.portal-info-strip,.portal-auth{grid-template-columns:1fr}.portal-role-card{min-height:0}.portal-info-strip div+div{border-left:0;border-top:1px solid #e1e6e9}.portal-auth{margin:15px auto}.portal-auth-intro{padding:24px}.portal-stat-grid{grid-template-columns:repeat(2,1fr)}.portal-dashboard-head,.portal-panel-head{align-items:flex-start;flex-direction:column}.portal-student-form{grid-template-columns:1fr}.portal-footer{flex-direction:column;padding:18px}.portal-login-tabs{grid-template-columns:1fr}.portal-inline-form{align-items:stretch;flex-direction:column}.portal-form-title>a{float:none;display:block;margin-bottom:10px}}

/* 0.8.1: หน้าหลักสำหรับผู้ปกครอง */
body.bdhv-portal-body{background:#fffaf6}.portal-header .portal-login{background:var(--portal-primary)}.portal-footer{background:#744126}.portal-auth-intro{background:linear-gradient(145deg,#bd5526,#e48146)}
.portal-parent-home{position:relative;overflow:hidden;display:grid;grid-template-columns:.9fr 1.1fr;align-items:center;gap:42px;min-height:440px;padding:54px;border:1px solid #f1c8ad;border-radius:28px;background:linear-gradient(135deg,#fff8f2 0%,#ffe5d2 100%);box-shadow:0 18px 50px #9b4c1a12}.portal-parent-home:after{content:"";position:absolute;right:-85px;bottom:-120px;width:330px;height:330px;border-radius:50%;background:#f4a56b2b}.portal-parent-home.has-banner{background:linear-gradient(90deg,#fff8f2f5 0%,#ffe4d0e8 60%,#ffe4d0b8),var(--portal-banner) center/cover}.portal-parent-copy,.portal-parent-actions{position:relative;z-index:1}.portal-parent-copy>span{display:inline-block;padding:7px 12px;border-radius:999px;background:#fff;color:#a8451e;font-weight:800}.portal-parent-copy h1{margin:14px 0 9px;color:#4b2d20;font-size:clamp(34px,5vw,52px);line-height:1.16}.portal-parent-copy p{margin:0;color:#7a594a;font-size:18px}.portal-parent-actions{display:grid;gap:16px}.portal-parent-action{display:grid;grid-template-columns:56px 1fr 28px;align-items:center;gap:16px;min-height:112px;padding:20px 22px;border:2px solid #efb88f;border-radius:20px;background:#fff;color:#54372a;text-decoration:none;box-shadow:0 10px 25px #a24c1712;transition:.18s}.portal-parent-action:hover{transform:translateY(-2px);border-color:var(--portal-primary);box-shadow:0 14px 30px #a24c1722}.portal-parent-action i{display:grid;place-items:center;width:56px;height:56px;border-radius:16px;background:#ffe5d3;color:#b94d1d;font-size:30px;font-style:normal;font-weight:800}.portal-parent-action strong,.portal-parent-action small{display:block}.portal-parent-action strong{font-size:22px}.portal-parent-action small{margin-top:4px;color:#80675b}.portal-parent-action b{color:var(--portal-primary);font-size:35px}.portal-parent-action.is-new{border-color:#df7138;background:#fffdfb}.portal-parent-action.is-new i{background:var(--portal-primary);color:#fff}
@media(max-width:850px){.portal-parent-home{grid-template-columns:1fr;gap:27px;min-height:0;padding:28px 20px}.portal-parent-copy h1{font-size:34px}.portal-parent-action{grid-template-columns:50px 1fr 20px;min-height:96px;padding:16px}.portal-parent-action i{width:50px;height:50px}.portal-parent-action strong{font-size:19px}.portal-parent-action small{font-size:12px}}

/* 0.8.2: ศูนย์ทดสอบระบบ */
.portal-test-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:24px 0}.portal-test-head span{color:var(--portal-primary);font-weight:800}.portal-test-head h1{margin:3px 0;font-size:32px}.portal-test-head p{margin:0;color:#667784}.portal-demo-banner{margin:16px 0;padding:14px 17px;border:1px solid #edbd94;border-radius:13px;background:#fff6ed;color:#754124}.portal-test-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.portal-test-card{display:flex;flex-direction:column;align-items:flex-start;padding:24px;border:1px solid #dce3e8;border-radius:18px;background:#fff;box-shadow:0 10px 25px #2634420d}.portal-test-card>span{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:#eaf0f5;color:#27465c;font-weight:900}.portal-test-card.is-parent{border-top:4px solid var(--portal-primary);background:#fffaf6}.portal-test-card.is-parent>span{background:#ffe5d3;color:#a94717}.portal-test-card h2{margin:11px 0 4px}.portal-test-card p{flex:1;margin:0 0 18px;color:#667784}.portal-demo-photos{display:grid;grid-template-columns:1fr 1fr;gap:18px}.portal-demo-photos figure{margin:0}.portal-demo-photos img{display:block;width:100%;height:245px;border-radius:14px;object-fit:cover}.portal-demo-photos figcaption{margin-top:7px;text-align:center;font-weight:800}.portal-test-stats{margin-top:10px}.portal-test-photo-panel{margin-top:22px}
@media(max-width:850px){.portal-test-head{align-items:flex-start;flex-direction:column}.portal-test-grid,.portal-demo-photos{grid-template-columns:1fr}.portal-demo-photos img{height:210px}}

/* 0.8.7: จำนวนนักเรียนประจำห้องและไอคอนนักเรียน */
.portal-class-size{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:14px 0;padding:16px 18px;border:1px solid #ffd0b9;border-radius:15px;background:#fff8f3}.portal-class-size strong,.portal-class-size span{display:block}.portal-class-size span{margin-top:3px;color:#6e7c86;font-size:13px}.portal-class-size form{display:flex;gap:8px}.portal-class-size input{width:105px;min-height:44px;padding:8px 11px;border:1px solid #bbc8d0;border-radius:9px;font:inherit}.portal-student-icon{display:grid!important;place-items:center;width:42px!important;height:42px!important;border-radius:50%;background:#e2f2ff!important;color:#2782bd!important}.portal-student-icon.is-girl{background:#ffe4ef!important;color:#d85a91!important}.portal-student-icon svg{width:31px;height:31px;fill:currentColor}.portal-student-icon .portal-student-hair{fill:#21465e}.portal-student-icon.is-girl .portal-student-hair{fill:#8d3a62}
@media(max-width:850px){.portal-class-size{align-items:stretch;flex-direction:column}.portal-class-size form{width:100%}.portal-class-size input{flex:1;width:auto}}
.portal-real-test ol{padding-left:22px;line-height:1.8}.portal-real-test label{display:block;margin:16px 0;font-weight:500}.portal-real-test input{display:block;width:100%;min-height:46px;margin-top:6px;padding:9px 12px;border:1px solid #bbc8d0;border-radius:9px;background:#f8fafb;font:inherit}.portal-real-test-note{margin-top:16px;padding:11px 14px;border-radius:10px;background:#fff5ec;color:#74452d}

/* 0.8.7: เครื่องมือครูแบบลดขั้นตอน */
.portal-student-name img,.portal-photo-field img{object-fit:cover;object-position:center 20%}
.portal-class-size .portal-teacher-names input{width:210px}
.portal-stat-grid{grid-template-columns:repeat(4,1fr)}.portal-action-link{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border:1px solid #c8d3da;border-radius:8px;background:#fff;text-decoration:none}.portal-action-link:hover{border-color:var(--portal-primary);background:#fff6f0}.portal-action-link>span{font-size:17px;color:var(--portal-primary)}.portal-photo-remove{display:flex!important;align-items:center;justify-content:center;gap:7px;margin-top:9px!important;background:#fff4eb!important;color:#824522!important}.portal-photo-remove input{display:inline-block!important;width:18px!important;min-height:18px!important;margin:0!important;padding:0!important}.portal-missing-numbers{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin:14px 0;padding:15px 18px;border:1px solid #f0c478;border-radius:14px;background:#fff9e8}.portal-missing-numbers strong{color:#83540a}.portal-missing-numbers span{font-weight:800;color:#374955}.portal-missing-numbers small{color:#7a6b4d}

/* 0.8.8: เครื่องมือครู รูปตัวอย่าง และปุ่มขนาดสม่ำเสมอ */
.portal-student-table .portal-row-actions{display:grid;grid-template-columns:repeat(2,minmax(185px,1fr));align-items:stretch;gap:8px;min-width:390px}
.portal-student-table .portal-action-link{width:100%;min-height:40px;justify-content:flex-start;padding:7px 11px;font-size:14px}
.portal-delete-student{display:block!important;margin:0}.portal-action-link.is-danger{color:#a32828!important;border-color:#e7bcbc!important;background:#fff8f8!important;cursor:pointer}.portal-action-link.is-danger>span{color:#b52f2f}
.portal-photo-status{display:block;margin:8px 0;padding:8px;border-radius:9px;background:#eaf7ef;color:#236240;font-size:13px}
.portal-test-card .portal-primary-button{width:100%;margin-top:auto}
.portal-test-card{height:100%}.portal-test-grid{align-items:stretch}
@media(max-width:850px){.portal-student-table .portal-row-actions{grid-template-columns:1fr;min-width:210px}}
@media(max-width:850px){.portal-stat-grid{grid-template-columns:repeat(2,1fr)}.portal-missing-numbers{grid-template-columns:1fr}.portal-missing-numbers small{margin-top:-5px}}
.portal-footer .portal-credit{display:block!important;margin-left:auto;color:#fff!important;font-weight:750!important;visibility:visible!important;opacity:1!important}@media(max-width:850px){.portal-footer .portal-credit{margin-left:0}}
.portal-parent-action i svg{width:34px;height:34px;fill:currentColor}.portal-parent-notice{margin:0;padding:12px 15px;border-radius:12px;background:#fff4e9;color:#74452f;font-size:15px;line-height:1.55;text-align:center}.portal-parent-notice strong{font-weight:800}

/* 0.8.21: ตรวจสอบเลขประชาชนซ้ำสำหรับผู้ดูแลระบบ */
.portal-citizen-lookup-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.portal-citizen-lookup-form label{flex:1;min-width:280px;margin:0;font-weight:700}.portal-citizen-lookup-form input{display:block;width:100%;min-height:46px;margin-top:6px;padding:9px 12px;border:1px solid #bbc8d0;border-radius:9px;font:inherit}.portal-identity-result{margin-top:15px;padding:15px 17px;border-radius:13px}.portal-identity-result>strong,.portal-identity-result>span{display:block}.portal-identity-result.is-error{background:#fff0ee;color:#9f2823}.portal-identity-result.is-clear{background:#edf8f1;color:#22613f}.portal-identity-result.is-found{border:1px solid #efbd84;background:#fff8ec;color:#5b4327}.portal-identity-result-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:12px 0}.portal-identity-result-grid span{padding:9px 11px;border-radius:9px;background:#fff}.portal-identity-result-grid b{display:block;margin-bottom:2px;color:#76522a;font-size:12px}.portal-identity-result.is-found>.portal-action-link{width:auto;display:inline-flex}
@media(max-width:850px){.portal-citizen-lookup-form{align-items:stretch;flex-direction:column}.portal-citizen-lookup-form label{min-width:0}.portal-identity-result-grid{grid-template-columns:1fr}}

/* Identity duplicate workflow 0.8.22 */
.portal-identity-issues{border-color:#e9c77f;background:#fffdf7}.portal-identity-clear{display:flex;gap:10px;align-items:center;padding:14px;border-radius:12px;background:#e9f7ef;color:#276243}.portal-identity-clear span{color:#5c7568}.portal-identity-group{margin-top:14px;border:1px solid #ead7ad;border-radius:14px;overflow:hidden}.portal-identity-group-head{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;background:#fff4d8;color:#774f09}.portal-identity-group-head span{font-size:13px}.portal-identity-fix-table small{display:block;color:#76838c}.portal-identity-fix-form{display:grid;grid-template-columns:130px minmax(190px,1fr) auto;gap:7px;align-items:end;min-width:470px}.portal-identity-fix-form label{margin:0;font-size:12px}.portal-identity-fix-form input{width:100%;min-height:36px;padding:6px 8px;border:1px solid #bac7cf;border-radius:8px}.portal-identity-row-warning{display:grid;gap:4px}.portal-identity-row-warning>span{display:inline-block;width:max-content;max-width:100%;padding:4px 8px;border-radius:999px;background:#fff0d8;color:#8a5700;font-size:12px;font-weight:800}.portal-identity-row-warning small{color:#8a6b34}.portal-identity-warning-box{display:grid;gap:4px;margin-top:9px;padding:10px;border-radius:9px;background:#fff0d8;color:#7a510a}.portal-identity-edit{margin:10px 0}.portal-identity-edit label{display:block}.portal-identity-edit input{width:100%;margin-top:5px}.portal-alert-error{margin:12px 0;padding:12px 14px;border-radius:11px;background:#fff0ed;color:#9a3326;font-weight:650}@media(max-width:760px){.portal-identity-fix-form{grid-template-columns:1fr;min-width:300px}.portal-identity-group-head{align-items:flex-start;flex-direction:column}}

/* Identity duplicate review: authorized full citizen ID visibility 0.8.24 */
.portal-identity-admin-note{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;margin:0 0 14px;padding:11px 13px;border-radius:10px;background:#eef5fb;color:#294f69}.portal-identity-admin-note strong,.portal-identity-admin-note span{display:block}.portal-identity-admin-note span{color:#587083}.portal-citizen-full{display:inline-block;font-weight:800;letter-spacing:.035em;white-space:nowrap;color:#273f54}.portal-identity-fix-table td:nth-child(3){min-width:245px}

/* 0.8.25: อัปโหลดรูปนักเรียนแบบเฉพาะงาน และตั้งรหัสครูจากแดชบอร์ด */
.portal-action-link.is-photo{border-color:#efae78;background:#fff7ef;color:#9c481f}.portal-action-link.is-photo>span{color:#d7632e}.portal-photo-form{display:grid;grid-template-columns:260px 1fr;gap:28px;padding:28px;border:1px solid #e0e6ea;border-radius:20px;background:#fff;box-shadow:0 12px 35px #2634420c}.portal-photo-form .portal-photo-field{padding:20px;border:1px solid #f0c7aa;border-radius:17px;background:#fff8f3}.portal-photo-form .portal-photo-field img,.portal-photo-form .portal-photo-field>span{width:180px;height:225px}.portal-photo-help{align-self:center}.portal-photo-help h2{margin:0 0 8px}.portal-photo-help ul{margin:0 0 22px;padding-left:22px;color:#5f707c;line-height:1.8}.portal-photo-help .portal-primary-button{min-width:220px}.portal-primary-button:disabled{cursor:wait;opacity:.72}.portal-account-manager{border-color:#f0c7aa;background:#fffaf6}.portal-account-list{display:grid;gap:10px}.portal-account-row{display:grid;grid-template-columns:minmax(190px,1fr) minmax(300px,1.25fr) auto;align-items:end;gap:14px;padding:14px;border:1px solid #dce4e9;border-radius:13px;background:#fff}.portal-account-row label{margin:0;font-weight:750}.portal-account-row .portal-password input{width:100%;min-height:44px;margin-top:6px;padding:8px 11px;border:1px solid #bfcbd3;border-radius:10px 0 0 10px;font:inherit}.portal-account-row .portal-password button{min-width:58px}.portal-account-name strong,.portal-account-name span{display:block}.portal-account-name span{margin-top:3px;color:#697a86;font-size:13px}.portal-account-empty{padding:14px;border-radius:11px;background:#f2f5f7;color:#687985}
@media(max-width:850px){.portal-photo-form{grid-template-columns:1fr;padding:18px}.portal-photo-help .portal-primary-button{width:100%}.portal-account-row{grid-template-columns:1fr;align-items:stretch}.portal-account-row>.portal-secondary-button{width:100%}}

/* 0.8.26: ป๊อปอัปเพิ่ม/เปลี่ยนรูปจากแดชบอร์ด */
.portal-student-table .portal-action-link.is-photo{border-color:var(--portal-primary);background:var(--portal-primary);color:#fff!important;font:inherit;cursor:pointer}.portal-student-table .portal-action-link.is-photo>span{color:#fff}.portal-modal-open{overflow:hidden}.portal-photo-modal[hidden]{display:none!important}.portal-photo-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:16px}.portal-photo-modal-backdrop{position:absolute;inset:0;background:#142330a8;backdrop-filter:blur(3px)}.portal-photo-modal-dialog{position:relative;width:min(460px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:24px;border:1px solid #f2b98f;border-radius:22px;background:#fff;box-shadow:0 25px 75px #12233250}.portal-photo-modal-close{position:absolute;top:10px;right:12px;width:38px;height:38px;border:0;border-radius:50%;background:#f3f5f6;color:#415461;font:700 27px/1 sans-serif;cursor:pointer}.portal-photo-modal-head{padding-right:38px}.portal-photo-modal-head>span{color:var(--portal-primary);font-weight:800}.portal-photo-modal-head h2{margin:3px 0;font-size:26px}.portal-photo-modal-head p{margin:0 0 15px;color:#697985}.portal-photo-modal-preview{display:grid;place-items:center;width:160px;height:200px;margin:0 auto 14px;overflow:hidden;border-radius:15px;background:#edf2f5;color:#71818c;text-align:center}.portal-photo-modal-preview img{width:100%;height:100%;object-fit:cover;object-position:center 20%}.portal-photo-modal-select{display:flex;align-items:center;justify-content:center;min-height:48px;padding:9px 15px;border:2px solid var(--portal-primary);border-radius:12px;background:#fff4eb;color:#9c451d;font-weight:850;cursor:pointer}.portal-photo-modal-select input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.portal-photo-modal-status{display:block;margin:9px 0;padding:8px 10px;border-radius:9px;background:#eaf7ef;color:#236240;text-align:center;font-size:13px}.portal-photo-modal-remove{display:flex;align-items:center;justify-content:center;gap:8px;margin:10px 0 18px;padding:11px;border-radius:10px;background:#fff7ef;color:#824522;font-weight:750}.portal-photo-modal-remove input{width:19px;height:19px}.portal-photo-modal-actions{display:grid;grid-template-columns:1fr 1.4fr;gap:9px}.portal-photo-modal-actions button{width:100%}@media(max-width:520px){.portal-photo-modal{padding:10px}.portal-photo-modal-dialog{padding:20px 16px;border-radius:18px}.portal-photo-modal-actions{grid-template-columns:1fr}.portal-photo-modal-actions .portal-secondary-button{order:2}}

/* 0.8.27: เมนูผู้ดูแลระบบและศูนย์จัดการบัญชี */
.portal-admin-layout{display:grid;grid-template-columns:238px minmax(0,1fr);gap:20px;align-items:start}.portal-admin-sections{position:sticky;top:96px;display:grid;gap:7px;padding:12px;border:1px solid #dce4e9;border-radius:18px;background:#fff;box-shadow:0 12px 35px #2634420b}.portal-admin-sections-title{padding:8px 10px 12px;border-bottom:1px solid #e6ebee}.portal-admin-sections-title strong,.portal-admin-sections-title span{display:block}.portal-admin-sections-title span{margin-top:2px;color:#74838d;font-size:12px}.portal-admin-sections>a{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px;border:1px solid transparent;border-radius:12px;color:#344b5b;text-decoration:none}.portal-admin-sections>a:hover{background:#f6f8f9}.portal-admin-sections>a.is-active{border-color:#ffc5a4;background:#fff3eb;color:#903e19}.portal-admin-sections>a span strong,.portal-admin-sections>a span small{display:block}.portal-admin-sections>a span small{margin-top:1px;color:#7a8992;font-size:11px}.portal-admin-section-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#edf2f5;color:#33566e;font-size:20px;font-weight:900}.portal-admin-sections>a.is-active .portal-admin-section-icon{background:var(--portal-primary);color:#fff}.portal-admin-sections>a>b{display:grid;place-items:center;min-width:23px;height:23px;padding:0 5px;border-radius:99px;background:#b92e36;color:#fff;font-size:12px}.portal-admin-content{min-width:0}.portal-admin-page-title{display:flex;align-items:center;gap:12px;margin-bottom:14px;padding:15px 17px;border:1px solid #f1c8ad;border-radius:15px;background:linear-gradient(120deg,#fff9f4,#fff)}.portal-admin-page-title>span{display:grid;place-items:center;width:45px;height:45px;border-radius:12px;background:var(--portal-primary);color:#fff;font-size:23px;font-weight:900}.portal-admin-page-title strong,.portal-admin-page-title small{display:block}.portal-admin-page-title strong{font-size:21px}.portal-admin-page-title small{margin-top:2px;color:#71808a}.portal-admin-content>.portal-panel:first-of-type{margin-top:0}
.portal-password-security-note{display:flex;gap:12px;margin:0 0 16px;padding:13px 15px;border:1px solid #cfe0ea;border-radius:13px;background:#f1f7fb;color:#294e67}.portal-password-security-note>span{font-size:23px}.portal-password-security-note strong,.portal-password-security-note p{display:block;margin:0}.portal-password-security-note p{margin-top:3px;color:#5f7482;font-size:13px}.portal-account-toolbar{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:14px 0}.portal-account-toolbar label{flex:1;max-width:520px;font-weight:800}.portal-account-toolbar input{display:block;width:100%;min-height:45px;margin-top:5px;padding:9px 12px;border:1px solid #bbc8d0;border-radius:10px;background:#fff;font:inherit}.portal-account-toolbar>span{padding-bottom:10px;color:#667883;font-size:13px}.portal-account-list{display:grid;gap:10px}.portal-account-card{display:grid;grid-template-columns:48px minmax(190px,1.2fr) minmax(150px,.8fr) auto;align-items:center;gap:13px;padding:14px;border:1px solid #dce4e9;border-radius:14px;background:#fff}.portal-account-card[hidden]{display:none}.portal-account-avatar{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:#fff0e5;color:#a8491d;font-weight:900}.portal-account-name strong,.portal-account-name span,.portal-account-name small,.portal-account-login span,.portal-account-login strong{display:block}.portal-account-name span{margin-top:2px;color:#516875}.portal-account-name small{margin-top:2px;color:#82909a}.portal-account-login span{color:#75848d;font-size:12px}.portal-account-login strong{margin-top:3px;font-size:13px}.portal-executive-code form{display:grid;grid-template-columns:minmax(280px,1fr) auto;align-items:end;gap:12px}.portal-executive-code label{margin:0;font-weight:800}.portal-executive-code .portal-password input{width:100%;min-height:45px;margin-top:6px;padding:8px 11px;border:1px solid #bfcbd3;border-radius:10px 0 0 10px;font:inherit}.portal-password-modal[hidden]{display:none!important}.portal-password-modal{position:fixed;inset:0;z-index:1010;display:grid;place-items:center;padding:16px}.portal-password-modal-backdrop{position:absolute;inset:0;background:#142330a8;backdrop-filter:blur(3px)}.portal-password-modal-dialog{position:relative;width:min(500px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:25px;border:1px solid #f2b98f;border-radius:22px;background:#fff;box-shadow:0 25px 75px #12233250}.portal-password-modal-field{display:block;margin:15px 0;font-weight:800}.portal-password-modal-field .portal-password input{width:100%;min-height:48px;margin-top:6px;padding:9px 12px;border:1px solid #bfcbd3;border-radius:10px 0 0 10px;font:inherit}.portal-password-tools{display:grid;grid-template-columns:1fr 1fr;gap:8px}.portal-password-copy-status{margin:10px 0 17px;padding:9px 11px;border-radius:9px;background:#eef5f8;color:#516b7b;font-size:13px}.portal-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.portal-settings-grid article{display:flex;gap:15px;padding:21px;border:1px solid #dce4e9;border-radius:17px;background:#fff}.portal-settings-grid article>span{display:grid;place-items:center;flex:0 0 48px;height:48px;border-radius:13px;background:#fff0e5;color:#aa4d22;font-size:25px;font-weight:900}.portal-settings-grid h2{margin:0}.portal-settings-grid p{margin:5px 0 15px;color:#657783}.portal-settings-grid .portal-primary-button,.portal-settings-grid .portal-secondary-button{min-height:42px}
.portal-invite-account-note{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:13px 0;padding:12px 14px;border-radius:11px;background:#eef6fb;color:#36566c}.portal-invite-account-note span{color:#627783}.portal-invite-account-note a{color:#9d461e;font-weight:850}.portal-settings-restricted{display:block;padding:10px 12px;border-radius:10px;background:#fff4e8;color:#80502f;font-size:13px}.portal-system-settings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.portal-system-settings label{margin:0;font-weight:800}.portal-system-settings input,.portal-system-settings textarea{display:block;width:100%;min-height:45px;margin-top:6px;padding:9px 11px;border:1px solid #bbc8d0;border-radius:10px;background:#fff;font:inherit;box-sizing:border-box}.portal-system-settings input[type=color]{padding:4px}.portal-system-settings label>small{display:block;margin-top:4px;color:#71818b;font-weight:500}.portal-system-settings .is-wide,.portal-system-settings-actions{grid-column:1/-1}.portal-system-settings-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.portal-system-settings-actions>small{color:#765d4e}
@media(max-width:900px){.portal-admin-layout{grid-template-columns:1fr}.portal-admin-sections{position:static;display:flex;overflow-x:auto}.portal-admin-sections-title{display:none}.portal-admin-sections>a{flex:0 0 165px}.portal-account-card{grid-template-columns:48px 1fr auto}.portal-account-login{grid-column:2}.portal-account-card>.portal-secondary-button{grid-column:3;grid-row:1/3}.portal-settings-grid{grid-template-columns:1fr}}
@media(max-width:600px){.portal-admin-sections>a{flex-basis:145px;grid-template-columns:34px 1fr}.portal-admin-section-icon{width:34px;height:34px}.portal-admin-sections>a>b{display:none}.portal-account-toolbar{align-items:stretch;flex-direction:column}.portal-account-toolbar label{max-width:none;width:100%}.portal-account-toolbar>span{padding:0}.portal-account-card{grid-template-columns:43px 1fr}.portal-account-avatar{width:43px;height:43px}.portal-account-login{grid-column:2}.portal-account-card>.portal-secondary-button{grid-column:1/-1;grid-row:auto;width:100%}.portal-executive-code form{grid-template-columns:1fr}.portal-password-tools,.portal-photo-modal-actions,.portal-system-settings{grid-template-columns:1fr}.portal-system-settings .is-wide,.portal-system-settings-actions{grid-column:auto}.portal-password-modal{padding:10px}.portal-password-modal-dialog{padding:21px 16px}.portal-settings-grid article{padding:17px}}

/* 0.8.28: ทางเข้าแอดมินหน้าเว็บและรหัสยืนยันสองชั้น */
.portal-header .portal-staff-entry{background:#2f536c}.portal-header .portal-admin-entry{background:#9b401d}.portal-admin-auth .portal-auth-intro{background:linear-gradient(145deg,#783719,#cf6b35)}.portal-admin-auth-badge{display:inline-flex;align-items:center;margin-bottom:13px;padding:7px 11px;border-radius:999px;background:#fff0e5;color:#913e1a;font-size:13px;font-weight:850}.portal-admin-auth ol{margin:18px 0 0;padding-left:24px;line-height:1.9}@media(max-width:520px){.portal-header{gap:8px}.portal-header nav{gap:4px}.portal-header nav .portal-login{padding:8px 9px;font-size:12px}.portal-brand img,.portal-logo-fallback{width:43px;height:43px}.portal-brand small{display:none}}

/* 0.8.29: ทางเข้าแอดมินด้วย Authenticator และ QR ตั้งค่าครั้งเดียว */
.portal-admin-restricted-notice{display:grid;gap:4px;margin-top:20px;padding:14px 16px;border:1px solid #ffffff35;border-radius:12px;background:#3c160f66;color:#fff}.portal-admin-restricted-notice span{color:#f5d9cc;font-size:13px}.portal-admin-otp-input{text-align:center;font-size:30px!important;font-weight:900!important;letter-spacing:.22em;font-variant-numeric:tabular-nums}.portal-admin-field-note{margin:-8px 0 16px;color:#697985;font-size:13px}.portal-text-button{display:block;width:100%;margin-top:12px;padding:7px;border:0;background:transparent;color:#315d7b;font:inherit;font-weight:700;cursor:pointer}.portal-admin-setup-page{max-width:1080px;margin:34px auto}.portal-admin-setup-head{text-align:center;margin-bottom:22px}.portal-admin-setup-head>span{color:var(--portal-primary);font-weight:850}.portal-admin-setup-head h1{margin:5px 0;font-size:34px}.portal-admin-setup-head p{margin:0;color:#657783}.portal-admin-setup-grid{display:grid;grid-template-columns:.85fr 1.15fr .95fr;gap:14px;align-items:stretch}.portal-admin-setup-grid>article{position:relative;padding:22px;border:1px solid #dce4e9;border-radius:19px;background:#fff}.portal-setup-number{display:grid;place-items:center;flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:#fff;color:#a1451d;font-weight:900}.portal-admin-setup-grid h2{margin:14px 0 7px;font-size:21px}.portal-admin-setup-grid p{color:#647681}.portal-admin-qr-card{text-align:center;border-color:#f0bd98!important;background:#fffaf6!important}.portal-admin-qr-card .portal-setup-number{margin:0 auto}.portal-admin-qr-card canvas{display:block;width:224px;height:224px;max-width:100%;margin:13px auto;padding:7px;border-radius:13px;background:#fff}.portal-admin-qr-card details{margin-top:11px}.portal-admin-qr-card summary{color:#456175;font-size:13px;cursor:pointer}.portal-admin-qr-card code{display:block;margin-top:8px;padding:8px;border-radius:8px;background:#eef3f6;overflow-wrap:anywhere;font-size:12px;letter-spacing:.05em}.portal-admin-setup-grid form label{display:block;margin:14px 0;font-weight:800}.portal-admin-setup-grid form input{display:block;width:100%;min-height:52px;margin-top:7px;padding:9px 12px;border:1px solid #bbc8d0;border-radius:10px;background:#fff}.portal-admin-setup-grid form .portal-primary-button{width:100%}.portal-admin-setup-help{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:16px;padding:12px;border-radius:12px;background:#eef6fb;color:#36566c}.portal-admin-setup-help span{color:#637986}.portal-setup-expired{max-width:520px;margin:0 auto;text-align:center}.portal-admin-recovery-page{max-width:620px;margin:42px auto}.portal-admin-recovery-page .portal-auth-card{text-align:center}.portal-admin-recovery-page h1{margin:4px 0}.portal-recovery-codes{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:20px 0}.portal-recovery-codes code{padding:11px;border:1px dashed #d6a277;border-radius:9px;background:#fff8f2;color:#633919;font-size:16px;font-weight:800;letter-spacing:.07em}.portal-recovery-copy-status{display:block;min-height:22px;margin-top:7px;color:#22704a;font-size:13px}.portal-recovery-continue{width:100%;margin-top:16px}.portal-admin-footer-entry{align-self:center;margin-left:4px;color:#d8c3b8!important;text-decoration:none;font-size:11px;opacity:.62}.portal-admin-footer-entry:hover{color:#fff!important;opacity:1}
@media(max-width:850px){.portal-admin-setup-grid{grid-template-columns:1fr}.portal-admin-setup-grid>article{text-align:center}.portal-admin-setup-grid .portal-setup-number{margin:0 auto}}
@media(max-width:520px){.portal-admin-otp-input{font-size:25px!important}.portal-admin-setup-head h1{font-size:28px}.portal-recovery-codes{grid-template-columns:1fr}}
