/* Unified application interface. Feature logic lives in index.html. */
:root{--cream:#f2f5f9;--paper:#fff;--ink:#172b42;--ink-soft:#586b80;--coral:#2459a7;--coral-dark:#1c4786;--coral-light:#eaf1fd;--teal:#247963;--teal-dark:#1c5e4d;--teal-light:#eaf6f1;--amber:#b8801e;--amber-light:#fff5db;--line:#dce4ee;--red:#b83843;--gradient-brand:linear-gradient(135deg,#285da9,#1d4784);--gradient-htglv:var(--gradient-brand);--gradient-teal:var(--gradient-brand);--shadow:0 3px 14px #162c4410;--shadow-md:0 10px 28px #162c4415;--shadow-lg:0 24px 60px #10243c30;--radius-lg:20px;--radius-md:16px;--radius-sm:10px}
body{font-family:Inter,'Be Vietnam Pro','Segoe UI',Arial,sans-serif;background:var(--cream);font-size:16px;line-height:1.6;color:var(--ink)}
button,input,select,textarea,label.btn{font-family:inherit!important}h1,h2,h3,.group-title,.ql-page-title,.ctitle,.detail-name,.tk-account-name,.kval,.snum,.charttitle,.post-title,.stats-table-title{font-family:inherit!important;letter-spacing:-.025em}h1,h2,h3{line-height:1.35}
button,a,input,select,textarea{touch-action:manipulation}button{line-height:1.4}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid #5793e9;outline-offset:3px}input[type=checkbox]:focus-visible+.switch-track,input[type=checkbox]:focus-visible+.pro-track{outline:3px solid #5793e9;outline-offset:3px}
.skip-link{position:fixed;top:-80px;left:20px;z-index:100;background:#fff;color:#183d70;padding:10px 18px;border-radius:8px}.skip-link:focus{top:12px}
.wrap{max-width:none;padding:20px 20px 48px}.workspace-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:48px;margin-bottom:22px;border-bottom:1px solid var(--line);padding-bottom:16px}.workspace-label{font-size:12px;font-weight:700;letter-spacing:.12em;color:#718399}.workspace-label span{padding:0 12px;color:#bcc7d4}.workspace-label b{font-size:14px;letter-spacing:0;color:#344f6e}#workspace-date{font-size:13px;color:var(--ink-soft);white-space:nowrap}
.cover{height:168px;max-width:none;border-radius:0;background:#122b48;box-shadow:none}.cover-watermark{display:none}.cover:after{display:none}.cover-content{padding:26px 24px;position:static;align-items:center;gap:14px}.cover-badge{width:54px;height:54px;border-radius:14px;border:2px solid #ffffffa6;box-shadow:none}.cover-title{font-size:21px;font-weight:700;line-height:1.3}.cover-sub{font-size:13px;font-weight:400;color:#b8cadd;line-height:1.7}.cover-content a{font-size:12px!important;background:transparent!important;padding:0!important;border:none!important;color:#cedbec!important}.auth-badge{position:absolute;top:16px;right:20px;font-size:13px;border-radius:9px;background:#ffffff12;border:1px solid #ffffff32;color:#fff;min-height:40px;padding:8px 13px;text-transform:none;letter-spacing:0;font-weight:600}.cover-content>div:last-child{min-width:0}
.tabs{box-shadow:none;border:1px solid var(--line);border-radius:12px;background:#fff;padding:5px;gap:4px;margin:0 0 24px;position:static}.tab-btn{font-size:14px;line-height:1.45;min-height:44px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:normal;font-weight:600;min-width:0;padding:10px 14px;color:#52687e}.tab-btn.active,.tab-btn.active[data-tab],.tab-btn.active[data-subtab],.tab-btn.active[data-ph-subview]{background:#eaf1fc;color:#214e8c;box-shadow:none}.tab-btn:hover{background:#f1f5fb;color:#214e8c}.tab-note{font-size:12px}.tabs.subtabs{margin:0 0 24px!important;background:transparent;border:none;border-bottom:1px solid var(--line);border-radius:0;padding:0;gap:18px;overflow-x:auto}.tabs.subtabs .tab-btn{font-size:14px;flex:0 0 auto;border-radius:0;position:relative;min-height:48px;padding:10px 8px;white-space:nowrap}.tabs.subtabs .tab-btn.active{background:transparent;box-shadow:none!important;color:#214e8c}.tabs.subtabs .tab-btn.active:after{content:'';position:absolute;left:0;right:0;bottom:0;height:3px;background:#285da9;border-radius:2px}
.card,.post-card,.mgr-card,.qr-card,.stats-table-wrap{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:16px}.card{padding:24px;margin-bottom:20px}.card:hover{transform:none;box-shadow:var(--shadow)}.group-title{font-size:17px;font-weight:700;color:var(--ink);margin-bottom:16px;gap:8px}.group-title:before{display:none}.ql-page-head{padding:0 0 26px}.ql-page-title{font-size:29px;font-weight:700;line-height:1.4;color:#172b42;gap:12px}.ql-page-title .ti{color:#285da9;font-size:23px}.ql-page-sub{font-size:15px;margin-top:7px;line-height:1.7}.row{gap:14px}.field{gap:7px;min-width:160px}label{font-size:14px;font-weight:600;color:#425971}input[type=text],input[type=password],input[type=date],input[type=number],input[type=email],input[type=tel],select,textarea{min-height:46px;border:1px solid #cfd9e6;border-radius:9px;background:#fbfcfe;color:var(--ink);padding:11px 13px;font-size:16px;line-height:1.5;width:100%;max-width:100%}input:focus,select:focus,textarea:focus{border-color:#3679d4;box-shadow:0 0 0 3px #3679d417}input[readonly]{background:#f1f4f8;color:#586b80}input::placeholder,textarea::placeholder{color:#7a8b9d;opacity:1}
button.btn,label.btn{border-radius:9px;min-height:44px;font-weight:600;font-size:14px;padding:10px 16px;background:var(--gradient-brand);box-shadow:none;border:1px solid transparent;gap:8px;color:white}button.btn:hover,label.btn:hover{filter:brightness(1.08);box-shadow:none!important}button.btn.secondary,label.btn.secondary{background:#eaf1fc;color:#214e8c;border:1px solid #d7e4f6}button.btn.ghost,label.btn.ghost{background:#fff;color:#365779;border:1px solid #cfdbe9}button.btn.danger,label.btn.danger{background:#fff1f2;color:#a82837;border:1px solid #f2cbd1}button.btn.small,label.btn.small{font-size:14px;padding:7px 12px;min-height:38px}.link-btn{font-size:14px;color:#214e8c;min-height:40px}.btn:disabled{cursor:not-allowed}.qtb-btn{min-height:44px;border-radius:9px;box-shadow:none;font-size:14px;font-weight:600}.qtb-btn.green,.qtb-btn.blue,.qtb-btn.orange,.qtb-btn.purple{background:#2459a7}.qtb-btn.gray{background:#edf2f8;color:#395674}.qtb-btn.red{background:#fff1f2;color:#a82837}.qtb-menu{box-shadow:var(--shadow-lg);border:1px solid var(--line)}.qtb-menu button{font-size:14px;min-height:42px}.qtoolbar{gap:8px;margin-bottom:18px}
.parent-search-layout{display:grid;gap:24px;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:stretch}.parent-search-card{padding:32px;margin:0;min-height:340px}.search-emblem{width:52px;height:52px;display:flex;align-items:center;justify-content:center;border-radius:14px;background:#eaf1fc;color:#2459a7;font-size:24px;margin-bottom:24px}.parent-search-card .group-title{font-size:24px;margin-bottom:10px}.parent-search-card p{font-size:15px!important;line-height:1.8!important;margin-bottom:24px!important}.parent-search-card input{min-height:54px;background:white}.search-guide{border-radius:16px;background:#e5ecf5;padding:30px 32px;color:#284563;border:1px solid #dce5f0}.guide-eyebrow{font-size:11px;letter-spacing:.14em;font-weight:700;color:#5b7390}.search-guide h2{font-size:25px;font-weight:600;margin:12px 0;line-height:1.4}.search-guide p{font-size:14px;line-height:1.75;margin:0}.search-guide ol{list-style:none;padding:0;margin:23px 0 0;counter-reset:steps;display:grid;gap:18px}.search-guide li{counter-increment:steps;position:relative;padding-left:39px}.search-guide li:before{content:counter(steps);position:absolute;left:0;top:2px;background:#fff9;border:1px solid #cad8e8;width:27px;height:27px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:12px;font-weight:700}.search-guide li b{display:block;font-size:14px;font-weight:600}.search-guide li span{display:block;font-size:13px;color:#58708b;line-height:1.7;margin-top:3px}#ph-search-results{margin-top:24px}
.child-row{padding:16px 8px;gap:14px;border-color:#e8edf4;min-width:0}.child-row:hover,.list-item:hover{background:#f5f8fc}.child-name{font-size:16px;line-height:1.5;font-weight:600;white-space:normal;overflow-wrap:anywhere}.child-sub{font-size:13px;line-height:1.6}.att-row{padding:16px;border:1px solid var(--line);margin-bottom:10px;border-radius:12px}.att-row-main{gap:16px}.att-switch .switch-label{font-size:14px;min-width:58px}.att-switch{min-height:44px}.att-switch input:checked+.switch-track{background:#278269;border-color:#278269}.att-row.is-absent{background:#fff7f8}.note-input{font-size:14px!important;background:#fff!important;min-height:40px!important}.class-pick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}.class-pick{font-family:inherit;border:1px solid #dce4ee;box-shadow:none;background:#fff;border-radius:12px;text-align:left;padding:22px;min-height:106px;color:var(--ink);transition:background .15s,border-color .15s}.class-pick:hover{background:#edf4fd;border-color:#8fb3e6;transform:none}.class-pick .cname{font-family:inherit;font-size:17px;font-weight:600}.class-pick .ccount{font-size:14px;color:var(--ink-soft);margin-top:7px}.summary-bar{background:#edf2f8;border:1px solid var(--line);font-size:14px;border-radius:10px}.pill,.detail-badge,.mrole,.pro-status-pill{font-size:12px!important;font-weight:600}.mgr-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}.mgr-card{padding:24px 16px}.mgr-card .mname{font-size:16px;line-height:1.6}.mgr-card .mmeta{font-size:13px}.kpi-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.kpi-card{padding:22px;border-radius:14px;box-shadow:none;gap:12px}.kpi-card:hover{transform:none}.kpi-card .kval{font-size:32px;line-height:1.3}.kpi-card .klabel,.stat-box .slabel{font-size:14px;font-weight:500}.stat-box{padding:20px 12px;border-color:var(--line);box-shadow:none}.stat-box .snum{font-size:30px}.stats-table-title{font-size:17px;padding:20px 20px 12px}table.report,table.stats-table{font-size:14px}table.report th,table.stats-table th{background:#f5f7fb;color:#526880;font-size:13px}table.report th,table.report td,table.stats-table th,table.stats-table td{padding:13px 16px;border-color:#e6ecf3}table.stats-table tbody td.cname-cell{color:#1e4b84}.legend-item,.bar-val,.bar-lbl,.sc-lbl,.sc-total{font-size:12px!important}.stat-grid{gap:14px}.post-title{font-size:20px;color:#243e5b}.post-meta{font-size:13px}.post-body{font-size:16px;line-height:1.8}.reaction-btn,.comment-toggle{min-height:38px}.comment-item .ctext{font-size:14px}.comment-item .cauthor{font-size:14px}.comment-item .ctime{font-size:12px}
.empty,.role-guard{border:1px solid var(--line);background:#fff;border-radius:16px;padding:50px 24px;box-shadow:var(--shadow);font-size:16px;line-height:1.8;color:#586b80;text-align:center}.empty .ti,.role-guard>.ti{margin:0 auto 18px;color:#285da9;font-size:34px}.storage-note{font-size:12px;color:#74869b;text-align:left;margin-top:28px;padding-top:16px;border-top:1px solid var(--line)}.ph-hero{background:linear-gradient(145deg,#e9f1fc,#fff 75%)}.detail-row{font-size:14px;line-height:1.7}.detail-name{font-size:23px}.modal-overlay{background:#0d223ab3;backdrop-filter:blur(5px)}.modal-card{padding:28px;max-width:520px;box-shadow:var(--shadow-lg);border:1px solid #e6edf7;border-radius:20px}.modal-x{width:40px;height:40px;border-radius:10px}.login-card .li-icon{box-shadow:none;border-color:var(--line);width:64px;height:64px;border-radius:16px}.login-card h2{font-size:25px}.login-card p.li-sub{font-size:14px;line-height:1.7}.login-card .li-remember{font-size:14px;min-height:40px}.login-card .li-error{font-size:14px}.tk-account-name{font-size:22px}.tk-account-role{font-size:14px}.roster-editor-bar{margin:-14px -14px 20px;padding:20px 16px}::selection{background:#cfe1fb;color:#163755}::-webkit-scrollbar-thumb{background:#b9c8d9;border-radius:10px}
@media(min-width:860px){.cover{position:fixed;inset:0 auto 0 0;width:248px;max-width:248px;height:100dvh;padding:0;display:block;background:#122b48;box-shadow:none;overflow:auto;border-right:1px solid #203f60}.cover-content{position:static;padding:32px 24px;margin:0;align-items:flex-start;text-align:left;gap:17px}.cover-badge{width:57px;height:57px;border-radius:14px}.cover-title{font-size:20px}.cover-sub{font-size:13px;padding:0;opacity:1;margin-top:9px}.cover-content a{margin-top:14px!important;line-height:1.6}.auth-badge{position:fixed;top:auto;bottom:24px;left:20px;right:auto;width:208px;justify-content:center;z-index:9;max-height:70px;white-space:normal;background:#ffffff0d}.wrap{margin-left:248px;padding:28px 40px 48px;max-width:1460px}.wrap>.tabs{position:fixed;top:292px;left:0;width:248px;z-index:9;padding:0 16px;margin:0;background:transparent;border:none;gap:8px;overflow:visible}.wrap>.tabs .tab-btn{padding:14px;font-size:14px;color:#c1cfdf;border-radius:10px;min-height:52px;justify-content:flex-start;text-align:left;flex:0 0 auto}.wrap>.tabs .tab-btn .ti{font-size:20px}.wrap>.tabs .tab-btn:hover{background:#ffffff0c;color:white}.wrap>.tabs .tab-btn.active{background:#2d4b6b;color:#fff;box-shadow:inset 3px 0 #d7b670}.wrap>.tabs .tab-btn.active .ti{color:#e2c486}#tab-ht-glv>.tabs.subtabs{position:static!important;top:auto;left:auto;width:auto;padding:0;flex-direction:row;gap:14px;border-bottom:1px solid var(--line);background:transparent}#tab-ht-glv>.tabs.subtabs .tab-btn{width:auto;padding:10px 8px;font-size:14px;color:#52687e;text-align:center}#tab-ht-glv>.tabs.subtabs .tab-btn.active{color:#214e8c;background:transparent;box-shadow:none}#tab-ht-glv>.tabs.subtabs .tab-btn:hover{background:#eaf1fc;color:#214e8c}.card{padding:24px}.field{min-width:160px}.modal-card{padding:28px;max-height:88dvh}.workspace-bar{margin-bottom:28px}.card:hover{box-shadow:var(--shadow)}}
@media(min-width:1450px){.wrap{padding-left:56px;padding-right:56px}}
@media(min-width:860px) and (max-height:650px){.cover-content{padding-top:18px}.cover-badge{width:44px;height:44px}.wrap>.tabs{top:255px;gap:4px}.wrap>.tabs .tab-btn{min-height:44px;padding:10px 14px}.auth-badge{bottom:12px}}
@media(max-width:1100px){.parent-search-layout{grid-template-columns:1fr}.search-guide h2 br{display:none}.search-guide ol{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.search-guide li{padding-left:0;padding-top:38px}.parent-search-card{min-height:0}.kpi-row{gap:10px}.kpi-card{padding:16px}}
@media(max-width:859px){.cover{height:auto;min-height:180px;padding-top:40px}.cover-content{padding:22px 20px 24px;align-items:flex-start}.cover-title{font-size:20px}.cover-sub{font-size:13px}.wrap{margin:0;padding:0 20px 32px}.main-navigation{margin:16px 0!important;position:sticky!important;top:8px;z-index:8;box-shadow:var(--shadow-md)}.main-navigation .tab-btn{font-size:13px;flex:1 1 0;padding:10px 6px;display:flex;flex-direction:column;gap:6px;min-height:70px}.main-navigation .tab-btn .ti{font-size:21px}.workspace-bar{margin:0 0 20px;padding:12px 0;min-height:0}.workspace-label{font-size:10px;letter-spacing:.08em}.workspace-label span{padding:0 6px}.workspace-label b{font-size:12px}#workspace-date{font-size:12px}.tabs.subtabs{gap:12px}.ql-page-title{font-size:26px}.ql-page-head{padding-bottom:22px}.ql-page-sub{font-size:14px}.card{padding:20px}.parent-search-card{padding:24px}.search-guide{padding:24px}.search-guide h2{font-size:22px}.search-guide ol{grid-template-columns:1fr;gap:16px}.search-guide li{padding:0 0 0 39px}.search-guide li span{font-size:14px}.search-emblem{margin-bottom:18px}.class-pick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.class-pick{padding:18px;min-height:96px}.class-pick .cname{font-size:16px}.kpi-row{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-card .kval{font-size:28px}.modal-overlay{align-items:flex-end;padding:0}.modal-card{border-radius:20px 20px 0 0;max-height:90dvh;padding:24px 20px calc(24px + env(safe-area-inset-bottom))}.child-row .btn{flex-shrink:0}.stat-box .snum{font-size:25px}.stat-box .slabel{font-size:13px}.storage-note{font-size:12px}}
@media(max-width:420px){.wrap{padding-left:14px;padding-right:14px}.cover-content{padding-left:16px;padding-right:16px;gap:12px}.cover-title{font-size:18px}.cover-badge{width:46px;height:46px}.field{min-width:100%}.workspace-label{letter-spacing:0}.workspace-label>span,.workspace-label>b{display:none}.parent-search-card{padding:22px}.card{padding:18px}.mgr-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.att-row-main{gap:8px}.child-row .row{gap:6px}.qtoolbar{gap:6px}.qtb-btn{padding:0 10px}.detail-row{flex-wrap:wrap}.detail-row .dvalue{overflow-wrap:anywhere}.tab-btn{overflow-wrap:anywhere}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
@media print{.workspace-bar,.skip-link,.main-navigation,.search-guide{display:none!important}}

/* Locally embedded outline icons, no icon-font dependency. */
.ti{display:inline-block;vertical-align:-.15em;flex-shrink:0;width:1.15em;height:1.15em;background:currentColor;-webkit-mask:var(--ui-icon) center/contain no-repeat;mask:var(--ui-icon) center/contain no-repeat;--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%228%22/%3E%3C/svg%3E")}.ti:before{content:none!important}
.ti-search,.ti-search-off,.ti-scan,.ti-zoom-in,.ti-zoom-out{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%226%22/%3E%3Cpath%20d%3D%22m15%2015%206%206%22/%3E%3C/svg%3E")}
.ti-heart{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20.8%204.6a5.5%205.5%200%200%200-7.8%200L12%205.7l-1.1-1.1a5.5%205.5%200%200%200-7.8%207.8L12%2021l8.8-8.6a5.5%205.5%200%200%200%200-7.8Z%22/%3E%3C/svg%3E")}
.ti-users,.ti-users-group{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%229%22%20cy%3D%227%22%20r%3D%223%22/%3E%3Cpath%20d%3D%22M3%2021v-3a6%206%200%200%201%2012%200v3M16%204a3%203%200%200%201%200%206M18%2014a5%205%200%200%201%203%205v2%22/%3E%3C/svg%3E")}
.ti-user,.ti-user-plus,.ti-user-check{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%227%22%20r%3D%224%22/%3E%3Cpath%20d%3D%22M4%2021v-2a8%208%200%200%201%2016%200v2%22/%3E%3C/svg%3E")}
.ti-qrcode{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%223%22%20width%3D%226%22%20height%3D%226%22%20rx%3D%221%22/%3E%3Crect%20x%3D%2215%22%20y%3D%223%22%20width%3D%226%22%20height%3D%226%22%20rx%3D%221%22/%3E%3Crect%20x%3D%223%22%20y%3D%2215%22%20width%3D%226%22%20height%3D%226%22%20rx%3D%221%22/%3E%3Cpath%20d%3D%22M15%2015h3v3h-3zM21%2015v3M15%2021h6%22/%3E%3C/svg%3E")}
.ti-news,.ti-books{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%223%22%20width%3D%2218%22%20height%3D%2218%22%20rx%3D%222%22/%3E%3Cpath%20d%3D%22M7%207h10M7%2011h4M7%2015h4M15%2011h2M15%2015h2%22/%3E%3C/svg%3E")}
.ti-layout-dashboard{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%223%22%20width%3D%227%22%20height%3D%227%22%20rx%3D%221%22/%3E%3Crect%20x%3D%2214%22%20y%3D%223%22%20width%3D%227%22%20height%3D%2211%22%20rx%3D%221%22/%3E%3Crect%20x%3D%223%22%20y%3D%2214%22%20width%3D%227%22%20height%3D%227%22%20rx%3D%221%22/%3E%3Crect%20x%3D%2214%22%20y%3D%2218%22%20width%3D%227%22%20height%3D%223%22%20rx%3D%221%22/%3E%3C/svg%3E")}
.ti-chart-bar,.ti-table{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%203v18h18M7%2016v-5M12%2016V7M17%2016V3%22/%3E%3C/svg%3E")}
.ti-lock,.ti-shield-lock{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%225%22%20y%3D%2210%22%20width%3D%2214%22%20height%3D%2211%22%20rx%3D%222%22/%3E%3Cpath%20d%3D%22M8%2010V6a4%204%200%200%201%208%200v4M12%2014v3%22/%3E%3C/svg%3E")}
.ti-login,.ti-logout{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M14%203h6v18h-6M3%2012h12m-4-4%204%204-4%204%22/%3E%3C/svg%3E")}
.ti-world{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22/%3E%3Cellipse%20cx%3D%2212%22%20cy%3D%2212%22%20rx%3D%224%22%20ry%3D%229%22/%3E%3Cpath%20d%3D%22M3%2012h18%22/%3E%3C/svg%3E")}
.ti-calendar,.ti-calendar-event,.ti-calendar-month{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%225%22%20width%3D%2218%22%20height%3D%2216%22%20rx%3D%222%22/%3E%3Cpath%20d%3D%22M7%203v4M17%203v4M3%2011h18M7%2015h2M13%2015h2%22/%3E%3C/svg%3E")}
.ti-check,.ti-circle-check{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m5%2012%204%204%2010-10%22/%3E%3C/svg%3E")}
.ti-x{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m6%206%2012%2012M18%206%206%2018%22/%3E%3C/svg%3E")}
.ti-plus{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%205v14M5%2012h14%22/%3E%3C/svg%3E")}
.ti-chevron-right{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m9%205%207%207-7%207%22/%3E%3C/svg%3E")}
.ti-chevron-down{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m5%209%207%207%207-7%22/%3E%3C/svg%3E")}
.ti-arrow-left{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%2012H4m6-6-6%206%206%206%22/%3E%3C/svg%3E")}
.ti-camera,.ti-photo{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%207h4l2-3h6l2%203h4v14H3z%22/%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2213%22%20r%3D%224%22/%3E%3C/svg%3E")}
.ti-face-id{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%208V3h5M16%203h5v5M21%2016v5h-5M8%2021H3v-5M8%2010h.01M16%2010h.01M8%2016c3%202%205%202%208%200%22/%3E%3C/svg%3E")}
.ti-edit,.ti-pencil{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m15%204%205%205M4%2020l5-1L21%207l-5-5L4%2014z%22/%3E%3C/svg%3E")}
.ti-device-floppy{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%203h14l4%204v14H3zM7%203v6h10V3M7%2021v-8h10v8%22/%3E%3C/svg%3E")}
.ti-alert-triangle{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m12%203%2010%2018H2zM12%209v5M12%2018h.01%22/%3E%3C/svg%3E")}
.ti-refresh,.ti-loader-2,.ti-repeat{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%204v5h5M21%2020v-5h-5M4%2015a8%208%200%200%200%2014%202M20%209A8%208%200%200%200%206%207%22/%3E%3C/svg%3E")}
.ti-printer{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6%209V3h12v6M6%2017H3V9h18v8h-3M6%2014h12v7H6z%22/%3E%3C/svg%3E")}
.ti-download{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%203v12m-5-5%205%205%205-5M4%2017v4h16v-4%22/%3E%3C/svg%3E")}
.ti-message-circle{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M21%2012a9%209%200%200%201-14%207L3%2021l2-5a9%209%200%201%201%2016-4Z%22/%3E%3C/svg%3E")}
.ti-video{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%225%22%20width%3D%2212%22%20height%3D%2214%22%20rx%3D%222%22/%3E%3Cpath%20d%3D%22m15%2010%206-4v12l-6-4%22/%3E%3C/svg%3E")}
.ti-trash{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%206h18M9%206V3h6v3M5%206l1%2015h12l1-15M10%2010v7M14%2010v7%22/%3E%3C/svg%3E")}
.ti-filter{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%204h18l-7%208v7l-4%202v-9z%22/%3E%3C/svg%3E")}
.ti-clock{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22/%3E%3Cpath%20d%3D%22M12%207v5l3%202%22/%3E%3C/svg%3E")}
.ti-eye,.ti-eye-off{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M2%2012s4-7%2010-7%2010%207%2010%207-4%207-10%207-10-7-10-7Z%22/%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%223%22/%3E%3C/svg%3E")}
.ti-settings{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%224%22/%3E%3Cpath%20d%3D%22M12%202v3M12%2019v3M2%2012h3M19%2012h3M5%205l2%202M17%2017l2%202M5%2019l2-2M17%207l2-2%22/%3E%3C/svg%3E")}
.ti-key{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%228%22%20cy%3D%228%22%20r%3D%225%22/%3E%3Cpath%20d%3D%22m12%2012%209%209M16%2016l3-3M18%2018l3-3%22/%3E%3C/svg%3E")}
.ti-list-check{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m3%206%202%202%203-3M11%207h10M3%2014h5M11%2014h10M3%2021h5M11%2021h10%22/%3E%3C/svg%3E")}
.ti-id-badge-2{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%225%22%20width%3D%2218%22%20height%3D%2215%22%20rx%3D%222%22/%3E%3Ccircle%20cx%3D%228%22%20cy%3D%2211%22%20r%3D%222%22/%3E%3Cpath%20d%3D%22M5%2016h6M15%2010h3M15%2014h3M9%202h6v3%22/%3E%3C/svg%3E")}
.ti-school,.ti-home-2{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m3%2010%209-7%209%207v11H3zM9%2021v-8h6v8%22/%3E%3C/svg%3E")}
.ti-send{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m22%202-7%2020-4-9-9-4zM11%2013%2022%202%22/%3E%3C/svg%3E")}
.ti-gender-male{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%229%22%20cy%3D%2215%22%20r%3D%226%22/%3E%3Cpath%20d%3D%22m13%2011%208-8M15%203h6v6%22/%3E%3C/svg%3E")}
.ti-gender-female{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%228%22%20r%3D%226%22/%3E%3Cpath%20d%3D%22M12%2014v8M8%2018h8%22/%3E%3C/svg%3E")}

.app-loading{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.app-loading b{font-size:17px}.app-loading p{font-size:14px;color:var(--ink-soft);margin:7px 0 0}.loading-ring{width:32px;height:32px;border:3px solid #dce7f7;border-top-color:#2459a7;border-radius:50%;margin-bottom:18px;animation:ui-spin 1s linear infinite}@keyframes ui-spin{to{transform:rotate(360deg)}}
#app-content p[style*="font-size:12"],#app-content p[style*="font-size:13"],#app-content div[style*="font-size:12"],#app-content span[style*="font-size:11"],.modal-card p[style*="font-size:12"],.modal-card p[style*="font-size:13"]{font-size:14px!important;line-height:1.7}.pro-switch .pro-switch-label,.comment-toggle,.form-header-sub{font-size:14px}.modal-x .ti{font-size:18px}
/* V21 workspace: overview, guided attendance, persistent actions. */
[hidden]{display:none!important}.shell-toggle{width:38px;height:38px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--line);color:#3d5e82;border-radius:9px;font-size:20px;cursor:pointer}.workspace-label{margin-right:auto}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px}.section-heading h2{font-size:30px;line-height:1.35;letter-spacing:-.04em;margin:5px 0 8px;color:#142e4c;font-weight:700}.section-heading p{margin:0;color:var(--ink-soft);font-size:15px;line-height:1.7}.section-kicker{font-size:11px;font-weight:700;color:#6983a1;letter-spacing:.12em}.overview-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-bottom:26px}.overview-kpi{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow)}.overview-kpi .kpi-top{font-size:14px;color:#405d7c;display:flex;align-items:center;gap:9px;font-weight:600}.overview-kpi .kpi-top .ti{font-size:21px;color:#376cba}.overview-kpi>b{font-size:42px;letter-spacing:-.05em;line-height:1.2;color:#163b69;font-weight:650}.overview-kpi>span:last-child{font-size:13px;color:#6b8097}.overview-kpi.green{background:#edf8f4;border-color:#d5e9e0}.overview-kpi.green>b,.overview-kpi.green .ti{color:#207a60}.overview-columns{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:24px}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:26px}.panel-heading h3{margin:0;font-size:18px;letter-spacing:-.02em}.panel-heading>span{font-size:12px;color:#6b8097;white-space:nowrap}.overview-group{margin-bottom:23px}.overview-group-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;font-size:14px}.overview-group-title b{font-weight:600}.overview-group-title span{font-size:13px;color:#647d99}.progress-track{height:8px;background:#e9eff7;border-radius:20px;overflow:hidden}.progress-track>span{height:100%;display:block;background:#3465a7;border-radius:20px}.overview-footnote{font-size:12px;color:#74869b;line-height:1.6;margin:24px 0 0;border-top:1px solid var(--line);padding-top:16px}.overview-actions .panel-heading{margin-bottom:12px}.action-tile{display:flex;align-items:center;gap:16px;text-align:left;width:100%;padding:17px 12px;border:0;border-bottom:1px solid #e9eef5;background:#fff;font-family:inherit;cursor:pointer;color:var(--ink)}.action-tile:last-child{border-bottom:0}.action-tile:hover{background:#f3f7fd;border-radius:10px}.action-tile>.ti{width:44px;height:44px;padding:10px;background:#376cba;font-size:24px}.action-tile b{display:block;font-size:15px;font-weight:600}.action-tile small{display:block;font-size:13px;color:#6a8098;margin-top:5px;line-height:1.6}.attendance-context .class-header{margin:0}.attendance-context{border-left:4px solid #3266ae;padding:18px 24px}.attendance-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:24px 0}.attendance-metrics>div{border:1px solid var(--line);background:#fff;border-radius:12px;padding:18px 20px}.attendance-metrics span{display:block;font-size:14px;color:#5b7087;margin-bottom:6px}.attendance-metrics b{font-size:30px;line-height:1.3;letter-spacing:-.04em;color:#183d69}.attendance-metrics small{font-size:18px;margin-left:3px}.attendance-metrics .metric-present{background:#eff9f5;border-color:#d9ece2}.attendance-metrics .metric-present b{color:#24795f}.attendance-metrics .metric-absent b{color:#b43947}.attendance-list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;flex-wrap:wrap}.attendance-search{display:flex;align-items:center;gap:10px;flex:1;min-width:190px}.attendance-search>.ti{font-size:22px;color:#7088a3}.attendance-search input{min-height:44px}.segmented{display:flex;gap:3px;background:#eef3f9;padding:4px;border:1px solid #dfe7f1;border-radius:9px}.segmented button{border:none;background:transparent;color:#536c87;padding:8px 13px;min-height:36px;font-size:13px;font-weight:600;border-radius:6px;cursor:pointer;font-family:inherit}.segmented button.active{background:#fff;color:#2459a7;box-shadow:0 2px 6px #142e4c12}.attendance-result-count{font-size:12px;color:#7a8ca0;padding:4px 0 18px}.filter-empty{padding:30px 20px;text-align:center;background:#f5f8fc;border-radius:10px;font-size:14px;color:#627b96}.attendance-savebar{position:sticky;bottom:16px;z-index:4;display:flex;align-items:center;gap:24px;background:#fffffff2;backdrop-filter:blur(12px);box-shadow:0 5px 30px #1c3b5c25;padding:18px 22px}.attendance-savebar #save-status{margin:0!important;flex:1;text-align:left}.attendance-savebar .row{margin:0;flex-shrink:0}#scan-btn,#scan-face-btn{width:auto!important;min-width:110px;padding:0 14px!important;gap:9px}#scan-btn svg,#scan-face-btn svg{width:21px;height:21px}#tab-tu-diem-danh>.card:first-child:has(#selfauth-user){max-width:600px;margin:36px auto;padding:36px}.ql-search-box input{border:none;background:transparent;box-shadow:none}.ql-search-box:focus-within{border-color:#7ba4df;box-shadow:0 0 0 3px #3679d417}.ql-page-head{padding-bottom:24px}.qtb-btn:hover{filter:brightness(.96)}.class-pick{border-top:3px solid #7a9dc8}.class-pick:nth-child(4n+2){border-top-color:#6f9f8a}.class-pick:nth-child(4n+3){border-top-color:#c3a460}.class-pick:nth-child(4n){border-top-color:#a68cb3}.att-row.is-present{background:#f5fbf8;border-color:#d4e9de}.att-row.is-absent{background:#fff;border-color:#e0e6ef}.att-row-main .child-name{display:flex;align-items:center;gap:10px}.att-row-main .child-name:before{content:'';width:7px;height:7px;border-radius:50%;background:#b8c5d4;flex-shrink:0}.is-present .att-row-main .child-name:before{background:#32856e}.note-input{border-color:transparent!important;background:#f6f8fb!important}.note-input:focus{border-color:#8eb1e2!important;background:#fff!important}.tabs.subtabs .tab-btn{font-size:14px}.tabs.subtabs .tab-btn.active{font-weight:700}.cover-title{letter-spacing:-.03em}.card:has(.charttitle){padding-top:24px}
@media(min-width:860px){.compact-sidebar .cover{width:196px;max-width:196px}.compact-sidebar .wrap{margin-left:196px}.compact-sidebar .wrap>.tabs{width:196px;padding:0 10px}.compact-sidebar .cover-content{padding-left:18px;padding-right:18px}.compact-sidebar .cover-title{font-size:18px}.compact-sidebar .auth-badge{left:14px;width:168px}.compact-sidebar .wrap>.tabs .tab-btn{font-size:13px;padding:12px}.compact-sidebar .cover-sub{font-size:12px}.compact-sidebar .cover-content a{font-size:11px!important}.overview-progress,.overview-actions{margin-bottom:0}}
@media(max-width:1100px){.overview-columns{grid-template-columns:1fr}.overview-kpis{gap:12px}.overview-kpi{padding:20px}.attendance-savebar{flex-direction:column;align-items:stretch;gap:12px}.attendance-savebar #save-status{text-align:center}.attendance-savebar .row{width:100%}.attendance-metrics>div{padding:16px}}
@media(max-width:859px){.shell-toggle{display:none}.main-navigation{position:fixed!important;top:auto!important;bottom:0;left:0;right:0;border-radius:0;margin:0!important;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:#fffffffa;border-top:1px solid #d5dfec;border-bottom:0;box-shadow:0 -4px 20px #132c4512;gap:5px}.main-navigation .tab-btn{min-height:58px;padding:6px 4px;font-size:12px;line-height:1.3;gap:5px;border-radius:10px}.wrap{padding-top:18px;padding-bottom:116px}.workspace-bar{padding:6px 0 14px}.section-heading{margin-bottom:22px;align-items:flex-start}.section-heading h2{font-size:26px}.section-heading p{font-size:14px}.section-heading>.btn{min-width:44px;padding:10px}.overview-kpis{grid-template-columns:1fr 1fr;gap:12px}.overview-kpi{padding:20px}.overview-kpi:last-child{grid-column:1/-1;display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px}.overview-kpi:last-child>b{grid-row:1/3;grid-column:2}.overview-kpi>b{font-size:36px}.overview-kpi>span:last-child{font-size:12px}.overview-columns{gap:18px}.attendance-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:20px 0}.attendance-metrics b{font-size:27px}.attendance-list-toolbar{gap:12px}.attendance-search{min-width:100%}.segmented{width:100%;justify-content:space-between}.segmented button{flex:1}.attendance-savebar{bottom:90px;padding:16px}.attendance-savebar .btn{font-size:13px;padding:10px 8px}.attendance-context{padding:16px 18px}.overview-group-title{font-size:14px}.action-tile{padding:17px 4px}.action-tile small{font-size:13px}#tab-tu-diem-danh>.card:first-child:has(#selfauth-user){margin:16px auto;padding:24px}}
@media(max-width:380px){.section-heading h2{font-size:23px}.overview-kpi{padding:16px}.overview-kpi .kpi-top{font-size:13px}.overview-kpi>b{font-size:32px}.attendance-savebar .btn{font-size:12px;gap:5px}.main-navigation .tab-btn{font-size:11px}.attendance-metrics>div{padding:14px}.action-tile b{font-size:14px}}
@media print{.shell-toggle,.attendance-savebar{display:none!important}}
/* V22: restrained, consistent work surfaces and explicit attendance review. */
:root{--cream:#f5f6f8;--line:#e0e5ec;--ink:#203047;--ink-soft:#68788c;--shadow:none;--shadow-md:0 8px 24px #14243a12;--radius-md:10px;--radius-sm:8px}.cover{background:#172b45!important}.cover-badge{border-radius:10px}.card,.post-card,.mgr-card,.qr-card,.stats-table-wrap,.overview-kpi{border-radius:10px;box-shadow:none}.card:hover{box-shadow:none}.section-heading h2,.ql-page-title{font-size:26px;letter-spacing:-.03em}.section-heading p,.ql-page-sub{color:#748194}.section-heading{margin-bottom:24px}.workspace-bar{margin-bottom:24px}.workspace-label{letter-spacing:.08em}.overview-kpi{padding:22px;background:#fff}.overview-kpi.green{background:#fff;border-color:var(--line)}.overview-kpi>b{font-size:38px}.class-pick{border:1px solid var(--line);border-radius:9px;min-height:92px;padding:20px}.class-pick:nth-child(n){border-top:1px solid var(--line)}.class-pick:hover{border-color:#4874ad;background:#f7faff}.tabs{border-radius:9px}.main-navigation .tab-btn.active{background:#eaf0f8}.qtb-btn{border-radius:7px}.attendance-metrics>div{background:#fff!important;border-color:var(--line)!important;border-radius:9px}.attendance-list{padding:0!important;overflow:hidden}.attendance-list-toolbar{padding:20px 22px 0}.attendance-result-count{padding:0 22px 16px}.attendance-list>.att-row{margin:0;border:0;border-radius:0;border-top:1px solid #e6ebf1;padding:18px 22px}.att-row.is-present{background:#fcfefd}.att-row.is-absent{background:#fff}.attendance-list>.filter-empty{margin:0 22px 18px}.note-input{min-height:36px!important;border-radius:6px!important}.attendance-context{border-left:3px solid #2459a7}.attendance-context .ctitle{font-size:18px}.attendance-savebar{border-radius:9px}.session-options{display:flex;justify-content:space-between;align-items:center;gap:18px;background:#f9fbfe}.session-options strong{display:block;font-size:16px;font-weight:600;line-height:1.7;margin-top:5px;max-width:750px}.session-options p{margin:5px 0 0;font-size:13px;color:#708096}.session-options .btn{flex-shrink:0}.activity-row-info{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:13px;color:#64778f;line-height:1.7}.activity-row-info .link-btn{font-size:13px;white-space:nowrap}.review-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px}.review-top h2{margin:5px 0 0;font-size:24px;text-align:left!important;color:#193755!important;line-height:1.4}.attendance-review-dialog,.attendance-options-dialog{max-width:640px!important;border-radius:14px}.review-person{display:flex;align-items:center;gap:18px;padding:20px;background:#f2f5f9;border-radius:10px;margin-bottom:20px}.review-person h3{margin:0;font-size:20px;line-height:1.5;overflow-wrap:anywhere}.review-person span{font-size:13px;color:#748298;overflow-wrap:anywhere}.review-details{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 20px;padding:0 4px}.review-details dt{font-size:12px;color:#748298}.review-details dd{font-size:14px;font-weight:600;margin:4px 0 0;overflow-wrap:anywhere}.review-section-title{font-size:16px;margin:24px 0 6px;font-weight:700}.review-hint{font-size:13px;line-height:1.7;color:#687b91;margin:0 0 18px}.attendance-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:24px}.attendance-choice{display:flex;align-items:center;gap:12px;border:1px solid #dce3ed;background:#fff;border-radius:8px;padding:14px;font-size:14px;min-height:58px;font-weight:500;color:#314860;cursor:pointer;line-height:1.6}.attendance-choice input{width:20px;height:20px;flex-shrink:0;accent-color:#2459a7;margin:0}.attendance-choice:has(input:checked){background:#edf4fe;border-color:#427cc7;color:#1d4b87}.attendance-choice.excused:has(input:checked){background:#fff7e8;border-color:#c2994c;color:#875d18}.review-actions{position:sticky;bottom:-28px;background:#fff;display:flex;gap:12px;padding:18px 0 2px;border-top:1px solid var(--line);margin-top:14px;z-index:2}.review-actions .btn{flex:1;justify-content:center;min-height:48px;font-size:14px}.review-error{font-size:14px;color:var(--red);min-height:20px;line-height:1.6;margin:10px 0 0}.review-existing{font-size:13px;background:#eaf5ef;color:#2d7258;border:1px solid #cfe5d9;padding:12px 14px;border-radius:8px;line-height:1.7}.attendance-review-dialog textarea{min-height:74px;resize:vertical;margin-top:8px}.history-activity{display:block;font-size:12px;line-height:1.7;color:#617994;max-width:480px;margin-top:3px}.search-guide{background:#eef2f7;border-radius:10px}.parent-search-card{border-radius:10px}.parent-search-card .group-title{font-size:22px}.search-emblem{border-radius:9px}.action-tile{padding:16px 6px}.action-tile b{font-size:14px}.action-tile small{font-size:13px}.panel-heading h3{font-size:17px}.post-title{font-size:18px}.modal-card .field{margin-bottom:12px}.cover-content a{opacity:.85}#scan-btn,#scan-face-btn{border-radius:8px}
@media(min-width:860px){.cover-content{gap:14px;padding-top:26px}.wrap>.tabs{top:278px}.wrap>.tabs .tab-btn{border-radius:7px;font-weight:500}.wrap>.tabs .tab-btn.active{box-shadow:none;background:#29415e;color:#fff}.wrap>.tabs .tab-btn.active .ti{color:#dce9fb}.auth-badge{border-radius:7px}.attendance-review-dialog{padding:28px!important}}
@media(max-width:859px){.cover{min-height:158px}.cover-content{padding-bottom:18px}.section-heading h2,.ql-page-title{font-size:24px}.session-options{align-items:flex-start;flex-direction:column;gap:14px;padding:18px}.session-options .btn{width:100%;justify-content:center}.session-options strong{font-size:15px}.activity-row-info{align-items:flex-start;font-size:12px;gap:10px}.activity-row-info .link-btn{padding:0;min-height:30px;font-size:12px}.attendance-list-toolbar{padding:18px 18px 0}.attendance-result-count{padding:0 18px 14px}.attendance-list>.att-row{padding:16px 18px}.attendance-review-dialog,.attendance-options-dialog{border-radius:16px 16px 0 0!important;max-height:94dvh!important;padding:22px 18px calc(18px + env(safe-area-inset-bottom))!important}.attendance-choice-grid{grid-template-columns:1fr;gap:8px}.attendance-choice{padding:12px 14px;min-height:54px;font-size:14px}.review-top{margin-bottom:18px}.review-top h2{font-size:22px}.review-person{padding:16px;gap:14px}.review-person h3{font-size:18px}.review-person .avatar{width:60px!important;height:60px!important}.review-details{gap:14px}.review-actions{bottom:calc(-18px - env(safe-area-inset-bottom));padding:16px 0 calc(16px + env(safe-area-inset-bottom))}.review-actions .btn{font-size:13px;padding:10px 8px}.history-activity{max-width:220px}.main-navigation{box-shadow:none}.overview-kpi{border-radius:9px}.overview-kpi>b{font-size:32px}}
/* V23: identity-first review; session choices are made before scanning. */
.profile-review{max-width:800px!important;padding:28px!important}.profile-review .review-top{margin-bottom:22px}.profile-review-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:28px}.profile-identity{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;background:#173552;color:#fff;border-radius:12px;padding:26px 20px;align-self:start;min-height:330px}.profile-found{display:flex;align-items:center;gap:7px;font-size:12px;color:#cee0ef;padding:6px 10px;background:#ffffff0d;border:1px solid #ffffff24;border-radius:30px;margin-bottom:8px}.profile-identity .avatar{border-radius:18px!important;border:3px solid #ffffffb3;box-shadow:0 6px 20px #071b302a;object-fit:cover}.profile-identity h3{font-size:22px;line-height:1.5;letter-spacing:-.02em;margin:4px 0 0;font-weight:600;color:#fff;overflow-wrap:anywhere}.profile-code{font-size:14px;font-weight:600;letter-spacing:.07em;color:#d7e4f1;overflow-wrap:anywhere}.profile-class{font-size:13px;color:#bbcede;border-top:1px solid #ffffff24;padding-top:13px;width:100%;margin-top:6px}.profile-information{min-width:0}.profile-info-title{font-size:15px;font-weight:700;color:#28445f;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:18px}.profile-information .review-details{gap:20px 16px;padding:0;margin-bottom:22px}.profile-information .review-details dt{font-size:12px;color:#7a899a}.profile-information .review-details dd{font-size:15px;line-height:1.6;font-weight:600;color:#243e58;margin-top:5px}.profile-selected{padding:17px;background:#f3f7fc;border:1px solid #e0e9f4;border-radius:9px;margin-bottom:18px}.profile-selected h3{font-size:13px;color:#536e8c;margin:0 0 12px;font-weight:600;letter-spacing:0}.selected-activities{display:flex;flex-wrap:wrap;gap:8px}.selected-activity-chip{display:inline-flex;align-items:center;gap:7px;background:#e4eefc;border:1px solid #c9dcf6;color:#1f4c87;border-radius:7px;padding:8px 10px;font-size:13px;line-height:1.5;font-weight:600}.selected-activity-chip .ti{font-size:15px}.selected-activity-chip.excused{background:#fff4dc;border-color:#ebd39f;color:#82581b}.profile-review .review-existing{font-size:12px;margin:0 0 18px;background:#f8fafc;border-color:#e0e7ef;color:#61758b}.profile-review .review-actions{justify-content:flex-end;margin-top:12px;padding:20px 0 0;bottom:-28px}.profile-review .review-actions .btn{flex:0 1 auto;min-width:180px;min-height:48px}.profile-review .review-error{min-height:8px}.profile-review textarea{font-size:14px;min-height:72px}.session-options{border-left:3px solid #2b619e;background:#fff}.session-options .section-kicker{color:#32649e}.attendance-options-dialog .review-top h2{font-size:23px}.attendance-options-dialog .review-actions .btn{min-height:48px}
@media(max-width:859px){.profile-review{max-width:100%!important;padding:20px 18px calc(18px + env(safe-area-inset-bottom))!important;max-height:94dvh!important}.profile-review-layout{grid-template-columns:1fr;gap:22px}.profile-identity{padding:20px;gap:10px;min-height:0;display:grid;grid-template-columns:78px minmax(0,1fr);text-align:left;align-items:center;width:100%;border-radius:10px}.profile-found{grid-column:1/-1;justify-self:start;font-size:11px;margin-bottom:3px;padding:5px 9px}.profile-identity .avatar{width:78px!important;height:92px!important;border-radius:10px!important;grid-column:1;grid-row:2/5;border-width:2px}.profile-identity h3{grid-column:2;margin:0;font-size:21px;line-height:1.5}.profile-code{grid-column:2;font-size:12px;letter-spacing:.06em}.profile-class{grid-column:2;font-size:13px;border:0;padding:0;margin:0;color:#d1dfeb}.profile-info-title{font-size:14px}.profile-information .review-details{gap:16px;margin-bottom:20px}.profile-information .review-details dd{font-size:14px}.profile-selected{padding:15px}.selected-activity-chip{font-size:13px;padding:8px 10px}.profile-review .review-actions{bottom:calc(-18px - env(safe-area-inset-bottom));padding:16px 0 calc(16px + env(safe-area-inset-bottom));gap:10px}.profile-review .review-actions .btn{flex:1;min-width:0;font-size:13px;padding:10px 8px}.profile-review .review-top h2{font-size:22px}.attendance-options-dialog .review-top h2{font-size:22px}}
@media(max-width:380px){.profile-identity h3{font-size:18px}.profile-identity{padding:16px;column-gap:13px}.profile-review .review-actions .btn{font-size:12px}}
/* V24: visible mobile camera and a quieter management workspace. */
.qr-workspace{max-width:900px;margin:20px auto;border:1px solid #dce3eb;background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 12px 32px #1528440a}
.qr-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:22px 24px 16px}
.qr-heading h3{font-size:23px;margin:5px 0 7px;color:#162b48;letter-spacing:-.5px}.qr-heading p{font-size:13px;color:#64748b;margin:0;line-height:1.6}
.qr-close{display:grid;place-items:center;width:40px;height:40px;border:1px solid #dce3eb;background:#f8fafc;border-radius:12px;font-size:21px;flex-shrink:0;cursor:pointer;color:#475569}
.qr-session{padding:0 24px 18px}.qr-session>span{display:block;font-size:11px;font-weight:700;color:#64748b;margin-bottom:9px;text-transform:uppercase;letter-spacing:.6px}
.qr-preview{position:relative;width:calc(100% - 48px);height:360px;margin:0 24px;background:#0c1726;overflow:hidden;border-radius:15px;isolation:isolate}
.qr-preview video{display:block!important;position:absolute!important;inset:0!important;width:100%!important;height:100%!important;object-fit:cover!important;transform:none!important}.qr-preview canvas[hidden]{display:none!important}
.qr-guide{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(66%,260px);aspect-ratio:1;box-shadow:0 0 0 999px #07111e42;border-radius:15px;pointer-events:none}.qr-guide span{position:absolute;width:30px;height:30px;border:3px solid #fff}.qr-guide span:nth-child(1){left:0;top:0;border-right:0;border-bottom:0;border-radius:12px 0 0 0}.qr-guide span:nth-child(2){right:0;top:0;border-left:0;border-bottom:0;border-radius:0 12px 0 0}.qr-guide span:nth-child(3){left:0;bottom:0;border-right:0;border-top:0;border-radius:0 0 0 12px}.qr-guide span:nth-child(4){right:0;bottom:0;border-left:0;border-top:0;border-radius:0 0 12px 0}
.qr-camera-label{position:absolute;top:14px;left:14px;display:flex;align-items:center;gap:7px;font-size:12px;background:#0c1726b8;border:1px solid #ffffff30;color:#fff;padding:7px 11px;border-radius:20px}
.qr-status{margin:16px 24px 0;border:1px solid #dde7ee;background:#f5f8fc;color:#334155;border-radius:12px;padding:13px 15px;font-size:13px;line-height:1.6}.qr-status[data-state=error]{color:#a02e2e;background:#fff5f5;border-color:#efcccc}.qr-status[data-state=success]{color:#176653;background:#f0faf5;border-color:#c7e9da}
.qr-actions{display:flex;flex-wrap:wrap;gap:10px;padding:14px 24px 0}.qr-actions .btn{flex:1;justify-content:center;min-height:44px;white-space:nowrap;font-size:13px}.qr-help{margin:14px 24px 22px;font-size:12px;line-height:1.7;color:#6b7a90}
.management-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:10px 0 24px}.management-heading h2{font-size:28px;letter-spacing:-.8px;color:#162b48;margin:6px 0 8px}.management-heading p{font-size:14px;color:#64748b;margin:0;line-height:1.6}.management-badge{display:flex;align-items:center;gap:8px;background:#eef3f9;border:1px solid #dce4ee;padding:10px 14px;border-radius:12px;font-size:13px;font-weight:600;color:#344865;white-space:nowrap}
.management-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:22px}.management-summary>div{padding:18px 20px;border:1px solid #e0e6ee;border-radius:14px;background:#fff}.management-summary span{display:block;color:#66768d;font-size:12px;margin-bottom:10px}.management-summary strong{font-size:28px;letter-spacing:-1px;color:#172c49;line-height:1.1}
#tab-quan-ly .ql-search-box{padding:14px 18px;margin-bottom:24px;border-radius:14px;border-color:#dce4ed;box-shadow:none}#tab-quan-ly .ql-search-box input{font-size:14px;min-height:26px}#tab-quan-ly .summary-bar{background:transparent;border:0;padding:4px 0;margin-bottom:12px;color:#334155}#tab-quan-ly .class-pick-grid{gap:12px}#tab-quan-ly .class-pick{min-height:78px;padding:15px;text-align:left;border-radius:12px;background:#fff;border:1px solid #e0e6ee;box-shadow:none}#tab-quan-ly .class-pick:hover{background:#f5f8fc;border-color:#9baec7}#tab-quan-ly .cp-swatch{background:#edf2f8!important;color:#395576!important;border-radius:12px}#tab-quan-ly .ccount{color:#738197;font-size:12px}#tab-quan-ly .cname{font-size:14px;color:#223953}
.management-classes{margin-top:26px}.management-classes .kpi-row,.management-classes .stacked-chart,.management-classes .legend-row{display:none}.management-classes .stats-table-wrap{border:1px solid #e0e6ee;border-radius:16px;box-shadow:none;overflow:hidden}.management-classes .stats-table-title{background:#fff;padding:19px 20px;color:#233b59}.management-classes .stats-table th{background:#f5f8fc;color:#66768d;font-size:12px}.management-classes .stats-table td{padding-top:15px;padding-bottom:15px}.management-classes .stats-table tr[data-qlc]{cursor:pointer}.management-classes .stats-table tr[data-qlc]:hover{background:#f1f5fb}.management-classes .qtoolbar{margin:18px 0}.management-classes .qtb-btn{min-height:42px;border-radius:10px}
#tab-quan-ly .mgr-card{display:grid;grid-template-columns:54px 1fr;text-align:left;column-gap:14px;align-content:center;border:1px solid #e0e6ee;box-shadow:none;padding:18px;border-radius:14px}#tab-quan-ly .mgr-card> :first-child{grid-row:1/4;width:54px!important;height:54px!important}#tab-quan-ly .mgr-card .mname{margin:0;font-size:14px;color:#223953}#tab-quan-ly .mgr-card .mrole{margin:5px 0;font-size:12px}#tab-quan-ly .mgr-card .mmeta{font-size:12px;color:#738197;overflow-wrap:anywhere}#tab-quan-ly .child-row{min-height:78px;padding:16px 8px}#tab-quan-ly .child-row:hover{background:#f5f8fc}#tab-quan-ly .child-sub{line-height:1.6}
@media(max-width:680px){.qr-workspace{margin:14px 0;border-radius:16px}.qr-heading{padding:18px 16px 14px}.qr-heading h3{font-size:21px}.qr-session{padding:0 16px 14px}.qr-preview{width:calc(100% - 32px);margin:0 16px;height:clamp(240px,70vw,330px)}.qr-status{margin:12px 16px 0}.qr-actions{padding:12px 16px 0;gap:8px}.qr-actions .btn{flex:1 1 calc(50% - 8px);font-size:12px;padding:10px 8px}.qr-actions .qr-photo{flex-basis:100%}.qr-help{margin:12px 16px 18px}.management-heading{align-items:flex-start;padding:4px 0 18px}.management-heading h2{font-size:24px}.management-heading p{font-size:13px}.management-badge{display:none}.management-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}.management-summary>div{padding:14px 16px}.management-summary strong{font-size:25px}.management-summary span{font-size:11px}.management-classes{margin-top:18px}#tab-quan-ly .mgr-grid{grid-template-columns:1fr}#tab-quan-ly .class-pick-grid{grid-template-columns:1fr 1fr}.management-classes .stats-table td{font-size:12px;padding:12px 8px}.management-classes .stats-table th{padding:11px 8px;font-size:11px}.management-classes .qtoolbar{gap:8px;flex-wrap:wrap}}
/* V26: reference layout — white app bar and edge-to-edge camera. */
body.scanner-open{overflow:hidden!important;overscroll-behavior:none}
body.scanner-open .modal-overlay{z-index:1100!important}
.scanner-viewport{position:fixed!important;inset:0!important;z-index:1000!important;width:100%!important;height:100vh;height:100dvh;background:#000;color:#fff;overflow:hidden;isolation:isolate}
.scanner-viewport .qr-workspace{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;max-width:none!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;overflow:hidden!important;background:#000!important;display:block!important}
.scanner-viewport .qr-heading{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;align-items:center;justify-content:center;height:calc(64px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 58px 0;background:#fff;color:#111;gap:0}
.scanner-viewport .qr-heading>div{width:100%;text-align:center}.scanner-viewport .qr-heading h3{color:#111;font-size:20px;line-height:1.3;margin:0;letter-spacing:0;font-weight:750}.scanner-viewport .qr-heading .section-kicker,.scanner-viewport .qr-heading p{display:none}
.scanner-viewport .qr-close{position:absolute;left:max(10px,env(safe-area-inset-left));top:calc(9px + env(safe-area-inset-top));width:46px;height:46px;border:0;background:transparent;color:#111;border-radius:8px;font-size:29px}
.scanner-viewport .qr-preview{position:absolute!important;top:calc(64px + env(safe-area-inset-top))!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;height:auto!important;margin:0!important;border-radius:0!important;background:#000;z-index:0;overflow:hidden}
.scanner-viewport .qr-preview video{position:absolute!important;inset:0!important;display:block!important;width:100%!important;height:100%!important;max-height:none!important;object-fit:cover!important;border-radius:0!important;transform:none!important}.scanner-viewport .face-workspace video{transform:scaleX(-1)!important}
.scanner-viewport .qr-session{position:absolute;top:calc(80px + env(safe-area-inset-top));left:16px;right:16px;z-index:2;padding:0;background:transparent;text-align:center;max-height:110px;overflow:auto}
.scanner-viewport .qr-session>span{display:none}.scanner-viewport .selected-activities{justify-content:center;gap:4px 12px}.scanner-viewport .selected-activity-chip{display:inline;color:#fff;background:#0006;border:0;border-radius:6px;font-size:16px;font-weight:700;padding:5px 8px;line-height:1.6}.scanner-viewport .selected-activity-chip .ti{display:none}.scanner-viewport .selected-activity-chip.excused{color:#ffe5ad;background:#0006}
.scanner-viewport .qr-guide{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);width:min(84vw,560px,calc(100dvh - 380px));aspect-ratio:1;max-height:none;border-radius:26px;box-shadow:0 0 0 9999px #0003}
.scanner-viewport .qr-guide span{width:18%;height:18%;border-width:6px;border-color:#ffffffd9}.scanner-viewport .qr-guide span:nth-child(1){border-radius:28px 0 0 0}.scanner-viewport .qr-guide span:nth-child(2){border-radius:0 28px 0 0}.scanner-viewport .qr-guide span:nth-child(3){border-radius:0 0 0 28px}.scanner-viewport .qr-guide span:nth-child(4){border-radius:0 0 28px 0}
.scanner-viewport .face-guide{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);width:min(68vw,330px);height:min(42dvh,410px);border:4px solid #ffffffd9;border-radius:48%;box-shadow:0 0 0 9999px #0003}
.scanner-viewport .qr-camera-label,.scanner-viewport .qr-help{display:none}
.scanner-viewport .qr-status{position:absolute;z-index:2;left:16px;right:16px;bottom:calc(208px + env(safe-area-inset-bottom));width:auto;max-width:760px;margin:0 auto;padding:8px 12px;border:0;border-radius:8px;background:#0009;color:#fff;text-align:center;font-size:14px;line-height:1.5;max-height:88px;overflow:auto}.scanner-viewport .qr-status[data-state=error]{color:#ffe2e2;background:#531522e6}.scanner-viewport .qr-status[data-state=success]{color:#e3ffef;background:#12472ce6}
.scanner-viewport .qr-actions{position:absolute;left:0;right:0;bottom:0;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;max-width:792px;margin:0 auto;padding:12px max(16px,env(safe-area-inset-right)) calc(20px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));background:linear-gradient(transparent,#000b);box-sizing:border-box}
.scanner-viewport .qr-actions .btn{min-height:42px;justify-content:center;background:#0008;border:1px solid #ffffff50;color:#fff;font-size:14px;border-radius:8px;box-shadow:none;padding:8px 12px;white-space:normal}.scanner-viewport .qr-actions .qr-photo{grid-column:1/-1;background:#2c7ac6;border:0;min-height:48px;font-size:17px;font-weight:700}.scanner-viewport .qr-actions .qr-done{grid-column:1/-1;background:#25ae59;border:0;min-height:48px;font-size:18px;font-weight:750}
.scanner-viewport .face-workspace .qr-actions .qr-retry{grid-column:1/-1;background:#2c7ac6;border:0;min-height:48px;font-size:17px}.scanner-viewport .face-workspace .qr-status{bottom:calc(145px + env(safe-area-inset-bottom))}
.scanner-viewport button:focus-visible{outline:3px solid #93c8ff;outline-offset:3px}
@media(min-width:860px){.scanner-viewport .qr-heading h3{font-size:23px}.scanner-viewport .qr-guide{width:min(50vw,480px);max-height:calc(100% - 310px)}}
@media(max-height:520px) and (min-width:600px){.scanner-viewport .qr-heading{height:48px}.scanner-viewport .qr-close{top:1px}.scanner-viewport .qr-heading h3{font-size:18px}.scanner-viewport .qr-preview{top:48px!important}.scanner-viewport .qr-session{top:58px;right:16px;left:auto;width:240px;max-height:64px}.scanner-viewport .selected-activity-chip{font-size:13px}.scanner-viewport .qr-actions{left:auto;width:260px;padding:8px 16px 12px;gap:6px}.scanner-viewport .qr-actions .btn{font-size:13px;min-height:38px;padding:7px}.scanner-viewport .qr-status,.scanner-viewport .face-workspace .qr-status{left:auto;right:16px;width:228px;bottom:180px;font-size:12px}.scanner-viewport .face-workspace .qr-status{bottom:115px}.scanner-viewport .qr-guide{left:calc((100% - 260px)/2);top:50%;width:min(50dvh,240px);max-height:none}.scanner-viewport .face-guide{left:calc((100% - 260px)/2);top:50%;width:150px;height:220px}}
/* V27: a continuous attendance session and the navy/gold portal treatment. */
:root{--cream:#f3f5f9;--paper:#fff;--ink:#1b3046;--ink-soft:#6a7788;--line:#e1e6ee}
.workspace-bar{background:#fff;border:1px solid #e5e9f0;border-radius:14px;padding:15px 20px;box-shadow:0 4px 16px #142b4310}
.section-heading{padding:22px 24px;border:1px solid #e1e6ee;border-radius:16px;background:linear-gradient(110deg,#fff,#f4f7fb);margin-bottom:22px}.section-heading .section-kicker{display:inline-block;background:#eee7d3;color:#75602c;font-size:11px;padding:3px 7px;border-radius:4px;letter-spacing:.05em}.section-heading h2{margin-top:8px;color:#17334e}.section-heading p{font-size:14px;color:#758194}
.attendance-context{border-left:3px solid #1d3c59}.session-options{border-left-color:#b39a53}.session-options .section-kicker{color:#8b733a}.session-options .btn{background:#f8f5ea;border-color:#e5dab9;color:#79622d}
.attendance-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:22px 0}.attendance-metrics>div{display:flex;flex-direction:column;gap:10px;padding:20px;background:#fff;border:1px solid #e1e6ee;border-radius:14px;box-shadow:0 3px 12px #142b4306;border-top:1px solid #e1e6ee!important}.attendance-metrics span{font-size:12px;color:#67778b;font-weight:600;text-transform:uppercase;letter-spacing:.035em}.attendance-metrics b{font-size:32px;color:#1e3b56;line-height:1.2;font-weight:650;letter-spacing:-1px}.attendance-metrics small{color:#8993a2;font-size:12px}.attendance-metrics em{font-style:normal;font-size:17px;letter-spacing:0;margin-left:4px}.attendance-metrics .metric-present b{color:#247559}.attendance-metrics .metric-absent b{color:#a54b52}.attendance-metrics .metric-excused b{color:#9b8045}.attendance-metrics .metric-rate b{color:#2b506c}
.attendance-list{border-radius:16px;box-shadow:0 4px 18px #142b4306}.attendance-list-toolbar{background:#fff;border-bottom:1px solid #eef1f5}.attendance-list .child-name{font-size:15px;font-weight:650}.attendance-list .att-row{background:#fff;border-bottom:1px solid #edf1f6}.attendance-list .att-row:hover{background:#fafbfd}
.scanner-session-result{position:absolute;top:calc(125px + env(safe-area-inset-top));left:16px;right:16px;z-index:3;display:flex;align-items:center;gap:12px;max-width:720px;margin:auto;padding:12px 14px;background:#123c2fe8;border:1px solid #79ba9650;color:#fff;border-radius:12px;box-shadow:0 8px 24px #0003;backdrop-filter:blur(8px);pointer-events:none}.scanner-session-result .avatar{width:40px!important;height:40px!important;flex-shrink:0;border-radius:8px!important}.scanner-session-result>div{flex:1;min-width:0}.scanner-session-result span{display:block;font-size:12px;line-height:1.5;color:#bcdec8}.scanner-session-result strong{display:block;font-size:15px;line-height:1.5;overflow-wrap:anywhere}.scanner-session-result>.ti{font-size:26px;color:#a5e4b9}.scanner-has-result .qr-session{max-height:38px}.scanner-viewport .qr-status[data-state=success]{background:#173c30eb;color:#e0ffec}
.profile-review .profile-selected{background:#f7f8fb;border-color:#e2e7ee}.profile-review .review-top{padding-bottom:16px;border-bottom:1px solid #e3e8f0}.profile-review .review-actions #review-confirm{background:#b99a4b;border-color:#b99a4b;color:#fff;font-weight:650}.profile-review .review-actions #review-confirm:hover{background:#a68a42}.profile-review .review-top .section-kicker{color:#957a3a}.profile-review .profile-identity{background:#183752}.profile-review .review-details{padding:14px;background:#f7f8fb;border:1px solid #e4e8f0;border-radius:10px}.profile-review .profile-information .review-details{padding:14px}.profile-review .review-details dt{font-size:12px}.profile-review .review-details dd{font-size:14px}
@media(min-width:860px){.cover{background:#17334d}.wrap>.tabs .tab-btn.active{background:#254561;box-shadow:inset 3px 0 #c3a256}.wrap>.tabs .tab-btn.active .ti{color:#ddc181}.scanner-open .attendance-review-overlay{justify-content:flex-end;padding:0!important;align-items:stretch;background:#06132078}.scanner-open .attendance-review-overlay .profile-review{width:540px;max-width:540px!important;height:100vh;height:100dvh;max-height:100dvh!important;border-radius:0!important;padding:24px!important;overflow:auto}.scanner-open .attendance-review-overlay .profile-review-layout{grid-template-columns:1fr;gap:22px}.scanner-open .attendance-review-overlay .profile-identity{display:grid;grid-template-columns:86px minmax(0,1fr);min-height:0;padding:20px;gap:8px 16px;text-align:left}.scanner-open .attendance-review-overlay .profile-found{grid-column:1/-1;justify-self:start;margin-bottom:7px}.scanner-open .attendance-review-overlay .profile-identity .avatar{grid-column:1;grid-row:2/5;width:86px!important;height:100px!important;border-radius:12px!important}.scanner-open .attendance-review-overlay .profile-identity h3{grid-column:2;margin:0;font-size:21px}.scanner-open .attendance-review-overlay .profile-code,.scanner-open .attendance-review-overlay .profile-class{grid-column:2;margin:0;padding:0;border:0}.scanner-open .attendance-review-overlay .review-actions{position:sticky;bottom:-24px;background:#fff;border-top:1px solid #e2e7ef;padding:18px 0;margin-top:18px}.scanner-open .attendance-review-overlay .review-actions .btn{flex:1;min-width:0;font-size:14px}}
@media(max-width:859px){.workspace-bar{padding:12px 14px;margin-top:16px}.section-heading{padding:18px}.section-heading h2{font-size:23px}.section-heading p{font-size:13px}.attendance-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}.attendance-metrics>div{padding:16px;gap:8px}.attendance-metrics b{font-size:29px}.attendance-metrics .metric-rate{grid-column:1/-1;display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 12px}.attendance-metrics .metric-rate b{grid-column:2;grid-row:1/3}.attendance-metrics .metric-rate small{grid-column:1}.profile-review .review-actions .btn{font-size:13px}.scanner-session-result{padding:10px 12px}.scanner-session-result span{font-size:11px}.scanner-session-result strong{font-size:14px}}
@media(max-height:520px) and (min-width:600px){.scanner-session-result{top:60px;left:12px;right:auto;width:calc(100% - 290px);padding:8px}.scanner-session-result .avatar{width:32px!important;height:32px!important}.scanner-session-result strong{font-size:13px}.scanner-session-result span{font-size:11px}}
/* V28: parish teaching portal, structured navy navigation and real data modules. */
.portal-page-heading{display:flex;align-items:center;gap:16px;padding:22px 24px;background:linear-gradient(110deg,#fff,#f4f6fa);border:1px solid #e1e6ee;border-radius:16px;margin-bottom:22px}.portal-heading-icon{display:grid;place-items:center;flex-shrink:0;width:48px;height:48px;background:#193b56;color:#d5b66c;border-radius:12px;font-size:25px}.portal-page-heading>div{flex:1;min-width:0}.portal-page-heading .section-kicker{font-size:11px;color:#8f773d;letter-spacing:.06em}.portal-page-heading h2{font-size:25px;line-height:1.4;margin:5px 0 7px;color:#19354f;letter-spacing:-.5px}.portal-page-heading p{font-size:14px;line-height:1.6;margin:0;color:#728196}.portal-page-heading .btn{flex-shrink:0}
.portal-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:22px}.portal-kpis>div{display:flex;flex-direction:column;gap:9px;border:1px solid #e3e7ee;padding:20px;background:#fff;border-radius:14px}.portal-kpis span{font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.03em;color:#6e7d91}.portal-kpis strong{font-size:30px;color:#233e57;line-height:1.2;font-weight:650}.portal-kpis small{font-size:12px;min-height:16px;color:#8693a3}
.portal-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;background:#fff;border:1px solid #e2e7ee;border-radius:14px;margin-bottom:20px}.portal-toolbar>div{display:flex;gap:8px;flex-wrap:wrap}.portal-toolbar .btn{min-height:40px}.portal-toolbar [data-portal-action^=new]{background:#1c3e59;color:#fff;border-color:#1c3e59}.portal-search{display:flex;align-items:center;gap:10px;flex:1;max-width:550px;color:#8291a3}.portal-search input{width:100%;font-size:14px;min-height:40px;border:0;background:transparent;outline:0}.portal-search:focus-within{color:#244d75}.portal-search input:focus{box-shadow:none}
.portal-table-wrap{overflow:auto;background:#fff;border:1px solid #e1e6ee;border-radius:14px}.portal-table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}.portal-table th{font-size:12px;text-transform:uppercase;letter-spacing:.025em;padding:16px;color:#6b7d92;background:#f8fafc;border-bottom:1px solid #e5e9f0;white-space:nowrap;font-weight:650}.portal-table td{padding:17px 16px;border-bottom:1px solid #edf0f5;color:#41556e;vertical-align:middle}.portal-table tr:last-child td{border-bottom:0}.portal-table tbody tr:hover{background:#fafbfd}.portal-table td:last-child{white-space:nowrap}.portal-table td .btn{margin:3px}.portal-table [hidden],.portal-class-grid [hidden],.portal-library-grid [hidden]{display:none!important}.portal-no-results{padding:28px;text-align:center;color:#8491a2}.portal-person{display:flex;gap:12px;align-items:center;min-width:180px}.portal-person .avatar{flex-shrink:0;border-radius:10px!important}.portal-person b{display:block;color:#263f59;font-size:14px;font-weight:650}.portal-person small{display:block;font-size:12px;color:#8a97a6;margin-top:5px}
.portal-chip{display:inline-flex;align-items:center;font-size:12px;font-weight:600;line-height:1.5;padding:5px 9px;border-radius:6px;background:#f1f4f8;color:#5d7189;white-space:nowrap}.portal-chip.green{color:#277558;background:#ecf7f0}.portal-chip.gold{color:#947439;background:#fbf5e8}.portal-chip.red{color:#aa4650;background:#fff1f1}
.portal-class-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.portal-class-card,.portal-game-card{background:#fff;border:1px solid #e1e6ed;border-radius:16px;overflow:hidden;min-width:0}.portal-class-card>header{display:flex;align-items:center;gap:12px;background:#1d3b56;color:#fff;padding:20px}.portal-class-card>header>.ti{font-size:27px;color:#d3b977}.portal-class-card>header>div{flex:1;min-width:0}.portal-class-card h3{color:inherit;font-size:17px;margin:0 0 7px;line-height:1.4}.portal-class-card header span:not(.portal-chip){font-size:12px;color:#c6d4e3}.portal-class-card header .portal-chip{font-size:11px;color:#d0eadd;background:#ffffff18}.portal-class-facts{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px}.portal-class-facts>div{padding:12px;background:#f8f9fc;border:1px solid #eef0f5;border-radius:9px}.portal-class-facts span{display:block;font-size:12px;color:#7a899b;margin-bottom:7px}.portal-class-facts strong{display:block;color:#354c66;font-size:14px;font-weight:600}.portal-class-teachers{display:flex;align-items:center;gap:9px;font-size:13px;color:#6a7e95;padding:0 16px 17px;line-height:1.6}.portal-class-card footer,.portal-game-card footer{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;border-top:1px solid #eef1f6;padding:12px 14px}.portal-class-card footer .btn{font-size:12px}.portal-empty{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;background:#fff;border:1px dashed #dae2ed;padding:36px 20px;border-radius:14px;color:#7f8da0;text-align:center;grid-column:1/-1}.portal-empty>.ti{font-size:34px;color:#b6a06b}.portal-empty strong{font-size:15px;color:#52677f}.portal-empty span{font-size:13px}.portal-unavailable{padding:36px;background:#fff;border:1px solid #e4e9f0;border-radius:14px;text-align:center}.portal-unavailable>.ti{font-size:36px;color:#9a7e40}.portal-unavailable p{color:#7a899c;line-height:1.7}
.portal-overlay,.portal-game-overlay{z-index:100!important}.portal-dialog{max-width:740px!important;width:100%;padding:0!important;border-radius:16px!important;overflow:auto}.portal-dialog header{display:flex;justify-content:space-between;gap:16px;padding:22px 26px;border-bottom:1px solid #e2e7f0;background:#f8f9fc}.portal-dialog h2{font-size:22px;margin:6px 0 0;color:#253f58}.portal-dialog .section-kicker{font-size:10px;color:#9b8142}.portal-form{padding:24px 26px}.portal-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px}.portal-field{display:flex;flex-direction:column;gap:8px;margin-bottom:18px;min-width:0}.portal-form-grid .portal-field{margin-bottom:0}.portal-field>span{font-size:13px;font-weight:600;color:#5c7089}.portal-field input,.portal-field select,.portal-field textarea{width:100%;min-height:43px;background:#fbfcfe;border:1px solid #dfe5ee;border-radius:8px;padding:10px 12px;font-family:inherit;font-size:14px;color:#253f58;box-sizing:border-box}.portal-field textarea{resize:vertical;min-height:86px;line-height:1.7}.portal-form-grid+.portal-field,.portal-assignment{margin-top:24px}.portal-field input:focus,.portal-field textarea:focus,.portal-field select:focus{outline:2px solid #91b2d2;outline-offset:1px}.portal-dialog footer{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:12px;background:#fff;border-top:1px solid #e1e7ef;padding:18px 26px}.portal-dialog footer .btn{min-height:44px}.portal-primary{background:#b59446!important;border-color:#b59446!important;color:#fff!important;font-weight:650}.portal-primary:hover{background:#a8893c!important}.portal-form-error{margin:0 26px;color:#af4152;font-size:14px;line-height:1.6}.portal-assignment{border:1px solid #e0e6ed;border-radius:10px;padding:14px 16px}.portal-assignment legend{font-size:13px;font-weight:600;color:#60758c;padding:0 6px}.portal-assignment label{display:flex;align-items:center;gap:10px;padding:9px 0;font-size:14px;color:#3f566f}.portal-assignment input{accent-color:#b79a57;width:17px;height:17px}.portal-hint{font-size:13px;line-height:1.7;color:#7d8d9f;margin:18px 0}.portal-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;background:#f7f9fc;padding:16px;border-radius:10px}.portal-detail-grid span{display:block;font-size:12px;color:#7c8ca0;margin-bottom:8px}.portal-detail-grid strong{font-size:14px;color:#35506b}.portal-form>.portal-person{padding:12px 0;border-bottom:1px solid #eef1f6}.portal-form h3{font-size:16px;margin:24px 0 16px}.portal-lesson-content{white-space:pre-wrap;overflow-wrap:anywhere;font-size:16px;line-height:1.9;color:#3e526b}
.portal-tabs{display:flex;gap:8px;margin:20px 0;border-bottom:1px solid #dfe5ed;overflow:auto}.portal-tabs button{background:transparent;border:0;border-bottom:2px solid transparent;padding:12px 14px;color:#75879a;font-size:14px;font-weight:600;white-space:nowrap;cursor:pointer}.portal-tabs button.active{color:#284d6f;border-bottom-color:#b69a57}
.portal-library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.portal-library-card{background:#fff;border:1px solid #e1e7ee;border-radius:14px;padding:25px}.portal-library-card>.ti{font-size:48px;color:#3184ad}.portal-library-card h3{font-size:16px;line-height:1.5;color:#354b65;margin:18px 0 9px}.portal-library-card p{font-size:12px;color:#8190a3;margin-bottom:17px}.portal-material{display:flex;gap:16px;padding:18px 0;border-bottom:1px solid #e8edf4}.portal-material>.ti{color:#a18a4b;font-size:30px;margin-top:4px}.portal-material h3{margin:0 0 8px}.portal-material p{font-size:13px;color:#7d8c9e;line-height:1.7;overflow-wrap:anywhere}
.portal-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-bottom:22px}.portal-tools>button{display:flex;flex-direction:column;align-items:flex-start;gap:9px;padding:20px;border:1px solid #e1e7ee;background:#fff;border-radius:14px;text-align:left;cursor:pointer}.portal-tools .ti{font-size:27px;color:#b0924a}.portal-tools strong{color:#2d4a66;font-size:15px}.portal-tools span{font-size:12px;color:#8693a5;line-height:1.6}.portal-game-card{padding:20px}.portal-game-icon{display:grid;place-items:center;width:54px;height:54px;border-radius:13px;background:#f8f3e5;color:#b09245;font-size:29px}.portal-game-card h3{font-size:19px;color:#2c4864;margin:18px 0 10px}.portal-game-card p{font-size:13px;line-height:1.7;color:#8593a5}.portal-game-meta{display:flex;flex-wrap:wrap;gap:8px}.portal-game-card footer{margin:20px -20px -20px}.portal-quiz{max-width:720px!important;width:100%;padding:26px!important}.portal-quiz header{display:flex;align-items:center;justify-content:space-between;gap:12px}.portal-quiz header span{font-size:12px;color:#9a7e41}.portal-quiz h2{font-size:23px;color:#24435e}.portal-quiz h3{font-size:21px;line-height:1.7;margin:26px 0;color:#294760;overflow-wrap:anywhere}.portal-quiz-progress{display:flex;justify-content:space-between;font-size:14px;color:#7c8da2;margin:18px 0}.portal-quiz-progress strong{color:#9e7c3e;background:#fcf5e3;border-radius:8px;padding:6px 10px}.portal-quiz progress{width:100%;height:6px;accent-color:#b39750}.portal-quiz-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.portal-quiz-options button{display:flex;align-items:center;gap:12px;min-height:74px;text-align:left;padding:14px;border:1px solid #dbe4ed;border-radius:11px;background:#f8fafc;color:#425b75;font-size:16px;cursor:pointer}.portal-quiz-options button b{background:#fff;border:1px solid #e4e9ee;border-radius:7px;padding:7px 10px;color:#8d7541}.portal-quiz-options button.correct{background:#e9f8ef;border-color:#96d2ae;color:#216540}.portal-quiz-options button.wrong{background:#fff0f1;border-color:#e0a0a9;color:#9c3745}.portal-quiz #quiz-feedback{font-size:15px;line-height:1.7;color:#617891}.portal-quiz #quiz-next{width:100%;margin-top:12px}.portal-quiz [hidden]{display:none!important}.portal-game-result{text-align:center}.portal-result-icon{display:grid;place-items:center;font-size:42px;background:#f8f1de;color:#b89948;border-radius:20px;margin:auto;width:86px;height:86px}.portal-game-result>strong{display:block;font-size:62px;color:#1b5843;margin:28px 0 14px}.portal-game-result>strong small{font-size:25px;color:#a1acb8}.portal-game-result p{font-size:15px;line-height:1.7;color:#71869c}.portal-game-result .row{justify-content:center}.portal-flash-answer{padding:22px;border-radius:12px;background:#edf7f1;color:#31644a;line-height:1.8}.portal-random-result{padding:30px;background:#f7f9fc;border-radius:12px;display:flex;align-items:center;flex-direction:column;gap:16px;color:#748ca3}.portal-random-result strong{font-size:23px;color:#2d4b69}
.portal-sidebar,.portal-nav-backdrop,.portal-mobile-menu{display:none}.portal-sidebar[hidden]{display:none!important}.portal-nav-group{display:block;padding:18px 12px 9px;color:#a0b2c5;font-size:10px;font-weight:650;letter-spacing:.07em}.portal-sidebar nav>button{display:flex;align-items:center;gap:12px;width:100%;border:0;border-left:2px solid transparent;background:transparent;border-radius:8px;padding:11px 12px;margin-bottom:4px;text-align:left;color:#bdccdb;font-size:13px;font-weight:500;line-height:1.5;cursor:pointer}.portal-sidebar nav>button>.ti{font-size:19px;color:#a7bbce;flex-shrink:0}.portal-sidebar nav>button:hover{background:#ffffff09;color:white}.portal-sidebar nav>button.active{color:#fff;background:#2a4b67;border-left-color:#c6a254}.portal-sidebar nav>button.active>.ti{color:#d3b36b}.portal-mobile-title{display:none}
@media(min-width:860px){.portal-admin .cover-content{display:flex;flex-direction:row;align-items:center;padding:22px 18px;gap:12px}.portal-admin .cover-badge{width:45px;height:45px;border-radius:10px;flex-shrink:0}.portal-admin .cover-title{font-size:16px;line-height:1.5}.portal-admin .cover-sub{font-size:11px;margin-top:5px;line-height:1.5}.portal-admin .cover-content a{display:none!important}.portal-admin .wrap>.tabs{top:125px;gap:4px}.portal-admin .wrap>.tabs .tab-btn{min-height:38px;font-size:12px;padding:8px 12px}.portal-admin .wrap>.tabs .tab-btn .ti{font-size:17px}.portal-admin #tab-ht-glv>.subtabs{display:none!important}.portal-admin .portal-sidebar{display:block;position:fixed;top:265px;left:12px;width:224px;bottom:100px;z-index:10;overflow:auto;scrollbar-width:thin;scrollbar-color:#45647b transparent}.portal-admin .auth-badge{bottom:22px;font-size:12px}.portal-admin .wrap{padding-top:24px}.portal-admin.compact-sidebar .portal-sidebar{width:172px}.portal-admin.compact-sidebar .portal-sidebar nav>button{font-size:12px;padding:9px}.portal-admin.compact-sidebar .cover-content{flex-direction:column;align-items:flex-start;padding:20px 18px}.portal-admin.compact-sidebar .wrap>.tabs{top:165px}.portal-admin.compact-sidebar .portal-sidebar{top:305px}}
@media(max-width:859px){.portal-admin #tab-ht-glv>.subtabs{display:none!important}.portal-admin .portal-mobile-menu{display:grid;place-items:center;width:36px;height:36px;background:#f3f6fa;border:1px solid #e1e7ef;border-radius:8px;color:#2d4c6b;font-size:21px;flex-shrink:0}.portal-admin .shell-toggle{display:none}.portal-menu-open .portal-sidebar{display:block;position:fixed;top:0;left:0;bottom:0;width:min(310px,86vw);background:#18354e;z-index:90;padding:env(safe-area-inset-top) 14px calc(20px + env(safe-area-inset-bottom));overflow:auto;box-sizing:border-box}.portal-menu-open .portal-nav-backdrop{display:block;position:fixed;inset:0;background:#081a2c80;z-index:89;border:0;width:100%;height:100%}.portal-mobile-title{display:flex;align-items:center;justify-content:space-between;padding:20px 10px 12px;color:white;font-size:15px}.portal-menu-close{background:#ffffff10;color:#fff;border:0;border-radius:8px;width:36px;height:36px;font-size:22px}.portal-page-heading{padding:18px;gap:12px}.portal-heading-icon{width:42px;height:42px;font-size:22px}.portal-page-heading h2{font-size:21px}.portal-page-heading p{font-size:13px}.portal-page-heading .section-kicker{font-size:9px}.portal-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.portal-kpis>div{padding:16px}.portal-kpis strong{font-size:27px}.portal-kpis span{font-size:11px}.portal-toolbar{align-items:stretch;flex-direction:column;padding:14px}.portal-toolbar>div{justify-content:flex-end}.portal-search{max-width:none}.portal-class-grid{grid-template-columns:1fr}.portal-class-card>header{padding:18px}.portal-class-card header .portal-chip{display:none}.portal-library-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.portal-library-card{padding:18px}.portal-library-card h3{font-size:14px}.portal-tools{grid-template-columns:1fr}.portal-tools>button{display:grid;grid-template-columns:36px 1fr;gap:6px 12px;padding:16px}.portal-tools .ti{grid-row:1/3}.portal-tools strong,.portal-tools span{grid-column:2}.portal-dialog{max-height:94dvh!important;border-radius:16px 16px 0 0!important}.portal-dialog header{padding:18px}.portal-dialog h2{font-size:20px}.portal-form{padding:20px 18px}.portal-form-grid{grid-template-columns:1fr;gap:16px}.portal-dialog footer{padding:16px 18px calc(16px + env(safe-area-inset-bottom))}.portal-dialog footer .btn{flex:1;font-size:14px}.portal-table td{padding:14px 12px}.portal-table th{padding:13px 12px}.portal-quiz{padding:22px 18px!important}.portal-quiz h3{font-size:19px;margin:20px 0}.portal-quiz-options{grid-template-columns:1fr}.portal-quiz-options button{min-height:60px;font-size:15px}.portal-game-overlay{padding:0!important}.portal-quiz{max-height:94dvh!important}.portal-quiz .row .btn{font-size:14px}.portal-game-result>strong{font-size:52px}}
.overview-history{margin-top:22px}.overview-bars{display:flex;gap:18px;height:220px;align-items:flex-end;padding:20px 0 6px}.overview-bar{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;height:100%;gap:8px}.overview-bar>b{font-size:14px;color:#42617e}.overview-bar>div{width:100%;max-width:65px;flex:1;display:flex;align-items:flex-end}.overview-bar>div>span{display:block;width:100%;background:#284a67;border-radius:6px 6px 0 0}.overview-bar small{font-size:11px;color:#8291a3;white-space:nowrap}.portal-overview-shortcuts{margin-top:22px}.portal-overview-shortcuts h3{font-size:17px;color:#32536f;margin:0 0 18px}.portal-shortcuts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.portal-shortcuts button{display:flex;align-items:center;gap:10px;background:#f9fafc;border:1px solid #e2e7ee;color:#405e7c;border-radius:10px;padding:16px 12px;cursor:pointer;text-align:left;font-size:14px}.portal-shortcuts .ti{color:#b29245;font-size:23px}@media(max-width:859px){.portal-shortcuts{grid-template-columns:1fr 1fr}.portal-shortcuts button{font-size:12px;padding:13px 10px}.overview-bars{gap:8px;height:180px}.overview-bar small{font-size:9px}.overview-history{padding:18px}}
.portal-admin .workspace-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-admin #workspace-date{white-space:nowrap}@media(max-width:859px){.portal-admin .workspace-label{font-size:11px}.portal-admin .workspace-label b{font-size:12px}.portal-admin #workspace-date{font-size:11px}}
/* Consistent management workspace, reference-style filters and profiles. */
.portal-admin{background:#f3f5f8}.portal-admin .card{box-shadow:0 2px 5px #17324f04;border-color:#e3e8ef}.portal-page-heading{border-radius:12px!important;box-shadow:none!important}.portal-page-heading h2{font-weight:700;letter-spacing:-.5px}.portal-kpis>div{position:relative;border-radius:12px!important;box-shadow:none!important}.portal-kpis>div:after{content:'↗';position:absolute;right:20px;top:20px;color:#7f93a8;background:#f3f6fa;width:30px;height:30px;display:grid;place-items:center;border-radius:9px}.portal-kpis strong{letter-spacing:-1px}.portal-toolbar{border-radius:12px 12px 0 0!important;margin-bottom:0!important;box-shadow:none!important}.portal-filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;background:#fff;padding:0 20px 20px;border:1px solid #e1e7ee;border-top:0;border-radius:0 0 12px 12px;margin-bottom:22px}.portal-filter-bar>label{flex:1;min-width:135px;max-width:250px}.portal-filter-bar label span{display:block;color:#6c7d91;font-size:11px;font-weight:650;margin:4px 0 8px}.portal-filter-bar input,.portal-filter-bar select{background:#f8fafc;font-size:13px;padding:9px 11px;border-radius:7px;border:1px solid #e0e6ee;min-height:39px}.portal-filter-bar .btn{min-height:39px;border:1px solid #e0e6ee}.portal-pagination{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:17px 20px;background:#fff;border:1px solid #e1e7ee;border-radius:10px;margin:18px 0 26px;color:#728398;font-size:12px}.portal-pagination>span{margin-right:auto}.portal-pagination>label{display:flex;align-items:center;gap:8px;white-space:nowrap}.portal-pagination select{width:68px;font-size:12px;padding:6px;border-radius:6px}.portal-pagination button{padding:8px!important;min-width:32px}.portal-pagination button:disabled{opacity:.35;cursor:default}.portal-pagination>b{white-space:nowrap;color:#3d5671;font-size:12px}.portal-table th{font-size:11px!important;letter-spacing:.02em;text-transform:uppercase;background:#f7f9fc!important;color:#7e8ba0!important}.portal-table tbody tr:hover{background:#f9fbfd}.portal-table td .btn{font-size:11px!important;padding:7px 8px!important}.portal-table td:last-child{white-space:nowrap}.portal-table [hidden],.portal-class-grid [hidden],.portal-library-grid [hidden],.portal-detail-grid[hidden],.portal-form section[hidden],.form-section[hidden]{display:none!important}.portal-profile-hero{display:flex;align-items:center;gap:20px;border-bottom:1px solid #e8edf3;padding-bottom:25px}.portal-profile-hero h3{margin:0 0 8px!important;font-size:21px}.portal-profile-hero p{font-size:12px;color:#8491a4;margin:0 0 10px}.portal-profile-drawer{margin-left:auto!important;max-width:700px!important;height:100dvh!important;max-height:100dvh!important;border-radius:16px 0 0 16px!important}.portal-overlay:has(.portal-profile-drawer){padding:0!important}.portal-editor-tabs{position:sticky;top:75px;z-index:5;background:#fff;margin:0 -2px 20px;padding:0 10px}.portal-editor-tabs button{font-size:12px;padding:13px 10px}.portal-bulk-grades{display:flex;flex-direction:column;gap:0}.portal-bulk-grades label{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 0;border-bottom:1px solid #e8edf3}.portal-bulk-grades span{font-size:14px;color:#36506a}.portal-bulk-grades small{display:block;color:#8a98a9;font-size:11px;margin-top:5px}.portal-bulk-grades input{max-width:94px;text-align:center}.portal-tools{grid-template-columns:repeat(4,minmax(0,1fr))}.portal-matching{display:grid;grid-template-columns:1fr 1fr;gap:18px}.portal-matching>div{display:flex;flex-direction:column;gap:12px}.portal-matching button{background:#f7f9fc;border:1px solid #dee6ef;border-radius:9px;padding:14px;min-height:80px;color:#3b5571;text-align:left;cursor:pointer;font:inherit;font-size:14px;line-height:1.6}.portal-matching button.selected{background:#fcf6e9;border-color:#bd9f59;box-shadow:0 0 0 2px #bd9f5920}.portal-matching button.matched{background:#edf7f0;border-color:#a5cdb3;color:#397654;opacity:.6}.portal-match-status{padding:12px 16px;background:#eff4f9;border-radius:9px;color:#4e6984;margin:14px 0 20px;font-size:13px}.portal-dialog .portal-tabs{margin-top:16px}.portal-dialog input:focus,.portal-dialog select:focus,.portal-dialog textarea:focus,.portal-filter-bar :focus{outline:2px solid #a68e5140;border-color:#ab965e!important}.portal-dialog footer .portal-primary{background:#ba9d55!important;color:#fff!important;box-shadow:none!important}.portal-dialog footer{position:sticky;bottom:0;background:#fff;z-index:2}.portal-form .portal-detail-grid{padding:4px 0}.portal-detail-grid>div{border-bottom:1px solid #edf1f5;padding:10px 0 16px}
@media(max-width:859px){.portal-filter-bar{padding:0 14px 16px;gap:12px}.portal-filter-bar>label{flex-basis:calc(50% - 12px);min-width:0;max-width:none}.portal-filter-bar>.btn{width:100%;justify-content:center}.portal-pagination{flex-wrap:wrap;padding:12px;gap:8px}.portal-pagination>span{width:100%;margin-bottom:6px}.portal-pagination>label{margin-right:auto}.portal-profile-drawer{border-radius:0!important;width:100%!important}.portal-profile-hero{gap:14px}.portal-profile-hero h3{font-size:19px}.portal-tools{grid-template-columns:1fr 1fr}.portal-tools>button{display:flex;gap:9px;padding:15px}.portal-tools strong{font-size:13px}.portal-tools span{font-size:11px}.portal-matching{gap:10px}.portal-matching button{padding:10px;font-size:12px;min-height:90px}.portal-editor-tabs{top:72px;padding:0}.portal-editor-tabs button{font-size:11px;padding:12px 8px}}
.portal-class-table-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;background:#eef3f8;color:#426888;font-size:23px;flex-shrink:0}.portal-cell-sub{display:block;font-size:11px;color:#8a97a8;margin-top:5px}
/* Reference-driven parish training workspace. */
.portal-nav-section{margin:0 0 7px}.portal-nav-section summary{display:flex;align-items:center;gap:10px;padding:13px 11px;border-radius:8px;cursor:pointer;color:#b8cadc;font-size:12px;font-weight:600;list-style:none;user-select:none}.portal-nav-section summary::-webkit-details-marker{display:none}.portal-nav-section summary>.ti:first-child{color:#bfa05c;font-size:19px}.portal-nav-section summary>.ti:last-child{margin-left:auto;font-size:13px;transition:transform .15s}.portal-nav-section:not([open]) summary>.ti:last-child{transform:rotate(-90deg)}.portal-nav-section summary:hover{background:#ffffff08;color:#fff}.portal-nav-section div>button{display:flex;gap:9px;align-items:center;width:100%;border:0;border-left:2px solid transparent;border-radius:7px;background:transparent;text-align:left;font:inherit;font-size:12px;line-height:1.5;color:#b6c6d7;padding:10px 11px 10px 23px;margin:3px 0;cursor:pointer}.portal-nav-section div>button>.ti{font-size:17px;color:#a4b7cb}.portal-nav-section div>button.active{color:#fff;border-left-color:#d0b063;background:#2e536e}.portal-nav-section div>button.active>.ti{color:#d6b967}.portal-admin .portal-sidebar{top:230px!important;bottom:95px!important}.portal-admin.compact-sidebar .portal-sidebar{top:275px!important}.portal-admin .cover-title{font-weight:700!important;letter-spacing:0!important}.portal-admin .cover-sub{opacity:.75}.portal-admin .portal-page-heading{background:linear-gradient(110deg,#fff,#f5f8fc)!important;border:1px solid #e6ebf2}.portal-heading-icon{box-shadow:0 4px 10px #16324c12;background:#173c57!important;color:#d3b977!important}.portal-admin h2,.portal-admin h3,.portal-admin .form-header-title{font-family:inherit!important}.portal-admin .section-kicker{font-size:9px!important;letter-spacing:.05em!important;color:#9b8856}.portal-form-block{padding:19px;background:#f9fafc;border:1px solid #e5eaf1;border-radius:11px;margin-bottom:20px}.portal-form-block h3{font-size:14px!important;margin:0 0 16px!important;color:#3f5770}.portal-session-block{padding:15px;background:#fff;border:1px solid #e4eaf1;border-radius:10px;margin:12px 0}.portal-session-block header{padding:0 0 12px!important;border:0!important;font-size:13px}.portal-session-block .portal-field span{font-size:12px}.portal-session-block input,.portal-session-block select{font-size:13px}.portal-component-row{display:flex;gap:10px;align-items:flex-end;margin-bottom:13px}.portal-component-row label:first-child{flex:1}.portal-component-row label:nth-child(2){max-width:90px}.portal-component-row label span{display:block;font-size:11px;color:#778aa0;margin-bottom:8px}.portal-component-row .btn{height:42px}.portal-rule-summary>div{display:flex;align-items:center;justify-content:space-between;gap:12px}.portal-rule-summary h3{font-size:15px;color:#3c5670;margin:0}.portal-rule-summary p{color:#7b8ca1;font-size:13px;line-height:1.8;margin-top:18px}.portal-scope-notice{display:flex;align-items:flex-start;gap:12px;background:#eef4f9;border:1px solid #dce7f0;border-radius:10px;padding:16px 20px;margin-bottom:20px;color:#54708a}.portal-scope-notice>.ti{font-size:22px;flex-shrink:0}.portal-scope-notice b{font-size:14px}.portal-scope-notice p{font-size:12px;line-height:1.7;margin:7px 0 0}.portal-week{margin-top:22px;padding:22px!important}.portal-week .panel-heading h3{display:flex;gap:9px;align-items:center}.portal-week .panel-heading .ti{color:#9d8959}.portal-week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;overflow:auto;margin-top:20px}.portal-week-day{background:#fafbfd;border:1px solid #e6ebf1;border-radius:10px;padding:12px;min-height:170px}.portal-week-day.today{background:#fffbef;border-color:#dec88e}.portal-week-day header{display:flex;flex-direction:column;gap:6px}.portal-week-day header b{font-size:12px;color:#3c526b}.portal-week-day header small{font-size:10px;color:#8899ab}.portal-week-day>p{font-size:11px;color:#a3afbd;margin-top:26px}.portal-week-day>button{width:100%;padding:10px;margin-top:12px;background:#edf3f9;border:1px solid #dce6f0;border-left:2px solid #6687a8;border-radius:7px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:7px;overflow-wrap:anywhere}.portal-week-day button span{font-size:10px;color:#a38b4f;white-space:nowrap}.portal-week-day button strong{font-size:12px;line-height:1.5;color:#3c5572}.portal-week-day button small{font-size:10px;color:#8598aa}.portal-detail-grid strong{white-space:pre-line}.portal-class-facts strong{white-space:pre-line}.portal-table b{font-weight:650}.portal-table .portal-person small{margin-top:5px}.portal-admin .overview-kpis{gap:18px}.portal-admin .overview-kpi{border:1px solid #e1e7ee;box-shadow:none;border-radius:12px;background:#fff}.portal-admin .overview-kpi b{color:#2e4e6b!important}.portal-admin .overview-kpi .kpi-top{color:#7990a5}.portal-admin .overview-kpi>span:last-child{color:#8c9cad;font-size:11px}.portal-admin .roster-editor-bar{background:#fff!important;border-bottom:1px solid #e2e8ef}.portal-admin .form-section .fs-icon{background:#edf2f8!important;color:#52718c!important;box-shadow:none!important}.portal-admin .form-section-head{border-bottom:1px solid #e8edf3}.portal-admin .form-section{border:1px solid #e3e8ef!important;box-shadow:none!important}.portal-admin .btn:not(.ghost):not(.danger){box-shadow:none!important}.portal-admin input,.portal-admin select,.portal-admin textarea{border-radius:8px;background:#fff}.portal-admin .modal-card input,.portal-admin .modal-card select{min-height:42px}.portal-admin .form-section input,.portal-admin .form-section select{font-size:14px}
@media(max-width:859px){.portal-menu-open .portal-sidebar{top:0!important;bottom:0!important}.portal-admin.compact-sidebar .portal-sidebar{top:0!important}.portal-week{padding:17px!important}.portal-week-grid{grid-template-columns:repeat(7,145px);padding-bottom:8px;scroll-snap-type:x proximity}.portal-week-day{scroll-snap-align:start}.portal-form-block{padding:15px;margin-bottom:16px}.portal-component-row{gap:8px}.portal-component-row label:nth-child(2){max-width:68px}.portal-component-row input{font-size:13px;padding:9px}.portal-component-row .btn{padding:9px}.portal-rule-summary>div{align-items:flex-start}.portal-scope-notice{padding:14px}.portal-admin .portal-sidebar{width:min(320px,88vw)}}
.portal-table b{white-space:pre-line}.portal-form-block datalist{display:none}.portal-form-block .portal-hint{margin-top:0}.portal-session-block button.btn{padding:7px 9px}.portal-week .panel-heading span{font-size:11px}
.bulk-dialog{max-width:1080px!important}.bulk-upload{display:flex;gap:18px;align-items:center;padding:22px;border:1px dashed #c8d6e3;background:#f7faff;border-radius:12px;margin-bottom:20px}.bulk-upload>.ti{font-size:35px;color:#4a7961}.bulk-upload>div{flex:1}.bulk-upload b{color:#375371;font-size:16px}.bulk-upload p{font-size:12px;color:#8498ae;margin:8px 0 14px}.bulk-upload input{max-width:280px;background:#fff;font-size:13px}.bulk-update{font-size:13px;color:#42627f;line-height:1.7;align-self:center}.bulk-update input,.bulk-partial input{width:16px!important;min-height:0!important;accent-color:#a88e4b;vertical-align:middle;margin-right:7px}.bulk-update small{display:block;font-size:11px;color:#8a9caf;margin:7px 0 0 25px}.bulk-partial{display:block;background:#fff8e9;color:#826726;border-radius:8px;padding:12px;margin-top:16px;font-size:13px;line-height:1.7}.bulk-error-detail{display:block;color:#ad4655;font-size:11px;line-height:1.6;margin-top:6px}.bulk-dialog #bulk-preview{margin-top:24px}.bulk-dialog .portal-kpis{margin-bottom:16px}.bulk-dialog .portal-table-wrap{max-height:42dvh;overflow:auto}.bulk-dialog .portal-table th{position:sticky;top:0;z-index:1}.bulk-dialog [hidden]{display:none!important}.bulk-dialog .portal-form-error:empty{display:none}.bulk-dialog #bulk-save:disabled{opacity:.5;cursor:default}
@media(max-width:859px){.bulk-upload{flex-wrap:wrap;padding:16px;gap:14px}.bulk-upload input{max-width:none;width:100%}.bulk-upload>div{min-width:200px}.bulk-dialog .portal-kpis strong{font-size:24px}.bulk-dialog footer .btn{font-size:12px}.bulk-dialog .portal-table-wrap{max-height:38dvh}}
.password-visibility-field{position:relative;display:flex;align-items:stretch;width:100%;min-width:0;flex:1}.password-visibility-field>input{width:100%;min-width:0;padding-right:65px!important}.password-visibility-button{position:absolute;right:5px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;min-width:48px;min-height:34px;padding:5px 9px;border:1px solid #dbe4ed;border-radius:7px;background:#f2f6fa;color:#35546e;font:inherit;font-size:12px;font-weight:650;cursor:pointer}.password-visibility-button:hover{background:#e7eef5}.password-visibility-button:focus-visible{outline:2px solid #b49956;outline-offset:2px}.password-visibility-button[aria-pressed=true]{background:#e8f2ee;color:#2d6754;border-color:#c4ddcf}
.leader-attendance-person{display:flex;align-items:center;gap:12px}.leader-attendance-person>span{display:flex;flex-direction:column;gap:6px}.leader-attendance-person b{font-size:14px;color:#35536e}.leader-attendance-person small{font-size:11px;font-weight:400;color:#8195aa;line-height:1.5}.leader-attendance-source{display:flex;gap:16px;align-items:center;padding:20px!important;background:#f4f8fc!important;border:1px solid #dce6ef!important}.leader-attendance-source>.ti{font-size:30px;color:#53738f}.leader-attendance-source>div{flex:1}.leader-attendance-source b{font-size:13px;color:#3d5e7a}.leader-attendance-source p{font-size:12px;color:#7c92a8;line-height:1.7;margin:8px 0 0}.leader-attendance-source .btn{white-space:nowrap}@media(max-width:859px){.leader-attendance-source{flex-wrap:wrap;gap:12px;padding:16px!important}.leader-attendance-source>.ti{font-size:25px}.leader-attendance-source>div{min-width:220px}.leader-attendance-source>.btn{margin-left:37px}.leader-attendance-person b{font-size:13px}.leader-attendance-person small{font-size:10px}.leader-attendance-person .avatar{width:36px!important;height:36px!important}}
/* Personal attendance: activity launcher and optional class rosters. */
.self-attendance-home{max-width:760px;margin:0 auto;padding-bottom:24px}.self-attendance-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:12px 0}.self-attendance-header h2{margin:5px 0;font-size:26px;color:#192b42}.self-welcome{color:#69798b;margin:0 0 24px;font-size:14px}.self-activity-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.self-activity-tile{appearance:none;background:#e5eef5;border:2px solid transparent;border-radius:16px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;min-height:178px;padding:20px 12px;color:var(--activity-color);cursor:pointer;font-family:inherit}.self-activity-tile>span{width:86px;height:86px;border-radius:50%;background:var(--activity-color);color:#fff;display:grid;place-items:center}.self-activity-tile i{font-size:44px}.self-activity-tile b{font-size:20px}.self-activity-tile:hover,.self-activity-tile.selected{border-color:var(--activity-color);background:#f1f6fa}.self-activity-tile:focus-visible{outline:3px solid #203c67;outline-offset:3px}.self-activity-hint{font-size:13px;line-height:1.7;color:#69798b;margin:16px 0 10px}.self-selected-activity{font-size:13px;font-weight:600;background:#fff;border:1px solid #e0e6ed;border-radius:10px;padding:12px 16px}.self-roster-button{background:#19803c!important;margin:20px 0 12px;min-height:56px;font-size:16px;justify-content:space-between!important}.self-personal-button{background:#2f7dc1!important;min-height:56px;font-size:16px;justify-content:space-between!important}#self-class-lists{margin-top:24px}#self-class-lists[hidden]{display:none!important}.scan-scope-hint,.review-class-routing{font-size:13px;color:#486581;background:#edf4fb;padding:12px 14px;border-radius:8px;line-height:1.7}.activity-options-overlay .attendance-choice-grid{grid-template-columns:1fr}.activity-options-overlay .attendance-choice{min-height:56px;background:#fff;border:1px solid #dfe6ed;border-radius:10px}.activity-options-overlay .review-actions{position:sticky;bottom:0;background:#fff;padding-top:16px}.activity-options-overlay .review-actions .btn{flex:1;justify-content:center;min-height:48px}
@media(max-width:600px){.self-activity-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.self-activity-tile{min-height:170px;border-radius:14px;padding:18px 8px;gap:12px}.self-activity-tile>span{width:82px;height:82px}.self-activity-tile b{font-size:18px}.self-attendance-header h2{font-size:23px}.self-attendance-home{padding:0 0 20px}.activity-options-overlay{padding:0!important;align-items:stretch!important}.activity-options-overlay .attendance-options-dialog{width:100%!important;max-width:none!important;height:100dvh!important;max-height:100dvh!important;border-radius:0!important;padding:calc(20px + env(safe-area-inset-top)) 20px calc(20px + env(safe-area-inset-bottom))!important;overflow:auto;display:flex;flex-direction:column}.activity-options-overlay .attendance-choice-grid{gap:10px}.activity-options-overlay .review-top{margin-bottom:12px}.activity-options-overlay .section-kicker{display:none}.activity-options-overlay .review-top h2{font-size:22px}.activity-options-overlay .review-actions{margin-top:auto;padding-bottom:env(safe-area-inset-bottom)}}
.attendance-class-heading{font-size:15px;margin:0;padding:14px 22px;background:#edf3fa;border-top:1px solid #dce5ee;color:#284a70}
.self-scan-method{display:flex;gap:8px;margin:0 0 18px;padding:5px;background:#e6edf5;border-radius:12px}.self-scan-method button{flex:1;display:flex;justify-content:center;align-items:center;gap:8px;border:0;background:transparent;padding:13px 8px;border-radius:9px;color:#52677d;font-family:inherit;font-size:16px;font-weight:600;cursor:pointer}.self-scan-method button.active{background:#fff;color:#245d9a;box-shadow:0 2px 6px #16334e14}.self-scan-method button:focus-visible{outline:3px solid #245d9a}.self-face-button{background:#405c91!important;min-height:54px;margin-top:10px;font-size:16px}.industry-context{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.industry-context h3{margin:0 auto 0 0;font-size:20px}.industry-context .btn{min-height:40px}@media(max-width:600px){.industry-context h3{width:100%;margin-bottom:8px}.industry-context .btn{flex:1;justify-content:center}.self-scan-method button{font-size:15px}}
.camera-support{margin:8px 0 0;background:#f0f5fa;border:1px solid #d8e3ef;border-radius:10px;color:#294762;font-size:14px;line-height:1.6;padding:10px 14px}.camera-support summary{cursor:pointer;font-weight:700}.camera-support p{margin:8px 0}.camera-support ol{padding-left:20px;margin:10px 0}.camera-support li{margin-bottom:7px}.camera-issue:empty{display:none}.camera-browser-actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 4px}.camera-browser-actions a{font-size:14px;text-decoration:none}.admin-primary-actions{display:flex;gap:12px;margin:0 0 20px}.admin-primary-actions[hidden]{display:none!important}.admin-primary-actions button{flex:1;border:1px solid #d9e2ec;background:#fff;color:#284f7c;border-radius:10px;padding:14px;font-family:inherit;font-size:16px;font-weight:600;cursor:pointer}.admin-primary-actions button.active{background:#e9f1fb;border-color:#628cc1}.admin-primary-actions i{margin-right:8px}@media(max-width:600px){.admin-primary-actions{gap:8px}.admin-primary-actions button{font-size:14px;padding:12px 8px;line-height:1.5}.camera-support{margin-top:6px}.scanner-viewport .camera-support{flex-shrink:0}}
.scanner-viewport .camera-support{position:absolute;z-index:4;top:calc(138px + env(safe-area-inset-top));left:12px;right:12px;margin:0 auto;max-width:740px;max-height:calc(100dvh - 360px);overflow:auto;background:#f7faff;color:#294762;box-sizing:border-box}.scanner-viewport .camera-support[open]{top:calc(72px + env(safe-area-inset-top));max-height:calc(100dvh - 290px)}.scanner-viewport .face-workspace .camera-support[open]{max-height:calc(100dvh - 230px)}
.industry-leaders{border:1px solid #dce5ef;border-radius:12px;padding:14px;margin:0}.industry-leaders legend{font-weight:700;padding:0 6px;font-size:16px}.industry-leaders p{font-size:14px;color:#60758c;margin:0 0 12px}.industry-leaders>div{max-height:300px;overflow:auto;display:grid;gap:8px}.industry-leaders label{display:flex;align-items:center;gap:12px;padding:12px;background:#f3f7fb;border-radius:8px;cursor:pointer}.industry-leaders input[type=checkbox]{width:20px!important;height:20px;flex-shrink:0;accent-color:#2867a8}.industry-leaders label span{display:grid;gap:4px}.industry-leaders small{color:#60758c;font-size:13px}.self-industries{margin:0 0 20px}.self-industries-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.self-industries-heading h3{margin:0;font-size:18px}.self-industries-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.self-industry-pick{display:flex;text-align:left;align-items:flex-start;gap:12px;border:1px solid #d9e4ee;background:#fff;border-radius:12px;padding:16px;color:#284966;font-family:inherit;cursor:pointer}.self-industry-pick.active{border-color:#3477b5;background:#edf5fd}.self-industry-pick>i{font-size:24px;margin-top:2px}.self-industry-pick>span{display:grid;gap:6px;min-width:0}.self-industry-pick b{font-size:16px}.self-industry-pick small{font-size:13px;line-height:1.5;color:#60758c;overflow-wrap:anywhere}.self-industry-empty{font-size:14px;line-height:1.7;color:#60758c;background:#fff;border:1px dashed #d8e3ed;padding:14px;border-radius:10px}.self-scope-current{font-size:14px;font-weight:600;color:#365879;margin:14px 0 8px}.self-industry-person-class{display:block;color:#687b90;font-size:13px;font-weight:400;margin-top:4px}@media(max-width:600px){.self-industries-grid{grid-template-columns:1fr}.industry-leaders>div{max-height:260px}}
.self-industry-instruction{font-size:14px;line-height:1.6;color:#60758c;margin:0 0 12px}.self-industry-pick{display:block;cursor:default}.self-industry-heading{display:flex;align-items:flex-start;gap:12px}.self-industry-heading>i{font-size:24px;margin-top:2px}.self-industry-heading>span{display:grid;gap:6px;min-width:0}.self-industry-actions{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}.self-industry-actions .btn{flex:1;justify-content:center;min-height:44px;font-size:14px;white-space:normal}@media(min-width:601px){.self-industries-grid{grid-template-columns:1fr 1fr}.self-industry-actions .btn{flex-basis:100%}}@media(max-width:380px){.self-industry-actions .btn{flex-basis:100%}}
.industry-stats-filters{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}.industry-stats-filters label{display:grid;gap:7px;flex:1;min-width:145px;font-size:14px;font-weight:600}.industry-stats-filters input,.industry-stats-filters select,.industry-stats-search{min-height:44px;width:100%;border:1px solid #d8e3ed;border-radius:8px;background:#fff;padding:10px 12px;box-sizing:border-box;color:#28445e;font-family:inherit;font-size:14px}.stats-filter-error{width:100%;margin:0;color:#b43e4e}.industry-stats-note{font-size:14px;line-height:1.7;color:#60758c}.industry-stats-tools{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:20px 0 12px}.industry-stats-table table{min-width:800px}.industry-stats-search{margin-bottom:12px}.industry-person-history{margin-top:10px;font-size:13px}.industry-person-history summary{cursor:pointer;color:#2b69a7;font-weight:600}.industry-person-history>div{max-height:260px;overflow:auto;margin-top:10px;min-width:320px}.industry-person-history .industry-stats-table table{min-width:400px}.industry-status{white-space:nowrap;color:#68778a}.industry-status.present{color:#21844f}.industry-status.excused{color:#9a6c16}.industry-status.absent{color:#b14353}.industry-stats-dialog{position:relative;max-width:1150px!important;width:95vw!important;padding:28px!important;max-height:92dvh;overflow:auto}.industry-stats-dialog>.modal-x{position:sticky;top:0;display:block;margin-left:auto;z-index:3;background:#fff}.industry-stats-dialog .portal-page-heading h2{font-size:24px}@media(max-width:600px){.industry-stats-filters label{min-width:calc(50% - 14px)}.industry-stats-filters>.btn{width:100%;justify-content:center}.industry-stats-overlay{padding:0!important;align-items:stretch!important}.industry-stats-dialog{max-width:none!important;width:100%!important;max-height:100dvh!important;height:100dvh!important;border-radius:0!important;padding:calc(16px + env(safe-area-inset-top)) 16px calc(20px + env(safe-area-inset-bottom))!important}.industry-stats-dialog .portal-page-heading h2{font-size:20px}}
.roster-export-dialog{max-width:1100px!important;width:95vw!important;max-height:90dvh;overflow:auto}.roster-export-dialog p{font-size:14px;line-height:1.7;color:#60758c}.roster-export-dialog th small{display:block;font-size:12px;font-weight:400;margin-top:4px}.roster-export-dialog table{min-width:1150px}.roster-export-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.roster-export-actions .btn{flex:1;justify-content:center;min-height:46px}.roster-export-status{min-height:22px;font-weight:600}.roster-export-tip{background:#edf4fb;border-radius:8px;padding:12px}@media(max-width:600px){.roster-export-overlay{padding:0!important;align-items:stretch!important}.roster-export-dialog{max-height:100dvh!important;height:100dvh!important;width:100%!important;border-radius:0!important;padding:calc(20px + env(safe-area-inset-top)) 16px calc(20px + env(safe-area-inset-bottom))!important}.roster-export-actions .btn{flex-basis:100%}}

body.roster-editor-open{overflow:hidden}#drawer-backdrop{z-index:1090;background:rgba(24,42,64,.65);backdrop-filter:blur(3px)}#tab-danh-sach{z-index:1100;inset:auto;top:50%;left:50%;right:auto;bottom:auto;width:min(1040px,calc(100vw - 48px));max-width:1040px;max-height:calc(100dvh - 48px);height:auto;transform:translate(-50%,-48%) scale(.98);opacity:0;border-radius:22px;box-shadow:0 24px 80px #152c5040;padding:24px 28px 28px;transition:opacity .18s,transform .18s}#tab-danh-sach.open{transform:translate(-50%,-50%) scale(1);opacity:1}#tab-danh-sach .field label{font-size:14px}#tab-danh-sach input,#tab-danh-sach select,#tab-danh-sach textarea{font-size:16px;min-height:48px}#tab-danh-sach .roster-editor-bar{position:sticky;top:-24px;z-index:4;background:var(--cream);padding:12px 0}#tab-danh-sach .form-save-bar{position:sticky;bottom:-28px;z-index:4;background:#fff;margin-bottom:0;box-shadow:0 -8px 20px #2239550a}#tab-danh-sach .form-section{padding:22px}@media(max-width:640px){#tab-danh-sach{width:100%;max-width:100%;height:100dvh;max-height:100dvh;border-radius:0;padding:16px 14px 24px}#tab-danh-sach .form-section{padding:16px}#tab-danh-sach .roster-editor-bar{top:-16px}#tab-danh-sach .form-save-bar{bottom:-24px}}

.self-activity-tile>span>svg{width:42px;height:42px;flex-shrink:0}.industry-leaders [data-leader-count]{font-size:14px;color:#526a83}.industry-leaders .portal-field{display:grid;align-items:stretch;margin:12px 0;padding:0;background:none;cursor:default;min-width:0}.industry-leaders input[type=search]{display:block;width:100%;height:46px;min-height:46px;min-width:0;font-size:16px;border:1px solid #cddbe8;border-radius:10px;padding:10px 12px;box-sizing:border-box}.attendance-analysis h3{font-size:20px;margin:22px 0 14px}.attendance-analysis-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}.attendance-analysis-grid .card{margin:0;border-top:3px solid #397bb8}.attendance-analysis-grid h4{font-size:18px;margin:0 0 10px}.attendance-analysis-grid p{font-size:14px;line-height:1.65;margin:8px 0}.attendance-export-form [data-error]{color:#984239;font-size:14px}.attendance-export-form p{font-size:14px;line-height:1.6}.attendance-export-form .btn{display:inline-flex;align-items:center;gap:8px}.portal-lesson-content{white-space:pre-wrap}.portal-tools>button{min-height:110px}

.ti-check{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m5%2012%204%204%2010-10%22%2F%3E%3C%2Fsvg%3E")}

.ti-cards{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%227%22%20y%3D%224%22%20width%3D%2214%22%20height%3D%2216%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M4%207v14h13M11%208h6M11%2012h6%22%2F%3E%3C%2Fsvg%3E")}

.ti-puzzle{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%204h6a3%203%200%201%200%206%200h4v6a3%203%200%201%200%200%206v4h-6a3%203%200%201%200-6%200H4z%22%2F%3E%3C%2Fsvg%3E")}

.ti-device-gamepad{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6%207h12c3%200%204%2010%203%2012-1%202-4-1-5-3H8c-1%202-4%205-5%203-1-2%200-12%203-12zM7%209v6M4%2012h6%22%2F%3E%3Ccircle%20cx%3D%2216%22%20cy%3D%2211%22%20r%3D%221%22%2F%3E%3Ccircle%20cx%3D%2219%22%20cy%3D%2214%22%20r%3D%221%22%2F%3E%3C%2Fsvg%3E")}

.ti-trophy{--ui-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M7%203h10v6a5%205%200%200%201-10%200zM7%205H3v3a4%204%200%200%200%204%204M17%205h4v3a4%204%200%200%201-4%204M12%2014v6M8%2021h8%22%2F%3E%3C%2Fsvg%3E")}

.app-usage-guide{text-align:left;max-width:1000px;margin:30px auto 0;border:1px solid #d7e3ee;border-radius:16px;background:#fff;padding:24px;box-sizing:border-box;color:#29445f}.app-usage-guide>header{display:flex;align-items:flex-start;gap:14px;margin-bottom:20px}.app-usage-guide>header>span{display:grid;place-items:center;flex-shrink:0;width:46px;height:46px;background:#eaf3fc;border-radius:12px;color:#2d66a8}.app-usage-guide h2{margin:0 0 6px;font-size:22px;line-height:1.4;color:#193b61}.app-usage-guide header p{margin:0;font-size:14px;line-height:1.6;color:#647991}.app-guide-topics{display:grid;gap:10px}.app-guide-topics details{border:1px solid #dce6ef;border-radius:10px;overflow:hidden}.app-guide-topics summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none;padding:14px 16px;font-size:16px;font-weight:600;line-height:1.5}.app-guide-topics summary::-webkit-details-marker{display:none}.app-guide-topics summary>svg{margin-left:auto;flex-shrink:0;transition:transform .15s}.app-guide-topics details[open] summary{background:#f0f6fc}.app-guide-topics details[open] summary>svg{transform:rotate(180deg)}.app-guide-number{display:grid;place-items:center;flex-shrink:0;width:28px;height:28px;border-radius:8px;background:#eaf1f8;color:#2a639b;font-size:14px}.app-guide-body{padding:0 16px 16px 56px}.app-guide-body p{margin:12px 0 0;font-size:16px;line-height:1.8;color:#4d6279}.app-guide-topics summary:focus-visible{outline:3px solid #a4c5e7;outline-offset:-3px}#htglv-login-guard .app-usage-guide{margin-top:32px}@media(max-width:600px){.app-usage-guide{padding:18px 14px;margin-top:22px}.app-usage-guide h2{font-size:20px}.app-guide-topics summary{padding:12px;gap:10px}.app-guide-body{padding:0 14px 16px}.app-guide-body p{font-size:16px}.app-usage-guide>header{gap:10px}}

/* Huynh Trưởng: landscape parish card, same physical size for preview, print and export. */
.idc-card.htc-card{background:#fffdf5;border:.025cm solid #d6a61c;border-radius:.28cm;color:#712127;font-family:'Nunito',sans-serif}
.htc-header{position:absolute;inset:0 0 auto;height:1.12cm;background:#752126;display:flex;align-items:center;padding:0 .22cm;gap:.14cm;box-sizing:border-box;z-index:2}
.htc-header>img{width:.83cm;height:.83cm;object-fit:contain;flex-shrink:0}.htc-org{display:flex;flex-direction:column;justify-content:center;width:3.76cm;gap:.04cm;line-height:1.2}.htc-org b{font-size:.285cm;color:#f5ca37;font-weight:800;white-space:nowrap}.htc-org span{font-size:.225cm;font-weight:800;color:#fff;white-space:nowrap}.htc-header>strong{border-left:.015cm solid #ce9a64;padding-left:.2cm;font-size:.33cm;color:white;line-height:1.25;white-space:nowrap}
.htc-photo{position:absolute;left:.33cm;top:1.58cm;width:1.78cm;height:2.64cm;border:.025cm solid #79292d;background:#efe8de;overflow:hidden;box-sizing:border-box;display:grid;place-items:center}.htc-photo img{width:100%;height:100%;object-fit:cover;display:block}.htc-photo>span{font-size:.55cm;font-weight:800;color:#79292d}
.htc-info{position:absolute;left:2.38cm;top:1.48cm;width:3.33cm;z-index:1}.htc-saint{height:.53cm;font-family:Georgia,serif;font-style:italic;font-size:.4cm;color:#bb622a;line-height:1.3;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htc-name{font-weight:800;text-transform:uppercase;line-height:1.22;min-height:.78cm;max-height:.84cm;overflow:hidden;overflow-wrap:anywhere;padding-top:.08cm;box-sizing:border-box}.htc-meta{display:grid;grid-template-columns:1fr 1fr;gap:.12cm;margin-top:.14cm;color:#181818}.htc-meta span{display:block;font-size:.23cm;line-height:1.35}.htc-meta b{display:block;font-size:.245cm;line-height:1.6;overflow-wrap:anywhere}.htc-parish{border-top:.012cm solid #cbbbaa;margin-top:.12cm;padding-top:.1cm;font-size:.25cm;line-height:1.4;color:#191919;max-height:.6cm;overflow:hidden}.htc-parish b{text-transform:uppercase}
.htc-qr{position:absolute;right:.35cm;top:1.58cm;width:2.12cm;background:#752126;border:.035cm solid #752126;border-radius:.14cm;overflow:hidden;box-sizing:border-box;z-index:1}.htc-qr .qcode{width:2.05cm;height:2.05cm;padding:.12cm;box-sizing:border-box;background:#fff;display:flex;align-items:center;justify-content:center}.htc-qr .qcode canvas,.htc-qr .qcode img{display:block;max-width:100%;max-height:100%;width:100%!important;height:100%!important}.htc-code{font-size:.17cm;line-height:1.45;padding:.055cm .015cm;text-align:center;color:white;font-weight:800;white-space:nowrap}
.htc-quote{position:absolute;left:.38cm;bottom:.12cm;width:3.8cm;text-align:center;font-family:Georgia,serif;font-style:italic;font-size:.25cm;line-height:1.15;z-index:1}.htc-quote small{display:block;font-family:'Nunito',sans-serif;font-style:normal;font-size:.19cm;margin-top:.035cm}
.htc-swoosh{position:absolute;width:8.3cm;height:4.2cm;left:3.9cm;border-radius:50%;transform:rotate(-24deg);pointer-events:none}.htc-swoosh.gold{background:#f3c619;top:4.15cm}.htc-swoosh.ochre{background:#cf8c23;top:4.37cm;left:3.96cm}.htc-swoosh.wine{background:#752126;top:4.61cm;left:4.02cm}
.app-guide-body ol{padding-left:24px;margin:16px 0;font-size:16px;line-height:1.8;color:#4d6279}.app-guide-body li{padding-left:5px;margin:9px 0}.app-guide-body .app-guide-tip{padding:12px 14px;border-left:3px solid #b68b3c;border-radius:0 8px 8px 0;background:#fff8e9;font-size:14px;line-height:1.7}.app-guide-tip strong{color:#825c24}
/* Searchable illustrated guide and FAQ. */
.guide-detailed>header>span{font-size:26px;font-weight:800}.guide-detailed h3{font-size:21px;color:#193b61;margin:28px 0 16px;scroll-margin-top:30px}.guide-search-panel{background:#f2f6fb;padding:18px;border-radius:12px;margin:20px 0}.guide-search-panel label{display:block;font-size:16px;font-weight:700;margin-bottom:9px}.guide-search-panel input{width:100%;min-width:0;min-height:48px;background:#fff;border:1px solid #cbdcea;border-radius:9px;padding:12px 14px;font:inherit;font-size:16px;box-sizing:border-box;color:#234862}.guide-search-status{margin:9px 0 0;font-size:13px;line-height:1.6;color:#60758a}.guide-section-links{display:flex;flex-wrap:wrap;gap:9px}.guide-section-links a,.guide-section-links button{border:1px solid #ccdae7;border-radius:8px;background:#fff;color:#2c5a80;text-decoration:none;padding:10px 13px;font:inherit;font-size:14px;cursor:pointer;min-height:42px}.guide-start{padding:16px 18px;margin-top:20px;border-left:4px solid #c6a15d;background:#fff8e9;border-radius:0 10px 10px 0}.guide-start strong{color:#76582e}.guide-start p{font-size:15px;line-height:1.8;margin:8px 0}.guide-start small{display:block;font-size:13px;line-height:1.6;color:#806d4c}.guide-chevron{margin-left:auto;font-size:22px;flex-shrink:0;transition:transform .15s}.app-guide-topics details[open] .guide-chevron{transform:rotate(180deg)}.guide-figure{margin:16px 0 20px}.guide-figure button{width:100%;display:block;padding:0;border:1px solid #d9e4ee;border-radius:12px;overflow:hidden;cursor:zoom-in;background:#eff4fa}.guide-figure img{display:block;width:100%;height:auto;max-width:960px}.guide-figure figcaption{margin-top:8px;font-size:12px;color:#66798e;line-height:1.5}.guide-category{padding:4px 8px;background:#eaf1f8;color:#37648c;border-radius:6px;font-size:11px;flex-shrink:0;max-width:110px;text-align:center}.guide-faq .app-guide-body{padding-left:20px}.guide-faq-intro{font-size:14px;line-height:1.7;color:#60758a}.guide-no-results{padding:18px;background:#fff8e9;border-radius:8px;line-height:1.7}.guide-footer{margin-top:24px;padding-top:18px;border-top:1px solid #e0e9f1;color:#60758a;font-size:13px;line-height:1.7}.app-usage-guide [hidden]{display:none!important}.guide-image-dialog{border:0;border-radius:16px;width:min(1120px,94vw);max-width:94vw;max-height:90dvh;padding:20px;box-sizing:border-box;background:#fff;box-shadow:0 20px 70px #12273850}.guide-image-dialog::backdrop{background:#122738ba}.guide-image-dialog>div{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.guide-image-dialog h2{font-size:20px;margin:0;color:#193b61}.guide-image-dialog button{border:1px solid #cfdeea;background:#eef4f9;border-radius:8px;padding:10px 16px;font:inherit;cursor:pointer;min-height:44px;color:#234862}.guide-image-dialog img{display:block;width:100%;height:auto}.guide-image-dialog p{font-size:13px;line-height:1.6;color:#60758a;margin-bottom:0}.guide-detailed button:focus-visible,.guide-detailed input:focus-visible,.guide-detailed a:focus-visible,.guide-image-dialog button:focus-visible{outline:3px solid #8bb6db;outline-offset:3px}@media(max-width:600px){.guide-search-panel{padding:14px}.guide-section-links>*{flex:1;text-align:center;white-space:nowrap}.guide-faq summary{flex-wrap:wrap}.guide-faq summary .guide-category{flex-basis:auto}.guide-faq summary>span:nth-child(2){flex:1;min-width:160px}.guide-faq .app-guide-body{padding:0 14px 16px}.guide-image-dialog{padding:12px;width:96vw;max-width:96vw}.guide-figure{margin-top:12px}.guide-category{font-size:10px}.guide-start{padding:14px}.guide-detailed h3{font-size:20px}}

.guide-real-screen h4{font-size:16px;color:#264b6b;margin:0 0 10px;line-height:1.5}.guide-real-screen img{max-width:none}.guide-real-screen figcaption{font-size:14px;line-height:1.7;color:#4d6780}.guide-image-dialog{width:min(1500px,96vw);max-width:96vw}.guide-image-dialog img{min-width:0}.guide-real-screen+.guide-real-screen{margin-top:24px}

/* Consistent local SVG icons across static and dynamically rendered screens. */
.ti.app-icon{display:inline-flex;align-items:center;justify-content:center;vertical-align:-.16em;line-height:1;width:1.15em;height:1.15em;flex-shrink:0;font-style:normal!important}
.ti.app-icon:before,.ti.app-icon:after{content:none!important;display:none!important}
.ti.app-icon>.app-svg-icon{width:100%;height:100%;display:block;overflow:visible}
.app-svg-icon{display:inline-block;vertical-align:middle;flex-shrink:0}
.ti.app-icon.ti-loader-2>.app-svg-icon{animation:ui-spin 1s linear infinite}
.self-activity-tile>span{width:64px;height:64px;border-radius:20px;background:color-mix(in srgb,var(--activity-color) 10%,white);border:1px solid color-mix(in srgb,var(--activity-color) 16%,white);color:var(--activity-color);display:flex;align-items:center;justify-content:center;box-shadow:inset 0 1px 0 #fff}
.self-activity-tile>span .app-svg-icon{width:38px;height:38px;transition:transform .18s ease}
.self-activity-tile:hover>span .app-svg-icon{transform:translateY(-2px)}
.self-activity-tile.selected>span{background:color-mix(in srgb,var(--activity-color) 16%,white);border-color:var(--activity-color)}
.main-navigation .app-icon,.portal-nav .app-icon{font-size:20px}
@media(max-width:380px){.self-activity-tile>span{width:56px;height:56px;border-radius:17px}.self-activity-tile>span .app-svg-icon{width:34px;height:34px}}
@media(prefers-reduced-motion:reduce){.self-activity-tile>span .app-svg-icon{transition:none}.ti.app-icon.ti-loader-2>.app-svg-icon{animation:none}}

/* Activity symbols matched to the supplied parish reference cards. */
.self-activity-tile>span,.self-activity-tile.selected>span{width:76px;height:76px;border-radius:50%;background:var(--activity-color);color:#fff;border:0;box-shadow:none}
.self-activity-tile>span .app-svg-icon{width:49px;height:49px}
.self-activity-tile[data-self-activity="recycling"]>span,.self-activity-tile[data-self-activity="recycling"].selected>span{background:#e9f3e8;color:#326d3b}
.self-activity-tile[data-self-activity="singing"]>span,.self-activity-tile[data-self-activity="singing"].selected>span{background:#eaf6f9;color:#247e93}
.self-activity-tile.selected>span{outline:3px solid color-mix(in srgb,var(--activity-color) 24%,transparent);outline-offset:4px}
@media(max-width:380px){.self-activity-tile>span,.self-activity-tile.selected>span{width:66px;height:66px}.self-activity-tile>span .app-svg-icon{width:44px;height:44px}}

/* Keep the main menu and management menu in separate vertical areas. */
@media(min-width:860px){
  .portal-admin .wrap>.main-navigation{display:flex;flex-direction:column;flex-wrap:nowrap;gap:4px;box-sizing:border-box}
  .portal-admin .wrap>.main-navigation .tab-btn{min-height:44px;width:100%;height:auto;gap:10px;line-height:1.5;white-space:normal}
  .portal-admin .wrap>.main-navigation .tab-btn>.ti{flex:0 0 22px;width:22px;text-align:center}
  .portal-admin .portal-sidebar,.portal-admin.compact-sidebar .portal-sidebar{top:var(--portal-nav-top,285px)!important;box-sizing:border-box}
  .portal-nav-section summary{min-height:44px;box-sizing:border-box;line-height:1.5}
  .portal-nav-section summary>span{min-width:0;overflow-wrap:anywhere}
  .portal-nav-section summary>.ti{flex-shrink:0}
}

.profile-review .review-details .review-parish{grid-column:1/-1;min-width:0}
/* Detailed attendance charts: shared by industry, staff and attendance reports. */
.attendance-dashboard{margin:24px 0}.ac-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:20px}.ac-kpis article{background:#fff;border:1px solid #dfe7ef;border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:8px}.ac-kpis span{font-size:12px;color:#63788e;font-weight:600}.ac-kpis strong{font-size:30px;line-height:1.25;color:#1c5364}.ac-kpis small{font-size:11px;color:#728499;line-height:1.7}.ac-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:20px}.ac-chart{min-width:0;margin-bottom:20px;padding:24px!important}.ac-chart h3,.ac-follow h3{margin:0 0 12px!important;font-size:17px!important;letter-spacing:0}.ac-chart p,.ac-follow p{font-size:12px;color:#718498;line-height:1.75;margin:0 0 18px}.ac-chart header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.ac-chart header label{font-size:10px;color:#63788e;display:grid;gap:4px}.ac-chart select{font-size:12px;min-height:36px;padding:6px 10px}.ac-breakdown{display:flex;align-items:center;justify-content:center;gap:25px;flex-wrap:wrap;padding:12px 0}.ac-donut{width:160px;height:160px;border-radius:50%;display:grid;place-items:center;flex-shrink:0}.ac-donut>div{width:120px;height:120px;border-radius:50%;background:white;display:flex;flex-direction:column;align-items:center;justify-content:center}.ac-donut b{font-size:28px;color:#1c5364}.ac-donut span{font-size:10px;color:#728499}.ac-breakdown dl{flex:1;min-width:160px;margin:0}.ac-breakdown dl>div{display:flex;justify-content:space-between;gap:12px;margin:14px 0}.ac-breakdown dt{font-size:12px;display:flex;align-items:center;gap:8px}.ac-breakdown dd{margin:0;font-weight:700;font-size:14px;white-space:nowrap}.ac-breakdown dd small{color:#728499;font-size:11px;font-weight:400;margin-left:8px}.ac-legend{display:flex;flex-wrap:wrap;gap:18px;margin:0 0 20px;font-size:11px;color:#63788e}.ac-legend span{display:flex;align-items:center;gap:7px}.ac-legend i,.ac-breakdown i{width:10px;height:10px;border-radius:3px;display:inline-block;flex-shrink:0}.ac-svg-scroll{overflow-x:auto;max-width:100%;overscroll-behavior-x:contain}.ac-svg-scroll svg{width:100%;height:220px;display:block}.ac-data{margin-top:12px;font-size:12px}.ac-data summary{cursor:pointer;color:#28657c;padding:8px 0}.ac-comparisons{max-height:450px;overflow:auto;padding-right:5px}.ac-comparisons>div{margin:18px 0}.ac-comparisons header{align-items:center;margin-bottom:8px}.ac-comparisons b{font-size:13px;font-weight:600;overflow-wrap:anywhere}.ac-comparisons header span{font-size:14px;font-weight:700;color:#25846e;flex-shrink:0}.ac-stack{height:12px;display:flex;border-radius:5px;overflow:hidden;background:#edf1f6}.ac-stack span{display:block;min-width:0}.ac-comparisons small,.ac-person-chart small{display:block;font-size:10px;color:#728499;line-height:1.7;margin-top:7px}.ac-no-data{font-size:9px;color:#718498}.ac-empty{color:#718498;font-size:13px;padding:12px 0}.ac-timeline{display:flex;flex-wrap:wrap;gap:4px;margin-top:12px}.ac-timeline>span{width:13px;height:18px;border-radius:3px}.ac-person-chart{min-width:190px;max-width:380px;margin:12px 0 18px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.industry-person-history>div{max-width:800px}.industry-stats-dialog{max-width:1200px!important}.industry-stats-tools .segmented button{min-height:42px}.industry-stats-filters{background:#f9fbfd!important;border:1px solid #dfe7ef}.stats-dashboard-mount .ac-follow{margin-bottom:0}.ac-follow .portal-table-wrap{max-height:350px;overflow:auto}
@media(max-width:1100px){.ac-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.ac-grid{grid-template-columns:1fr}.ac-breakdown{justify-content:flex-start}.ac-breakdown dl{max-width:340px}}
@media(max-width:600px){.ac-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.ac-kpis article{padding:16px}.ac-kpis strong{font-size:27px}.ac-kpis article:last-child{grid-column:1/-1}.ac-chart{padding:18px!important}.ac-chart header{flex-wrap:wrap}.ac-chart p{margin-bottom:12px}.ac-donut{width:140px;height:140px}.ac-donut>div{width:104px;height:104px}.ac-breakdown{gap:18px}.ac-breakdown dl{min-width:135px}.ac-grid{gap:0}.ac-legend{gap:12px}.industry-stats-dialog{padding:20px 14px!important}.industry-stats-filters label{min-width:120px}.ac-follow{padding:18px!important}}

.profile-qr-start{margin-top:18px}.profile-qr-hint{font-size:12px!important;margin:10px 0 0!important;color:#728499}.profile-qr-shortcut{white-space:nowrap;flex-shrink:0;min-height:38px!important;font-size:12px!important;padding:7px 10px!important}.profile-qr-dialog{max-width:580px!important;width:100%;box-sizing:border-box}.profile-qr-person{display:flex;align-items:center;gap:18px;padding:18px;background:#eef4f8;border-radius:12px;margin-bottom:24px}.profile-qr-person h3{margin:0;font-size:20px;overflow-wrap:anywhere}.profile-qr-person p{font-size:12px;color:#64798e;margin:6px 0 0}.profile-qr-dialog .review-details>div:last-child{grid-column:1/-1}.profile-qr-dialog .review-actions{position:static;padding-bottom:0}.profile-qr-dialog .avatar{flex-shrink:0}.profile-qr-overlay{z-index:1001!important}
@media(max-width:600px){.workspace-bar{flex-wrap:wrap}.profile-qr-shortcut{margin-left:auto}.profile-qr-dialog{padding:22px 18px!important;max-height:92dvh;overflow:auto}.profile-qr-person{padding:14px;gap:12px}.profile-qr-person h3{font-size:18px}.profile-qr-person .avatar{width:64px!important;height:64px!important}.profile-qr-dialog .review-actions{padding-bottom:env(safe-area-inset-bottom)}.profile-qr-start{width:100%;justify-content:center}}

.ac-opened-days{background:#eef4f8;border:1px solid #dce7f0;border-radius:10px;padding:14px 18px;margin-bottom:20px;font-size:13px;color:#375c78}.ac-opened-days summary{cursor:pointer;font-weight:600}.ac-opened-days p{font-size:12px;line-height:1.9;overflow-wrap:anywhere}.ac-opened-days small{color:#647d93;font-size:11px}

/* Keep content below iPhone status bar / display cutout in standalone mode. */
@media(max-width:859px){
 .cover{padding-top:calc(72px + env(safe-area-inset-top,0px))!important;min-height:0!important;height:auto!important;box-sizing:border-box}
 .cover .auth-badge{top:calc(14px + env(safe-area-inset-top,0px))!important;right:max(16px,env(safe-area-inset-right,0px))!important;left:auto!important;bottom:auto!important;width:auto!important;max-width:calc(100% - 32px);min-height:40px;box-sizing:border-box}
 .cover-content{padding:14px max(20px,env(safe-area-inset-right,0px)) 24px max(20px,env(safe-area-inset-left,0px))!important}
 .industry-stats-overlay{padding:calc(16px + env(safe-area-inset-top,0px)) max(10px,env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) max(10px,env(safe-area-inset-left,0px))!important;box-sizing:border-box;align-items:center!important}
 .industry-stats-overlay>.industry-stats-dialog{position:relative;box-sizing:border-box;margin:0!important;padding-top:58px!important;max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 32px)!important;border-radius:16px!important;overflow:auto}
 .industry-stats-overlay>.industry-stats-dialog>.modal-x{top:12px!important;right:12px!important;left:auto!important;width:36px;height:36px}
 .profile-qr-overlay{padding:calc(16px + env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px))!important;box-sizing:border-box}
 .profile-qr-overlay>.profile-qr-dialog{max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 32px)!important}
}
