.assembly-self-modal *,.assembly-self-btn { box-sizing:border-box; }
.assembly-self-btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:44px; padding:9px 14px; border:1px solid #0284c7; border-radius:6px; background:#0284c7; color:#fff; font:inherit; font-size:14px; font-weight:700; cursor:pointer; }
.assembly-self-btn.secondary { background:#fff; color:#334155; border-color:#cbd5e1; }
.assembly-self-btn.compact { min-height:36px; padding:6px 9px; font-size:11px; margin-top:6px; }
.assembly-self-btn:disabled { opacity:.5; cursor:wait; }
.assembly-self-btn:focus-visible { outline:3px solid #38bdf8; outline-offset:2px; }
#student-assembly-self { min-width:0; }
#student-assembly-self[hidden] { display:none!important; }
.student-self-check-shortcut { width:100%; height:100%; box-shadow:none; }
.student-self-check-shortcut .student-quick-menu-icon { background:transparent; box-shadow:none; }
.student-self-check-shortcut .student-quick-menu-label { color:var(--student-quick-accent); }
.student-self-check-shortcut.ready { --student-quick-accent:#0369a1; --student-quick-surface:#f0f9ff; --student-quick-border:#bae6fd; }
.student-self-check-shortcut.submitted { --student-quick-accent:#92400e; --student-quick-surface:#fffbeb; --student-quick-border:#fde68a; }
.student-self-check-shortcut.checked { --student-quick-accent:#047857; --student-quick-surface:#ecfdf5; --student-quick-border:#a7f3d0; }
.student-self-check-shortcut.ready .student-quick-menu-icon i { animation:assembly-self-camera-breathe 3s ease-in-out infinite; }
.student-self-check-shortcut.submitted .student-quick-menu-icon i { animation:assembly-self-wait-tilt 3s ease-in-out infinite; }
.student-self-check-shortcut.checked .student-quick-menu-icon i { animation:assembly-self-check-in 420ms ease-out both; }
@keyframes assembly-self-camera-breathe { 0%,100% { transform:scale(1); opacity:1; } 50% { transform:scale(1.1); opacity:.72; } }
@keyframes assembly-self-wait-tilt { 0%,70%,100% { transform:rotate(0); } 78% { transform:rotate(-12deg); } 88% { transform:rotate(12deg); } }
@keyframes assembly-self-check-in { from { transform:scale(.65); opacity:0; } 65% { transform:scale(1.15); opacity:1; } to { transform:scale(1); opacity:1; } }
@media(prefers-reduced-motion:reduce) { .student-self-check-shortcut .student-quick-menu-icon i { animation:none!important; } }
.assembly-self-state { display:inline-flex; align-items:center; gap:5px; font-size:12px; font-weight:700; }
.assembly-self-state.pending { color:#a16207; }
.assembly-self-state.approved { color:#047857; }
.assembly-self-state.rejected,.assembly-self-state.expired { color:#b91c1c; }
.assembly-self-toolbar { display:flex; flex-wrap:wrap; gap:8px; padding:0 0 14px; }
.assembly-self-toolbar[hidden] { display:none; }
.assembly-self-toolbar-label-short { display:none; }
@media(max-width:767px) {
    #assembly-self-staff-panel:not([hidden]) { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }
    #assembly-self-staff-panel > .assembly-self-btn { flex-direction:column; gap:7px; width:100%; min-width:0; min-height:70px; padding:10px 4px; font-size:11px; line-height:1.4; white-space:nowrap; }
    #assembly-self-staff-panel > .assembly-self-btn > i { font-size:19px; }
    #assembly-self-staff-panel .assembly-self-toolbar-label-full { display:none; }
    #assembly-self-staff-panel .assembly-self-toolbar-label-short { display:inline; }
}
.assembly-self-modal { border-radius:8px!important; }
.assembly-self-modal .swal2-title { font-size:22px; line-height:1.4; }
.assembly-self-modal .swal2-html-container { margin:16px 20px; font-size:14px; text-align:left; color:#334155; }
.assembly-self-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-bottom:14px; }
.assembly-self-fields label { display:flex; flex-direction:column; gap:5px; font-size:13px; font-weight:700; min-width:0; }
.assembly-self-fields input,.assembly-self-fields select { display:block; width:100%; min-width:0; min-height:44px; border:1px solid #cbd5e1; border-radius:6px; padding:8px; color:#0f172a; font:inherit; background:#fff; }
.assembly-self-approval-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin:0; padding:0; border:0; min-width:0; }
.assembly-self-approval-options legend { padding:0 0 8px; font-size:14px; font-weight:700; }
.assembly-self-approval-options label { display:flex; align-items:flex-start; gap:8px; min-width:0; padding:10px 0; border-bottom:2px solid #e2e8f0; cursor:pointer; }
.assembly-self-approval-options label:has(input:checked) { border-color:#0284c7; color:#075985; }
.assembly-self-approval-options input { flex:0 0 20px; width:20px; height:20px; margin:2px 0 0; accent-color:#0284c7; }
.assembly-self-approval-options strong { display:block; font-size:13px; line-height:1.5; }
.assembly-self-approval-options small { display:block; margin-top:3px; color:#64748b; font-size:12px; line-height:1.5; }
.assembly-self-approval-options label:has(input:disabled) { cursor:default; }
.assembly-self-approval-notice { margin:10px 0 16px; padding:8px 10px; border-left:3px solid #10b981; background:#ecfdf5; color:#065f46; font-size:12px; line-height:1.6; overflow-wrap:anywhere; }
.assembly-self-approval-notice.pending { border-color:#f59e0b; background:#fffbeb; color:#92400e; }
.assembly-self-map { width:100%; height:210px; margin-bottom:12px; border:1px solid #cbd5e1; border-radius:6px; }
.assembly-self-room-list { display:flex; flex-wrap:wrap; gap:8px 16px; border-top:1px solid #e2e8f0; margin-top:16px; padding-top:12px; }
.assembly-self-room-list legend { font-size:14px; font-weight:700; padding:0 0 8px; }
.assembly-self-room-list label,.assembly-self-ack { display:flex; align-items:center; gap:8px; min-height:44px; font-size:13px; cursor:pointer; }
.assembly-self-ack input,.assembly-self-room-list input { flex:0 0 20px; width:20px; height:20px; accent-color:#0284c7; }
.assembly-self-privacy { color:#64748b; margin:10px 0; font-size:12px; line-height:1.6; overflow-wrap:anywhere; }
.assembly-self-camera { position:relative; width:100%; aspect-ratio:4/3; max-height:330px; background:#111827; overflow:hidden; border-radius:6px; }
.assembly-self-camera video,.assembly-self-camera img { width:100%; height:100%; object-fit:contain; }
.assembly-self-camera video { transform:scaleX(-1); }
.assembly-self-camera [hidden] { display:none; }
.assembly-self-processing { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:10px; background:rgba(15,23,42,.65); color:#fff; font-size:14px; pointer-events:none; }
.assembly-self-processing i { font-size:28px; animation:assembly-self-spin 1s linear infinite; }
@keyframes assembly-self-spin { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce) { .assembly-self-processing i { animation:none; } }
.assembly-self-capture-tools { display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin-top:12px; }
.assembly-self-capture-tools span { flex:1; min-width:140px; font-size:12px; overflow-wrap:anywhere; }
.assembly-self-review-list { display:grid; gap:12px; margin-top:12px; }
.assembly-self-request { display:grid; grid-template-columns:210px minmax(0,1fr); gap:16px; border:1px solid #e2e8f0; border-radius:6px; padding:12px; }
.assembly-self-approved { min-width:0; border:1px solid #a7f3d0; border-radius:6px; background:#fff; }
.assembly-self-approved-summary { display:grid; grid-template-columns:minmax(0,1fr) auto 20px; align-items:center; gap:10px; min-height:52px; padding:10px 14px; list-style:none; cursor:pointer; background:#ecfdf5; color:#065f46; border-radius:5px; }
.assembly-self-approved-summary::-webkit-details-marker { display:none; }
.assembly-self-approved-summary::marker { content:''; }
.assembly-self-approved-summary strong { min-width:0; font-size:14px; line-height:1.6; overflow-wrap:anywhere; }
.assembly-self-approved-summary .assembly-self-state { white-space:nowrap; }
.assembly-self-approved-summary:hover { background:#d1fae5; }
.assembly-self-approved-summary:focus-visible { outline:3px solid #38bdf8; outline-offset:2px; }
.assembly-self-approved-caret { display:flex; align-items:center; justify-content:center; color:#047857; font-size:18px; }
.assembly-self-approved[open] .assembly-self-approved-caret { transform:rotate(180deg); }
.assembly-self-approved[open] .assembly-self-approved-summary { border-radius:5px 5px 0 0; }
.assembly-self-approved > .assembly-self-request { border:0; border-top:1px solid #a7f3d0; border-radius:0 0 5px 5px; }
.assembly-self-evidence { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.assembly-self-evidence figure { margin:0; min-width:0; }
.assembly-self-evidence figcaption { font-size:11px; text-align:center; margin-top:4px; color:#64748b; }
.assembly-self-evidence img,.assembly-self-evidence span { width:100%; aspect-ratio:3/4; object-fit:cover; background:#f1f5f9; border-radius:4px; }
.assembly-self-evidence span { display:flex; align-items:center; justify-content:center; text-align:center; font-size:12px; }
.assembly-self-request-info { display:flex; flex-direction:column; align-items:flex-start; gap:5px; min-width:0; overflow-wrap:anywhere; }
.assembly-self-request-info strong { font-size:16px; }
.assembly-self-request-info span,.assembly-self-request-info small { font-size:12px; }
.assembly-self-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:5px; }
.assembly-self-review-photo { display:block; width:180px; max-width:100%; aspect-ratio:3/4; object-fit:cover; margin:12px auto; border-radius:6px; }
.assembly-self-empty { padding:24px 8px; text-align:center; color:#64748b; }
.assembly-self-requests-container { padding:12px!important; overflow:hidden!important; height:var(--assembly-requests-height,100dvh)!important; top:var(--assembly-requests-top,0px)!important; bottom:auto!important; }
.swal2-popup.assembly-self-requests-modal { display:flex!important; flex-direction:column; height:min(780px,calc(var(--assembly-requests-height,100dvh) - 24px)); max-height:calc(var(--assembly-requests-height,100dvh) - 24px); padding:0!important; overflow:hidden; }
.assembly-self-requests-modal .swal2-title { flex-shrink:0; margin:0!important; padding:16px 52px 16px 16px!important; font-size:20px!important; text-align:left; border-bottom:1px solid #e2e8f0; }
.assembly-self-requests-modal .swal2-close { position:absolute; top:6px; right:6px; width:40px; height:40px; }
.assembly-self-requests-modal .swal2-html-container { display:flex!important; flex-direction:column; flex:1; min-height:0; margin:0!important; padding:0; overflow:hidden; }
.assembly-self-review-controls { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) 42px; align-items:end; gap:8px; padding:12px 16px; flex-shrink:0; }
.assembly-self-review-controls label { display:flex; flex-direction:column; gap:5px; min-width:0; font-size:12px; font-weight:700; }
.assembly-self-review-controls input,.assembly-self-review-controls select { box-sizing:border-box; width:100%; min-width:0; min-height:42px; border:1px solid #cbd5e1; border-radius:6px; padding:7px 8px; background:#fff; color:#0f172a; font:inherit; font-size:14px; }
.assembly-self-review-controls .assembly-self-btn { min-height:42px; padding:8px; }
.assembly-self-review-controls .assembly-self-btn:disabled i { animation:assembly-self-spin 1s linear infinite; }
.assembly-self-review-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; padding:0 16px 12px; flex-shrink:0; }
.assembly-self-summary-item { padding:10px 12px; min-width:0; border-radius:6px; background:#f1f5f9; color:#334155; border-left:3px solid #94a3b8; }
.assembly-self-summary-item.checked { background:#ecfdf5; color:#065f46; border-color:#10b981; }
.assembly-self-summary-item.unchecked { background:#fffbeb; color:#92400e; border-color:#f59e0b; }
.assembly-self-summary-item > span { display:flex; align-items:center; gap:5px; font-size:12px; white-space:nowrap; }
.assembly-self-summary-item > strong { display:flex; align-items:baseline; gap:6px; margin-top:4px; font-size:26px; line-height:1.3; }
.assembly-self-summary-item small { font-size:11px; font-weight:400; }
.assembly-self-review-count { flex-shrink:0; padding:8px 16px; border-block:1px solid #e2e8f0; font-size:12px; color:#64748b; background:#f8fafc; }
.assembly-self-review-views { display:flex; flex-shrink:0; gap:6px; padding:0 16px 10px; }
.assembly-self-review-views button { display:flex; align-items:center; justify-content:center; gap:7px; min-height:40px; padding:6px 16px; border:1px solid #cbd5e1; border-radius:6px; background:#fff; color:#475569; font:inherit; font-size:12px; cursor:pointer; }
.assembly-self-review-views button[aria-pressed="true"] { background:#e0f2fe; border-color:#7dd3fc; color:#075985; font-weight:700; }
.assembly-self-requests-modal [hidden] { display:none!important; }
.assembly-self-review-map-pane { display:flex; flex-direction:column; flex:1; min-height:0; overflow:hidden; }
.assembly-self-request-map-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-shrink:0; padding:6px 12px; background:#fff; border-bottom:1px solid #e2e8f0; }
.assembly-self-request-map-toolbar > div { min-width:0; text-align:left; }
.assembly-self-request-map-toolbar strong { display:block; font-size:12px; color:#334155; }
.assembly-self-request-map-context { display:block; font-size:10px; color:#64748b; margin-top:2px; }
.assembly-self-request-map-expand { flex:0 0 44px; width:44px; min-height:44px; padding:8px; }
.assembly-self-request-map-expand:focus-visible { outline:2px solid #0284c7; outline-offset:2px; }
.swal2-container.assembly-self-requests-map-expanded-container { padding:0!important; }
.swal2-popup.assembly-self-requests-modal.assembly-self-requests-map-expanded { width:100vw!important; max-width:none!important; height:var(--assembly-requests-height,100dvh)!important; max-height:var(--assembly-requests-height,100dvh)!important; margin:0!important; border-radius:0!important; }
.assembly-self-requests-modal.assembly-self-requests-map-expanded > .swal2-title,.assembly-self-requests-modal.assembly-self-requests-map-expanded > .swal2-close,.assembly-self-requests-modal.assembly-self-requests-map-expanded > .swal2-actions,.assembly-self-requests-modal.assembly-self-requests-map-expanded .assembly-self-review-controls,.assembly-self-requests-modal.assembly-self-requests-map-expanded .assembly-self-review-summary,.assembly-self-requests-modal.assembly-self-requests-map-expanded .assembly-self-review-views,.assembly-self-requests-modal.assembly-self-requests-map-expanded .assembly-self-review-count { display:none!important; }
.assembly-self-requests-map-expanded .assembly-self-request-map-toolbar { padding-top:max(6px,env(safe-area-inset-top)); padding-right:max(12px,env(safe-area-inset-right)); padding-left:max(12px,env(safe-area-inset-left)); }
.assembly-self-requests-map-expanded .assembly-self-map-roster { padding-bottom:max(6px,env(safe-area-inset-bottom)); }
.assembly-self-request-map { flex:1; min-height:140px; width:100%; background:#f1f5f9; text-align:center; font-size:13px; }
.assembly-self-map-caption { flex-shrink:0; padding:7px 12px; background:#f0f9ff; border-block:1px solid #bae6fd; color:#075985; font-size:11px; }
.assembly-self-map-caption:empty,.assembly-self-map-roster:empty { display:none; }
.assembly-self-map-roster { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); flex-shrink:0; max-height:130px; overflow:auto; overscroll-behavior:contain; padding:6px 12px; gap:4px 8px; }
.assembly-self-map-roster button { display:flex; align-items:center; gap:8px; min-height:44px; min-width:0; padding:6px 8px; border:0; border-radius:4px; background:#fff; color:#334155; font:inherit; text-align:left; cursor:pointer; }
.assembly-self-map-roster button:hover,.assembly-self-map-roster button:focus-visible { background:#e0f2fe; color:#075985; }
.assembly-self-map-roster button:disabled { color:#64748b; background:#f8fafc; cursor:default; }
.assembly-self-map-roster button span { min-width:0; }
.assembly-self-map-roster strong { display:block; font-size:11px; line-height:1.5; overflow-wrap:anywhere; }
.assembly-self-map-roster small { display:block; font-size:10px; line-height:1.5; }
.assembly-self-map-pin { display:flex; width:40px; height:52px; align-items:center; justify-content:center; overflow:hidden; border:3px solid #d97706; border-radius:6px; background:#fff; color:#334155; box-shadow:0 2px 6px #0004; box-sizing:border-box; }
.assembly-self-map-pin.approved { border-color:#059669; }
.assembly-self-map-pin.rejected { border-color:#dc2626; }
.assembly-self-map-pin.expired { border-color:#94a3b8; }
.assembly-self-map-pin img { display:block; width:100%; height:100%; object-fit:cover; }
.assembly-self-map-student { display:flex; flex-direction:column; align-items:center; gap:4px; width:190px; max-width:100%; font-family:inherit; text-align:center; white-space:normal; color:#334155; }
.assembly-self-map-student > img { display:block; width:120px; height:160px; border-radius:6px; object-fit:cover; background:#f1f5f9; }
.assembly-self-map-student > strong { font-size:12px; line-height:1.5; overflow-wrap:anywhere; }
.assembly-self-map-student > span { font-size:11px; line-height:1.5; }
.assembly-self-map-student > small { font-size:10px; line-height:1.5; }
.assembly-self-map-no-photo { padding:18px; background:#f1f5f9; }
.assembly-self-map-hover-card { position:fixed; z-index:2000; width:210px; padding:10px; box-sizing:border-box; background:#fff; border:1px solid #cbd5e1; border-radius:6px; box-shadow:0 3px 12px #0003; pointer-events:none; }
.assembly-self-student-popup .leaflet-popup-content { margin:16px; }
.assembly-self-photo-hover { position:fixed; z-index:2000; display:block; object-fit:contain; background:#fff; border:3px solid #fff; border-radius:6px; box-shadow:0 6px 24px #0005; pointer-events:none; }
.assembly-self-requests-modal .assembly-self-review-list { flex:1; min-height:0; overflow:auto; overscroll-behavior:contain; align-content:start; gap:10px; padding:12px 16px; margin:0; }
.assembly-self-requests-modal .assembly-self-request { grid-template-columns:220px minmax(0,1fr); gap:12px 18px; padding:14px; }
.assembly-self-requests-modal .assembly-self-evidence { align-self:start; gap:10px; width:100%; }
.assembly-self-requests-modal .assembly-self-evidence figcaption { font-size:10px; white-space:nowrap; line-height:1.5; }
.assembly-self-requests-modal .assembly-self-request-info { gap:3px; align-self:center; }
.assembly-self-requests-modal .assembly-self-request-info > strong { font-size:13px; line-height:1.5; }
.assembly-self-requests-modal .assembly-self-request-info > span,.assembly-self-requests-modal .assembly-self-request-info > small { font-size:10px; line-height:1.5; }
.assembly-self-requests-modal .assembly-self-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); grid-column:1 / -1; justify-self:center; width:100%; max-width:420px; gap:8px; margin-top:0; }
.assembly-self-requests-modal .assembly-self-actions:empty { display:none; }
.assembly-self-requests-modal .assembly-self-actions [data-decision="deleted"] { grid-column:1 / -1; }
.assembly-self-requests-modal .assembly-self-actions button { min-height:40px; font-size:12px; padding:7px 10px; }
.assembly-self-requests-modal .assembly-self-approved-summary { min-height:48px; padding:8px 10px; gap:6px; }
.assembly-self-requests-modal .assembly-self-approved-summary strong { font-size:13px; }
.assembly-self-requests-modal .assembly-self-approved-summary .assembly-self-state { font-size:11px; }
.assembly-self-requests-modal .assembly-self-requests-actions { flex-shrink:0; width:auto; margin:0!important; padding:10px 16px; border-top:1px solid #e2e8f0; background:#fff; }
.assembly-self-requests-actions .swal2-cancel { width:100%; min-height:44px; margin:0!important; padding:8px 12px!important; border-radius:6px!important; font-size:14px!important; }
@media(max-width:600px) {
    .assembly-self-requests-modal .swal2-title { font-size:18px!important; padding:14px 48px 14px 12px!important; }
    .assembly-self-review-controls { gap:6px; padding:10px 12px; }
    .assembly-self-review-controls input,.assembly-self-review-controls select { font-size:16px; padding:6px; }
    .assembly-self-review-summary { gap:6px; padding:0 12px 10px; }
    .assembly-self-summary-item { padding:8px 6px; }
    .assembly-self-summary-item > span { font-size:10px; gap:3px; }
    .assembly-self-summary-item > strong { font-size:24px; }
    .assembly-self-review-count { padding:7px 12px; font-size:11px; }
    .assembly-self-review-views { padding:0 12px 8px; }
    .assembly-self-review-views button { flex:1; min-height:44px; }
    .assembly-self-map-roster { grid-template-columns:minmax(0,1fr); max-height:100px; }
    .assembly-self-requests-modal .assembly-self-review-list { padding:10px 12px; }
    .assembly-self-requests-modal .assembly-self-request { grid-template-columns:minmax(0,1fr); gap:12px; padding:12px; }
    .assembly-self-requests-modal .assembly-self-evidence { max-width:248px; justify-self:center; }
    .assembly-self-requests-modal .assembly-self-request-info { width:100%; }
    .assembly-self-requests-modal .assembly-self-actions button { min-height:44px; font-size:11px; padding:7px 5px; gap:4px; }
    .assembly-self-requests-modal .assembly-self-requests-actions { padding:10px 12px; }
}
@media(max-width:360px) {
    .assembly-self-requests-modal .assembly-self-request { padding:10px; }
    .assembly-self-summary-item > span > i { display:none; }
}
@media(prefers-reduced-motion:reduce) { .assembly-self-review-controls .assembly-self-btn:disabled i { animation:none; } }
@media(min-width:601px) and (max-height:450px) {
    .assembly-self-requests-modal .swal2-title { padding-block:10px!important; font-size:18px!important; }
    .assembly-self-review-controls { padding-block:8px; }
    .assembly-self-review-summary { padding-bottom:8px; }
    .assembly-self-summary-item { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:6px 10px; }
    .assembly-self-summary-item > strong { margin-top:0; font-size:22px; }
    .assembly-self-review-count { padding-block:6px; }
    .assembly-self-requests-modal .assembly-self-requests-actions { padding-block:6px; }
}
.assembly-leave-reason { display:flex; flex-direction:column; gap:6px; font-size:13px; font-weight:700; }
.assembly-leave-reason textarea { width:100%; min-width:0; resize:vertical; border:1px solid #cbd5e1; border-radius:6px; padding:8px; font:inherit; background:#fff; color:#0f172a; }
.assembly-leave-list-heading { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:8px; font-size:12px; }
.assembly-leave-students { max-height:210px; overflow:auto; border-block:1px solid #e2e8f0; overscroll-behavior:contain; }
.assembly-leave-students label { display:flex; align-items:center; gap:10px; min-height:54px; padding:8px 4px; cursor:pointer; border-bottom:1px solid #f1f5f9; }
.assembly-leave-students label:has(input:checked) { background:#eff6ff; }
.assembly-leave-students input { width:20px; height:20px; flex:0 0 20px; accent-color:#0284c7; }
.assembly-leave-students span { min-width:0; overflow-wrap:anywhere; }
.assembly-leave-students strong { display:block; font-size:13px; }
.assembly-leave-students small { display:block; color:#64748b; font-size:11px; margin-top:2px; }
.assembly-leave-overwrite { color:#9f1239; }
.assembly-leave-container { padding:12px!important; overflow:hidden!important; height:var(--assembly-leave-viewport-height,100dvh)!important; top:var(--assembly-leave-viewport-top,0px)!important; bottom:auto!important; }
.swal2-popup.assembly-leave-modal { display:flex!important; flex-direction:column; height:min(660px,calc(var(--assembly-leave-viewport-height,100dvh) - 24px)); max-height:calc(var(--assembly-leave-viewport-height,100dvh) - 24px); padding:0!important; overflow:hidden; }
.assembly-leave-modal .swal2-title { order:0; flex-shrink:0; margin:0!important; padding:16px 20px!important; font-size:20px!important; text-align:left; border-bottom:1px solid #e2e8f0; }
.assembly-leave-modal .swal2-html-container { order:1; flex:1; min-height:0; margin:0!important; padding:16px 20px; overflow:auto; overscroll-behavior:contain; }
.assembly-leave-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; min-height:100%; }
.assembly-leave-setup,.assembly-leave-roster { min-width:0; }
.assembly-leave-roster { display:flex; flex-direction:column; min-height:0; border-left:1px solid #e2e8f0; padding-left:20px; }
.assembly-leave-room-field { grid-column:1 / -1; }
.assembly-leave-modal .assembly-self-fields { margin-bottom:12px; gap:10px; }
.assembly-leave-modal .assembly-self-fields label,.assembly-leave-search-field { font-size:12px; }
.assembly-leave-modal .assembly-self-fields input,.assembly-leave-modal .assembly-self-fields select { min-height:40px; font-size:13px; padding:7px 8px; }
.assembly-leave-modal .assembly-self-ack { min-height:40px; font-size:12px; margin:0; }
.assembly-leave-modal .assembly-self-ack input,.assembly-leave-modal .assembly-leave-students input { width:18px; height:18px; flex-basis:18px; margin:0; }
.assembly-leave-modal .assembly-leave-reason { font-size:12px; }
.assembly-leave-modal .assembly-leave-reason textarea { min-height:54px; max-height:120px; font-size:13px; }
.assembly-leave-search-field { display:flex; flex-direction:column; gap:5px; font-weight:700; }
.assembly-leave-search-field > span { display:flex; align-items:center; gap:8px; min-height:40px; border:1px solid #cbd5e1; border-radius:6px; padding:0 10px; color:#64748b; }
.assembly-leave-search-field input { border:0; background:transparent; width:100%; min-width:0; min-height:38px; outline:none; padding:0; color:#0f172a; font:inherit; font-size:13px; }
.assembly-leave-search-field > span:focus-within { border-color:#0284c7; outline:2px solid #bae6fd; }
.assembly-leave-modal .assembly-leave-list-heading { margin:4px 0; flex-shrink:0; }
.assembly-leave-modal .assembly-leave-students { flex:1; min-height:80px; max-height:365px; }
.assembly-leave-modal .assembly-leave-students label { min-height:48px; padding:6px 4px; }
.assembly-leave-modal .assembly-leave-validation { order:2; flex-shrink:0; margin:0!important; padding:8px 14px; font-size:12px; }
.assembly-leave-modal .assembly-leave-footer { order:3; flex-shrink:0; margin:0!important; padding:8px 20px; border-top:1px solid #e2e8f0; background:#f0f9ff; color:#0369a1; font-size:12px; font-weight:700; }
.assembly-leave-footer .is-overwrite { color:#9f1239; }
.assembly-leave-modal .assembly-leave-actions { order:4; flex-shrink:0; display:grid!important; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr); gap:8px; width:auto; margin:0!important; padding:12px 20px; background:#fff; }
.assembly-leave-actions .swal2-styled { display:flex; align-items:center; justify-content:center; gap:6px; min-height:44px; margin:0!important; padding:9px 8px!important; border-radius:6px!important; font-size:14px!important; }
.assembly-leave-actions .swal2-confirm,.assembly-leave-actions .swal2-cancel { display:flex!important; width:100%; }
.assembly-self-settings-container { padding:12px!important; overflow:hidden!important; height:var(--assembly-settings-height,100dvh)!important; top:var(--assembly-settings-top,0px)!important; bottom:auto!important; }
.swal2-popup.assembly-self-settings-modal { display:flex!important; flex-direction:column; height:min(700px,calc(var(--assembly-settings-height,100dvh) - 24px)); max-height:calc(var(--assembly-settings-height,100dvh) - 24px); padding:0!important; overflow:hidden; }
.assembly-self-settings-modal .swal2-title { order:0; flex-shrink:0; margin:0!important; padding:16px 20px!important; font-size:20px!important; text-align:left; border-bottom:1px solid #e2e8f0; }
.assembly-self-settings-modal .swal2-html-container { order:1; display:flex!important; flex-direction:column; flex:1; min-height:0; margin:0!important; padding:0; overflow:hidden; }
.assembly-self-settings-tabs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:4px; flex-shrink:0; padding:8px 12px; background:#f8fafc; border-bottom:1px solid #e2e8f0; }
.assembly-self-settings-tabs button { display:flex; align-items:center; justify-content:center; gap:6px; min-width:0; min-height:44px; border:0; border-bottom:2px solid transparent; background:transparent; color:#64748b; font:inherit; font-size:13px; font-weight:700; cursor:pointer; padding:6px 4px; }
.assembly-self-settings-tabs button[aria-selected="true"] { background:#fff; color:#0369a1; border-bottom-color:#0284c7; }
.assembly-self-settings-tabs button:focus-visible { outline:2px solid #38bdf8; outline-offset:-2px; }
.assembly-self-settings-tabs button span { min-width:0; overflow-wrap:anywhere; }
.assembly-self-settings-panels { flex:1; min-height:0; overflow:auto; overscroll-behavior:contain; padding:14px 20px; }
.assembly-self-settings-modal [hidden] { display:none!important; }
.assembly-self-location-fields { min-width:0; margin:0; padding:0; border:0; }
.assembly-self-settings-scope { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; flex-shrink:0; padding:12px 18px; border-bottom:1px solid #e2e8f0; text-align:left; }
.assembly-self-settings-scope label,.assembly-self-settings-scope strong { color:#334155; font-size:13px; font-weight:700; }
.assembly-self-settings-scope select { flex:1; min-width:150px; min-height:42px; padding:7px 10px; border:1px solid #cbd5e1; border-radius:6px; color:#0f172a; background:#fff; font:inherit; font-size:14px; }
.assembly-self-settings-master-notice { flex-shrink:0; margin:0; padding:8px 18px; color:#92400e; background:#fffbeb; font-size:12px; text-align:left; }
.assembly-self-settings-gps { margin:12px 0 4px; }
.assembly-self-gps-notice { margin:0 0 14px; color:#475569; font-size:12px; line-height:1.5; }
.assembly-self-gps-notice.is-disabled { color:#92400e; }
.assembly-self-settings-modal .assembly-self-fields { gap:10px; margin-bottom:14px; }
.assembly-self-settings-modal .assembly-self-fields label { font-size:12px; }
.assembly-self-settings-modal .assembly-self-fields input { min-height:40px; font-size:14px; padding:7px 8px; }
.assembly-self-settings-times { grid-template-columns:repeat(3,minmax(0,1fr)); }
.assembly-self-settings-modal .assembly-self-ack { min-height:44px; font-size:13px; }
.assembly-self-settings-enabled { padding:8px 10px; background:#ecfdf5; color:#065f46; border-left:3px solid #10b981; margin-bottom:14px; }
.assembly-self-settings-modal .assembly-self-approval-options { gap:8px; }
.assembly-self-settings-modal .assembly-self-approval-options label { padding:10px 6px; }
.assembly-self-settings-search { display:flex; flex-direction:column; gap:6px; font-size:12px; font-weight:700; }
.assembly-self-settings-search input { min-width:0; width:100%; min-height:40px; border:1px solid #cbd5e1; border-radius:6px; font:inherit; font-size:14px; padding:8px 10px; background:#fff; color:#0f172a; }
.assembly-self-settings-room-heading { padding:6px 0; border-bottom:1px solid #e2e8f0; }
.assembly-self-settings-modal .assembly-self-room-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 12px; border:0; margin:0; padding:4px 0; min-width:0; }
.assembly-self-settings-modal .assembly-self-room-list label { min-width:0; overflow-wrap:anywhere; border-bottom:1px solid #f1f5f9; }
.assembly-self-settings-modal .assembly-self-room-list label:has(input:checked) { color:#0369a1; font-weight:700; }
.assembly-self-settings-sr-only { position:absolute; width:1px; height:1px; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }
.assembly-self-settings-map-details { margin-top:12px; border-top:1px solid #e2e8f0; }
.assembly-self-settings-map-details summary { display:flex; align-items:center; gap:8px; min-height:44px; list-style:none; cursor:pointer; color:#0369a1; font-size:13px; font-weight:700; }
.assembly-self-settings-map-details summary::-webkit-details-marker { display:none; }
.assembly-self-settings-map-details summary i:last-child { margin-left:auto; }
.assembly-self-settings-map-details[open] summary i:last-child { transform:rotate(180deg); }
.assembly-self-settings-modal .assembly-self-map { height:190px; margin-bottom:0; }
.assembly-self-map-stage { min-width:0; }
.assembly-self-map-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:52px; padding:4px 0 8px; color:#334155; }
.assembly-self-map-toolbar strong { display:flex; align-items:center; gap:6px; font-size:13px; }
.assembly-self-map-toolbar .assembly-self-btn { width:44px; min-height:44px; padding:8px; font-size:17px; flex-shrink:0; }
.assembly-self-settings-container.assembly-self-map-expanded-container { padding:0!important; }
.swal2-popup.assembly-self-settings-modal.assembly-self-map-expanded { width:100%!important; max-width:none!important; height:var(--assembly-settings-height,100dvh)!important; max-height:var(--assembly-settings-height,100dvh)!important; margin:0!important; border-radius:0!important; }
.assembly-self-settings-modal.assembly-self-map-expanded .swal2-title,.assembly-self-settings-modal.assembly-self-map-expanded .assembly-self-settings-tabs,.assembly-self-settings-modal.assembly-self-map-expanded .assembly-self-settings-actions,.assembly-self-settings-modal.assembly-self-map-expanded .assembly-self-settings-footer,.assembly-self-settings-modal.assembly-self-map-expanded .assembly-self-settings-validation,.assembly-self-settings-modal.assembly-self-map-expanded .assembly-self-settings-panels { display:none!important; }
.assembly-self-map-expanded .assembly-self-map-stage { display:flex; flex-direction:column; flex:1; min-height:0; }
.assembly-self-map-expanded .assembly-self-map-toolbar { flex-shrink:0; padding:8px max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left)); background:#fff; border-bottom:1px solid #e2e8f0; }
.assembly-self-map-expanded .assembly-self-map-toolbar strong { font-size:16px; }
.assembly-self-settings-modal.assembly-self-map-expanded .assembly-self-map { flex:1; min-height:0; height:auto; border:0; border-radius:0; }
.assembly-self-settings-readonly { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:14px; margin:0; font-size:14px; }
.assembly-self-settings-readonly dd { margin:0; font-weight:700; }
.assembly-self-settings-modal .assembly-self-settings-validation { order:2; flex-shrink:0; margin:0!important; padding:8px 14px; font-size:12px; }
.assembly-self-settings-modal .assembly-self-settings-footer { order:3; flex-shrink:0; margin:0!important; padding:8px 20px; border-top:1px solid #e2e8f0; background:#f0f9ff; color:#0369a1; font-size:12px; font-weight:700; }
.assembly-self-settings-modal .assembly-self-settings-actions { order:4; flex-shrink:0; display:grid!important; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr); gap:8px; width:auto; margin:0!important; padding:12px 20px; background:#fff; }
.assembly-self-settings-actions .swal2-styled { min-height:44px; margin:0!important; padding:9px 8px!important; border-radius:6px!important; font-size:14px!important; }
.assembly-self-settings-actions .swal2-confirm,.assembly-self-settings-actions .swal2-cancel { display:flex!important; align-items:center; justify-content:center; gap:6px; width:100%; }
.assembly-self-settings-modal.swal2-loading .swal2-confirm { display:none!important; }
.assembly-self-settings-actions .swal2-loader { grid-column:1; justify-self:center; }
@media(max-width:600px) {
    .assembly-self-settings-modal .swal2-title { padding:12px 14px!important; font-size:18px!important; }
    .assembly-self-settings-tabs { padding:6px; }
    .assembly-self-settings-tabs button { flex-direction:column; gap:3px; font-size:12px; }
    .assembly-self-settings-panels { padding:12px 14px; }
    .assembly-self-settings-modal .assembly-self-fields input,.assembly-self-settings-search input { font-size:16px; }
    .assembly-self-settings-times { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .assembly-self-settings-modal .assembly-self-room-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .assembly-self-settings-modal .assembly-self-settings-footer { padding:8px 14px; }
    .assembly-self-settings-modal .assembly-self-settings-actions { padding:10px 14px; }
}
@media(max-width:600px) {
    .swal2-popup.assembly-leave-modal { height:min(720px,calc(var(--assembly-leave-viewport-height,100dvh) - 24px)); }
    .assembly-leave-modal .swal2-title { padding:12px 14px!important; font-size:18px!important; }
    .assembly-leave-modal .swal2-html-container { padding:10px 14px; }
    .assembly-leave-modal .assembly-self-fields input,.assembly-leave-modal .assembly-self-fields select,.assembly-leave-modal .assembly-leave-reason textarea,.assembly-leave-search-field input { font-size:16px; }
    .assembly-leave-layout { grid-template-columns:minmax(0,1fr); gap:10px; min-height:0; }
    .assembly-leave-roster { border-left:0; padding-left:0; }
    .assembly-leave-setup .assembly-self-fields { grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px 8px; margin-bottom:8px; }
    .assembly-leave-room-field { grid-column:1 / -1; }
    .assembly-leave-modal .assembly-leave-students { flex:none; min-height:0; max-height:150px; }
    .assembly-leave-modal .assembly-leave-footer { padding:8px 14px; }
    .assembly-leave-modal .assembly-leave-actions { padding:10px 14px; }
}
@media(max-width:600px) {
    .assembly-self-approval-options { grid-template-columns:minmax(0,1fr); gap:0; }
    .assembly-self-modal .swal2-title { font-size:19px; }
    .assembly-self-modal .swal2-html-container { margin:12px; }
    .assembly-self-request { grid-template-columns:minmax(0,1fr); gap:10px; }
    .assembly-self-evidence { max-width:240px; }
    .assembly-self-actions { width:100%; }
    .assembly-self-actions button { flex:1; padding:9px 8px; font-size:12px; }
    .assembly-self-actions [data-decision="deleted"] { flex-basis:100%; }
    .assembly-self-fields { gap:8px; }
    .assembly-self-fields label { font-size:12px; }
}
