.attendance-page{padding-bottom:40px}.attendance-wrap{display:flex;flex-direction:column;gap:22px}.attendance-hero{display:flex;align-items:center;gap:20px;padding:28px;background:linear-gradient(135deg,#fff,#faf6ff);border:1px solid #eadff3}.attendance-hero-icon{width:70px;height:70px;border-radius:22px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-color),#8e44ad);color:#fff;font-size:1.8rem;box-shadow:0 14px 26px rgba(93,43,134,.2)}.attendance-hero h2{margin:0 0 8px;color:#342440}.attendance-hero p{margin:0;color:#756982}.attendance-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.attendance-stat-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:4px 12px;align-items:center;padding:20px;border-radius:18px;background:#fff;border:1px solid #eee5f6;text-decoration:none;color:#372743;box-shadow:0 8px 22px rgba(70,35,95,.06);transition:.25s}.attendance-stat-card:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(70,35,95,.12)}.attendance-stat-card i{grid-row:1/3;width:48px;height:48px;border-radius:15px;background:#f3eafa;color:var(--primary-color);display:flex;align-items:center;justify-content:center;font-size:1.2rem}.attendance-stat-card strong{font-size:1.6rem}.attendance-stat-card span{color:#7b6f85;font-size:.88rem}.attendance-card{padding:22px;border:1px solid #eee5f6}.attendance-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:18px}.attendance-card-head h3{margin:0;color:#3d2b49}.attendance-card-head p{margin:0;color:#7b6f85}.attendance-table-wrap{overflow:auto;border-radius:16px;border:1px solid #efe8f4}.attendance-switch{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#faf7fd;border:1px solid #eadff3;border-radius:12px}.attendance-badge{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;font-size:.78rem;font-weight:800;background:#edf0f4;color:#64748b}.attendance-badge.is-success{background:#e8f8ef;color:#14804a}.attendance-badge.is-info{background:#eaf4ff;color:#1769aa}.attendance-badge.is-warning{background:#fff4d8;color:#946200}.attendance-badge.is-muted{background:#eef1f5;color:#687386}.attendance-icon-button{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:10px;padding:9px 12px;background:#f1e8f8;color:var(--primary-color);font-weight:700;text-decoration:none;cursor:pointer}.attendance-icon-button.is-danger{background:#feecec;color:#bd3434}.attendance-filter-bar{display:grid;grid-template-columns:minmax(220px,1.5fr) repeat(5,minmax(140px,1fr));gap:10px;margin-bottom:16px}.new-section-table td small{display:block;margin-top:4px;color:#8a7f92}.attendance-qr-screen{text-align:center;padding:28px}.attendance-qr-screen>div:first-child i{font-size:2rem;color:var(--primary-color)}.attendance-qr-screen img{display:block;max-width:min(70vw,520px);width:100%;margin:20px auto;background:#fff;border:16px solid #fff;border-radius:22px;box-shadow:0 18px 45px rgba(0,0,0,.14)}.attendance-qr-countdown{font-size:1.1rem;font-weight:800;color:var(--primary-color)}.attendance-public-body{min-height:100vh;margin:0;padding:24px;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at top,#f3e8fb,#f7f4fa 55%,#eee7f3);font-family:Calibri,Arial,sans-serif;color:#342440}.attendance-public-card{width:min(100%,520px);background:#fff;border:1px solid #eadff3;border-radius:28px;padding:28px;box-shadow:0 24px 60px rgba(61,34,78,.16);animation:attendanceCardIn .55s ease both}.attendance-public-logo{text-align:center;margin-bottom:18px}.attendance-public-logo img{max-width:150px;max-height:90px;object-fit:contain}.attendance-public-site{text-align:center;margin-bottom:24px}.attendance-public-site i{width:58px;height:58px;border-radius:18px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#5d2b86,#8e44ad);color:#fff;font-size:1.45rem;box-shadow:0 12px 24px rgba(93,43,134,.25)}.attendance-public-site h1{font-size:1.35rem;margin:12px 0 6px}.attendance-public-card label{display:block;font-weight:800;margin:14px 0 7px}.attendance-public-card input{box-sizing:border-box;width:100%;padding:15px;border:1px solid #d9cbe4;border-radius:14px;font-size:1.05rem;outline:none;transition:.2s}.attendance-public-card input:focus{border-color:#7e4aa6;box-shadow:0 0 0 4px rgba(126,74,166,.12);transform:translateY(-1px)}.attendance-public-card button{width:100%;margin-top:18px;padding:15px;border:0;border-radius:14px;background:linear-gradient(135deg,#5d2b86,#8448ad);color:#fff;font-size:1rem;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:9px;transition:.2s}.attendance-public-card button:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(93,43,134,.24)}.attendance-public-card button:disabled{opacity:.6;cursor:wait}.attendance-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.attendance-action-grid button{min-height:110px;flex-direction:column;font-size:1.05rem}.attendance-action-grid button i{font-size:1.8rem}.attendance-welcome{text-align:center;padding:14px;background:#f7f0fb;border-radius:14px;color:#5d2b86;font-weight:900}.attendance-public-message,.attendance-public-error{margin-top:18px;padding:14px;border-radius:14px;text-align:center;font-weight:700}.attendance-public-message.is-success{background:#eaf8ef;color:#197345}.attendance-public-message.is-error,.attendance-public-error{background:#fff0f0;color:#b43737}.attendance-public-error i{margin-inline-end:8px}@keyframes attendanceCardIn{from{opacity:0;transform:translateY(24px) scale(.98)}to{opacity:1;transform:none}}@media(max-width:980px){.attendance-filter-bar{grid-template-columns:1fr 1fr}}@media(max-width:640px){.attendance-public-body{padding:12px}.attendance-public-card{padding:20px;border-radius:22px}.attendance-action-grid,.attendance-filter-bar{grid-template-columns:1fr}.attendance-hero{align-items:flex-start;padding:20px}.attendance-hero-icon{width:58px;height:58px;flex:0 0 auto}.attendance-card{padding:14px}.attendance-stat-grid{grid-template-columns:1fr 1fr}}

.attendance-date-filter{display:flex;flex-direction:column;gap:5px;font-size:.75rem;font-weight:800;color:#6d6078}.attendance-date-filter .filter-input{width:100%;box-sizing:border-box}.attendance-export-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:11px;padding:11px 14px;background:#e8f7ee;color:#187844;font-weight:800;cursor:pointer;white-space:nowrap}.attendance-empty-card{min-height:150px}.attendance-modal[hidden]{display:none}.attendance-modal{position:fixed;inset:0;z-index:10050;background:rgba(25,15,34,.68);display:flex;align-items:center;justify-content:center;padding:18px;backdrop-filter:blur(5px)}.attendance-modal-panel{position:relative;width:min(100%,620px);max-height:90vh;overflow:auto;background:#fff;border-radius:24px;padding:26px;box-shadow:0 28px 70px rgba(0,0,0,.25);animation:attendanceCardIn .25s ease both}.attendance-modal-panel h3{margin:0 0 8px;color:var(--primary-color)}.attendance-modal-panel>p{margin:0 0 18px;color:#766982}.attendance-modal-close{position:absolute;inset-inline-end:16px;top:16px;width:40px;height:40px;border:0;border-radius:12px;background:#f3edf7;color:var(--primary-color);cursor:pointer}.attendance-mention-menu{position:absolute;z-index:10;inset-inline:0;top:100%;margin-top:4px;background:#fff;border:1px solid #e5d9ed;border-radius:13px;box-shadow:0 14px 35px rgba(55,30,70,.16);max-height:220px;overflow:auto}.attendance-mention-menu button{display:block;width:100%;border:0;border-bottom:1px solid #f2edf5;background:#fff;text-align:start;padding:11px 13px;color:#493455;cursor:pointer}.attendance-mention-menu button:hover{background:#f8f2fc}.mention-composer{position:relative}.attendance-map-input-row{display:flex;gap:7px}.attendance-map-input-row input{min-width:0;flex:1}.attendance-map-input-row button{width:44px;flex:0 0 44px;border:0;border-radius:10px;background:#efe4f6;color:var(--primary-color);cursor:pointer}.attendance-map-block{grid-column:1/-1}.attendance-live-map{height:360px;border-radius:18px;border:1px solid #dfd2e8;overflow:hidden;z-index:1}.attendance-map-block small{display:block;margin-top:8px;color:#7b6f85}.attendance-radius-handle{background:transparent;border:0}.attendance-radius-handle span{display:block;width:20px;height:20px;border-radius:50%;background:#fff;border:5px solid #6f3295;box-shadow:0 3px 10px rgba(0,0,0,.25)}.attendance-attachment-link{display:block;margin-top:7px;color:var(--primary-color);font-size:.82rem}.attendance-qr-panel{max-width:760px;margin:auto;text-align:center;background:#fff;border:1px solid #eadff3;border-radius:26px;padding:28px;box-shadow:0 18px 45px rgba(55,30,70,.12)}.attendance-qr-panel>img{display:block;width:min(100%,520px);margin:18px auto;border-radius:18px;background:#fff}.attendance-public-link{margin-top:20px;text-align:start}.attendance-public-link label{display:block;font-weight:800;margin-bottom:7px}.attendance-public-link>div{display:flex;gap:8px;flex-wrap:wrap}.attendance-public-link input{flex:1;min-width:220px;padding:12px;border:1px solid #d9cbe4;border-radius:11px}.attendance-public-link button,.attendance-public-link a{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:11px;padding:11px 14px;background:#f0e7f7;color:var(--primary-color);font-weight:800;text-decoration:none;cursor:pointer}.attendance-public-qr-card{width:min(100%,720px);background:#fff;border:1px solid #eadff3;border-radius:28px;padding:28px;text-align:center;box-shadow:0 24px 60px rgba(61,34,78,.16);animation:attendanceCardIn .55s ease both}.attendance-public-qr-card h1{margin:8px 0}.attendance-public-qr-card p{color:#766982}.attendance-public-qr-image{display:block;width:min(100%,560px);margin:20px auto;background:#fff;border-radius:18px}.attendance-card .collapsible-body>.attendance-filter-bar{margin-top:4px}.attendance-card .new-section-empty{padding:40px 15px}.attendance-filter-bar{align-items:end}.attendance-filter-bar .filter-search-wrap{align-self:end}.attendance-card td .attendance-icon-button+.attendance-icon-button{margin-inline-start:5px}
@media(max-width:1200px){.attendance-filter-bar{grid-template-columns:repeat(3,minmax(160px,1fr))}.attendance-filter-bar .filter-search-wrap{grid-column:span 2}}
@media(max-width:760px){.attendance-filter-bar{grid-template-columns:1fr}.attendance-filter-bar .filter-search-wrap{grid-column:auto}.attendance-live-map{height:290px}.attendance-modal-panel{padding:22px 16px}.attendance-public-link>div{flex-direction:column}.attendance-public-link input{min-width:0;width:100%;box-sizing:border-box}.attendance-card td .attendance-icon-button{margin:3px 0;width:100%;justify-content:center}}

.attendance-qr-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:16px}.attendance-qr-actions button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:10px;background:#5d2b86;color:#fff;padding:11px 16px;font:inherit;font-weight:700;cursor:pointer}.attendance-qr-actions button:hover{filter:brightness(1.08)}@media(max-width:640px){.attendance-qr-actions{flex-direction:column}.attendance-qr-actions button{width:100%}}


/* ===== Attendance Pages — Unified Project Visual System v10.2 ===== */
.attendance-page.new-section-page{padding-bottom:44px}.attendance-page .attendance-wrap{gap:24px;padding:10px}.attendance-page .attendance-hero{margin-bottom:0;border:0;padding:28px 30px;background:linear-gradient(to bottom,var(--primary-light),#fff);box-shadow:0 10px 30px rgba(0,0,0,.05)}.attendance-page .attendance-hero:hover{transform:none}.attendance-page .attendance-hero-icon{width:72px;height:72px;border-radius:20px;box-shadow:0 12px 28px rgba(93,43,134,.18)}.attendance-page .attendance-hero h2{color:var(--primary-color);font-size:1.35rem}.attendance-page .attendance-hero p{color:var(--text-muted);line-height:1.7}.attendance-page .attendance-card{margin-bottom:0;border-color:rgba(93,43,134,.12);box-shadow:0 10px 30px rgba(0,0,0,.05)}.attendance-page .attendance-card:not(.collapsible-card){padding:30px}.attendance-page .attendance-card:hover{transform:none}.attendance-page .attendance-card .collapsible-header{border-radius:22px}.attendance-page .attendance-card.open .collapsible-header{border-end-start-radius:0;border-end-end-radius:0}.attendance-page .attendance-card-head{margin-bottom:18px}.attendance-page .attendance-card-head h3,.attendance-modal-head h3{display:flex;align-items:center;gap:10px;color:var(--primary-color);margin:0}.attendance-page .attendance-card-head h3 i,.attendance-modal-head h3 i{color:var(--primary-color)}
.attendance-page .attendance-filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin:0 0 22px;padding:16px 20px;border:1px solid #f1f5f9;border-radius:18px;background:#fff;box-shadow:0 4px 15px rgba(0,0,0,.02)}.attendance-page .attendance-filter-bar .filter-search-wrap{flex:1 1 260px;min-width:220px}.attendance-page .attendance-filter-bar>.filter-select{flex:0 1 190px;min-width:160px;width:auto}.attendance-page .attendance-date-filter{flex:0 1 180px;min-width:160px;margin:0}.attendance-page .attendance-date-filter span{font-size:.75rem;font-weight:800;color:var(--text-muted);margin-bottom:6px}.attendance-page .attendance-date-filter .filter-input{padding-inline:12px}.attendance-page .attendance-export-button{flex:0 0 auto;width:auto;min-height:43px;margin:0;padding:11px 16px;border:0;border-radius:12px;background:#e8f7ee;color:#187844;font-weight:800;box-shadow:none}.attendance-page .attendance-export-button:hover{transform:translateY(-2px);background:#d9f2e4;box-shadow:0 8px 18px rgba(24,120,68,.14)}
.attendance-page .attendance-table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border:0;border-radius:0;padding-bottom:4px}.attendance-page .new-section-table{min-width:760px}.attendance-page .new-section-table tbody tr{transition:transform .2s ease,box-shadow .2s ease}.attendance-page .new-section-table tbody tr:hover{transform:translateY(-2px)}.attendance-page .new-section-table td small{display:block;margin-top:5px;color:var(--text-muted);line-height:1.5}.attendance-page .new-section-empty{min-height:130px;border:1px dashed #e2e8f0;border-radius:16px;background:#fbfcfe}.attendance-page .attendance-badge{gap:6px;line-height:1.2}.attendance-page .attendance-icon-button{width:auto;min-width:0;justify-content:center;padding:9px 12px;border:1px solid rgba(93,43,134,.12);background:var(--primary-light);color:var(--primary-color);box-shadow:none;white-space:nowrap}.attendance-page .attendance-icon-button:hover{transform:translateY(-2px);background:var(--primary-color);color:#fff;box-shadow:0 8px 18px rgba(93,43,134,.18)}.attendance-page .attendance-icon-button.is-danger{border-color:rgba(220,38,38,.14);background:#feecec;color:#bd3434}.attendance-page .attendance-icon-button.is-danger:hover{background:#dc2626;color:#fff}.attendance-page td .attendance-icon-button+.attendance-icon-button{margin-inline-start:6px}.attendance-page .attendance-attachment-link{width:auto;max-width:100%;margin-top:8px;cursor:pointer}.attendance-page .attendance-attachment-link:hover{border-color:var(--primary-color);background:var(--primary-light);color:var(--primary-color)}
.attendance-page .attendance-form .input-group label{font-weight:700;color:var(--text-main)}.attendance-page .attendance-form .filter-input,.attendance-page .attendance-form .filter-select{background:#f8fafc}.attendance-page .attendance-form textarea.filter-input{padding:12px 14px;resize:vertical;min-height:96px}.attendance-page .attendance-map-input-row{display:flex;align-items:stretch;gap:8px}.attendance-page .attendance-map-input-row .filter-input{flex:1;min-width:0}.attendance-page .attendance-field-action{width:44px;min-width:44px;padding:0;border:1px solid rgba(93,43,134,.14);border-radius:12px;background:var(--primary-light);color:var(--primary-color);display:inline-flex;align-items:center;justify-content:center}.attendance-page .attendance-field-action:hover{background:var(--primary-color);color:#fff;transform:translateY(-2px)}.attendance-page .attendance-switch-group{justify-content:flex-end}.attendance-page .attendance-switch{min-height:47px;margin-top:25px;padding:12px 15px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc}.attendance-page .attendance-switch input{width:18px;height:18px;accent-color:var(--primary-color);margin:0}.attendance-page .attendance-switch span{font-weight:800;color:var(--text-main)}.attendance-page .attendance-map-block{margin-top:4px;padding:16px;border:1px solid #edf2f7;border-radius:18px;background:#fbfcfe}.attendance-page .attendance-live-map{border:1px solid #dfd2e8;border-radius:16px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.65)}.attendance-page .attendance-map-block small{margin-top:10px;color:var(--text-muted);line-height:1.6}.attendance-page .new-section-actions button{width:auto;min-width:150px;padding:12px 30px;border:0;border-radius:12px;background:var(--primary-color);color:#fff;font-weight:800;box-shadow:0 8px 20px rgba(93,43,134,.18)}.attendance-page .new-section-actions button:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(93,43,134,.24)}
.attendance-modal[hidden]{display:none}.attendance-modal{position:fixed;inset:0;z-index:10120;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(15,23,42,.72);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.attendance-exception-modal-content{position:relative;width:min(95%,720px);max-height:90vh;overflow:auto;padding:30px;border:1px solid #eadff3;border-radius:24px;background:#fff;box-shadow:0 25px 50px -12px rgba(0,0,0,.45)}.attendance-modal-close{position:absolute;inset-inline-end:20px;top:20px;z-index:3;width:38px;height:38px;padding:0;border:0;border-radius:50%;background:#f1f5f9;color:#64748b;display:flex;align-items:center;justify-content:center}.attendance-modal-close:hover{background:#fee2e2;color:#dc2626;transform:rotate(90deg)}.attendance-modal-head{padding-inline-end:52px;margin-bottom:8px}.attendance-modal-summary{margin:0 0 20px;padding:12px 14px;border:1px solid #eee5f6;border-radius:12px;background:#fbf8ff;color:var(--text-muted);font-weight:700}.attendance-modal-grid{grid-template-columns:1fr}.attendance-modal-full{grid-column:1/-1}.attendance-reason-input{height:auto;min-height:120px}.attendance-modal-actions{margin-top:22px}.attendance-modal-actions .attendance-secondary-button{background:#f1f5f9;color:#475569;box-shadow:none}.attendance-modal-actions .attendance-secondary-button:hover{background:#e2e8f0;color:#334155;box-shadow:none}.attendance-modal .source-attachment-upload-card.compact-upload{width:auto;min-height:0;display:inline-flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:9px;padding:11px 15px;border-radius:12px}.attendance-modal .source-attachment-upload-card.compact-upload i{font-size:1rem}.attendance-modal .attachment-selection-list{margin-top:10px}.attendance-mention-menu{z-index:12;border-color:#eadff3;border-radius:14px;box-shadow:0 18px 35px rgba(55,30,70,.18)}.attendance-mention-menu button{border-radius:0}.attendance-mention-menu button:first-child{border-start-start-radius:13px;border-start-end-radius:13px}.attendance-mention-menu button:last-child{border-end-start-radius:13px;border-end-end-radius:13px;border-bottom:0}
[data-theme="dark"] .attendance-page .attendance-hero{background:linear-gradient(to bottom,#1a0f2b,#140a20)}[data-theme="dark"] .attendance-page .attendance-card,[data-theme="dark"] .attendance-page .attendance-filter-bar,[data-theme="dark"] .attendance-exception-modal-content{background:var(--card-bg);border-color:var(--border-color)}[data-theme="dark"] .attendance-page .attendance-filter-bar .filter-input,[data-theme="dark"] .attendance-page .attendance-filter-bar .filter-select,[data-theme="dark"] .attendance-page .attendance-form .filter-input,[data-theme="dark"] .attendance-page .attendance-form .filter-select,[data-theme="dark"] .attendance-page .attendance-switch,[data-theme="dark"] .attendance-page .attendance-map-block,[data-theme="dark"] .attendance-page .new-section-empty,[data-theme="dark"] .attendance-modal-summary{background:#241533;border-color:#3b2a50;color:var(--text-main)}[data-theme="dark"] .attendance-page .attendance-field-action,[data-theme="dark"] .attendance-page .attendance-icon-button{background:#2f1b43;border-color:#4a3262;color:#d9b9ef}[data-theme="dark"] .attendance-page .attendance-field-action:hover,[data-theme="dark"] .attendance-page .attendance-icon-button:hover{background:var(--primary-color);color:#fff}[data-theme="dark"] .attendance-modal-close{background:#2b1c39;color:#d7c3e7}[data-theme="dark"] .attendance-modal-close:hover{background:#5d2028;color:#fecaca}
@media(max-width:992px){.attendance-page .attendance-wrap{padding:8px}.attendance-page .attendance-filter-bar>.filter-select,.attendance-page .attendance-date-filter{flex:1 1 170px}.attendance-page .attendance-export-button{flex:1 1 180px}.attendance-page .attendance-card:not(.collapsible-card){padding:22px}}
@media(max-width:768px){.attendance-page .attendance-wrap{padding:6px}.attendance-page .attendance-hero{padding:22px 18px}.attendance-page .attendance-hero-icon{width:58px;height:58px;border-radius:17px}.attendance-page .attendance-filter-bar{padding:14px}.attendance-page .attendance-filter-bar .filter-search-wrap,.attendance-page .attendance-filter-bar>.filter-select,.attendance-page .attendance-date-filter,.attendance-page .attendance-export-button{flex:1 1 100%;min-width:0;width:100%}.attendance-page .attendance-card:not(.collapsible-card){padding:18px}.attendance-page .attendance-live-map{height:300px}.attendance-exception-modal-content{width:100%;padding:24px 16px}.attendance-modal-actions{flex-direction:column}.attendance-modal-actions button{width:100%;min-width:0}.attendance-page td .attendance-icon-button,.attendance-page td .attendance-icon-button+.attendance-icon-button{width:100%;margin:4px 0}.attendance-page .new-section-table{min-width:680px}}
@media(max-width:576px){.attendance-page .attendance-wrap{padding:4px}.attendance-page .attendance-hero{align-items:flex-start;flex-direction:column;padding:20px 15px}.attendance-page .attendance-hero h2{font-size:1.05rem}.attendance-page .attendance-hero p{font-size:.86rem}.attendance-page .attendance-card:not(.collapsible-card){padding:16px}.attendance-page .attendance-switch{margin-top:0}.attendance-page .attendance-map-input-row{align-items:stretch}.attendance-page .attendance-live-map{height:270px}.attendance-page .new-section-table{min-width:640px}.attendance-modal{padding:10px}.attendance-modal-head h3{font-size:1rem}.attendance-modal-close{inset-inline-end:14px;top:14px}}
/* ===== Attendance Pages — Unified Project Visual System v10.2 End ===== */

/* ===== Attendance Records Internal Scroll and AJAX State v10.3 ===== */
.attendance-page #attendanceRecords .attendance-records-scroll{max-height:min(70vh,720px);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.attendance-page #attendanceRecords .attendance-records-scroll .new-section-table thead th{position:sticky;top:0;z-index:4;background:var(--card-bg,#fff);box-shadow:0 1px 0 rgba(148,163,184,.22)}
.attendance-page .attendance-card.attendance-ajax-loading{opacity:.62;pointer-events:none;transition:opacity .18s ease}
[data-theme="dark"] .attendance-page #attendanceRecords .attendance-records-scroll .new-section-table thead th{background:var(--card-bg,#1d1128)}
@media(max-width:768px){.attendance-page #attendanceRecords .attendance-records-scroll{max-height:min(68vh,620px)}}
/* ===== Attendance Records Internal Scroll and AJAX State v10.3 End ===== */

/* ===== Attendance Tables Internal Scroll, Row Actions and Infinite Loading v10.4 ===== */
.attendance-page .attendance-table-scroll{max-height:min(70vh,720px);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;border-radius:16px}
.attendance-page .attendance-table-scroll .new-section-table thead th{position:sticky;top:0;z-index:4;background:var(--card-bg,#fff);box-shadow:0 1px 0 rgba(148,163,184,.22)}
.attendance-page .attendance-table-loader{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;justify-content:center;min-height:46px;background:linear-gradient(180deg,rgba(255,255,255,.72),var(--card-bg,#fff));color:var(--primary-color);font-size:1.05rem;border-top:1px solid rgba(148,163,184,.14)}
.attendance-page .attendance-table-loader[hidden]{display:none}.attendance-public-card [hidden]{display:none!important}
.attendance-page .attendance-actions-cell{min-width:430px}
.attendance-page .attendance-row-actions{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:8px}
.attendance-page .attendance-row-actions .attendance-icon-button{min-height:42px;justify-content:center;white-space:nowrap;line-height:1.25;padding-inline:14px}
[data-theme="dark"] .attendance-page .attendance-table-scroll .new-section-table thead th{background:var(--card-bg,#1d1128)}
[data-theme="dark"] .attendance-page .attendance-table-loader{background:linear-gradient(180deg,rgba(29,17,40,.7),var(--card-bg,#1d1128))}
@media(max-width:768px){.attendance-page .attendance-table-scroll{max-height:min(68vh,620px)}.attendance-page .attendance-actions-cell{min-width:350px}.attendance-page .attendance-row-actions{align-items:stretch}.attendance-page .attendance-row-actions .attendance-icon-button{flex:1 1 160px}}
/* ===== Attendance Tables Internal Scroll, Row Actions and Infinite Loading v10.4 End ===== */

/* ===== Attendance Table Header, Server Print Action and Overlapping Site Selection v10.6 ===== */
.attendance-page .attendance-table-scroll .new-section-table{border-collapse:separate;border-spacing:0 12px;width:100%}
.attendance-page .attendance-table-scroll .new-section-table thead{display:table-header-group}
.attendance-page .attendance-table-scroll .new-section-table thead tr{background:var(--card-bg,#fff)}
.attendance-page .attendance-table-scroll .new-section-table thead th{position:sticky;top:0;z-index:8;padding:14px 16px;background:var(--card-bg,#fff);border-top:1px solid var(--border-color,#e8e0ee);border-bottom:1px solid var(--border-color,#e8e0ee);box-shadow:0 8px 16px rgba(48,28,62,.05);white-space:nowrap}
.attendance-page .attendance-table-scroll .new-section-table thead th:first-child{border-inline-start:1px solid var(--border-color,#e8e0ee);border-start-start-radius:14px;border-end-start-radius:14px}
.attendance-page .attendance-table-scroll .new-section-table thead th:last-child{border-inline-end:1px solid var(--border-color,#e8e0ee);border-start-end-radius:14px;border-end-end-radius:14px}
.attendance-page .attendance-table-scroll .new-section-table tbody tr{background:var(--card-bg,#fff)}
.attendance-qr-actions a{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:10px;background:#5d2b86;color:#fff;padding:11px 16px;font:inherit;font-weight:700;cursor:pointer;text-decoration:none}.attendance-qr-actions a:hover{filter:brightness(1.08)}
.attendance-site-choice-list{display:grid;gap:10px;margin-top:16px}.attendance-public-card .attendance-site-choice{width:100%;margin:0;min-height:74px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;text-align:start;padding:13px 15px;background:#f8f3fb;color:#3f2b4d;border:1px solid #e5d8ed;box-shadow:none}.attendance-public-card .attendance-site-choice:hover{background:#f1e6f7;color:#5d2b86;border-color:#cdb5dd}.attendance-public-card .attendance-site-choice>i:first-child{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:#fff;color:#6d3294}.attendance-public-card .attendance-site-choice span{display:flex;flex-direction:column;gap:5px;min-width:0}.attendance-public-card .attendance-site-choice strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attendance-public-card .attendance-site-choice small{color:#7a6d84}.attendance-public-card #attendanceSiteStep h2{font-size:1.08rem;margin:18px 0 7px}.attendance-public-card #attendanceSiteStep>p{margin:0;color:#766982;line-height:1.6}
[data-theme="dark"] .attendance-page .attendance-table-scroll .new-section-table thead tr,[data-theme="dark"] .attendance-page .attendance-table-scroll .new-section-table thead th{background:var(--card-bg,#1d1128);border-color:var(--border-color,#3b2a50)}
@media(max-width:768px){.attendance-qr-actions a{width:100%}.attendance-page .attendance-table-scroll .new-section-table thead th{padding:12px 13px}}
/* ===== Attendance Table Header, Server Print Action and Overlapping Site Selection v10.6 End ===== */

.attendance-code-field{position:relative}.attendance-code-field input{padding-inline-end:52px}.attendance-public-card .attendance-code-toggle{position:absolute;inset-inline-end:6px;top:50%;transform:translateY(-50%);margin:0!important;width:40px!important;height:40px!important;min-height:40px!important;padding:0!important;border:0!important;background:transparent!important;color:var(--primary-color)!important;box-shadow:none!important}.attendance-public-card .attendance-code-toggle:hover{transform:translateY(-50%)!important;box-shadow:none!important}.attendance-proof-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin:12px 0}.attendance-proof-search{max-width:520px}.attendance-proof-toolbar .attendance-icon-button,.attendance-proof-toolbar .attendance-export-button{width:auto!important}.attendance-proof-toolbar+.settings-user-grid{max-height:380px;overflow:auto;padding:4px}

/* ===== Attendance map and monthly table ===== */
.attendance-map-link{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;background:transparent;color:var(--primary-color);font:inherit;font-weight:800;cursor:pointer;text-decoration:underline;padding:4px 0;white-space:nowrap}.attendance-map-modal-frame{margin-top:16px;border:1px solid var(--border-color,#e5d9ed);border-radius:16px;overflow:hidden;height:min(58vh,520px)}.attendance-map-modal-frame iframe{width:100%;height:100%;border:0}.attendance-monthly-scroll{overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-gutter:stable}.attendance-month-block{margin-top:16px}.attendance-month-block h4{margin:0 0 10px;color:var(--primary-color)}.attendance-monthly-table-limit{max-height:calc(20 * 48px + 96px);overflow:auto;border:1px solid var(--border-color,#e8e0ee);border-radius:16px}.attendance-monthly-table{min-width:max-content;border-collapse:separate;border-spacing:0}.attendance-monthly-table th,.attendance-monthly-table td{min-width:86px;text-align:center;white-space:nowrap}.attendance-monthly-table thead th{position:sticky;top:0;z-index:5;background:var(--card-bg,#fff)}.attendance-monthly-table thead tr:nth-child(2) th{top:46px}.attendance-monthly-employee{position:sticky;inset-inline-start:0;z-index:3;min-width:180px!important;background:var(--card-bg,#fff)!important;text-align:start!important}.attendance-monthly-table thead .attendance-monthly-employee,.attendance-monthly-table thead th:first-child{z-index:7}.attendance-monthly-employee small{display:block;color:var(--text-muted,#7b6f85);margin-top:4px}[data-theme="dark"] .attendance-monthly-table thead th,[data-theme="dark"] .attendance-monthly-employee{background:var(--card-bg,#1d1128)!important}
/* ===== Attendance map and monthly table end ===== */
.attendance-map-modal-frame .leaflet-container{width:100%;height:100%}

.attendance-page .attendance-qr-actions,.attendance-qr-public-page .attendance-qr-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.attendance-page .attendance-qr-actions>a,.attendance-page .attendance-qr-actions>button,.attendance-qr-public-page .attendance-qr-actions>a,.attendance-qr-public-page .attendance-qr-actions>button{width:100%;min-height:44px;padding:11px 16px;box-sizing:border-box;font:inherit;font-weight:800;transform:none}
.attendance-monthly-day-group.day-odd{background:rgba(93,43,134,.035)}
.attendance-monthly-day-group.day-even{background:rgba(93,43,134,.095)}
.attendance-monthly-in{color:#16803a;font-weight:700}
.attendance-monthly-out{color:#c62828;font-weight:700}
.attendance-monthly-table thead .attendance-monthly-in,.attendance-monthly-table thead .attendance-monthly-out{color:inherit}
