:root{--bg:#f4f6f8;--surface:#fff;--text:#17202a;--muted:#667085;--line:#e4e7ec;--primary:#175cd3;--danger:#b42318;--success:#067647;--warning:#b54708;--sidebar:#111827}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);font-size:14px}a{color:inherit}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;background:var(--sidebar);color:#fff;padding:18px 14px;z-index:30;overflow:auto}.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 20px}.brand span{display:block;color:#9ca3af;font-size:12px}.sidebar-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.sidebar-head .brand{flex:1}.sidebar-close{display:none;border:0;background:transparent;color:#fff;font-size:28px;line-height:1;padding:6px 8px;border-radius:8px;cursor:pointer}.sidebar-close:hover{background:#1f2937}.sidebar-backdrop{display:block;position:fixed;inset:0;border:0;background:rgba(17,24,39,.46);z-index:25;padding:0;opacity:0;pointer-events:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:opacity .18s ease}.sidebar-backdrop.show{opacity:1;pointer-events:auto}body.nav-open{overflow:hidden}.brand-mark{display:grid;place-items:center;width:64px;height:64px;border-radius:18px;background:#fff;color:#111827;font-weight:800;font-size:32px}.brand-mark.small{width:38px;height:38px;border-radius:10px;font-size:20px}.sidebar nav{display:grid;gap:4px}.sidebar nav a{padding:10px 12px;border-radius:8px;text-decoration:none;color:#e5e7eb}.sidebar nav a:hover{background:#1f2937}.main{margin-left:250px;min-width:0}.topbar{min-height:72px;background:var(--surface);border-bottom:1px solid var(--line);padding:10px 18px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:20}.icon-btn{display:none;border:1px solid color-mix(in srgb,var(--theme-soft,#c9b8eb) 72%,var(--theme-primary,#35106b));background:var(--theme-soft,#c9b8eb);color:var(--theme-primary,#35106b);border-radius:8px;padding:8px 10px}.context-area{display:flex;gap:8px;align-items:end;min-width:0;flex:1;flex-wrap:wrap}.context-form{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.context-form label{font-size:11px;color:var(--muted)}select,input,textarea{width:100%;border:1px solid #d0d5dd;border-radius:8px;padding:9px 10px;background:#fff;color:var(--text);font:inherit}.context-form select{min-width:150px;padding:7px 8px}.user-menu{display:flex;gap:10px;align-items:center;white-space:nowrap}.user-menu a,.link-btn{font-size:12px;color:var(--primary);text-decoration:none}.link-btn{border:0;background:none;padding:0;cursor:pointer}.historical-banner{background:#fff3cd;color:#664d03;border-bottom:1px solid #ffecb5;padding:8px 18px;text-align:center}.content{padding:22px;max-width:1500px;margin:auto}h1{font-size:24px;margin:0 0 16px}.grid{display:grid;gap:16px}.stats{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px;box-shadow:0 1px 2px rgba(16,24,40,.04)}.stat strong{display:block;font-size:28px}.stat span{color:var(--muted)}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;color:var(--muted);background:#f9fafb}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--theme-soft,#c9b8eb) 72%,var(--theme-primary,#35106b));background:var(--theme-soft,#c9b8eb);color:var(--theme-primary,#35106b);border-radius:8px;padding:9px 13px;text-decoration:none;cursor:pointer}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.danger{background:var(--danger,#b42318);color:#fff;border-color:var(--danger,#b42318)}.btn.compact{padding:7px 10px}.btn.wide{width:100%}.alert{padding:11px 13px;border-radius:8px;margin-bottom:14px}.alert.success{background:#ecfdf3;color:var(--success)}.alert.danger{background:#fef3f2;color:var(--danger)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid label{display:grid;gap:5px;color:#475467}.form-grid .full{grid-column:1/-1}.section{margin:0 0 22px}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.pill{display:inline-block;padding:3px 8px;border-radius:999px;background:#f2f4f7;color:#344054;font-size:12px}.auth-page{min-height:100vh;display:grid;place-items:center;padding:20px;background:#eef2f6}.auth-card{width:min(420px,100%);background:#fff;border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:0 20px 50px rgba(16,24,40,.08)}.auth-card .brand-mark{margin:auto}.auth-card h1{text-align:center;margin:14px 0 4px}.auth-card p,.auth-card small{display:block;text-align:center;color:var(--muted)}.auth-card form{display:grid;gap:13px;margin:20px 0}.auth-card label{display:grid;gap:5px}.muted{color:var(--muted)}.actions{display:flex;gap:6px;flex-wrap:wrap}.stack{display:grid;gap:10px}.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}@media(min-width:981px){.sidebar-backdrop{display:none!important}}@media(max-width:980px){.sidebar{width:min(82vw,320px);transform:translateX(-105%);transition:transform .2s ease;box-shadow:12px 0 32px rgba(16,24,40,.18)}.sidebar.open{transform:translateX(0)}.sidebar-close{display:inline-flex;align-items:center;justify-content:center}.main{margin-left:0}.icon-btn{display:inline-block}.stats{grid-template-columns:repeat(2,1fr)}.user-menu span{display:none}}@media(max-width:640px){.topbar{align-items:flex-start;flex-wrap:wrap;padding:10px}.context-area{order:3;width:100%}.context-form{width:100%}.context-form label{flex:1;min-width:120px}.context-form select{min-width:0}.content{padding:14px}.stats{grid-template-columns:1fr 1fr;gap:10px}.card{padding:14px}.form-grid{grid-template-columns:1fr}.table-wrap{border:0;background:transparent}table.responsive{min-width:0}table.responsive thead{display:none}table.responsive,table.responsive tbody,table.responsive tr,table.responsive td{display:block;width:100%}table.responsive tr{background:#fff;border:1px solid var(--line);border-radius:10px;margin-bottom:10px;padding:8px}table.responsive td{border:0;padding:5px 8px}table.responsive td:before{content:attr(data-label);display:block;color:var(--muted);font-size:11px}.user-menu{margin-left:auto}}
.scroll-anchor{scroll-margin-top:88px}@media(max-width:640px){.scroll-anchor{scroll-margin-top:170px}}
.main{min-height:100vh;display:flex;flex-direction:column}.content{width:100%;flex:1 0 auto}.app-footer{width:100%;min-height:28px;margin-top:auto;padding:4px 22px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--theme-page-bg,#f7f5fa) 96%,#fff);color:var(--muted);font-size:11px;line-height:1.2;display:flex;align-items:center;justify-content:space-between;gap:8px 14px;flex-wrap:wrap}.app-footer-version{white-space:nowrap;font-weight:700}.year-rollover-decisions select,.year-rollover-decisions input{min-width:150px}.year-rollover-decisions td:first-child{min-width:230px}@media(max-width:640px){.app-footer{min-height:24px;padding:3px 14px;font-size:10px;gap:3px 10px}.year-rollover-decisions select,.year-rollover-decisions input{min-width:0}}
.auth-card .copyright-note{margin-top:8px;font-size:11px;line-height:1.4}

/* Milestone 3C.1 — Scanner Presensi mobile-first */
.scanner-page{max-width:1120px;margin:0 auto}.scanner-header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:14px}.scanner-header h1{margin-bottom:4px}.scanner-status-card{border-radius:14px;padding:16px 18px;margin-bottom:14px;border:1px solid var(--line);background:#fff}.scanner-status-card.entry{border-color:#abefc6;background:#ecfdf3}.scanner-status-card.departure{border-color:#b2ddff;background:#eff8ff}.scanner-status-card.checkpoint{border-color:#fde68a;background:#fffbeb}.scanner-status-card.closed{border-color:#fecdca;background:#fef3f2}.scanner-status-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.scanner-live-dot{width:10px;height:10px;border-radius:50%;background:currentColor;opacity:.8}.scanner-clock{margin-left:auto;color:var(--muted);font-size:12px}.scanner-window{font-size:13px;margin-top:6px}.scanner-reason{margin-top:8px;font-weight:600}.scanner-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:14px;margin-bottom:18px}.scanner-camera-card,.scanner-result-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px}.scanner-camera-wrap{position:relative;overflow:hidden;border-radius:12px;background:#111827;aspect-ratio:4/3;display:grid;place-items:center}.scanner-camera-wrap video{width:100%;height:100%;object-fit:cover;display:block}.scanner-camera-placeholder{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:6px;padding:20px;color:#fff;background:#111827}.scanner-camera-placeholder[hidden]{display:none}.scanner-camera-placeholder span{color:#d0d5dd;font-size:13px}.scanner-reticle{position:absolute;inset:18%;border:3px solid rgba(255,255,255,.9);border-radius:18px;box-shadow:0 0 0 999px rgba(0,0,0,.18);pointer-events:none}.scanner-reticle span:before,.scanner-reticle span:after{content:"";position:absolute;background:#fff}.scanner-controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.scanner-controls .btn{min-height:44px}.scanner-camera-note{margin-top:10px;color:var(--muted);font-size:12px;line-height:1.45}.scanner-result-card{display:flex;min-height:360px;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;transition:background .15s,border-color .15s}.scanner-result-card.success{background:#ecfdf3;border-color:#6ce9a6}.scanner-result-card.warning{background:#fffaeb;border-color:#fedf89}.scanner-result-card.danger{background:#fef3f2;border-color:#fda29b}.scanner-result-card.info{background:#eff8ff;border-color:#b2ddff}.scanner-result-icon{font-size:54px;line-height:1;font-weight:800}.scanner-result-title{font-size:22px;font-weight:800}.scanner-result-name{font-size:26px;font-weight:800;line-height:1.15}.scanner-result-meta{color:var(--muted);font-size:14px}.scanner-result-detail{font-size:18px;font-weight:700}.scanner-hardware-help{border-style:dashed}@media(max-width:800px){.scanner-page{margin:-4px}.scanner-header{align-items:stretch}.scanner-header .actions{justify-content:flex-end}.scanner-grid{grid-template-columns:1fr}.scanner-camera-card{padding:10px}.scanner-camera-wrap{aspect-ratio:3/4;max-height:64vh}.scanner-result-card{min-height:230px;position:sticky;bottom:8px;z-index:8;box-shadow:0 10px 30px rgba(16,24,40,.12)}.scanner-result-name{font-size:24px}.scanner-status-card{position:sticky;top:72px;z-index:9}.scanner-clock{margin-left:0;width:100%}}@media(max-width:640px){.scanner-header{display:grid}.scanner-header .actions{justify-content:stretch}.scanner-header .actions .btn{flex:1}.scanner-status-card{top:145px;padding:12px}.scanner-camera-wrap{min-height:420px;max-height:62vh}.scanner-controls .btn{flex:1}.scanner-result-card{min-height:210px}.scanner-result-title{font-size:19px}.scanner-result-name{font-size:22px}.scanner-hardware-help{display:none}}

/* MADINAH v0.3.10 — Scanner Focus UI & Loud Audio */
.scanner-focus-shell{position:relative;border-radius:18px;background:#0b1424;padding:12px;margin-bottom:18px;box-shadow:0 12px 34px rgba(15,23,42,.10)}
.scanner-focus-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#fff;padding:2px 2px 10px}.scanner-focus-brand{display:flex;flex-direction:column;gap:2px}.scanner-focus-brand strong{font-size:14px;letter-spacing:.03em}.scanner-focus-brand span{color:#aebbd0;font-size:12px}.scanner-focus-actions{display:flex;gap:8px}.scanner-focus-shell .scanner-focus-actions .btn{background:#172337;border-color:#32435e;color:#fff}.scanner-focus-shell .scanner-focus-actions .btn:hover{background:#20304a}
.scanner-mode-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.scanner-mode-tab{display:flex;justify-content:center;align-items:center;gap:7px;min-height:42px;border:1px solid #26354d;border-radius:10px;background:#121d30;color:#8291a9;font-weight:800;font-size:13px;letter-spacing:.02em}.scanner-mode-tab.active{border-color:#a855f7;background:linear-gradient(180deg,#5b167d,#3a0f58);color:#fff;box-shadow:inset 0 -2px 0 #c084fc}.scanner-mode-tab.current{color:#fff;border-color:#3b82f6;background:#152b4c}.scanner-grid-focus{margin-bottom:0}.scanner-focus-shell .scanner-camera-card,.scanner-focus-shell .scanner-result-card{background:#0f1a2b;border-color:#273750}.scanner-focus-shell .scanner-camera-card{padding:10px}.scanner-focus-shell .scanner-camera-wrap{border:1px solid #34445d;background:#07101e;box-shadow:inset 0 0 0 1px rgba(255,255,255,.02)}
.scanner-reticle{inset:23% 9%;border:2px solid rgba(255,255,255,.9);border-radius:18px;box-shadow:0 0 0 999px rgba(3,8,18,.20);overflow:hidden}.scanner-reticle:before,.scanner-reticle:after{content:"";position:absolute;width:34px;height:34px;border-color:#fff;border-style:solid}.scanner-reticle:before{left:-2px;top:-2px;border-width:4px 0 0 4px;border-radius:16px 0 0 0}.scanner-reticle:after{right:-2px;bottom:-2px;border-width:0 4px 4px 0;border-radius:0 0 16px 0}.scanner-reticle .scanner-scan-line{position:absolute;left:10%;right:10%;top:12%;height:3px;border-radius:99px;background:#26e07f;box-shadow:0 0 8px #22c55e,0 0 18px rgba(34,197,94,.65);opacity:.25}.scanner-camera-wrap.camera-on .scanner-reticle .scanner-scan-line{opacity:1;animation:madinahScannerSweep 2.1s ease-in-out infinite}@keyframes madinahScannerSweep{0%,100%{top:12%}50%{top:86%}}
.scanner-camera-hud{position:absolute;left:12px;right:12px;bottom:10px;display:flex;align-items:center;gap:8px;min-height:38px;padding:8px 11px;border:1px solid rgba(148,163,184,.28);border-radius:12px;background:rgba(8,17,31,.84);backdrop-filter:blur(8px);color:#cbd5e1;font-size:11px;z-index:3}.scanner-camera-hud strong{margin-left:auto;color:#c084fc;font-size:10px}.scanner-camera-live{display:flex;align-items:center;gap:6px}.scanner-camera-live i{display:inline-block;width:10px;height:10px;border-radius:50%;background:#64748b;box-shadow:0 0 0 4px rgba(100,116,139,.12)}.scanner-camera-wrap.camera-on .scanner-camera-live i{background:#22c55e;box-shadow:0 0 0 4px rgba(34,197,94,.16),0 0 10px rgba(34,197,94,.7)}.scanner-camera-decoder{color:#8ea0ba}
.scanner-focus-shell .scanner-controls{padding:0 2px}.scanner-focus-shell .scanner-controls .btn{background:#172337;border-color:#34445d;color:#fff}.scanner-focus-shell .scanner-controls .btn.primary{background:#175cd3;border-color:#175cd3}.scanner-volume-control{display:flex;align-items:center;gap:7px;min-height:44px;padding:0 10px;border:1px solid #34445d;border-radius:8px;background:#172337;color:#fff;font-size:12px}.scanner-volume-control select{border:0;background:#0f1a2b;color:#fff;outline:0;font:inherit;font-weight:700;padding:5px 3px;border-radius:6px}.scanner-focus-shell .scanner-camera-note{color:#9fb0c8}.scanner-focus-shell .scanner-result-card{color:#fff}.scanner-focus-shell .scanner-result-card.success{background:#0e2a22;border-color:#1f9d66}.scanner-focus-shell .scanner-result-card.warning{background:#34270d;border-color:#ca8a04}.scanner-focus-shell .scanner-result-card.danger{background:#351716;border-color:#dc5045}.scanner-focus-shell .scanner-result-card.info{background:#102b49;border-color:#3b82f6}.scanner-focus-shell .scanner-result-meta{color:#b7c3d4}
.scanner-focus-shell:fullscreen{width:100vw;height:100vh;padding:12px;border-radius:0;overflow:auto;background:#07101e}.scanner-focus-shell:fullscreen .scanner-focus-topbar{position:sticky;top:0;z-index:12;background:#07101e;padding-top:2px}.scanner-focus-shell:fullscreen .scanner-camera-wrap{height:min(72vh,760px);aspect-ratio:auto}.scanner-focus-shell:fullscreen .scanner-grid-focus{grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr)}body.scanner-focus-lock{overflow:hidden}.scanner-focus-shell.focus-fallback{position:fixed;inset:0;z-index:9999;width:100vw;height:100vh;margin:0;border-radius:0;overflow:auto;background:#07101e}.scanner-focus-shell.focus-fallback .scanner-camera-wrap{height:min(72vh,760px);aspect-ratio:auto}.scanner-focus-shell.focus-fallback .scanner-grid-focus{grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr)}
@media(max-width:800px){.scanner-focus-shell{margin-left:-4px;margin-right:-4px;padding:8px;border-radius:14px}.scanner-focus-topbar{padding:2px 2px 8px}.scanner-focus-brand strong{font-size:12px}.scanner-focus-brand span{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scanner-mode-strip{gap:5px}.scanner-mode-tab{font-size:11px;min-height:38px}.scanner-reticle{inset:26% 7%}.scanner-camera-hud{left:8px;right:8px;bottom:8px}.scanner-camera-decoder{display:none}.scanner-volume-control{flex:1;justify-content:center}.scanner-focus-shell:fullscreen .scanner-grid-focus,.scanner-focus-shell.focus-fallback .scanner-grid-focus{grid-template-columns:1fr}.scanner-focus-shell:fullscreen .scanner-camera-wrap,.scanner-focus-shell.focus-fallback .scanner-camera-wrap{height:auto;min-height:58vh;max-height:70vh;aspect-ratio:3/4}.scanner-focus-shell:fullscreen .scanner-result-card,.scanner-focus-shell.focus-fallback .scanner-result-card{position:relative;bottom:auto;min-height:180px}.scanner-focus-shell:fullscreen .scanner-controls,.scanner-focus-shell.focus-fallback .scanner-controls{position:sticky;bottom:0;z-index:9;background:#0b1424;padding:8px 2px}}
@media(max-width:520px){.scanner-focus-actions .btn{min-width:0;padding:8px 10px;font-size:11px;line-height:1.2;display:inline-flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap}.scanner-focus-actions .focus-btn-icon{font-size:15px;line-height:1}.scanner-focus-actions .focus-btn-label{display:inline}.scanner-mode-tab span{display:none}.scanner-reticle{inset:28% 6%}.scanner-camera-hud{font-size:10px}.scanner-camera-hud strong{font-size:9px}.scanner-controls .scanner-volume-control{flex-basis:100%}}


/* MADINAH v0.3.12 — Scanner Focus Reliability & Asset Cache Bust */
.scanner-focus-shell:fullscreen,
.scanner-focus-shell:-webkit-full-screen,
.scanner-focus-shell.focus-fallback{box-sizing:border-box;color:#fff!important;background:#07101e!important}
.scanner-focus-shell:fullscreen *,
.scanner-focus-shell:-webkit-full-screen *,
.scanner-focus-shell.focus-fallback *{box-sizing:border-box}
.scanner-focus-shell:fullscreen .scanner-focus-topbar,
.scanner-focus-shell:-webkit-full-screen .scanner-focus-topbar,
.scanner-focus-shell.focus-fallback .scanner-focus-topbar{display:flex!important;color:#fff!important;background:#07101e!important}
.scanner-focus-shell:fullscreen .scanner-mode-strip,
.scanner-focus-shell:-webkit-full-screen .scanner-mode-strip,
.scanner-focus-shell.focus-fallback .scanner-mode-strip{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important}
.scanner-focus-shell:fullscreen .scanner-mode-tab,
.scanner-focus-shell:-webkit-full-screen .scanner-mode-tab,
.scanner-focus-shell.focus-fallback .scanner-mode-tab{display:flex!important;color:#8291a9!important;background:#121d30!important;border:1px solid #26354d!important}
.scanner-focus-shell:fullscreen .scanner-mode-tab.active,
.scanner-focus-shell:-webkit-full-screen .scanner-mode-tab.active,
.scanner-focus-shell.focus-fallback .scanner-mode-tab.active{color:#fff!important;border-color:#a855f7!important;background:linear-gradient(180deg,#5b167d,#3a0f58)!important}
.scanner-focus-shell:fullscreen .scanner-mode-tab.current,
.scanner-focus-shell:-webkit-full-screen .scanner-mode-tab.current,
.scanner-focus-shell.focus-fallback .scanner-mode-tab.current{color:#fff!important;border-color:#3b82f6!important;background:#152b4c!important}
.scanner-focus-shell:fullscreen .scanner-grid-focus,
.scanner-focus-shell:-webkit-full-screen .scanner-grid-focus,
.scanner-focus-shell.focus-fallback .scanner-grid-focus{display:grid!important;gap:14px!important;grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr)!important}
.scanner-focus-shell:fullscreen .scanner-camera-card,
.scanner-focus-shell:-webkit-full-screen .scanner-camera-card,
.scanner-focus-shell.focus-fallback .scanner-camera-card,
.scanner-focus-shell:fullscreen .scanner-result-card,
.scanner-focus-shell:-webkit-full-screen .scanner-result-card,
.scanner-focus-shell.focus-fallback .scanner-result-card{background:#0f1a2b!important;border-color:#273750!important;color:#fff!important}
.scanner-focus-shell:fullscreen .scanner-controls .btn,
.scanner-focus-shell:-webkit-full-screen .scanner-controls .btn,
.scanner-focus-shell.focus-fallback .scanner-controls .btn{background:#172337!important;border-color:#34445d!important;color:#fff!important}
.scanner-focus-shell:fullscreen .scanner-controls .btn.primary,
.scanner-focus-shell:-webkit-full-screen .scanner-controls .btn.primary,
.scanner-focus-shell.focus-fallback .scanner-controls .btn.primary{background:#175cd3!important;border-color:#175cd3!important;color:#fff!important}
.scanner-focus-shell:fullscreen .scanner-volume-control,
.scanner-focus-shell:-webkit-full-screen .scanner-volume-control,
.scanner-focus-shell.focus-fallback .scanner-volume-control{background:#172337!important;border-color:#34445d!important;color:#fff!important}
.scanner-focus-shell:fullscreen .scanner-volume-control select,
.scanner-focus-shell:-webkit-full-screen .scanner-volume-control select,
.scanner-focus-shell.focus-fallback .scanner-volume-control select{background:#0f1a2b!important;color:#fff!important}
.scanner-focus-shell:fullscreen .scanner-camera-wrap,
.scanner-focus-shell:-webkit-full-screen .scanner-camera-wrap,
.scanner-focus-shell.focus-fallback .scanner-camera-wrap{height:min(72vh,760px)!important;aspect-ratio:auto!important;background:#07101e!important}
@media(max-width:800px){
  .scanner-focus-shell:fullscreen .scanner-grid-focus,
  .scanner-focus-shell:-webkit-full-screen .scanner-grid-focus,
  .scanner-focus-shell.focus-fallback .scanner-grid-focus{grid-template-columns:1fr!important}
  .scanner-focus-shell:fullscreen .scanner-camera-wrap,
  .scanner-focus-shell:-webkit-full-screen .scanner-camera-wrap,
  .scanner-focus-shell.focus-fallback .scanner-camera-wrap{height:auto!important;min-height:58vh!important;max-height:70vh!important;aspect-ratio:3/4!important}
}

/* MADINAH v0.3.15 — Presensi Hari Ini */
.attendance-today-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.attendance-today-stats .stat strong{font-size:24px}.attendance-action-box{min-width:190px}.attendance-action-box summary{cursor:pointer;color:var(--primary);font-weight:700}.attendance-inline-form{margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.attendance-inline-form label{display:grid;gap:4px;font-size:12px;color:#475467}.attendance-status-hadir{background:#ecfdf3;color:#067647}.attendance-status-terlambat{background:#fffaeb;color:#b54708}.attendance-status-sakit{background:#eff8ff;color:#175cd3}.attendance-status-izin{background:#f4f3ff;color:#5925dc}.attendance-status-alpha{background:#fef3f2;color:#b42318}.attendance-status-pending{background:#f2f4f7;color:#475467}@media(max-width:980px){.attendance-today-stats{grid-template-columns:repeat(3,1fr)}}@media(max-width:640px){.attendance-today-stats{grid-template-columns:repeat(2,1fr)}.attendance-action-box{min-width:0}.attendance-today-table td[data-label="Aksi"]{padding-top:10px;border-top:1px dashed var(--line)}}

/* MADINAH v0.3.16 — Input Massal Presensi */
.attendance-bulk-summary{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 14px}
.attendance-bulk-actions{align-items:center;gap:8px;flex-wrap:wrap}
.attendance-bulk-table input[type="checkbox"]{transform:scale(1.15)}
@media (max-width:760px){
  .attendance-bulk-controls{grid-template-columns:1fr}
  .attendance-bulk-actions .btn{flex:1 1 auto}
}

/* MADINAH v0.3.17 — Pulang Awal Individual */
.attendance-early-badge{margin-top:5px;background:#fff4ed;color:#b93815;border:1px solid #ffd6ae}.early-time-note{padding:8px 10px;border-radius:8px;background:#f8fafc;border:1px solid var(--line);font-size:12px;color:#475467}.attendance-early-table .btn.danger,.attendance-early-records .btn.danger{background:#b42318;border-color:#b42318;color:#fff}.attendance-early-records strong{white-space:nowrap}
@media(max-width:640px){.attendance-early-table td[data-label="Aksi"],.attendance-early-records td[data-label="Aksi"]{padding-top:10px;border-top:1px dashed var(--line)}}
/* v0.3.17 — disabled-state clarity for operational attendance forms */
.attendance-bulk-controls input:disabled,.attendance-bulk-controls select:disabled,.attendance-bulk-table input:disabled{opacity:.58;cursor:not-allowed;background:#f2f4f7}.attendance-bulk-actions .btn:disabled,.attendance-bulk-table~.actions .btn:disabled,.attendance-inline-form .btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.25)}

/* MADINAH Confirmation Guard */
body.confirm-open{overflow:hidden}
.confirm-backdrop{position:fixed;inset:0;z-index:5000;background:rgba(15,23,42,.58);display:flex;align-items:center;justify-content:center;padding:20px}
.confirm-backdrop[hidden]{display:none}
.confirm-modal{width:min(460px,100%);background:#fff;border-radius:16px;box-shadow:0 24px 70px rgba(15,23,42,.28);padding:24px;outline:none;text-align:center}
.confirm-icon{width:52px;height:52px;border-radius:50%;margin:0 auto 12px;display:grid;place-items:center;font-size:28px;font-weight:800;background:#fff1f2;color:#b91c1c;border:1px solid #fecdd3}
.confirm-modal h2{margin:0 0 8px;font-size:1.25rem}.confirm-modal p{margin:0;color:#475569;line-height:1.55;white-space:pre-line}
.confirm-actions{display:flex;justify-content:center;gap:10px;margin-top:22px}.confirm-actions .btn{min-width:120px}
@media(max-width:560px){.confirm-backdrop{padding:14px;align-items:flex-end}.confirm-modal{border-radius:16px 16px 10px 10px;padding:20px}.confirm-actions{display:grid;grid-template-columns:1fr 1fr}.confirm-actions .btn{min-width:0;width:100%}}

/* v0.3.47 — Identity & Branding */
.brand-logo{display:grid;place-items:center;background:#fff;border-radius:18px;overflow:hidden;flex:0 0 auto}.brand-logo img{display:block;width:100%;height:100%;object-fit:contain;padding:4px}.brand-logo.small{width:38px;height:38px;border-radius:10px}.auth-logo{width:88px;height:88px;margin:0 auto 12px;border:1px solid var(--line);border-radius:20px;background:#fff;display:grid;place-items:center;overflow:hidden}.auth-logo img{width:100%;height:100%;object-fit:contain;padding:7px}.context-unit-logo{width:40px;height:40px;border:1px solid var(--line);border-radius:10px;background:#fff;display:grid;place-items:center;overflow:hidden;flex:0 0 auto}.context-unit-logo img{width:100%;height:100%;object-fit:contain;padding:3px}.identity-branding-row{display:flex;align-items:center;gap:16px;min-width:0}.identity-branding-row>div:last-child{min-width:0}.identity-branding-row h2{margin:0 0 5px}.logo-preview{display:grid;place-items:center;border:1px solid var(--line);border-radius:14px;background:#fff;overflow:hidden;flex:0 0 auto}.logo-preview.large{width:104px;height:104px}.logo-preview img{display:block;width:100%;height:100%;object-fit:contain;padding:7px}.accreditation-current{display:flex;gap:8px;flex-direction:column;padding:13px 14px;border:1px solid #b7e4c7;background:#f0fdf4;border-radius:10px;margin-bottom:14px}.accreditation-current span{color:var(--muted);font-size:12px}.section-details{margin:14px 0}.section-details>summary{cursor:pointer;color:var(--primary);margin-bottom:12px}@media(max-width:640px){.context-unit-logo{width:36px;height:36px}.identity-branding-row{align-items:flex-start}.logo-preview.large{width:82px;height:82px}}

/* v0.3.48 — Attendance Reporting & Export */
.report-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px}.report-summary-item{border:1px solid #dce3ec;border-radius:10px;padding:10px 12px;background:#fff}.report-summary-item span{display:block;font-size:12px;color:#637083;margin-bottom:3px}.report-summary-item strong{font-size:16px}.report-table td,.report-table th{white-space:normal}.signatory-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.signatory-preview-grid>div{border:1px solid #dce3ec;border-radius:10px;padding:12px}.official-issue-card{border-color:#bfd3ff}.option-list{display:flex;flex-wrap:wrap;gap:14px}.option-list label{display:flex;align-items:center;gap:7px;font-weight:500}.option-list input[type=checkbox]{width:auto;margin:0}.alert.warning{background:#fff8db;border-color:#efd478;color:#6b5511}
@media(max-width:720px){.signatory-preview-grid{grid-template-columns:1fr}.report-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.3.49 — grouped navigation, menu search, and normalized date input */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.sidebar-search{position:relative;margin:0 4px 12px}.sidebar-search input{background:#1f2937;border-color:#374151;color:#f9fafb;padding:9px 34px 9px 10px}.sidebar-search input::placeholder{color:#9ca3af}.sidebar-search button{position:absolute;right:5px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:#9ca3af;width:28px;height:28px;border-radius:6px;cursor:pointer;font-size:18px;line-height:1}.sidebar-search button:hover{background:#374151;color:#fff}.sidebar-search button[hidden]{display:none}
.sidebar nav{display:block}.nav-group{margin:0 0 5px}.nav-group-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;border:0;background:transparent;color:#f3f4f6;padding:10px 11px;border-radius:8px;font:inherit;font-weight:500;text-align:left;cursor:pointer}.nav-group-toggle:hover,.nav-group.active-group>.nav-group-toggle{background:#1f2937}.nav-chevron{font-size:16px;transition:transform .16s ease;color:#9ca3af}.nav-group-toggle[aria-expanded="true"] .nav-chevron{transform:rotate(180deg)}.nav-group-items{display:grid;gap:2px;padding:2px 0 5px 10px}.nav-group-items[hidden]{display:none}.sidebar .nav-group-items a{padding:8px 10px;border-left:2px solid transparent;border-radius:6px;color:#d1d5db}.sidebar .nav-group-items a:hover{background:#1f2937;color:#fff}.sidebar .nav-group-items a.active{background:#263449;color:#fff;border-left-color:#93c5fd;font-weight:500}.sidebar .nav-group-items a[hidden]{display:none}.sidebar-search-empty{color:#9ca3af;font-size:12px;padding:12px;text-align:center}
.date-field{display:grid;gap:5px}.date-field input[data-date-display]{font-variant-numeric:tabular-nums}.date-field-hint{font-size:11px;color:var(--muted)}
.time-field{display:grid;gap:5px}.time-field input[data-time-display]{font-variant-numeric:tabular-nums}.time-field-hint{font-size:11px;color:var(--muted)}
.datetime-field{display:grid;gap:5px}.datetime-field input[data-datetime-display]{font-variant-numeric:tabular-nums}.datetime-field-hint{font-size:11px;color:var(--muted)}
.report-period-note{margin-top:10px}.report-period-note strong{font-weight:750}
@media(max-width:980px){.sidebar-search{position:sticky;top:0;background:var(--sidebar);z-index:2;padding-top:2px}.nav-group-toggle{padding:11px 12px}.sidebar .nav-group-items a{padding:10px 11px}}

/* MADINAH v0.4.3 — Milestone 4A final UI polish */
.btn:disabled,.btn[disabled]{opacity:.46;cursor:not-allowed;filter:grayscale(.18);background:#f2f4f7;border-color:#d0d5dd;color:#98a2b3;box-shadow:none}
.discipline-next-policy{margin-top:14px;padding:13px 14px;border:1px solid var(--line);border-radius:10px;background:#f8fafc;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:14px;align-items:center}.discipline-next-policy>div{display:grid;gap:3px}.discipline-next-policy strong{line-height:1.35}
@media(max-width:640px){
  .topbar{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:8px 10px;padding:10px 12px}
  .topbar>.icon-btn{grid-column:1}.topbar>.context-unit-logo{grid-column:2}.topbar>.user-menu{grid-column:3;justify-self:end;margin-left:0}
  .context-area{grid-column:1/-1;order:initial;width:100%;display:grid;gap:7px;align-items:end}
  .context-form{width:100%;display:grid;gap:7px;align-items:end}
  .context-area>.context-form:not(#periodForm){grid-template-columns:minmax(0,1fr)}
  .context-area>#periodForm{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}
  .context-form label{min-width:0;display:grid;gap:4px}.context-form select{min-width:0;width:100%;max-width:none}.context-area>#periodForm .btn{min-height:38px;align-self:end}
  .discipline-next-policy{grid-template-columns:1fr}.discipline-next-policy>.pill{justify-self:start}
}
@media(max-width:420px){.context-area>#periodForm{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.context-area>#periodForm .btn{grid-column:1/-1;width:100%}}


/* MADINAH v0.6.11 — Scanner mobile operational visibility */
@media(max-width:640px){
  /* Keterangan teknis kamera ditutup pada layar operasional HP agar area scan lebih ringkas. */
  .scanner-focus-shell .scanner-camera-note{display:none}
  /* Hasil scan menjadi toast sementara sehingga selalu terlihat tanpa perlu scroll. */
  .scanner-result-card.scan-mobile-visible{
    position:fixed!important;left:12px!important;right:12px!important;top:12px!important;bottom:auto!important;
    z-index:10050!important;min-height:0!important;margin:0!important;padding:14px 16px!important;
    border-width:2px!important;border-radius:14px!important;box-shadow:0 18px 55px rgba(0,0,0,.38)!important;
    animation:madinahScanToastIn .18s ease-out;
  }
  .scanner-result-card.scan-mobile-visible .scanner-result-icon{font-size:26px!important;margin-bottom:3px!important}
  .scanner-result-card.scan-mobile-visible .scanner-result-title{font-size:17px!important;line-height:1.2!important;margin-bottom:3px!important}
  .scanner-result-card.scan-mobile-visible .scanner-result-name{font-size:20px!important;line-height:1.2!important}
  .scanner-result-card.scan-mobile-visible .scanner-result-meta,.scanner-result-card.scan-mobile-visible .scanner-result-detail{font-size:12px!important;line-height:1.3!important}
}
@keyframes madinahScanToastIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}


/* MADINAH v0.6.12 — Full-screen scanner + in-frame scan notification */
.scanner-frame-feedback{display:none}

@media(max-width:800px){
  /* Fokus operasional menggunakan satu viewport: header + mode + kamera. Tidak ada card hasil terpisah. */
  .scanner-focus-shell:fullscreen,
  .scanner-focus-shell:-webkit-full-screen,
  .scanner-focus-shell.focus-fallback{
    width:100vw!important;height:100dvh!important;max-height:100dvh!important;
    padding:8px!important;margin:0!important;border-radius:0!important;overflow:hidden!important;
    display:flex!important;flex-direction:column!important;background:#07101e!important;
  }
  .scanner-focus-shell:fullscreen .scanner-focus-topbar,
  .scanner-focus-shell:-webkit-full-screen .scanner-focus-topbar,
  .scanner-focus-shell.focus-fallback .scanner-focus-topbar{
    position:relative!important;top:auto!important;flex:0 0 auto!important;padding:2px 2px 7px!important;min-height:44px!important;
  }
  .scanner-focus-shell:fullscreen .scanner-mode-strip,
  .scanner-focus-shell:-webkit-full-screen .scanner-mode-strip,
  .scanner-focus-shell.focus-fallback .scanner-mode-strip{
    flex:0 0 auto!important;margin-bottom:7px!important;gap:5px!important;
  }
  .scanner-focus-shell:fullscreen .scanner-mode-tab,
  .scanner-focus-shell:-webkit-full-screen .scanner-mode-tab,
  .scanner-focus-shell.focus-fallback .scanner-mode-tab{min-height:34px!important;font-size:10px!important}
  .scanner-focus-shell:fullscreen .scanner-grid-focus,
  .scanner-focus-shell:-webkit-full-screen .scanner-grid-focus,
  .scanner-focus-shell.focus-fallback .scanner-grid-focus{
    flex:1 1 auto!important;min-height:0!important;display:block!important;margin:0!important;overflow:hidden!important;
  }
  .scanner-focus-shell:fullscreen .scanner-camera-card,
  .scanner-focus-shell:-webkit-full-screen .scanner-camera-card,
  .scanner-focus-shell.focus-fallback .scanner-camera-card{
    position:relative!important;height:100%!important;min-height:0!important;padding:0!important;border:0!important;border-radius:14px!important;overflow:hidden!important;
    display:flex!important;flex-direction:column!important;background:#07101e!important;
  }
  .scanner-focus-shell:fullscreen .scanner-camera-wrap,
  .scanner-focus-shell:-webkit-full-screen .scanner-camera-wrap,
  .scanner-focus-shell.focus-fallback .scanner-camera-wrap{
    flex:1 1 auto!important;width:100%!important;height:100%!important;min-height:0!important;max-height:none!important;aspect-ratio:auto!important;
    border-radius:14px!important;border:1px solid #34445d!important;
  }
  .scanner-focus-shell:fullscreen .scanner-camera-wrap video,
  .scanner-focus-shell:-webkit-full-screen .scanner-camera-wrap video,
  .scanner-focus-shell.focus-fallback .scanner-camera-wrap video{width:100%!important;height:100%!important;object-fit:cover!important}

  /* Card hasil lama tidak mengambil ruang di focus mode. */
  .scanner-focus-shell:fullscreen > .scanner-grid-focus > .scanner-result-card,
  .scanner-focus-shell:-webkit-full-screen > .scanner-grid-focus > .scanner-result-card,
  .scanner-focus-shell.focus-fallback > .scanner-grid-focus > .scanner-result-card{display:none!important}

  /* Notifikasi dan keadaan idle berada langsung di dalam frame kamera. */
  .scanner-focus-shell:fullscreen .scanner-frame-feedback,
  .scanner-focus-shell:-webkit-full-screen .scanner-frame-feedback,
  .scanner-focus-shell.focus-fallback .scanner-frame-feedback{
    position:absolute!important;left:10px!important;right:10px!important;bottom:76px!important;z-index:11!important;
    display:flex!important;align-items:center!important;gap:11px!important;padding:12px 13px!important;
    border:2px solid rgba(148,163,184,.5)!important;border-radius:14px!important;
    color:#fff!important;background:rgba(15,26,43,.92)!important;backdrop-filter:blur(10px)!important;
    box-shadow:0 14px 38px rgba(0,0,0,.34)!important;transition:background .15s,border-color .15s,transform .15s,opacity .15s!important;
  }
  .scanner-focus-shell:fullscreen .scanner-frame-feedback.success,
  .scanner-focus-shell:-webkit-full-screen .scanner-frame-feedback.success,
  .scanner-focus-shell.focus-fallback .scanner-frame-feedback.success{background:rgba(7,92,62,.95)!important;border-color:#34d399!important}
  .scanner-focus-shell:fullscreen .scanner-frame-feedback.warning,
  .scanner-focus-shell:-webkit-full-screen .scanner-frame-feedback.warning,
  .scanner-focus-shell.focus-fallback .scanner-frame-feedback.warning{background:rgba(120,76,8,.96)!important;border-color:#fbbf24!important}
  .scanner-focus-shell:fullscreen .scanner-frame-feedback.danger,
  .scanner-focus-shell:-webkit-full-screen .scanner-frame-feedback.danger,
  .scanner-focus-shell.focus-fallback .scanner-frame-feedback.danger{background:rgba(127,29,29,.96)!important;border-color:#f87171!important}
  .scanner-focus-shell:fullscreen .scanner-frame-feedback.info,
  .scanner-focus-shell:-webkit-full-screen .scanner-frame-feedback.info,
  .scanner-focus-shell.focus-fallback .scanner-frame-feedback.info{background:rgba(15,43,73,.94)!important;border-color:#60a5fa!important}
  .scanner-focus-shell:fullscreen .scanner-frame-feedback.idle,
  .scanner-focus-shell:-webkit-full-screen .scanner-frame-feedback.idle,
  .scanner-focus-shell.focus-fallback .scanner-frame-feedback.idle{opacity:.92!important}
  .scanner-frame-feedback-icon{flex:0 0 42px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-size:28px;font-weight:900;background:rgba(255,255,255,.12)}
  .scanner-frame-feedback-copy{min-width:0;display:grid;gap:2px;text-align:left}.scanner-frame-feedback-copy strong{font-size:18px;line-height:1.12;letter-spacing:.015em}
  .scanner-frame-feedback-name{font-size:20px;font-weight:850;line-height:1.15;overflow-wrap:anywhere}.scanner-frame-feedback-meta{font-size:12px;color:#e2e8f0;line-height:1.25}.scanner-frame-feedback-detail{font-size:15px;font-weight:800;line-height:1.2}

  /* Kontrol esensial menjadi dock transparan di dalam frame, tanpa menambah tinggi halaman. */
  .scanner-focus-shell:fullscreen .scanner-controls,
  .scanner-focus-shell:-webkit-full-screen .scanner-controls,
  .scanner-focus-shell.focus-fallback .scanner-controls{
    position:absolute!important;left:8px!important;right:8px!important;bottom:8px!important;z-index:12!important;margin:0!important;padding:6px!important;
    display:flex!important;gap:6px!important;flex-wrap:nowrap!important;background:rgba(7,16,30,.86)!important;border:1px solid rgba(148,163,184,.25)!important;border-radius:12px!important;backdrop-filter:blur(9px)!important;
  }
  .scanner-focus-shell:fullscreen .scanner-controls .btn,
  .scanner-focus-shell:-webkit-full-screen .scanner-controls .btn,
  .scanner-focus-shell.focus-fallback .scanner-controls .btn{min-height:44px!important;min-width:0!important;flex:1 1 0!important;padding:7px 6px!important;font-size:11px!important;white-space:normal!important;line-height:1.1!important}
  /* Kamera sudah aktif sebelum fokus. Tutup kamera/tes buzzer/volume tidak perlu memenuhi mode operasional. */
  .scanner-focus-shell:fullscreen #startCamera,
  .scanner-focus-shell:-webkit-full-screen #startCamera,
  .scanner-focus-shell.focus-fallback #startCamera,
  .scanner-focus-shell:fullscreen #stopCamera,
  .scanner-focus-shell:-webkit-full-screen #stopCamera,
  .scanner-focus-shell.focus-fallback #stopCamera,
  .scanner-focus-shell:fullscreen #soundTest,
  .scanner-focus-shell:-webkit-full-screen #soundTest,
  .scanner-focus-shell.focus-fallback #soundTest,
  .scanner-focus-shell:fullscreen .scanner-volume-control,
  .scanner-focus-shell:-webkit-full-screen .scanner-volume-control,
  .scanner-focus-shell.focus-fallback .scanner-volume-control{display:none!important}
  .scanner-focus-shell:fullscreen .scanner-camera-note,
  .scanner-focus-shell:-webkit-full-screen .scanner-camera-note,
  .scanner-focus-shell.focus-fallback .scanner-camera-note{display:none!important}

  /* Toast v0.6.11 tidak boleh muncul sebagai frame kedua di atas focus mode. */
  .scanner-focus-shell:fullscreen .scanner-result-card.scan-mobile-visible,
  .scanner-focus-shell:-webkit-full-screen .scanner-result-card.scan-mobile-visible,
  .scanner-focus-shell.focus-fallback .scanner-result-card.scan-mobile-visible{display:none!important}
}

@media(max-width:420px){
  .scanner-focus-shell:fullscreen .scanner-focus-brand strong,
  .scanner-focus-shell:-webkit-full-screen .scanner-focus-brand strong,
  .scanner-focus-shell.focus-fallback .scanner-focus-brand strong{font-size:11px!important}
  .scanner-focus-shell:fullscreen .scanner-focus-brand span,
  .scanner-focus-shell:-webkit-full-screen .scanner-focus-brand span,
  .scanner-focus-shell.focus-fallback .scanner-focus-brand span{max-width:180px!important;font-size:10px!important}
  .scanner-focus-shell:fullscreen .scanner-focus-actions .btn,
  .scanner-focus-shell:-webkit-full-screen .scanner-focus-actions .btn,
  .scanner-focus-shell.focus-fallback .scanner-focus-actions .btn{font-size:10px!important;padding:7px 8px!important}
  .scanner-frame-feedback-icon{flex-basis:36px;width:36px;height:36px;font-size:23px}.scanner-frame-feedback-copy strong{font-size:16px}.scanner-frame-feedback-name{font-size:18px}.scanner-frame-feedback-detail{font-size:14px}
}

/* MADINAH v0.6.16 — Date & Time Picker UI Standardization */
.temporal-field-control{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:6px;align-items:stretch;min-width:0}
.temporal-field-control>input[data-date-display],.temporal-field-control>input[data-time-display],.temporal-field-control>input[data-datetime-display]{min-width:0;width:100%}
.temporal-picker-wrap{position:relative;width:44px;min-width:44px;min-height:42px}
.temporal-picker-btn{width:100%;height:100%;min-height:42px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--theme-soft,#c9b8eb) 72%,var(--theme-primary,#35106b));border-radius:8px;background:var(--theme-soft,#c9b8eb);color:var(--theme-primary,#35106b);cursor:pointer;padding:8px;transition:border-color .15s,background .15s,color .15s}
.temporal-picker-btn:hover{background:color-mix(in srgb,var(--theme-soft,#c9b8eb) 78%,var(--theme-primary,#35106b) 22%);border-color:color-mix(in srgb,var(--theme-soft,#c9b8eb) 58%,var(--theme-primary,#35106b) 42%);color:var(--theme-primary,#35106b)}.temporal-picker-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.temporal-picker-btn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.temporal-picker-native{position:absolute!important;right:0!important;bottom:0!important;width:1px!important;height:1px!important;min-width:0!important;margin:0!important;padding:0!important;border:0!important;opacity:0!important;pointer-events:none!important;background:transparent!important;color:transparent!important;z-index:0}
.temporal-picker-wrap.is-disabled{opacity:.5;pointer-events:none}.temporal-picker-wrap.is-disabled .temporal-picker-btn{cursor:not-allowed;background:#f2f4f7}
.date-field.compact-date .temporal-field-control{grid-template-columns:minmax(118px,1fr) 36px;gap:4px}.date-field.compact-date .temporal-picker-wrap{width:36px;min-width:36px;min-height:36px}.date-field.compact-date .temporal-picker-btn{min-height:36px;padding:6px}.date-field.compact-date .temporal-picker-btn svg{width:18px;height:18px}
@media(max-width:640px){.temporal-field-control{grid-template-columns:minmax(0,1fr) 46px;gap:7px}.temporal-picker-wrap{width:46px;min-width:46px;min-height:44px}.temporal-picker-btn{min-height:44px;padding:9px}.temporal-picker-btn svg{width:21px;height:21px}}

/* MADINAH v0.6.18 — global reminder for attendance finalization backlog */
.global-notice{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid #efd478}
.global-notice-message{min-width:0;line-height:1.45}
.global-notice-message strong{font-weight:800}
.global-notice .btn{flex:0 0 auto;white-space:nowrap}
@media(max-width:640px){.global-notice{align-items:stretch;flex-direction:column}.global-notice .btn{width:100%}}

/* MADINAH v0.6.19 — floating, manually dismissible global notice */
.floating-global-notice{position:fixed;right:18px;bottom:18px;z-index:80;width:min(430px,calc(100vw - 36px));margin:0;padding:14px 46px 14px 15px;box-shadow:0 14px 38px rgba(16,24,40,.18);background:#fff;align-items:flex-start;animation:madinahNoticeIn .18s ease-out}
.floating-global-notice.warning{background:#fffaeb}.floating-global-notice.success{background:#ecfdf3}.floating-global-notice.danger{background:#fef3f2}
.floating-global-notice[hidden]{display:none!important}
.global-notice-close{position:absolute;top:8px;right:8px;width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:inherit;font-size:25px;line-height:1;cursor:pointer;opacity:.72}
.global-notice-close:hover{background:rgba(16,24,40,.07);opacity:1}.global-notice-close:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.global-notice-action{margin-top:2px}
@keyframes madinahNoticeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:640px){.floating-global-notice{left:12px;right:12px;bottom:12px;width:auto;padding:13px 44px 13px 13px;gap:10px}.floating-global-notice .global-notice-action{width:100%}.global-notice-close{top:6px;right:6px}}
@media(prefers-reduced-motion:reduce){.floating-global-notice{animation:none}}

/* v0.7.8 — Global Floating Notifications */
.alert.info{background:#eff8ff;color:#175cd3}
.floating-notification-stack{position:fixed;right:18px;bottom:18px;z-index:12000;width:min(440px,calc(100vw - 36px));max-height:calc(100dvh - 36px);display:flex;flex-direction:column;gap:10px;overflow:auto;overscroll-behavior:contain;pointer-events:none}
.transient-notification-stack{top:78px;bottom:auto;max-height:calc(100dvh - 96px)}
.global-notification-stack{top:auto;bottom:calc(var(--madinah-app-footer-height,28px) + 12px);max-height:calc(100dvh - 64px)}
.floating-notification{position:relative!important;inset:auto!important;width:100%!important;margin:0!important;padding:14px 46px 14px 15px!important;border:1px solid var(--line);box-shadow:0 16px 42px rgba(16,24,40,.22);background:#fff;pointer-events:auto;animation:madinahNoticeIn .18s ease-out}
.floating-notification.success{background:#ecfdf3;border-color:#abefc6;color:var(--success)}
.floating-notification.info{background:#eff8ff;border-color:#b2ddff;color:#175cd3}
.floating-notification.warning{background:#fffaeb;border-color:#fedf89;color:#6b5511}
.floating-notification.danger{background:#fef3f2;border-color:#fda29b;color:var(--danger)}
.floating-notification[hidden]{display:none!important}
.floating-notification-message{min-width:0;line-height:1.45;overflow-wrap:anywhere}
.floating-notification-close{position:absolute;top:7px;right:7px;width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:inherit;font-size:25px;line-height:1;cursor:pointer;opacity:.72}
.floating-notification-close:hover{background:rgba(16,24,40,.07);opacity:1}
.floating-notification-close:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.floating-notification .global-notice-action{margin-top:8px}
.auth-page>.floating-notification-stack{right:18px;bottom:18px}
@media(max-width:640px){.floating-notification-stack{left:12px;right:12px;width:auto}.transient-notification-stack{top:68px;bottom:auto;max-height:calc(100dvh - 84px)}.global-notification-stack{top:auto;bottom:calc(var(--madinah-app-footer-height,24px) + 10px);max-height:calc(100dvh - 48px)}.floating-notification{padding:13px 44px 13px 13px!important}.floating-notification .global-notice-action{width:100%}}
@media(prefers-reduced-motion:reduce){.floating-notification{animation:none}}


/* MADINAH v0.9.1 — Presensi Hari Ini: visual pending setelah jendela masuk dibuka */
.attendance-entry-legend{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:8px 0 14px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:#f8fafc;font-size:12px}
.attendance-entry-legend>span{display:inline-flex;align-items:center;gap:6px}.attendance-legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.attendance-legend-dot.awaiting{background:#f59e0b}.attendance-legend-dot.overdue{background:#dc2626}
.attendance-today-table tbody tr.attendance-row-awaiting-entry>td{background:#fffbeb}.attendance-today-table tbody tr.attendance-row-entry-overdue>td{background:#fff1f2}
.attendance-today-table tbody tr.attendance-row-awaiting-entry>td:first-child{box-shadow:inset 4px 0 0 #f59e0b}.attendance-today-table tbody tr.attendance-row-entry-overdue>td:first-child{box-shadow:inset 4px 0 0 #dc2626}
.attendance-status-pending-window{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}.attendance-status-pending-overdue{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}.attendance-pending-note{display:inline-block;margin-top:4px;font-size:11px;font-weight:700;color:#92400e}.attendance-row-entry-overdue .attendance-pending-note{color:#991b1b}
@media(max-width:640px){.attendance-entry-legend{align-items:flex-start;display:grid;gap:6px}.attendance-today-table tbody tr.attendance-row-awaiting-entry,.attendance-today-table tbody tr.attendance-row-entry-overdue{border-radius:10px;overflow:hidden}.attendance-today-table tbody tr.attendance-row-awaiting-entry>td:first-child,.attendance-today-table tbody tr.attendance-row-entry-overdue>td:first-child{box-shadow:none;border-left:4px solid transparent}.attendance-today-table tbody tr.attendance-row-awaiting-entry>td:first-child{border-left-color:#f59e0b}.attendance-today-table tbody tr.attendance-row-entry-overdue>td:first-child{border-left-color:#dc2626}}

/* MADINAH v0.9.2 — Presensi Hari Ini: filter & sorter */
.attendance-today-tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:10px;margin:10px 0 14px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}
.attendance-today-tools label{display:grid;gap:5px;color:#475467;font-size:12px;min-width:0}.attendance-today-tools input,.attendance-today-tools select{min-width:0;background:#fff}
.attendance-today-tools .attendance-today-search{grid-column:span 2}.attendance-today-tools-footer{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding-top:2px}.attendance-today-tools-footer .muted{font-size:12px}
.attendance-today-recap-note{grid-column:1/-1;margin-top:0;max-width:100%;font-size:.92em;line-height:1.35;white-space:normal;overflow:visible;overflow-wrap:break-word;text-wrap:pretty;padding-bottom:0}
.attendance-today-tools-footer .btn.attendance-tool-btn{font-weight:700}.attendance-today-tools-footer .btn.attendance-tool-reset{background:var(--theme-soft,#c9b8eb);border-color:var(--theme-soft,#c9b8eb);color:#241046}.attendance-today-tools-footer .btn.attendance-tool-reset:hover{background:color-mix(in srgb,var(--theme-soft,#c9b8eb) 82%,#fff);border-color:color-mix(in srgb,var(--theme-soft,#c9b8eb) 78%,#241046);color:#241046}.attendance-today-tools-footer .btn.attendance-tool-print{background:var(--theme-primary,#35106b);border-color:var(--theme-primary,#35106b);color:#fff}.attendance-today-tools-footer .btn.attendance-tool-print:hover{background:color-mix(in srgb,var(--theme-primary,#35106b) 82%,#000);border-color:color-mix(in srgb,var(--theme-primary,#35106b) 82%,#000);color:#fff}.attendance-today-tools-footer .btn.attendance-tool-export{background:var(--theme-success,#0f8f6b);border-color:var(--theme-success,#0f8f6b);color:#fff}.attendance-today-tools-footer .btn.attendance-tool-export:hover{background:color-mix(in srgb,var(--theme-success,#0f8f6b) 82%,#000);border-color:color-mix(in srgb,var(--theme-success,#0f8f6b) 82%,#000);color:#fff}
.attendance-today-empty{margin-top:10px;padding:18px;border:1px dashed #d0d5dd;border-radius:10px;text-align:center;color:var(--muted);background:#f9fafb}
@media(max-width:760px){.attendance-today-tools{grid-template-columns:1fr 1fr}.attendance-today-tools .attendance-today-search{grid-column:1/-1}}
@media(max-width:520px){.attendance-today-tools{grid-template-columns:1fr}.attendance-today-tools .attendance-today-search{grid-column:auto}.attendance-today-tools-footer{align-items:stretch;flex-direction:column}.attendance-today-tools-footer .btn{width:100%}.attendance-today-recap-note{white-space:normal;overflow:visible;overflow-wrap:break-word}}

/* MADINAH v0.9.3 — sorter Presensi Hari Ini dipindahkan ke header tabel */
.attendance-sort-header{display:inline-flex;align-items:center;gap:5px;width:auto;max-width:100%;padding:2px 0;border:0;background:transparent;color:inherit;font:inherit;font-weight:700;text-align:left;cursor:pointer}
.attendance-sort-header:hover,.attendance-sort-header.is-active{color:var(--primary)}
.attendance-sort-header:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:4px}
.attendance-sort-indicator{display:inline-block;min-width:12px;font-size:10px;line-height:1;opacity:.72}
.attendance-sort-header.is-active .attendance-sort-indicator{opacity:1}
@media(max-width:640px){
  table.responsive.attendance-today-table thead{display:block;margin-bottom:10px}
  table.responsive.attendance-today-table thead tr{display:flex;width:100%;gap:6px;flex-wrap:wrap;background:transparent;border:0;border-radius:0;margin:0;padding:0}
  table.responsive.attendance-today-table thead th{display:block;width:auto;padding:0;border:0;background:transparent}
  table.responsive.attendance-today-table thead th:last-child{display:none}
  table.responsive.attendance-today-table .attendance-sort-header{padding:7px 9px;border:1px solid color-mix(in srgb,var(--theme-soft,#c9b8eb) 72%,var(--theme-primary,#35106b));border-radius:8px;background:var(--theme-soft,#c9b8eb);font-size:11px;color:var(--theme-primary,#35106b)}
  table.responsive.attendance-today-table .attendance-sort-header.is-active{border-color:var(--theme-primary,#35106b);background:var(--theme-primary,#35106b);color:#fff}
}

/* MADINAH v0.15.0 — Milestone 6A Dokumen */
.document-flow{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:14px 0}.document-flow span{display:inline-flex;align-items:center;min-height:38px;padding:8px 11px;border:1px solid var(--line);border-radius:9px;background:#f9fafb;font-weight:700}.document-flow b{color:var(--muted)}
.document-filter{display:grid;grid-template-columns:minmax(220px,2fr) repeat(2,minmax(160px,1fr)) auto;gap:10px;align-items:end;margin:0 0 14px}.document-filter label{display:grid;gap:5px;color:#475467;font-size:12px}.document-actions{display:grid;gap:7px;min-width:190px}.document-actions form{display:grid;gap:6px}.document-actions input{min-width:180px}.document-status{font-weight:700}.status-pending_approval{background:#fffaeb;color:#b54708}.status-rejected,.status-voided{background:#fef3f2;color:#b42318}.status-number_issued{background:#eff8ff;color:#175cd3}.status-awaiting_template{background:#f4f3ff;color:#5925dc}.status-completed{background:#ecfdf3;color:#067647}.document-request-detail{margin-top:8px;padding:8px 10px;border:1px solid #ead9b0;border-radius:10px;background:#fffcf2;display:grid;gap:3px;font-size:12px;line-height:1.35}.document-request-detail>strong{color:#7a4b00}.document-request-detail span{display:block;color:#5f6368}.document-request-detail b{color:#3f3f46}
.document-series-list{display:grid;gap:12px;margin-top:16px}.document-series-card{border:1px solid var(--line);border-radius:10px;padding:12px;background:#f9fafb}.document-series-card .table-wrap{margin-top:8px}
.document-identity-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.document-identity-card{display:grid;gap:9px;padding:14px;border:1px solid var(--line);border-radius:10px;background:#f9fafb}.document-identity-card label{display:grid;gap:5px;color:#475467;font-size:12px}.inline-check{display:flex!important;align-items:flex-start;gap:8px!important}.inline-check input{width:auto;margin-top:2px}.pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;color:var(--muted)}
@media(max-width:900px){.document-filter{grid-template-columns:1fr 1fr}.document-filter .actions{grid-column:1/-1}}
@media(max-width:640px){.document-flow{display:grid;grid-template-columns:1fr}.document-flow b{display:none}.document-filter{grid-template-columns:1fr}.document-filter .actions{grid-column:auto}.document-filter .actions .btn{flex:1}.document-actions{min-width:0}.document-actions input{min-width:0}.pagination{align-items:stretch;flex-direction:column}.pagination .actions{width:100%}.pagination .actions .btn{flex:1}.document-identity-grid{grid-template-columns:1fr}}

/* ========================================================================== 
   MADINAH v0.28.0 — Global UI & Login Branding Refresh
   Identity: Deep Purple + Light Purple + Emerald Green + Gold
   ========================================================================== */
:root{
  --bg:#f7f5fa;
  --surface:#ffffff;
  --text:#241c31;
  --muted:#70677e;
  --line:#e7e0ef;
  --primary:#4b2e83;
  --primary-hover:#5c3a96;
  --primary-deep:#34205f;
  --primary-soft:#eee8f8;
  --primary-soft-2:#f7f3fc;
  --light-purple:#cdbbea;
  --emerald:#0b8f6a;
  --emerald-dark:#087354;
  --emerald-soft:#e8f7f2;
  --gold:#c7962f;
  --gold-dark:#8a641d;
  --gold-soft:#fbf4df;
  --danger:#b42318;
  --success:#087354;
  --warning:#8a641d;
  --sidebar:#34205f;
}
body{background:var(--bg);color:var(--text)}
a{transition:color .15s ease,background .15s ease,border-color .15s ease}
.sidebar{background:linear-gradient(180deg,#34205f 0%,#472978 54%,#2e194f 100%);box-shadow:8px 0 24px rgba(52,32,95,.08)}
.brand{padding-bottom:18px}.brand strong{letter-spacing:.02em}.brand span{color:#d8ccec}.brand-logo.small,.brand-mark.small{box-shadow:0 0 0 2px rgba(199,150,47,.34)}
.brand-mark{background:linear-gradient(145deg,#fff,#f2ecfb);color:var(--primary);box-shadow:0 10px 24px rgba(52,32,95,.12)}
.sidebar-search input{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.15);color:#fff}.sidebar-search input::placeholder{color:#cfc1e3}.sidebar-search button{color:#d6c8e9}.sidebar-search button:hover{background:rgba(255,255,255,.1)}
.nav-group-toggle{color:#f7f2ff}.nav-chevron{color:#d5c5e9}.nav-group-toggle:hover,.nav-group.active-group>.nav-group-toggle{background:rgba(255,255,255,.09)}
.sidebar .nav-group-items a{color:#e3d9ef}.sidebar .nav-group-items a:hover{background:rgba(255,255,255,.09);color:#fff}.sidebar .nav-group-items a.active{background:linear-gradient(90deg,rgba(11,143,106,.30),rgba(255,255,255,.07));color:#fff;border-left-color:var(--gold);box-shadow:inset 0 0 0 1px rgba(255,255,255,.05)}
.topbar{background:rgba(255,255,255,.96);border-bottom-color:var(--line);box-shadow:0 4px 14px rgba(52,32,95,.035);backdrop-filter:saturate(140%) blur(8px)}
select,input,textarea{border-color:#d8cfe3;background:#fff}.context-form select{border-color:#d8cfe3}select:focus,input:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(75,46,131,.11)}
.user-menu a,.link-btn{color:var(--primary)}
.card{border-color:var(--line);border-radius:14px;box-shadow:0 5px 18px rgba(52,32,95,.035)}
.table-wrap{border-color:var(--line)}th{background:#f4f0f9;color:#655a73}tbody tr:hover td{background:#fbf9fd}
.btn{border-color:color-mix(in srgb,var(--theme-soft,#c9b8eb) 72%,var(--theme-primary,#35106b));color:var(--theme-primary,#35106b);background:var(--theme-soft,#c9b8eb);transition:transform .1s ease,box-shadow .15s ease,background .15s ease,border-color .15s ease,color .15s ease}.btn:hover{border-color:#bdaaD1;background:#faf8fd}.btn:active{transform:translateY(1px)}.btn.primary{background:linear-gradient(135deg,var(--primary),#62429a);border-color:var(--primary);color:#fff;box-shadow:0 5px 14px rgba(75,46,131,.18)}.btn.primary:hover{background:linear-gradient(135deg,var(--primary-hover),#6b49a6);border-color:var(--primary-hover)}
.alert.success{background:var(--emerald-soft);color:var(--emerald-dark)}.alert.info{background:var(--primary-soft-2);color:var(--primary)}.alert.warning{background:var(--gold-soft);color:var(--gold-dark)}
.pill{background:var(--primary-soft);color:var(--primary)}.pill-active{background:var(--emerald-soft)!important;color:var(--emerald-dark)!important}.pill-muted{background:#f0edf3!important;color:#766d80!important}
.historical-banner{background:linear-gradient(90deg,#fbf4df,#fff9eb);color:#684d16;border-bottom-color:#ead49c}
.icon-btn{color:var(--primary);border-color:#d8cfe3}.icon-btn:hover{background:var(--primary-soft)}
.context-unit-logo{border-color:#ded4e8;box-shadow:0 3px 10px rgba(52,32,95,.06)}
.app-footer{color:#7a7085}
::selection{background:#d9cbef;color:#2f1e50}

/* Branding & Tampilan */
.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px}.page-heading h1{margin-bottom:5px}.branding-overview-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);gap:16px}.branding-kicker{display:block;color:var(--emerald-dark);font-size:11px;font-weight:800;letter-spacing:.12em;margin-bottom:6px}.branding-identity-card h2,.branding-theme-card h2{margin:0 0 5px}.branding-full-name{font-weight:650;margin:0 0 7px}.branding-tagline{margin:0;color:var(--primary);font-size:16px;font-weight:800}.branding-note{margin:16px 0 0;line-height:1.55}.theme-swatch-row{display:flex;gap:10px;margin-top:18px}.theme-swatch{display:block;width:54px;height:54px;border-radius:14px;border:3px solid #fff;box-shadow:0 3px 10px rgba(52,32,95,.13)}.theme-swatch.deep-purple{background:#4b2e83}.theme-swatch.light-purple{background:#cdbbea}.theme-swatch.emerald{background:#0b8f6a}.theme-swatch.gold{background:#c7962f}.branding-section-head h2{margin:0 0 4px}.branding-section-head p{margin:0}.field-help{display:block;color:var(--muted);font-size:11px;font-weight:400;line-height:1.45}.branding-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0}.branding-upload-card{padding:15px;border:1px solid var(--line);background:var(--primary-soft-2);border-radius:12px}.branding-upload-card h3{margin:0 0 5px}.branding-upload-card p{margin:0 0 12px}.branding-opacity-form{display:flex;align-items:end;gap:14px;flex-wrap:wrap;padding-top:15px;border-top:1px solid var(--line)}.branding-opacity-form>label{display:grid;gap:7px;min-width:min(520px,100%);flex:1;color:#51475d}.branding-range-row{display:grid;grid-template-columns:minmax(180px,1fr) 58px;gap:10px;align-items:center}.branding-range-row input[type=range]{padding:0;border:0;box-shadow:none;accent-color:var(--primary)}.branding-range-row output{text-align:center;padding:7px 8px;border-radius:8px;background:var(--primary-soft);color:var(--primary);font-weight:800}.branding-link-form{padding:15px;border:1px solid var(--line);border-radius:12px;background:#fbfafd;margin-bottom:16px}.branding-checkboxes{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.checkbox-line{display:flex!important;grid-template-columns:none!important;align-items:center!important;gap:7px!important;color:#51475d!important}.checkbox-line input{width:auto;margin:0;accent-color:var(--emerald)}.branding-empty-state{padding:24px;border:1px dashed #cfc1dd;border-radius:12px;background:#fbf9fd;text-align:center;color:var(--muted)}.branding-url{color:var(--primary);word-break:break-all}.branding-links-table-wrap table{min-width:900px}
.login-branding-preview{display:grid;grid-template-columns:1.15fr .85fr;min-height:240px;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#fff;box-shadow:0 10px 28px rgba(52,32,95,.06)}.login-branding-preview-visual{position:relative;overflow:hidden;display:flex;align-items:flex-start;padding:26px;color:#fff;background:linear-gradient(135deg,#34205f,#4b2e83 58%,#0a7458)}.login-branding-preview-visual:after{content:"";position:absolute;width:120px;height:120px;border:1px solid rgba(199,150,47,.5);border-radius:50%;right:-20px;top:-36px}.login-branding-preview-bg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:var(--preview-opacity);mix-blend-mode:screen}.login-branding-preview-copy{position:relative;z-index:2;display:grid;gap:6px}.login-branding-preview-copy strong{font-size:24px}.login-branding-preview-copy span{color:#f6e7b4;font-weight:700}.login-branding-preview-fg{position:absolute;z-index:2;right:8px;bottom:0;max-width:48%;max-height:76%;object-fit:contain;object-position:right bottom;filter:drop-shadow(0 10px 18px rgba(0,0,0,.2))}.login-branding-preview-form{display:grid;align-content:center;gap:11px;padding:30px 32px}.login-branding-preview-form span{display:block;height:34px;padding:8px;border:1px solid #ded6e8;border-radius:8px;color:#978da1;font-size:11px}.login-branding-preview-form i{height:34px;width:58%;border-radius:8px;background:var(--primary)}.preview-logo-dot{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,var(--primary),var(--emerald));box-shadow:inset -8px -8px 0 rgba(199,150,47,.16)}

/* Login v2 — split institutional layout */
.auth-page-v2{display:block;padding:0;background:#fff;min-height:100dvh}.auth-split-shell{min-height:100dvh;display:grid;grid-template-columns:minmax(420px,44%) minmax(0,56%);background:#fff}.auth-visual-panel{position:relative;min-height:100dvh;overflow:hidden;color:#fff;background:#34205f;isolation:isolate}.auth-visual-gradient{position:absolute;inset:0;z-index:-5;background:linear-gradient(145deg,#2e194f 0%,#4b2e83 49%,#176c58 100%)}.auth-visual-gradient:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,8,27,.06),rgba(22,10,39,.24))}.auth-visual-background{position:absolute;inset:0;z-index:-4;background-size:cover;background-position:center;opacity:var(--login-bg-opacity,.22);filter:saturate(.95) contrast(1.03)}.auth-visual-orbit{position:absolute;border:1px solid rgba(223,194,112,.24);border-radius:50%;pointer-events:none}.auth-visual-orbit:after{content:"";position:absolute;width:9px;height:9px;border-radius:50%;background:#d6aa4e;box-shadow:0 0 0 5px rgba(214,170,78,.10)}.auth-visual-orbit-one{width:310px;height:310px;right:-112px;top:70px}.auth-visual-orbit-one:after{left:44px;top:16px}.auth-visual-orbit-two{width:190px;height:190px;left:-80px;bottom:130px}.auth-visual-orbit-two:after{right:26px;bottom:13px}.auth-visual-content{position:relative;z-index:3;min-height:100dvh;padding:42px clamp(28px,4vw,60px);display:flex;flex-direction:column}.auth-visual-brand{display:flex;align-items:center;gap:13px;max-width:640px}.auth-visual-brand strong{display:block;font-size:22px;letter-spacing:.04em}.auth-visual-brand span{display:block;margin-top:2px;color:#dfd5ec;font-size:12px;line-height:1.35}.auth-visual-logo,.auth-visual-monogram{width:54px;height:54px;flex:0 0 auto;border-radius:16px;background:#fff;display:grid;place-items:center;overflow:hidden;box-shadow:0 9px 22px rgba(20,8,35,.2)}.auth-visual-logo img{width:100%;height:100%;object-fit:contain;padding:5px}.auth-visual-monogram{font-size:26px;font-weight:900;color:var(--primary)}.auth-visual-copy{margin-top:clamp(55px,10vh,115px);position:relative;z-index:4;max-width:540px}.auth-gold-line{width:54px;height:4px;border-radius:10px;background:linear-gradient(90deg,#d4aa4b,#f4d98d);margin-bottom:18px}.auth-visual-copy h2{font-size:clamp(28px,3.1vw,44px);line-height:1.08;margin:0 0 14px;letter-spacing:-.025em}.auth-visual-copy p{font-size:15px;line-height:1.65;color:#e6deef;margin:0;max-width:480px}.auth-quick-links-wrap{position:relative;z-index:5;margin-top:auto;padding-top:34px;max-width:590px}.auth-quick-links-title{font-size:11px;font-weight:850;letter-spacing:.12em;color:#f0cf7e;margin-bottom:10px;text-transform:uppercase}.auth-quick-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:206px;overflow:auto;padding-right:4px;scrollbar-width:thin}.auth-quick-links a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;padding:9px 11px;border:1px solid rgba(255,255,255,.14);border-radius:9px;background:rgba(255,255,255,.075);color:#fff;text-decoration:none;font-size:12px;backdrop-filter:blur(3px)}.auth-quick-links a:hover{background:rgba(255,255,255,.14);border-color:rgba(224,191,104,.42);transform:translateY(-1px)}.auth-quick-links a span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.auth-quick-links a span:last-child{color:#e7c56c}.auth-visual-foreground{position:absolute;right:0;bottom:0;z-index:2;width:min(60%,520px);height:min(50%,470px);display:flex;align-items:flex-end;justify-content:flex-end;pointer-events:none}.auth-visual-foreground:before{content:"";position:absolute;right:5%;bottom:0;width:72%;height:26%;background:radial-gradient(ellipse,rgba(9,38,30,.34),transparent 70%);filter:blur(10px)}.auth-visual-foreground img{position:relative;max-width:100%;max-height:100%;object-fit:contain;object-position:right bottom;filter:drop-shadow(0 18px 22px rgba(16,7,30,.24))}
.auth-login-panel{min-height:100dvh;display:grid;place-items:center;padding:42px clamp(28px,6vw,88px);background:linear-gradient(145deg,#fff 0%,#fff 68%,#faf7fc 100%);position:relative;overflow:hidden}.auth-login-panel:before,.auth-login-panel:after{content:"";position:absolute;border-radius:50%;border:1px solid rgba(75,46,131,.075);pointer-events:none}.auth-login-panel:before{width:260px;height:260px;right:-125px;top:80px}.auth-login-panel:after{width:170px;height:170px;left:10%;bottom:-105px;border-color:rgba(11,143,106,.08)}.auth-login-inner{position:relative;z-index:2;width:min(480px,100%)}.auth-login-heading{display:flex;align-items:center;gap:14px;margin-bottom:42px}.auth-login-heading .auth-logo{width:68px;height:68px;margin:0;border-color:#e1d8ea;border-radius:18px;box-shadow:0 8px 20px rgba(52,32,95,.08)}.auth-login-heading .brand-mark{width:68px;height:68px;border-radius:18px;font-size:30px}.auth-login-product h1{font-size:30px;line-height:1;margin:0 0 7px;color:var(--primary-deep);letter-spacing:.04em}.auth-login-product p{margin:0;color:#6e6479;line-height:1.4;font-size:12px;max-width:300px}.auth-login-welcome{margin-bottom:23px}.auth-login-welcome h2{margin:0 0 6px;font-size:24px;color:#2a2035}.auth-login-welcome p{margin:0;color:var(--muted)}.auth-login-form{display:grid;gap:16px;margin:0}.auth-login-form label{display:grid;gap:7px;color:#4a4055;font-weight:650}.auth-login-form input{min-height:45px;border-radius:10px;padding:10px 12px;background:#fff}.auth-login-submit{min-height:46px;margin-top:3px;border-radius:10px;font-weight:750}.auth-login-tagline{margin-top:24px;padding-top:19px;border-top:1px solid var(--line);color:var(--primary);font-weight:800;letter-spacing:.025em}.auth-login-footer{display:flex;gap:7px 16px;flex-wrap:wrap;margin-top:10px;color:#8b8194;font-size:10.5px}.auth-page-v2>.floating-notification-stack{right:18px;bottom:18px}

@media(max-width:1050px){.auth-split-shell{grid-template-columns:minmax(350px,40%) minmax(0,60%)}.auth-visual-content{padding:32px 28px}.auth-quick-links{grid-template-columns:1fr}.auth-visual-foreground{width:68%;height:42%}.branding-overview-grid{grid-template-columns:1fr}}
@media(max-width:800px){.auth-split-shell{grid-template-columns:1fr}.auth-visual-panel{min-height:330px}.auth-visual-content{min-height:330px;padding:24px 22px}.auth-visual-brand span{max-width:260px}.auth-visual-copy{margin-top:36px;max-width:64%}.auth-visual-copy h2{font-size:27px}.auth-visual-copy p{font-size:13px}.auth-quick-links-wrap{display:none}.auth-visual-foreground{height:72%;width:46%;opacity:.95}.auth-login-panel{min-height:auto;padding:40px 22px 46px}.auth-login-heading{margin-bottom:28px}.branding-upload-grid{grid-template-columns:1fr}.login-branding-preview{grid-template-columns:1fr}.login-branding-preview-form{display:none}}
@media(max-width:520px){.auth-visual-panel{min-height:260px}.auth-visual-content{min-height:260px}.auth-visual-brand span{font-size:10px}.auth-visual-copy{margin-top:28px;max-width:72%}.auth-visual-copy h2{font-size:23px}.auth-visual-copy p{display:none}.auth-visual-foreground{width:50%;height:67%}.auth-login-panel{padding:30px 18px 34px}.auth-login-heading .auth-logo,.auth-login-heading .brand-mark{width:58px;height:58px}.auth-login-product h1{font-size:26px}.auth-login-product p{font-size:11px}.branding-checkboxes{align-items:flex-start;flex-direction:column;gap:8px}.theme-swatch{width:44px;height:44px}}
@media(prefers-reduced-motion:reduce){a,.btn{transition:none}.auth-quick-links a:hover{transform:none}}

/* MADINAH v0.28.1 — Global UI refinement */
:root{
  --primary:#35106b;
  --primary-deep:#241046;
  --primary-soft:#eee7fa;
  --sidebar:#241046;
  --emerald:#0f8f6b;
  --gold:#d4a437;
  --text:#171717;
  --muted:#5f6368;
}
/* Keep readable content text dark/black; theme colors remain accents. */
body{color:#171717}
h1,h2,h3,h4,h5,h6,.card,.content,label,th,td{color:#171717}
.muted{color:#5f6368}
.form-grid label,.auth-login-form label{color:#171717}
.auth-login-welcome h2,.auth-login-product h1{color:#171717}
.auth-login-product p,.auth-login-welcome p{color:#5f6368}
.pill{color:#292929}
.sidebar,.sidebar *{color:inherit}
.sidebar .brand strong,.sidebar .nav-group-toggle{color:#fff}
.sidebar .brand span{color:#d8cde8}
.btn.primary{background:#35106b;border-color:#35106b;color:#fff}
.btn.primary:hover{background:#241046;border-color:#241046}
.user-menu a,.link-btn{color:#35106b}

/* Full-bleed login: override any parent/container constraint. */
.auth-page-v2{width:100%;max-width:none;margin:0!important;padding:0!important;overflow-x:hidden}
.auth-page-v2 .auth-split-shell{width:100vw;max-width:none!important;margin:0!important;min-height:100dvh;position:relative;left:50%;transform:translateX(-50%)}
.auth-visual-panel{background:#241046}
.auth-visual-gradient{background:linear-gradient(145deg,#1d0b38 0%,#2f0f5d 50%,#123d35 100%)}
.auth-visual-gradient:after{background:linear-gradient(180deg,rgba(9,3,18,.06),rgba(10,4,22,.34))}
/* User-supplied Islamic geometric pattern as a subtle gold overlay. */
.auth-visual-panel:after{content:"";position:absolute;inset:0;z-index:-1;background-image:url('islamic-geometric-gold.png');background-repeat:repeat;background-size:520px auto;background-position:center;opacity:.13;mix-blend-mode:screen;pointer-events:none}
.auth-login-panel:before{border-color:rgba(53,16,107,.08)}
.auth-login-panel:after{border-color:rgba(15,143,107,.08)}

/* Nonessential technical guidance is reserved for Central Administrator. */
body.is-standard-user .admin-guide{display:none!important}

/* Date and time in top menu. */
.topbar-datetime{display:grid;grid-template-columns:auto auto;gap:3px 8px;align-items:baseline;padding:6px 10px;border-left:1px solid var(--line);border-right:1px solid var(--line);white-space:nowrap;color:#171717}
.topbar-date{font-size:11px;color:#4b4b4b}
.topbar-time{font-size:13px;color:#171717;font-variant-numeric:tabular-nums;letter-spacing:.02em}
@media(max-width:1180px){.topbar-datetime{grid-template-columns:1fr;gap:1px}.topbar-date{font-size:10px}.topbar-time{font-size:12px}}
@media(max-width:760px){.topbar-datetime{order:2;margin-left:auto;border-right:0;padding-right:0}.topbar-date{display:none}.topbar-time{font-size:12px}.user-menu{order:2}.context-area{order:3}}

/* MADINAH v0.28.2 — Global UI composition correction */
:root{
  --primary:#35106b;
  --primary-deep:#241046;
  --light-purple:#c9b8eb;
  --emerald:#0f8f6b;
  --emerald-dark:#0a6f55;
  --emerald-soft:#e8f7f2;
  --gold:#d4a437;
  --text:#171717;
}

/* Application background: Islamic geometric pattern belongs to the application shell,
   not to the login visual panel. A pale veil keeps content readable. */
.main{
  background-color:#f7f5fa;
  background-image:
    linear-gradient(rgba(248,247,251,.945),rgba(248,247,251,.945)),
    url('islamic-geometric-gold.png');
  background-repeat:repeat,repeat;
  background-size:auto,720px auto;
  background-position:0 0,center top;
  background-attachment:scroll,fixed;
}
.content{background:transparent}

/* Stronger but controlled Emerald presence. Main text stays black/dark. */
.sidebar{background:linear-gradient(180deg,#241046 0%,#35106b 58%,#173f37 125%)}
.nav-group-toggle:hover,.nav-group.active-group>.nav-group-toggle{background:rgba(15,143,107,.18)}
.sidebar .nav-group-items a:hover{background:rgba(15,143,107,.20);color:#fff}
.sidebar .nav-group-items a.active{
  background:linear-gradient(90deg,rgba(15,143,107,.52),rgba(53,16,107,.42));
  border-left-color:var(--gold);
  color:#fff;
}
.topbar{border-bottom:2px solid rgba(15,143,107,.38)}
.context-unit-logo{border-color:rgba(15,143,107,.42)}
.context-form .btn.compact{background:var(--emerald);border-color:var(--emerald);color:#fff;font-weight:700}
.context-form .btn.compact:hover{background:var(--emerald-dark);border-color:var(--emerald-dark)}
.content>h1{border-left:4px solid var(--emerald);padding-left:10px;color:#171717}
.card{border-top-color:rgba(15,143,107,.34)}
th{color:#262626;background:linear-gradient(90deg,#f4f0f9 0%,#edf8f4 100%);border-bottom-color:rgba(15,143,107,.22)}
.pill-active{background:var(--emerald-soft)!important;color:var(--emerald-dark)!important}

/* Desktop Working Period: Satuan Pendidikan + Tahun Ajaran + Semester + Pakai
   remain on a single line. Date/time uses two compact rows to release width. */
@media(min-width:981px){
  .topbar{min-height:78px;padding:8px 12px;gap:10px}
  .context-area{display:flex;align-items:end;gap:9px;flex-wrap:nowrap;min-width:0;overflow:visible}
  .context-form{display:flex;align-items:end;gap:7px;flex-wrap:nowrap;min-width:0;flex:0 0 auto}
  .context-area>.context-form:first-child select{width:clamp(220px,20vw,282px);min-width:0}
  #periodForm #yearSelect{width:145px;min-width:0}
  #periodForm #semesterSelect{width:145px;min-width:0}
  #periodForm .btn.compact{white-space:nowrap;flex:0 0 auto}
  .topbar-datetime{
    flex:0 0 auto;
    min-width:105px;
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    justify-content:center;
    gap:1px;
    padding:5px 9px;
    line-height:1.15;
  }
  .topbar-date{display:block;font-size:10px;white-space:nowrap;color:#4b4b4b}
  .topbar-time{display:block;font-size:14px;white-space:nowrap;color:#171717}
  .user-menu{gap:8px;flex:0 0 auto}
}
@media(min-width:981px) and (max-width:1240px){
  .context-unit-logo{display:none}
  .context-area>.context-form:first-child select{width:210px}
  #periodForm #yearSelect{width:128px}
  #periodForm #semesterSelect{width:122px}
  .topbar-datetime{min-width:92px;padding-left:6px;padding-right:6px}
  .user-menu{gap:6px}
}

/* Login: remove geometric pattern from the left panel and restore a calm visual hierarchy. */
.auth-visual-panel:after{content:none!important;background-image:none!important}
.auth-visual-gradient{background:linear-gradient(145deg,#1b0935 0%,#2c0d59 57%,#0d5d49 125%)}
.auth-visual-background{opacity:var(--login-bg-opacity,.22);filter:saturate(.88) contrast(1.02)}
.auth-visual-content{z-index:4}
.auth-visual-copy{max-width:540px}

/* Foreground image is a normal, opaque media card and never covers headline/links. */
.auth-visual-panel.has-foreground .auth-visual-copy{max-width:43%}
.auth-visual-panel.has-foreground .auth-quick-links-wrap{max-width:43%}
.auth-visual-foreground{
  right:clamp(22px,3.2vw,48px);
  bottom:clamp(28px,4vh,50px);
  width:48%;
  height:40%;
  min-height:210px;
  max-height:310px;
  z-index:5;
  display:block;
  border-radius:18px;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.22);
  background:rgba(255,255,255,.08);
  box-shadow:0 18px 38px rgba(9,4,21,.28);
}
.auth-visual-foreground:before{display:none}
.auth-visual-foreground img{
  width:100%;
  height:100%;
  max-width:none;
  max-height:none;
  display:block;
  object-fit:cover;
  object-position:center;
  filter:none;
}
.auth-visual-panel.has-foreground .auth-visual-copy h2{font-size:clamp(27px,2.7vw,40px)}
.auth-visual-panel.has-foreground .auth-visual-copy p{font-size:14px}
.auth-quick-links a{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.18)}
.auth-login-panel{background:#fff}
.auth-login-panel:after{border-color:rgba(15,143,107,.13)}
.auth-login-submit{background:#35106b!important;border-color:#35106b!important}
.auth-login-submit:hover{background:#241046!important;border-color:#241046!important}

@media(max-width:1050px) and (min-width:801px){
  .auth-visual-panel.has-foreground .auth-visual-copy{max-width:48%}
  .auth-visual-panel.has-foreground .auth-quick-links-wrap{max-width:45%}
  .auth-visual-foreground{width:45%;height:36%;min-height:190px;right:22px;bottom:30px}
}
@media(max-width:800px){
  .auth-visual-panel.has-foreground .auth-visual-copy{max-width:62%}
  .auth-visual-foreground{right:20px;bottom:20px;width:35%;height:54%;min-height:0;max-height:190px;border-radius:14px}
}
@media(max-width:520px){
  .auth-visual-panel.has-foreground .auth-visual-copy{max-width:66%}
  .auth-visual-foreground{width:32%;height:50%;right:14px;bottom:14px;max-height:145px}
}

/* MADINAH v0.28.3 — UI Flexibility, topbar composition, configurable theme, login ticker */
:root{
  --theme-heading:#171717;
  --theme-sidebar-bg:#241046;
  --theme-sidebar-text:#FFFFFF;
  --theme-menu-active-bg:#0F8F6B;
  --theme-menu-active-text:#FFFFFF;
  --theme-primary:#35106B;
  --theme-success:#0F8F6B;
  --theme-gold:#D4A437;
  --theme-page-bg:#F7F5FA;
  --theme-soft:#C9B8EB;
  --primary:var(--theme-primary);
  --success:var(--theme-success);
  --emerald:var(--theme-success);
  --gold:var(--theme-gold);
  --sidebar:var(--theme-sidebar-bg);
  --bg:var(--theme-page-bg);
}

/* Theme roles: body copy remains dark; only headings and configured interface roles change. */
h1,h2,h3,h4,h5,h6,.content>h1{color:var(--theme-heading,#171717)}
.btn.primary{background:var(--theme-primary);border-color:var(--theme-primary);color:#fff}
.btn.primary:hover{background:color-mix(in srgb,var(--theme-primary) 82%,#000);border-color:color-mix(in srgb,var(--theme-primary) 82%,#000)}
.user-menu a,.link-btn,.dashboard-rombel-link{color:var(--theme-primary)}
.sidebar{background:var(--theme-sidebar-bg);color:var(--theme-sidebar-text)}
.sidebar .brand strong,.sidebar .nav-group-toggle,.sidebar .nav-group-items a{color:var(--theme-sidebar-text)}
.sidebar .brand span{color:color-mix(in srgb,var(--theme-sidebar-text) 72%,transparent)}
.nav-group-toggle:hover,.nav-group.active-group>.nav-group-toggle{background:color-mix(in srgb,var(--theme-menu-active-bg) 28%,transparent)}
.sidebar .nav-group-items a:hover{background:color-mix(in srgb,var(--theme-menu-active-bg) 32%,transparent);color:var(--theme-menu-active-text)}
.sidebar .nav-group-items a.active{background:var(--theme-menu-active-bg);border-left-color:var(--theme-gold);color:var(--theme-menu-active-text)}
.sidebar-search input{background:color-mix(in srgb,var(--theme-sidebar-bg) 78%,#fff);border-color:color-mix(in srgb,var(--theme-sidebar-text) 22%,transparent);color:var(--theme-sidebar-text)}
.sidebar-search input::placeholder{color:color-mix(in srgb,var(--theme-sidebar-text) 62%,transparent)}
.context-form .btn.compact{background:var(--theme-success);border-color:var(--theme-success);color:#fff}
.context-form .btn.compact:hover{background:color-mix(in srgb,var(--theme-success) 82%,#000);border-color:color-mix(in srgb,var(--theme-success) 82%,#000)}
.topbar{border-bottom-color:color-mix(in srgb,var(--theme-success) 42%,transparent)}
.content>h1{border-left-color:var(--theme-success)}
.card{border-top-color:color-mix(in srgb,var(--theme-success) 32%,var(--line))}
.pill-active{background:color-mix(in srgb,var(--theme-success) 12%,#fff)!important;color:color-mix(in srgb,var(--theme-success) 78%,#000)!important}
.main{
  background-color:var(--theme-page-bg);
  background-image:linear-gradient(color-mix(in srgb,var(--theme-page-bg) 94%,transparent),color-mix(in srgb,var(--theme-page-bg) 94%,transparent)),url('islamic-geometric-gold.png');
}
th{background:linear-gradient(90deg,color-mix(in srgb,var(--theme-soft) 22%,#fff),color-mix(in srgb,var(--theme-success) 8%,#fff));border-bottom-color:color-mix(in srgb,var(--theme-success) 22%,var(--line))}

/* Topbar: Working Period is one horizontal row; time is one line above account actions. */
.topbar-account-stack{flex:0 0 auto;display:grid;gap:4px;justify-items:end;align-self:stretch;align-content:center;min-width:205px;padding-left:10px;border-left:1px solid var(--line)}
.topbar-account-stack .topbar-datetime{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end!important;gap:5px!important;min-width:0!important;padding:0!important;border:0!important;line-height:1.2!important;white-space:nowrap!important;color:#171717}
.topbar-account-stack .topbar-date{display:inline!important;font-size:10.5px!important;color:#555!important;white-space:nowrap}
.topbar-account-stack .topbar-time{display:inline!important;font-size:12px!important;color:#171717!important;white-space:nowrap;font-variant-numeric:tabular-nums}
.topbar-datetime-separator{font-size:10px;color:#999}
.topbar-account-stack .user-menu{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:0!important;padding-top:4px;width:100%;border-top:1px solid color-mix(in srgb,var(--theme-gold) 52%,var(--line));white-space:nowrap}
.topbar-account-stack .user-menu span{font-size:13px}
@media(min-width:981px){
  .topbar{min-height:68px;padding:8px 12px;gap:9px;align-items:center;flex-wrap:nowrap}
  .context-area{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:0;flex:1;overflow:hidden}
  .context-form{display:flex;align-items:center;gap:7px;flex-wrap:nowrap;min-width:0;flex:0 1 auto}
  .context-form label{display:flex;align-items:center;gap:6px;white-space:nowrap;font-size:10.5px;min-width:0}
  .context-form select{padding:7px 8px;min-width:0}
  .context-area>.context-form:first-child{flex:1 1 350px;min-width:260px}
  .context-area>.context-form:first-child label{flex:1;min-width:0}
  .context-area>.context-form:first-child select{width:min(260px,100%);flex:1 1 220px}
  #periodForm{flex:0 1 auto}
  #periodForm #yearSelect{width:116px}
  #periodForm #semesterSelect{width:112px}
  #periodForm .btn.compact{white-space:nowrap;flex:0 0 auto}
}
@media(min-width:981px) and (max-width:1240px){
  .context-unit-logo{display:none}
  .topbar-account-stack{min-width:185px;padding-left:7px}
  .context-area>.context-form:first-child{min-width:215px}
  .context-area>.context-form:first-child select{width:205px}
  #periodForm #yearSelect{width:104px}
  #periodForm #semesterSelect{width:100px}
  .context-form label{font-size:10px;gap:4px}
}
@media(max-width:980px){
  .topbar-account-stack{margin-left:auto;min-width:0;border-left:0;padding-left:0;align-self:auto}
  .topbar-account-stack .topbar-datetime{justify-content:flex-end!important}
  .topbar-account-stack .user-menu span{display:none}
}
@media(max-width:640px){
  .topbar{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center}
  .topbar-account-stack{grid-column:3;justify-self:end;max-width:100%}
  .topbar-account-stack .topbar-datetime{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end!important;gap:4px!important;max-width:100%;overflow:hidden}
  .topbar-account-stack .topbar-date{display:inline!important;font-size:9.5px!important;white-space:nowrap}
  .topbar-account-stack .topbar-time{font-size:11px!important;white-space:nowrap}
  .topbar-account-stack .topbar-datetime-separator{display:inline;font-size:9px}
  .topbar-account-stack .user-menu{gap:7px}
  .context-area{grid-column:1/-1}
}

/* Login: stable document-flow composition, no overlapping foreground image. */
.auth-visual-panel{background:var(--theme-sidebar-bg)}
.auth-visual-gradient{background:linear-gradient(145deg,color-mix(in srgb,var(--theme-sidebar-bg) 88%,#000) 0%,var(--theme-sidebar-bg) 58%,color-mix(in srgb,var(--theme-success) 55%,var(--theme-sidebar-bg)) 135%)}
.auth-visual-content{display:flex;flex-direction:column;min-height:100dvh;padding:34px clamp(28px,3.6vw,52px);overflow:auto}
.auth-visual-brand{flex:0 0 auto}
.auth-visual-copy{margin-top:clamp(34px,6vh,62px);max-width:100%!important}
.auth-visual-copy h2{color:#fff!important;font-size:clamp(30px,3vw,42px);max-width:520px;margin-bottom:12px}
.auth-visual-copy p{color:rgba(255,255,255,.86);max-width:520px}
.auth-gold-line{background:var(--theme-gold)}
.auth-visual-media{flex:0 0 auto;margin-top:22px;width:min(100%,520px);height:clamp(145px,23vh,210px);align-self:flex-end;border-radius:16px;overflow:hidden;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);box-shadow:0 16px 34px rgba(9,4,21,.25)}
.auth-visual-media img{width:100%;height:100%;display:block;object-fit:cover;object-position:center}
.auth-quick-links-wrap{margin-top:20px!important;padding-top:0!important;max-width:100%!important}
.auth-quick-links{grid-template-columns:repeat(2,minmax(0,1fr));max-height:120px}
.auth-login-panel{background:linear-gradient(145deg,#fff 0%,#fff 72%,color-mix(in srgb,var(--theme-soft) 12%,#fff) 100%)}
.auth-login-inner{width:min(480px,100%)}
.auth-login-heading{margin-bottom:28px}
.auth-login-product h1{color:var(--theme-heading)!important}
.auth-login-welcome{margin-bottom:14px}
.auth-login-welcome h2{color:var(--theme-heading)!important}
.auth-page-ticker{position:relative;z-index:40;width:100%;height:30px;overflow:hidden;display:flex;align-items:center;border:0!important;border-radius:0!important;box-shadow:none!important;background:var(--theme-primary);color:#fff}
.auth-page-ticker-track{display:flex;align-items:center;width:max-content;min-width:100%;animation:madinahLoginTicker var(--login-ticker-duration,16s) linear infinite;will-change:transform}
.auth-page-ticker-track span{display:block;white-space:nowrap;padding-right:80px;font-size:12px;font-weight:650;line-height:30px;color:#fff}
.has-auth-page-ticker .auth-split-shell,.has-auth-page-ticker .auth-visual-panel,.has-auth-page-ticker .auth-login-panel{min-height:calc(100dvh - 30px)}
.has-auth-page-ticker .auth-visual-content{min-height:calc(100dvh - 30px)}
@keyframes madinahLoginTicker{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.auth-login-submit{background:var(--theme-primary)!important;border-color:var(--theme-primary)!important}
.auth-login-tagline{color:var(--theme-primary)}
.auth-visual-foreground{display:none!important}
@media(prefers-reduced-motion:reduce){.auth-page-ticker-track{animation:none;transform:none}.auth-page-ticker-track span+span{display:none}}
@media(max-width:1050px){.auth-visual-content{padding:28px}.auth-visual-copy{margin-top:32px}.auth-visual-media{height:170px}.auth-quick-links{grid-template-columns:1fr;max-height:92px}}
@media(max-width:800px){.auth-visual-panel{min-height:auto}.auth-visual-content{min-height:auto;padding:24px 22px}.auth-visual-copy{margin-top:28px}.auth-visual-copy p{display:none}.auth-visual-media{width:100%;height:150px;margin-top:16px}.auth-quick-links-wrap{display:none}.auth-login-panel{padding:34px 22px 42px}}
@media(max-width:520px){.auth-visual-media{height:120px}.auth-visual-copy h2{font-size:24px}.auth-login-heading{margin-bottom:22px}}

/* Administrator theme editor. */
.theme-role-form{display:grid;gap:18px}.theme-role-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.theme-role-group{margin:0;border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff}.theme-role-group legend{padding:0 7px;font-weight:800;color:#171717}.theme-role-grid{display:grid;gap:9px}.theme-color-field{display:flex!important;align-items:center;justify-content:space-between;gap:14px;padding:8px 0;border-bottom:1px solid #f0f0f0}.theme-color-field:last-child{border-bottom:0}.theme-color-field>span:first-child{display:grid;gap:2px}.theme-color-field small{color:var(--muted);font-weight:400;font-size:11px}.theme-color-control{display:flex;align-items:center;gap:8px;flex:0 0 auto}.theme-color-control input[type=color]{width:42px;height:34px;padding:2px;border-radius:8px;cursor:pointer}.theme-color-control code{min-width:64px;font-size:11px}.branding-login-message-form{display:grid;gap:10px;margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.branding-login-message-form label{display:grid;gap:6px}.branding-login-message-form textarea{resize:vertical}
@media(max-width:850px){.theme-role-groups{grid-template-columns:1fr}}


/* MADINAH v0.28.5 — right-panel ticker, expanded text roles, tiled application background */
:root{
  --theme-body-text:#171717;
  --theme-muted-text:#5F6368;
  --theme-label-text:#171717;
  --theme-link-text:#35106B;
  --theme-card-title-text:#171717;
  --theme-table-header-text:#262626;
  --theme-topbar-text:#171717;
  --theme-login-form-text:#171717;
  --theme-login-visual-text:#FFFFFF;
}
body{color:var(--theme-body-text)}
.content,.card,td,.stat strong,.stat span{color:var(--theme-body-text)}
.muted,.field-help,.stat span,.auth-login-footer{color:var(--theme-muted-text)!important}
label,.form-grid label,.context-form label{color:var(--theme-label-text)}
.content a:not(.btn):not(.pill):not(.nav-link):not(.attendance-data-tab),.user-menu a,.link-btn,.dashboard-rombel-link{color:var(--theme-link-text)}
.card h2,.card h3,.card h4,.section-head h2,.section-head h3{color:var(--theme-card-title-text)}
th{color:var(--theme-table-header-text)}
.topbar,.topbar label,.topbar .topbar-date,.topbar .topbar-time,.topbar .user-menu span{color:var(--theme-topbar-text)!important}
.auth-login-panel,.auth-login-panel h1,.auth-login-panel h2,.auth-login-panel p,.auth-login-panel label{color:var(--theme-login-form-text)!important}
.auth-visual-panel,.auth-visual-brand strong,.auth-visual-brand span,.auth-visual-copy h2,.auth-visual-copy p,.auth-quick-links a{color:var(--theme-login-visual-text)!important}

/* Application background is tile/repeat only: no cover/stretch/fixed behavior. */
.main{
  background-color:var(--theme-page-bg);
  background-image:linear-gradient(color-mix(in srgb,var(--theme-page-bg) 94%,transparent),color-mix(in srgb,var(--theme-page-bg) 94%,transparent)),url('islamic-geometric-gold.png');
  background-repeat:repeat,repeat;
  background-size:auto,360px 360px;
  background-position:0 0,0 0;
  background-attachment:scroll,scroll;
}

/* Login remains exactly two containers. Ticker belongs only to the top of the right container. */
.auth-login-panel{display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:stretch!important;padding:0!important;min-height:100dvh}
.auth-login-body{position:relative;z-index:2;flex:1 1 auto;min-height:0;width:100%;display:grid;place-items:center;padding:42px clamp(28px,6vw,88px)}
.auth-login-ticker{position:relative;z-index:5;flex:0 0 30px;width:100%;height:30px;overflow:hidden;display:flex;align-items:center;background:transparent;border:0;box-shadow:none;color:var(--theme-link-text)}
.auth-login-ticker-track{display:flex;align-items:center;width:max-content;min-width:100%;animation:madinahLoginTicker var(--login-ticker-duration,16s) linear infinite;will-change:transform}
.auth-login-ticker-track span{display:block;white-space:nowrap;padding-right:80px;font-size:12px;font-weight:650;line-height:30px;color:var(--theme-link-text)}
.auth-page-ticker{display:none!important}
.has-auth-page-ticker .auth-split-shell,.has-auth-page-ticker .auth-visual-panel,.has-auth-page-ticker .auth-login-panel,.has-auth-page-ticker .auth-visual-content{min-height:100dvh!important}
@media(prefers-reduced-motion:reduce){.auth-login-ticker-track{animation:none;transform:none}.auth-login-ticker-track span+span{display:none}}
@media(max-width:800px){.auth-login-body{padding:34px 22px 42px}.auth-login-ticker{flex-basis:28px;height:28px}.auth-login-ticker-track span{line-height:28px;font-size:11px}}

/* MADINAH v0.29.0 — Public Landing & Unit Login Branding */
.auth-login-ticker{margin:14px 18px 0;width:calc(100% - 36px);height:32px;flex-basis:32px;border:1px solid color-mix(in srgb,var(--theme-soft) 72%,var(--theme-primary));border-radius:8px;background:color-mix(in srgb,var(--theme-soft) 10%,#fff);overflow:hidden}
.auth-login-ticker-track span{line-height:30px}
.auth-login-unit-label{display:inline-flex;margin-top:7px;padding:4px 9px;border-radius:999px;background:color-mix(in srgb,var(--theme-success) 10%,#fff);border:1px solid color-mix(in srgb,var(--theme-success) 30%,#fff);color:var(--theme-body-text);font-size:11px;font-weight:750;letter-spacing:.01em}
.auth-login-switch{margin-top:18px;font-size:12px}.auth-login-switch a{color:var(--theme-link-text);text-decoration:none;font-weight:700}.auth-login-switch a:hover{text-decoration:underline}

.public-landing-page{margin:0;min-height:100dvh;color:var(--theme-body-text);background-color:var(--theme-page-bg);background-image:linear-gradient(rgba(255,255,255,.91),rgba(255,255,255,.91)),url('islamic-geometric-gold.png');background-repeat:repeat,repeat;background-size:auto,390px auto;background-attachment:scroll}
.public-landing-shell{min-height:100dvh;display:flex;flex-direction:column}
.public-landing-header{min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px clamp(22px,5vw,72px);background:#fff;border-bottom:3px solid var(--theme-success);box-shadow:0 7px 22px rgba(30,20,45,.055)}
.public-landing-brand{display:flex;align-items:center;gap:13px;min-width:0}.public-landing-brand img,.public-landing-monogram{width:52px;height:52px;border-radius:14px;background:#fff;border:1px solid color-mix(in srgb,var(--theme-soft) 60%,#ddd);object-fit:contain;padding:4px;box-sizing:border-box}.public-landing-monogram{display:grid;place-items:center;font-size:25px;font-weight:900;color:var(--theme-primary)}.public-landing-brand strong{display:block;color:var(--theme-heading);font-size:22px;letter-spacing:.045em}.public-landing-brand span{display:block;color:var(--theme-muted-text);font-size:12px;margin-top:2px}.public-admin-login{flex:0 0 auto;padding:9px 13px;border-radius:9px;border:1px solid color-mix(in srgb,var(--theme-soft) 72%,var(--theme-primary));color:var(--theme-primary);background:var(--theme-soft);text-decoration:none;font-size:12px;font-weight:750}.public-admin-login:hover{background:color-mix(in srgb,var(--theme-soft) 78%,var(--theme-primary) 22%);color:var(--theme-primary)}
.public-landing-main{width:min(1200px,calc(100% - 40px));margin:0 auto;flex:1;padding:clamp(38px,6vw,76px) 0 50px}.public-landing-hero{max-width:870px}.public-landing-kicker{display:block;color:var(--theme-success);font-size:11px;font-weight:850;letter-spacing:.14em;margin-bottom:10px}.public-landing-hero h1{margin:0;color:var(--theme-heading);font-size:clamp(38px,6vw,70px);line-height:1.02;letter-spacing:-.04em;max-width:760px}.public-landing-hero h1:after{content:"";display:block;width:76px;height:5px;border-radius:20px;margin-top:22px;background:linear-gradient(90deg,var(--theme-gold),var(--theme-success))}.public-landing-hero>p{font-size:16px;line-height:1.7;color:var(--theme-muted-text);max-width:830px;margin:22px 0 0}.public-landing-features{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:28px}.public-landing-features>div{padding:17px 18px;background:rgba(255,255,255,.93);border:1px solid color-mix(in srgb,var(--theme-soft) 52%,#e9e9e9);border-top:3px solid var(--theme-success);border-radius:13px;box-shadow:0 8px 22px rgba(38,24,55,.04)}.public-landing-features strong{display:block;color:var(--theme-heading);font-size:14px}.public-landing-features span{display:block;color:var(--theme-muted-text);font-size:12px;line-height:1.5;margin-top:5px}
.public-unit-section{margin-top:58px;padding:30px;background:rgba(255,255,255,.95);border:1px solid color-mix(in srgb,var(--theme-soft) 50%,#e5e5e5);border-radius:18px;box-shadow:0 18px 44px rgba(30,17,48,.07)}.public-unit-heading{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:22px}.public-unit-heading h2{margin:0;color:var(--theme-heading);font-size:27px}.public-unit-heading p{margin:0;max-width:500px;color:var(--theme-muted-text);font-size:12px;line-height:1.55}.public-unit-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.public-unit-card{display:flex;align-items:center;gap:14px;min-width:0;padding:15px;background:#fff;border:1px solid color-mix(in srgb,var(--theme-soft) 56%,#e6e6e6);border-radius:13px;text-decoration:none;box-shadow:0 5px 15px rgba(25,15,40,.035);transition:.18s ease}.public-unit-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--theme-success) 58%,#ddd);box-shadow:0 11px 25px rgba(25,15,40,.08)}.public-unit-logo{width:62px;height:62px;flex:0 0 auto;border-radius:14px;background:color-mix(in srgb,var(--theme-soft) 8%,#fff);border:1px solid color-mix(in srgb,var(--theme-soft) 50%,#ddd);display:grid;place-items:center;overflow:hidden}.public-unit-logo img{width:100%;height:100%;object-fit:contain;padding:5px;box-sizing:border-box}.public-unit-logo b{color:var(--theme-primary)}.public-unit-copy{min-width:0;display:block}.public-unit-copy small{display:block;color:var(--theme-success);font-weight:800;font-size:10px;text-transform:uppercase;letter-spacing:.08em}.public-unit-copy strong{display:block;margin-top:3px;color:var(--theme-heading);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.public-unit-copy em{display:block;color:var(--theme-link-text);font-style:normal;font-size:11px;font-weight:700;margin-top:6px}.public-unit-empty,.public-landing-alert{padding:15px;border-radius:10px;font-size:13px}.public-unit-empty{background:#f7f7f7;color:var(--theme-muted-text)}.public-landing-alert{margin-bottom:15px;background:#fff4f2;border:1px solid #f2c8c2;color:#842c23}.public-landing-footer{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 20px;padding:16px 22px;background:#fff;border-top:1px solid #eee;color:var(--theme-muted-text);font-size:10.5px}

.unit-branding-selector{display:flex;align-items:end;gap:10px;margin-bottom:18px}.unit-branding-selector label{min-width:min(420px,100%);display:grid;gap:6px;font-weight:700}.unit-login-preview{position:relative;min-height:250px;border-radius:14px;overflow:hidden;background:var(--theme-sidebar-bg);margin-bottom:18px;isolation:isolate}.unit-login-preview-bg{position:absolute;inset:0;z-index:-3;background-size:cover;background-position:center;opacity:var(--preview-opacity,.22)}.unit-login-preview-shade{position:absolute;inset:0;z-index:-2;background:linear-gradient(120deg,color-mix(in srgb,var(--theme-sidebar-bg) 92%,transparent),color-mix(in srgb,var(--theme-sidebar-bg) 52%,transparent))}.unit-login-preview-copy{position:absolute;z-index:2;left:24px;top:24px;color:#fff;max-width:55%}.unit-login-preview-copy strong{display:block;font-size:22px}.unit-login-preview-copy span{display:block;margin-top:5px;color:rgba(255,255,255,.78);font-size:12px}.unit-login-preview>img{position:absolute;z-index:1;right:18px;bottom:18px;width:min(42%,360px);height:180px;object-fit:cover;border-radius:13px;border:2px solid rgba(255,255,255,.65);box-shadow:0 12px 28px rgba(0,0,0,.18)}

@media(max-width:920px){.public-unit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.public-landing-features{grid-template-columns:1fr}.public-unit-heading{align-items:start;flex-direction:column}.public-unit-heading p{max-width:none}}
@media(max-width:620px){.public-landing-header{align-items:flex-start}.public-landing-brand span{display:none}.public-admin-login{font-size:10px;padding:8px 9px}.public-landing-main{width:min(100% - 24px,1200px);padding-top:32px}.public-landing-hero h1{font-size:39px}.public-unit-section{padding:18px}.public-unit-grid{grid-template-columns:1fr}.unit-login-preview-copy{max-width:78%}.unit-login-preview>img{width:46%;height:120px}.auth-login-ticker{margin:10px 12px 0;width:calc(100% - 24px)}}

/* v0.29.1 — Static full-viewport public landing */
.public-landing-static-page{height:100dvh;min-height:100dvh;overflow:hidden}
.public-landing-static-shell{height:100dvh;min-height:0;overflow:hidden}
.public-landing-static-header{min-height:68px;padding-top:9px;padding-bottom:9px;flex:0 0 auto}
.public-landing-static-main{flex:1;min-height:0;width:min(1320px,calc(100% - 48px));margin:0 auto;padding:clamp(20px,3.2vh,34px) 0;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(430px,.92fr);gap:clamp(24px,4vw,58px);align-items:stretch}
.public-landing-static-intro{min-width:0;min-height:0;position:relative;display:flex;align-items:center;padding:clamp(18px,2.8vw,38px);border-radius:24px;background:linear-gradient(135deg,color-mix(in srgb,var(--theme-primary) 94%,#160a2d),color-mix(in srgb,var(--theme-primary) 72%,var(--theme-success)));overflow:hidden;box-shadow:0 20px 48px rgba(29,14,48,.16)}
.public-landing-static-intro:before{content:"";position:absolute;inset:0;background-image:url('islamic-geometric-gold.png');background-repeat:repeat;background-size:300px auto;opacity:.075;pointer-events:none}
.public-landing-static-intro:after{content:"";position:absolute;width:420px;height:420px;border-radius:50%;right:-190px;bottom:-235px;background:color-mix(in srgb,var(--theme-gold) 22%,transparent);border:1px solid color-mix(in srgb,var(--theme-gold) 46%,transparent);pointer-events:none}
.public-landing-static-copy{position:relative;z-index:2;max-width:720px}
.public-landing-static-intro .public-landing-kicker{color:color-mix(in srgb,var(--theme-gold) 88%,#fff);margin-bottom:12px}
.public-landing-static-intro h1{margin:0;max-width:700px;color:#fff;font-size:clamp(40px,5.2vw,72px);line-height:.98;letter-spacing:-.045em}
.public-landing-static-intro h1:after{content:"";display:block;width:76px;height:4px;border-radius:10px;margin:20px 0 18px;background:linear-gradient(90deg,var(--theme-gold),#fff)}
.public-landing-static-fullname{margin:0;max-width:690px;color:#fff;font-size:clamp(15px,1.5vw,20px);font-weight:760;line-height:1.35}
.public-landing-static-desc{margin:14px 0 0;max-width:680px;color:rgba(255,255,255,.79);font-size:13px;line-height:1.65}
.public-landing-static-points{display:flex;flex-wrap:wrap;gap:9px;margin-top:22px}.public-landing-static-points>span{min-width:132px;padding:10px 12px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(255,255,255,.08);backdrop-filter:blur(3px)}.public-landing-static-points b{display:block;color:#fff;font-size:12px}.public-landing-static-points small{display:block;color:rgba(255,255,255,.68);font-size:10.5px;margin-top:2px}
.public-landing-static-mark{position:absolute;right:clamp(20px,3vw,42px);bottom:clamp(18px,3vh,34px);z-index:1;text-align:right;opacity:.28}.public-landing-static-mark strong{display:block;color:#fff;font-size:28px;letter-spacing:.16em}.public-landing-static-mark small{display:block;color:#fff;font-size:10px;margin-top:2px}.public-landing-static-ring{display:block;width:46px;height:46px;margin:0 0 8px auto;border:1px solid color-mix(in srgb,var(--theme-gold) 80%,#fff);border-radius:50%;box-shadow:inset 0 0 0 7px rgba(255,255,255,.05)}
.public-unit-static-section{margin:0;min-height:0;padding:clamp(20px,2.6vw,30px);display:flex;flex-direction:column;justify-content:center;border-radius:24px;background:rgba(255,255,255,.965)}
.public-unit-static-heading{flex:0 0 auto}.public-unit-static-heading .public-landing-kicker{margin-bottom:7px}.public-unit-static-heading h2{margin:0;color:var(--theme-heading);font-size:clamp(24px,2.3vw,32px);line-height:1.1}.public-unit-static-heading p{margin:9px 0 0;color:var(--theme-muted-text);font-size:11.5px;line-height:1.5;max-width:520px}
.public-unit-static-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px;align-content:center}
.public-unit-static-card{min-height:82px;padding:11px 12px;border-radius:12px}.public-unit-static-card .public-unit-logo{width:52px;height:52px;border-radius:12px}.public-unit-static-card .public-unit-copy strong{font-size:13px}.public-unit-static-card .public-unit-copy em{font-size:10.5px;margin-top:4px}
.public-landing-static-footer{flex:0 0 auto;min-height:38px;padding:9px 22px}
@media(max-height:700px) and (min-width:921px){.public-landing-static-main{padding:14px 0;gap:26px}.public-landing-static-intro,.public-unit-static-section{border-radius:18px}.public-landing-static-intro h1{font-size:44px}.public-landing-static-desc{font-size:11.5px;line-height:1.5}.public-landing-static-points{margin-top:14px}.public-landing-static-points>span{padding:8px 10px}.public-unit-static-grid{margin-top:12px}.public-unit-static-card{min-height:70px;padding:8px 10px}.public-unit-static-card .public-unit-logo{width:44px;height:44px}.public-landing-static-footer{padding:6px 18px;min-height:32px}}
@media(max-width:920px){.public-landing-static-page{height:auto;min-height:100dvh;overflow:auto}.public-landing-static-shell{height:auto;min-height:100dvh;overflow:visible}.public-landing-static-main{width:min(100% - 28px,760px);grid-template-columns:1fr;padding:22px 0;gap:18px}.public-landing-static-intro{min-height:390px}.public-unit-static-section{justify-content:flex-start}.public-unit-static-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.public-landing-static-main{width:min(100% - 20px,760px);padding:14px 0}.public-landing-static-intro{min-height:360px;padding:24px 20px}.public-landing-static-intro h1{font-size:41px}.public-landing-static-desc{font-size:12px}.public-landing-static-points{display:grid;grid-template-columns:1fr}.public-landing-static-points>span{min-width:0}.public-landing-static-mark{display:none}.public-unit-static-section{padding:20px 16px}.public-unit-static-grid{grid-template-columns:1fr}}

/* MADINAH v0.29.2 — landing topbar, ticker/clock, softer static composition */
.public-landing-topbar{background:#2f165f!important;border-bottom:3px solid var(--theme-gold)!important;box-shadow:0 5px 16px rgba(29,14,48,.12)!important;color:#fff;flex-wrap:nowrap}
.public-landing-topbar .public-landing-brand{flex:0 1 auto;min-width:220px}
.public-landing-topbar .public-landing-brand strong{color:#fff!important}
.public-landing-topbar .public-landing-brand span{color:rgba(255,255,255,.72)!important}
.public-landing-topbar .public-landing-brand img,.public-landing-topbar .public-landing-monogram{background:#fff;border-color:color-mix(in srgb,var(--theme-gold) 48%,#fff)!important}
.public-landing-topbar .public-landing-monogram{color:#2f165f!important}
.public-landing-top-ticker{flex:1 1 280px;min-width:140px;height:32px;overflow:hidden;display:flex;align-items:center;margin:0 20px;border-left:1px solid color-mix(in srgb,var(--theme-gold) 62%,transparent);border-right:1px solid color-mix(in srgb,var(--theme-gold) 62%,transparent);color:#fff}
.public-landing-top-ticker-track{display:flex;align-items:center;width:max-content;min-width:100%;animation:madinahLoginTicker var(--login-ticker-duration,16s) linear infinite;will-change:transform}
.public-landing-top-ticker-track span{display:block;white-space:nowrap;padding:0 74px 0 22px;color:#fff;font-size:11.5px;font-weight:650;letter-spacing:.015em;line-height:32px}
.public-landing-header-actions{flex:0 0 auto;display:flex;align-items:center;gap:14px;min-width:0}
.public-landing-clock{display:flex;align-items:center;gap:7px;white-space:nowrap;color:rgba(255,255,255,.86);font-size:10.5px;font-weight:650;letter-spacing:.01em}
.public-landing-clock b{color:var(--theme-gold);font-size:10px}
.public-landing-topbar .public-admin-login{border-color:var(--theme-gold)!important;background:transparent!important;color:var(--theme-gold)!important;box-shadow:none!important}
.public-landing-topbar .public-admin-login:hover{background:var(--theme-gold)!important;color:#2f165f!important}

/* Softer, less box-like full-view composition */
.public-landing-static-main{gap:clamp(26px,4vw,62px)}
.public-landing-static-intro{padding:clamp(14px,2vw,28px) clamp(4px,1.2vw,16px);border-radius:0!important;background:transparent!important;box-shadow:none!important;overflow:visible!important}
.public-landing-static-intro:before,.public-landing-static-intro:after{display:none!important}
.public-landing-static-copy{max-width:720px}
.public-landing-static-intro .public-landing-kicker{color:var(--theme-success)!important}
.public-landing-static-intro h1{color:var(--theme-heading)!important;text-shadow:none!important}
.public-landing-static-intro h1:after{background:linear-gradient(90deg,var(--theme-gold),var(--theme-success))!important}
.public-landing-static-fullname{color:var(--theme-heading)!important}
.public-landing-static-desc{color:var(--theme-muted-text)!important}
.public-landing-static-points{gap:18px;margin-top:24px}
.public-landing-static-points>span{min-width:0;padding:3px 14px 3px 11px;border:0!important;border-left:2px solid var(--theme-gold)!important;border-radius:0!important;background:transparent!important;backdrop-filter:none!important}
.public-landing-static-points b{color:var(--theme-heading)!important}
.public-landing-static-points small{color:var(--theme-muted-text)!important}
.public-landing-static-mark{opacity:.09!important;right:8px!important;bottom:10px!important}
.public-landing-static-mark strong,.public-landing-static-mark small{color:var(--theme-primary)!important}
.public-landing-static-ring{border-color:var(--theme-gold)!important;box-shadow:none!important}

.public-unit-static-section{padding:clamp(14px,2vw,26px) 0 clamp(14px,2vw,26px) clamp(8px,1.6vw,24px)!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
.public-unit-static-heading h2{color:var(--theme-heading)!important}
.public-unit-static-grid{gap:0!important;margin-top:16px!important}
.public-unit-static-card{min-height:78px;padding:11px 4px!important;border:0!important;border-bottom:1px solid color-mix(in srgb,var(--theme-soft) 48%,#dedede)!important;border-radius:0!important;background:rgba(255,255,255,.34)!important;box-shadow:none!important;transform:none!important}
.public-unit-static-card:hover{background:rgba(255,255,255,.72)!important;border-bottom-color:color-mix(in srgb,var(--theme-success) 60%,#d8d8d8)!important;box-shadow:none!important;transform:none!important}
.public-unit-static-card .public-unit-logo{border-radius:10px!important;background:rgba(255,255,255,.72)!important}
.public-landing-static-footer{background:rgba(255,255,255,.55)!important;border-top-color:color-mix(in srgb,var(--theme-gold) 30%,#e8e8e8)!important}

@media(max-width:1120px) and (min-width:921px){
  .public-landing-topbar .public-landing-brand span{display:none}
  .public-landing-topbar .public-landing-brand{min-width:150px}
  .public-landing-top-ticker{margin:0 12px}
  .public-landing-clock{font-size:9.5px;gap:5px}
}
@media(max-width:920px){
  .public-landing-topbar{flex-wrap:wrap;gap:8px 12px;padding-top:10px!important;padding-bottom:10px!important}
  .public-landing-topbar .public-landing-brand{min-width:0;flex:1 1 auto}
  .public-landing-header-actions{margin-left:auto}
  .public-landing-top-ticker{order:3;flex:1 0 100%;width:100%;margin:0;border-right:0;border-left:0;border-top:1px solid color-mix(in srgb,var(--theme-gold) 42%,transparent)}
  .public-landing-static-intro{padding:26px 8px!important}
  .public-unit-static-section{padding:18px 4px!important}
}
@media(max-width:620px){
  .public-landing-clock{flex-direction:column;align-items:flex-end;gap:0;line-height:1.15;font-size:9.5px}
  .public-landing-clock [data-landing-date]{display:inline;font-size:8.5px;font-weight:600;color:rgba(255,255,255,.72)}
  .public-landing-clock [data-landing-time]{display:inline;font-size:12px;font-weight:800;color:#fff}
  .public-landing-clock b{display:none}
  .public-landing-header-actions{gap:9px}
  .public-landing-top-ticker-track span{font-size:10.5px;padding-right:60px}
}
@media(prefers-reduced-motion:reduce){.public-landing-top-ticker-track{animation:none;transform:none}.public-landing-top-ticker-track span+span{display:none}}

/* MADINAH v0.29.3 — landing simplification and configurable ticker speed */
.public-admin-fallback{display:inline-flex;align-items:center;justify-content:center;margin-top:12px;padding:9px 13px;border-radius:8px;background:var(--theme-primary);color:#fff!important;text-decoration:none;font-size:11px;font-weight:750}
.public-admin-fallback:hover{filter:brightness(.96)}
.public-unit-empty strong,.public-unit-empty span{display:block}.public-unit-empty span{margin-top:4px}

/* MADINAH v0.29.7 — seamless continuous ticker */
@keyframes madinahTickerContinuous{
  from{transform:translate3d(0,0,0)}
  to{transform:translate3d(-50%,0,0)}
}
.auth-login-ticker-track,
.public-landing-top-ticker-track{
  display:flex;
  align-items:center;
  width:max-content!important;
  min-width:0!important;
  gap:0!important;
  animation-name:madinahTickerContinuous!important;
  animation-duration:var(--login-ticker-duration,16s)!important;
  animation-timing-function:linear!important;
  animation-iteration-count:infinite!important;
  will-change:transform;
  backface-visibility:hidden;
  transform:translate3d(0,0,0);
}
.auth-login-ticker-track>span,
.public-landing-top-ticker-track>span{
  flex:0 0 auto;
  min-width:max-content;
}
@media(prefers-reduced-motion:reduce){
  .auth-login-ticker-track,
  .public-landing-top-ticker-track{
    animation:none!important;
    transform:none!important;
  }
}

/* MADINAH v0.29.8 — frame-by-frame ticker without CSS loop reset */
.auth-login-ticker-track.madinah-ticker-js,
.public-landing-top-ticker-track.madinah-ticker-js{
  animation:none!important;
  transform:translate3d(0,0,0);
  will-change:transform;
  backface-visibility:hidden;
  contain:layout style;
}
.auth-login-ticker-track.madinah-ticker-js>span,
.public-landing-top-ticker-track.madinah-ticker-js>span{
  flex:0 0 auto;
  white-space:nowrap;
}
@media(prefers-reduced-motion:reduce){
  .auth-login-ticker-track.madinah-ticker-js,
  .public-landing-top-ticker-track.madinah-ticker-js{transform:none!important}
  .auth-login-ticker-track.madinah-ticker-js>span:not(:first-child),
  .public-landing-top-ticker-track.madinah-ticker-js>span:not(:first-child){display:none!important}
}

/* MADINAH v0.34.0 — searchable native selector (Person + generic lists) */
.searchable-person-select{position:relative;width:100%;min-width:0}
.searchable-person-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;inset:auto auto 0 0!important;margin:0!important;padding:0!important}
.searchable-person-trigger{width:100%;min-height:42px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;border:1px solid #d8cfea;border-radius:8px;background:#fff;color:var(--theme-body-text,#222);font:inherit;text-align:left;cursor:pointer}
.searchable-person-trigger:hover,.searchable-person-select.is-open .searchable-person-trigger{border-color:var(--theme-primary,#4c2483);box-shadow:0 0 0 2px color-mix(in srgb,var(--theme-primary,#4c2483) 12%,transparent)}
.searchable-person-trigger:focus-visible{outline:2px solid color-mix(in srgb,var(--theme-primary,#4c2483) 45%,transparent);outline-offset:1px}
.searchable-person-trigger.is-invalid{border-color:#b42318;box-shadow:0 0 0 3px rgba(180,35,24,.12)}
.searchable-person-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.searchable-person-chevron{flex:0 0 auto;font-size:17px;line-height:1;transition:transform .16s ease}.searchable-person-select.is-open .searchable-person-chevron{transform:rotate(180deg)}
.searchable-person-panel{position:absolute;z-index:1200;top:calc(100% + 5px);left:0;right:0;padding:9px;border:1px solid #d8cfea;border-radius:10px;background:#fff;box-shadow:0 12px 30px rgba(35,20,60,.18)}
.searchable-person-search{width:100%!important;margin:0!important;background:#fff!important}
.searchable-person-result-info{padding:6px 3px 5px;font-size:11px;color:var(--theme-muted-text,#667085)}
.searchable-person-options{max-height:280px;overflow:auto;border-top:1px solid #eee7f5;padding-top:4px}
.searchable-person-option{display:block;width:100%;border:0;border-radius:6px;background:transparent;padding:8px 9px;text-align:left;font:inherit;color:var(--theme-body-text,#222);cursor:pointer;line-height:1.3}
.searchable-person-option:hover,.searchable-person-option:focus-visible{background:var(--theme-soft,#f4f0fa);outline:0}
.searchable-person-option.is-selected{font-weight:700;background:color-mix(in srgb,var(--theme-primary,#4c2483) 9%,white)}
.searchable-person-option.is-placeholder{color:var(--theme-muted-text,#667085)}
.searchable-person-empty{padding:14px 9px;color:var(--theme-muted-text,#667085);text-align:center;font-size:12px}
@media(max-width:640px){.searchable-person-panel{position:fixed;z-index:2500;left:12px;right:12px;top:16vh;max-height:68vh}.searchable-person-options{max-height:50vh}.searchable-person-trigger{min-height:44px}}

/* MADINAH v0.43.0-rc.4 — task-oriented teacher navigation */
.sidebar{
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.sidebar-head,.sidebar-search{flex:0 0 auto}
#sidebarNav{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  padding-right:2px;
}
@media(max-width:980px){
  .sidebar{overflow:hidden}
  #sidebarNav{padding-bottom:4px}
}

/* MADINAH v0.43.0-rc.5 — compact topbar account stack */
/* Account identity returns below the clock; Password and Keluar share one compact row. */
.topbar-account-stack{
  flex:0 0 auto;
  min-width:180px!important;
  display:grid!important;
  grid-template-columns:1fr;
  gap:2px!important;
  justify-items:end!important;
  align-content:center!important;
  padding:3px 0 3px 10px!important;
  border-left:1px solid var(--line)!important;
}
.topbar-account-stack .topbar-datetime{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:5px!important;
  width:100%;
  padding:0!important;
  border:0!important;
  line-height:1.15!important;
  white-space:nowrap!important;
}
.topbar-user-name{
  max-width:220px;
  overflow:hidden;
  color:var(--theme-topbar-text,#171717);
  font-size:12px;
  font-weight:700;
  line-height:1.25;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.topbar-account-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:6px;
  min-height:20px;
  width:100%;
  white-space:nowrap;
}
.topbar-account-actions a,
.topbar-account-actions button{
  border:0;
  padding:0;
  background:transparent;
  color:var(--theme-link-text,var(--theme-primary,#35106b));
  font:inherit;
  font-size:11px;
  font-weight:650;
  line-height:1.25;
  text-decoration:none;
  cursor:pointer;
}
.topbar-account-actions a:hover,
.topbar-account-actions button:hover{text-decoration:underline}
.topbar-account-actions form{display:inline-flex;margin:0}
.topbar-account-separator{color:var(--theme-muted-text,#777);font-size:10px;line-height:1}
@media(max-width:980px){
  .topbar-account-stack{min-width:150px!important;padding-left:7px!important;border-left:1px solid var(--line)!important}
  .topbar-user-name{max-width:165px;font-size:11.5px}
  .topbar-account-actions a,.topbar-account-actions button{font-size:10.5px}
}
@media(max-width:760px){
  .topbar-account-stack{min-width:0!important;border-left:0!important;padding-left:0!important}
  .topbar-user-name{max-width:140px;font-size:11px}
  .topbar-account-actions{gap:5px}
  .topbar-account-actions a,.topbar-account-actions button{font-size:10px}
}


/* MADINAH v0.43.0-rc.6 — automatic Working Context + branding logo diagnostics */
#periodForm.is-submitting{opacity:.72;pointer-events:none}
.branding-logo-status{margin:12px 0 0!important;font-size:12px}
@media(max-width:980px){
  .context-area>#periodForm{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}
}
@media(max-width:420px){
  .context-area>#periodForm{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}
}

/* MADINAH v0.44.0-dev.48 — Presensi Hari Ini: theme-filled action buttons */
.attendance-today-page-actions .btn{
  background:var(--theme-soft,#c9b8eb);
  border-color:color-mix(in srgb,var(--theme-soft,#c9b8eb) 78%,var(--theme-primary,#35106b));
  color:var(--theme-primary,#35106b);
  font-weight:700;
  box-shadow:none;
}
.attendance-today-page-actions .btn:hover{
  background:color-mix(in srgb,var(--theme-soft,#c9b8eb) 78%,var(--theme-primary,#35106b) 22%);
  border-color:color-mix(in srgb,var(--theme-soft,#c9b8eb) 64%,var(--theme-primary,#35106b) 36%);
  color:var(--theme-primary,#35106b);
}
.attendance-today-page-actions .btn.primary,
.attendance-today-page-actions .btn.primary:hover{
  background:var(--theme-primary,#35106b);
  border-color:var(--theme-primary,#35106b);
  color:#fff;
}
.attendance-today-page-actions .btn.primary:hover{
  background:color-mix(in srgb,var(--theme-primary,#35106b) 82%,#000);
  border-color:color-mix(in srgb,var(--theme-primary,#35106b) 82%,#000);
}
.attendance-today-page-actions .btn.danger{
  background:#b42318;
  border-color:#b42318;
  color:#fff;
}
.attendance-today-page-actions .btn.danger:hover{
  background:#912018;
  border-color:#912018;
  color:#fff;
}

/* MADINAH v0.44.0-dev.49 — Presensi: consolidated data/report tab navigation */
.attendance-data-hub{margin-bottom:18px}
.attendance-data-hub-head{margin-bottom:10px}
.attendance-data-tabs{display:flex;flex-wrap:wrap;gap:8px;padding:8px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--theme-soft,#c9b8eb) 28%,#fff)}
.attendance-data-tab{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 13px;border:1px solid color-mix(in srgb,var(--theme-soft,#c9b8eb) 72%,var(--theme-primary,#35106b));border-radius:9px;background:var(--theme-soft,#c9b8eb);color:var(--theme-primary,#35106b);font-weight:700;text-decoration:none;line-height:1.2}
.attendance-data-tab:hover{background:color-mix(in srgb,var(--theme-soft,#c9b8eb) 78%,var(--theme-primary,#35106b) 22%);color:var(--theme-primary,#35106b)}
.attendance-data-tab.active{background:var(--theme-primary,#35106b);border-color:var(--theme-primary,#35106b);color:#fff;box-shadow:0 4px 12px color-mix(in srgb,var(--theme-primary,#35106b) 20%,transparent)}
.attendance-data-tab.active:hover{background:color-mix(in srgb,var(--theme-primary,#35106b) 82%,#000);border-color:color-mix(in srgb,var(--theme-primary,#35106b) 82%,#000);color:#fff}
@media(max-width:640px){.attendance-data-hub-head{align-items:stretch;gap:10px;flex-direction:column}.attendance-data-hub-head .actions{width:100%}.attendance-data-hub-head .actions .btn{flex:1 1 auto}.attendance-data-tabs{display:grid;grid-template-columns:1fr 1fr}.attendance-data-tab{width:100%;white-space:normal;text-align:center}}
@media(max-width:420px){.attendance-data-tabs{grid-template-columns:1fr}}

/* MADINAH v0.44.0-dev.50 — Global A4 print contract + active attendance tab contrast */
@page{size:A4}
.content a.attendance-data-tab.active,
.content a.attendance-data-tab.active:hover,
.content a.attendance-data-tab.active:focus,
.content a.attendance-data-tab.active:focus-visible,
.content a.attendance-data-tab.active:visited{
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}

/* MADINAH v0.44.0-dev.51 — Global Theme-Filled Button & Contrast Contract
   Action buttons must not use a plain white surface. Input/select-like controls are excluded. */
.btn,
.btn:visited{
  background:var(--theme-soft,#c9b8eb);
  border-color:color-mix(in srgb,var(--theme-soft,#c9b8eb) 68%,var(--theme-primary,#35106b));
  color:var(--theme-primary,#35106b);
  -webkit-text-fill-color:currentColor;
  font-weight:650;
}
.btn:hover,
.btn:focus,
.btn:focus-visible{
  background:color-mix(in srgb,var(--theme-soft,#c9b8eb) 78%,var(--theme-primary,#35106b) 22%);
  border-color:color-mix(in srgb,var(--theme-soft,#c9b8eb) 54%,var(--theme-primary,#35106b) 46%);
  color:var(--theme-primary,#35106b);
  -webkit-text-fill-color:currentColor;
}
.btn.primary,
.btn.primary:visited,
.btn.primary:hover,
.btn.primary:focus,
.btn.primary:focus-visible{
  background:var(--theme-primary,#35106b);
  border-color:var(--theme-primary,#35106b);
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
.btn.primary:hover,
.btn.primary:focus,
.btn.primary:focus-visible{
  background:color-mix(in srgb,var(--theme-primary,#35106b) 82%,#000);
  border-color:color-mix(in srgb,var(--theme-primary,#35106b) 82%,#000);
}
.btn.danger,
.btn.danger:visited,
.btn.danger:hover,
.btn.danger:focus,
.btn.danger:focus-visible{
  background:var(--danger,#b42318);
  border-color:var(--danger,#b42318);
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
.btn.danger:hover,
.btn.danger:focus,
.btn.danger:focus-visible{background:#912018;border-color:#912018}
.btn.warning,
.btn.warning:visited,
.btn.warning:hover,
.btn.warning:focus,
.btn.warning:focus-visible{
  background:var(--theme-gold,#d4a437);
  border-color:color-mix(in srgb,var(--theme-gold,#d4a437) 78%,#6b4d00);
  color:#2b1b00!important;
  -webkit-text-fill-color:#2b1b00!important;
}
.btn.warning:hover,
.btn.warning:focus,
.btn.warning:focus-visible{background:color-mix(in srgb,var(--theme-gold,#d4a437) 82%,#6b4d00)}
.btn.secondary,
.btn.secondary:visited,
.btn.secondary:hover,
.btn.secondary:focus,
.btn.secondary:focus-visible{color:var(--theme-primary,#35106b);-webkit-text-fill-color:var(--theme-primary,#35106b)}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.58;cursor:not-allowed}
.icon-btn{
  background:var(--theme-soft,#c9b8eb);
  border-color:color-mix(in srgb,var(--theme-soft,#c9b8eb) 68%,var(--theme-primary,#35106b));
  color:var(--theme-primary,#35106b);
  -webkit-text-fill-color:var(--theme-primary,#35106b);
}
.icon-btn:hover,.icon-btn:focus-visible{
  background:color-mix(in srgb,var(--theme-soft,#c9b8eb) 78%,var(--theme-primary,#35106b) 22%);
  color:var(--theme-primary,#35106b);
}
.temporal-picker-btn{
  background:var(--theme-soft,#c9b8eb);
  border-color:color-mix(in srgb,var(--theme-soft,#c9b8eb) 68%,var(--theme-primary,#35106b));
  color:var(--theme-primary,#35106b);
}
.temporal-picker-btn:hover,.temporal-picker-btn:focus-visible{
  background:color-mix(in srgb,var(--theme-soft,#c9b8eb) 78%,var(--theme-primary,#35106b) 22%);
  color:var(--theme-primary,#35106b);
}
.public-admin-login,
.public-admin-login:visited{
  background:var(--theme-soft,#c9b8eb);
  border-color:color-mix(in srgb,var(--theme-soft,#c9b8eb) 68%,var(--theme-primary,#35106b));
  color:var(--theme-primary,#35106b);
  -webkit-text-fill-color:var(--theme-primary,#35106b);
}
.public-admin-login:hover,.public-admin-login:focus-visible{
  background:color-mix(in srgb,var(--theme-soft,#c9b8eb) 78%,var(--theme-primary,#35106b) 22%);
  color:var(--theme-primary,#35106b);
}
@media(max-width:640px){
  table.responsive.attendance-today-table .attendance-sort-header{
    background:var(--theme-soft,#c9b8eb);
    border-color:color-mix(in srgb,var(--theme-soft,#c9b8eb) 68%,var(--theme-primary,#35106b));
    color:var(--theme-primary,#35106b);
  }
  table.responsive.attendance-today-table .attendance-sort-header.is-active{
    background:var(--theme-primary,#35106b);
    border-color:var(--theme-primary,#35106b);
    color:#fff;
    -webkit-text-fill-color:#fff;
  }
}


/* MADINAH v0.44.0-dev.52 — Global Button Contrast Hardening
   WebKit text-fill follows the computed text color so custom theme-filled buttons
   cannot inherit Deep Purple text on Deep Purple/Emerald backgrounds. */
.btn,
.btn:visited,
.btn:hover,
.btn:focus,
.btn:focus-visible,
.btn:active{
  -webkit-text-fill-color:currentColor;
}
.attendance-today-tools-footer .btn.attendance-tool-print,
.attendance-today-tools-footer .btn.attendance-tool-print:visited,
.attendance-today-tools-footer .btn.attendance-tool-print:hover,
.attendance-today-tools-footer .btn.attendance-tool-print:focus,
.attendance-today-tools-footer .btn.attendance-tool-print:focus-visible,
.attendance-today-tools-footer .btn.attendance-tool-export,
.attendance-today-tools-footer .btn.attendance-tool-export:visited,
.attendance-today-tools-footer .btn.attendance-tool-export:hover,
.attendance-today-tools-footer .btn.attendance-tool-export:focus,
.attendance-today-tools-footer .btn.attendance-tool-export:focus-visible,
.context-form .btn.compact,
.context-form .btn.compact:hover,
.context-form .btn.compact:focus,
.context-form .btn.compact:focus-visible{
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
.attendance-today-tools-footer .btn.attendance-tool-reset,
.attendance-today-tools-footer .btn.attendance-tool-reset:visited,
.attendance-today-tools-footer .btn.attendance-tool-reset:hover,
.attendance-today-tools-footer .btn.attendance-tool-reset:focus,
.attendance-today-tools-footer .btn.attendance-tool-reset:focus-visible{
  color:var(--theme-primary,#35106b)!important;
  -webkit-text-fill-color:var(--theme-primary,#35106b)!important;
}
.scanner-focus-shell:fullscreen .scanner-controls .btn,
.scanner-focus-shell:-webkit-full-screen .scanner-controls .btn,
.scanner-focus-shell.focus-fallback .scanner-controls .btn{
  -webkit-text-fill-color:#fff!important;
}


/* MADINAH v0.44.0-dev.54 — Balanced Desktop Sidebar Typography Contract
   Balance readability and vertical density: the desktop sidebar stays efficient without
   appearing cramped. Sidebar typography uses a lighter system UI face and avoids bold/black
   weights; mobile keeps the existing touch-friendly spacing. */
@media (min-width:981px){
  .sidebar{
    padding:12px 11px 10px;
    font-family:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,sans-serif;
    font-weight:400;
  }
  .sidebar .brand{
    gap:9px;
    padding:3px 7px 11px;
  }
  .sidebar .brand strong{
    font-weight:600;
    letter-spacing:.01em;
  }
  .sidebar .brand span{
    font-size:12px;
    line-height:1.2;
    font-weight:400;
  }
  .sidebar-search{
    margin:0 4px 8px;
  }
  .sidebar-search input{
    min-height:36px;
    padding:8px 33px 8px 10px;
    font-size:13px;
    font-weight:400;
  }
  #sidebarNav{
    padding-right:0;
  }
  .nav-group{
    margin:0 0 2px;
  }
  .nav-group-toggle{
    min-height:33px;
    padding:7px 10px;
    gap:8px;
    border-radius:7px;
    font-family:inherit;
    font-size:13px;
    font-weight:500;
    line-height:1.25;
  }
  .nav-chevron{
    font-size:14px;
    line-height:1;
    font-weight:400;
  }
  .nav-group-items{
    gap:1px;
    padding:1px 0 4px 9px;
  }
  .sidebar .nav-group-items a{
    min-height:29px;
    padding:6px 9px;
    border-radius:6px;
    font-family:inherit;
    font-size:13px;
    font-weight:400;
    line-height:1.3;
  }
  .sidebar .nav-group-items a.active{
    font-weight:500;
  }
}
@media (min-width:981px) and (max-height:820px){
  .sidebar{
    padding-top:10px;
    padding-bottom:8px;
  }
  .sidebar .brand{
    padding-bottom:9px;
  }
  .sidebar-search{
    margin-bottom:6px;
  }
  .sidebar-search input{
    min-height:34px;
    padding-top:7px;
    padding-bottom:7px;
  }
  .nav-group-toggle{
    min-height:31px;
    padding-top:6px;
    padding-bottom:6px;
  }
  .sidebar .nav-group-items a{
    min-height:27px;
    padding-top:5px;
    padding-bottom:5px;
  }
}


/* MADINAH v0.47.0-dev.9 — Fixed Compact Global Footer
   Footer tetap di bawah viewport, tidak ikut tergulung, dan tidak menutup konten. */
:root{--madinah-app-footer-height:28px}
.app-footer{
  position:fixed!important;
  left:250px!important;
  right:0!important;
  bottom:0!important;
  z-index:19!important;
  width:auto!important;
  height:var(--madinah-app-footer-height)!important;
  min-height:var(--madinah-app-footer-height)!important;
  max-height:var(--madinah-app-footer-height)!important;
  margin:0!important;
  padding:3px 18px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:8px!important;
  flex-wrap:nowrap!important;
  overflow:hidden!important;
  border-top:1px solid var(--line)!important;
  background:color-mix(in srgb,var(--theme-page-bg,#f7f5fa) 97%,#fff)!important;
  box-shadow:0 -1px 5px rgba(31,20,48,.05);
  font-size:10.5px!important;
  line-height:1!important;
}
.app-footer>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.app-footer-version{flex:0 0 auto;white-space:nowrap;font-weight:700}
.content{padding-bottom:calc(22px + var(--madinah-app-footer-height))!important}
@media(max-width:980px){
  .app-footer{left:0!important}
}
@media(max-width:640px){
  :root{--madinah-app-footer-height:24px}
  .app-footer{padding:2px 9px!important;font-size:8.5px!important;gap:5px!important}
  .content{padding-bottom:calc(14px + var(--madinah-app-footer-height))!important}
}
@media print{.app-footer{display:none!important}.content{padding-bottom:0!important}}

/* MADINAH v0.47.0-dev.19.27.7 — Secure GTK Impersonation */
.impersonation-banner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:9px 18px;
  border-bottom:1px solid color-mix(in srgb,var(--theme-gold,#d4a437) 55%,var(--line));
  background:linear-gradient(90deg,#fff3cd,#fff9e8);
  color:#5f4600;
}
.impersonation-banner-copy{display:flex;align-items:center;gap:10px;min-width:0}
.impersonation-banner-copy>strong{flex:0 0 auto;font-size:12px;letter-spacing:.02em}
.impersonation-banner-copy>span{min-width:0;font-size:12px;line-height:1.35}
.impersonation-banner form{flex:0 0 auto;margin:0}
.topbar-return-admin{font-weight:750!important}
@media(max-width:760px){
  .impersonation-banner{align-items:flex-start;flex-direction:column;padding:9px 12px}
  .impersonation-banner-copy{align-items:flex-start;flex-direction:column;gap:3px}
  .impersonation-banner form,.impersonation-banner .btn{width:100%}
}
@media print{.impersonation-banner{display:none!important}}

/* v0.47.0-dev.19.27.9 — compact Health & Growth summary */
.health-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 1rem}.health-summary-grid .stat{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;align-items:baseline;gap:8px;box-shadow:0 1px 2px rgba(16,24,40,.03)}.health-summary-grid .stat strong{display:inline;font-size:22px;line-height:1.1;white-space:nowrap}.health-summary-grid .stat span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:640px){.health-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.health-summary-grid .stat{padding:9px 10px}.health-summary-grid .stat strong{font-size:20px}}
/* MADINAH v0.47.0-dev.19.27.11 — Health measurement date picker alignment */
.health-date-cell{min-width:180px}
.health-date-cell .date-field{display:block;min-width:0;width:100%}
.health-date-cell .temporal-field-control{display:grid;grid-template-columns:minmax(0,1fr) 40px;gap:0;align-items:stretch;min-width:0;width:100%}
.health-date-cell .temporal-field-control>input[data-date-display]{min-width:0!important;width:100%!important;border-radius:8px 0 0 8px}
.health-date-cell .temporal-picker-wrap{width:40px;min-width:40px;min-height:42px}
.health-date-cell .temporal-picker-btn{width:40px;min-width:40px;min-height:42px;padding:7px;border-left:0;border-radius:0 8px 8px 0}
.health-date-cell .temporal-picker-btn svg{width:19px;height:19px}
@media(max-width:640px){.health-date-cell{min-width:0}.health-date-cell .temporal-field-control{grid-template-columns:minmax(0,1fr) 42px}.health-date-cell .temporal-picker-wrap,.health-date-cell .temporal-picker-btn{width:42px;min-width:42px}}


/* MADINAH v0.47.0-dev.19.27.14 — Presensi Hari Ini compact layout */
.attendance-today-status-strip{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:10px;align-items:stretch;margin:0 0 12px}
.attendance-today-status-strip .alert{margin:0;min-width:0}
.attendance-today-status-card{display:flex;align-items:center;gap:8px 12px;min-height:44px;padding:10px 12px}
.attendance-today-status-card strong{white-space:nowrap}.attendance-today-status-card span{min-width:0}
.attendance-today-status-lock{justify-content:flex-end;text-align:right}
.attendance-today-stats.attendance-today-summary{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-bottom:12px}
.attendance-today-summary .stat{min-width:0;padding:10px 12px;display:flex;align-items:baseline;gap:7px}
.attendance-today-summary .stat strong{font-size:22px;line-height:1.1;white-space:nowrap}.attendance-today-summary .stat span{min-width:0;font-size:12px;line-height:1.2}
.attendance-today-list-head{align-items:center;gap:12px;margin-bottom:8px}.attendance-today-list-head>div:first-child{min-width:0}
.attendance-today-list-actions{flex:0 0 auto;gap:8px;flex-wrap:nowrap;align-items:center}
.attendance-today-list-actions .btn{font-weight:700;white-space:nowrap}
.attendance-today-list-actions .attendance-tool-reset{background:var(--theme-soft,#c9b8eb);border-color:var(--theme-soft,#c9b8eb);color:#241046}
.attendance-today-list-actions .attendance-tool-print{background:var(--theme-primary,#35106b);border-color:var(--theme-primary,#35106b);color:#fff}
.attendance-today-list-actions .attendance-tool-export{background:var(--theme-success,#0f8f6b);border-color:var(--theme-success,#0f8f6b);color:#fff}
.attendance-today-list-actions .attendance-tool-reset:hover{background:color-mix(in srgb,var(--theme-soft,#c9b8eb) 82%,#fff);color:#241046}
.attendance-today-list-actions .attendance-tool-print:hover{background:color-mix(in srgb,var(--theme-primary,#35106b) 82%,#000);color:#fff}
.attendance-today-list-actions .attendance-tool-export:hover{background:color-mix(in srgb,var(--theme-success,#0f8f6b) 82%,#000);color:#fff}
.attendance-today-tools-meta{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
.attendance-today-tools-meta .attendance-today-recap-note{margin:0;text-align:right;font-size:12px}
@media(max-width:1180px){.attendance-today-stats.attendance-today-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.attendance-today-list-head{align-items:flex-start}.attendance-today-list-actions{flex-wrap:wrap;justify-content:flex-end}}
@media(max-width:900px){.attendance-today-status-strip{grid-template-columns:1fr}.attendance-today-status-lock{justify-content:flex-start;text-align:left}.attendance-today-list-head{display:grid;grid-template-columns:1fr}.attendance-today-list-actions{justify-content:flex-start}.attendance-today-tools-meta{align-items:flex-start;flex-direction:column}.attendance-today-tools-meta .attendance-today-recap-note{text-align:left}}
@media(max-width:640px){.attendance-today-stats.attendance-today-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-today-list-actions{display:grid;grid-template-columns:1fr}.attendance-today-list-actions .btn{width:100%}.attendance-today-status-card{align-items:flex-start;flex-direction:column;gap:3px}.attendance-today-status-card strong{white-space:normal}}

/* MADINAH v0.47.0-dev.19.27.15 — RAS Readiness & Completeness Dashboard */
.ras-readiness-select-form{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:end}
.ras-readiness-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 12px}
.ras-readiness-summary .stat{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;align-items:baseline;gap:8px;text-decoration:none;color:inherit;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.ras-readiness-summary .stat strong{font-size:22px;line-height:1.1;white-space:nowrap}.ras-readiness-summary .stat span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ras-readiness-summary a.stat:hover{border-color:var(--theme-primary,#35106b)}
.ras-component-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 12px}
.ras-component-card{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name count" "status status";gap:4px 8px;min-width:0;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:inherit;text-decoration:none}
.ras-component-card:hover,.ras-component-card.active{border-color:var(--theme-primary,#35106b);box-shadow:0 0 0 1px color-mix(in srgb,var(--theme-primary,#35106b) 28%,transparent)}
.ras-component-card .ras-component-name{grid-area:name;min-width:0;font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ras-component-card>strong{grid-area:count;font-size:16px}.ras-component-card>.badge{grid-area:status;justify-self:start}
.ras-readiness-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 8px}.ras-readiness-filter-note{min-width:0}.ras-readiness-table-card{padding-top:8px}.ras-readiness-table .ras-component-col{text-align:center;white-space:nowrap}.ras-state-dot{display:inline-flex;align-items:center;justify-content:center;width:25px;height:25px;border-radius:999px;font-weight:800}.ras-state-dot.ok{background:#e7f7ef;color:#087a55}.ras-state-dot.missing{background:#fff4dc;color:#9a6500}.ras-row-issues{margin-top:3px;font-size:11px;color:var(--muted);line-height:1.25}.ras-readiness-note{margin-top:10px}
@media(max-width:1100px){.ras-component-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.ras-readiness-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.ras-readiness-select-form{grid-template-columns:1fr}.ras-readiness-select-form .btn{width:100%}.ras-component-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ras-readiness-toolbar{align-items:flex-start;flex-direction:column}.ras-readiness-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.ras-component-grid,.ras-readiness-summary{grid-template-columns:1fr}.ras-readiness-summary .stat strong{font-size:20px}}

/* MADINAH v0.48.0-dev.3.5.8.3.6.2 — Page Action UX Simplification */
.page-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.action-menu{position:relative;display:inline-flex;margin:0}
.action-menu>summary{list-style:none;user-select:none;gap:7px;white-space:nowrap}
.action-menu>summary::-webkit-details-marker{display:none}
.action-menu[open]>summary{box-shadow:0 0 0 3px color-mix(in srgb,var(--theme-primary,#35106b) 16%,transparent)}
.action-menu-popover{position:absolute;right:0;top:calc(100% + 7px);z-index:90;min-width:230px;max-width:min(320px,calc(100vw - 28px));padding:6px;background:var(--surface,#fff);border:1px solid var(--line,#e4e7ec);border-radius:11px;box-shadow:0 14px 34px rgba(16,24,40,.16);display:grid;gap:2px}
.action-menu-popover>a,.action-menu-popover>form>button,.action-menu-popover>button{width:100%;min-height:38px;display:flex;align-items:center;justify-content:flex-start;text-align:left;border:0;border-radius:8px;padding:9px 10px;background:transparent;color:var(--text,#17202a);text-decoration:none;font:inherit;font-weight:600;cursor:pointer;-webkit-text-fill-color:currentColor}
.action-menu-popover>a:hover,.action-menu-popover>a:focus-visible,.action-menu-popover>form>button:hover,.action-menu-popover>form>button:focus-visible,.action-menu-popover>button:hover,.action-menu-popover>button:focus-visible{background:var(--theme-soft,#c9b8eb);color:var(--theme-primary,#35106b);outline:none}
.action-menu-popover .danger-item{color:var(--danger,#b42318);-webkit-text-fill-color:var(--danger,#b42318)}
.action-menu-popover .danger-item:hover,.action-menu-popover .danger-item:focus-visible{background:#fef3f2;color:var(--danger,#b42318);-webkit-text-fill-color:var(--danger,#b42318)}
.action-menu-separator{height:1px;background:var(--line,#e4e7ec);margin:4px 3px}
.action-menu-compact .action-menu-popover{min-width:205px}
@media(max-width:640px){.section-head>.page-actions,.page-head>.page-actions{width:100%;justify-content:stretch}.section-head>.page-actions>.btn,.page-head>.page-actions>.btn,.section-head>.page-actions>.action-menu,.page-head>.page-actions>.action-menu{flex:1 1 auto}.section-head>.page-actions>.action-menu>summary,.page-head>.page-actions>.action-menu>summary{width:100%}.action-menu-popover{right:0;left:auto}.attendance-today-list-actions{width:auto!important;justify-content:flex-end!important}.attendance-today-list-actions>.action-menu{flex:0 0 auto!important}}
.page-operation-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:flex-start;margin-bottom:14px}
.page-operation-head>.page-actions{margin-left:auto}
@media(max-width:640px){.page-operation-head>.page-actions{margin-left:0}}

/* MADINAH v0.48.0-dev.3.5.8.3.6.2.2 — Row Action UX Simplification */
.row-action-cluster{display:inline-flex;align-items:flex-start;justify-content:flex-end;gap:6px;flex-wrap:nowrap;white-space:nowrap}
.row-action-menu>summary{min-width:34px;min-height:34px;padding:6px 9px;font-size:19px;font-weight:800;line-height:1;letter-spacing:1px}
.row-action-menu .action-menu-popover{position:fixed;right:auto;top:0;left:0;z-index:130;min-width:210px;max-width:min(330px,calc(100vw - 16px));max-height:min(420px,calc(100vh - 16px));overflow:auto;visibility:hidden}
.row-action-menu[open] .action-menu-popover[data-row-menu-positioned="1"]{visibility:visible}
.row-action-menu .action-menu-popover>form{margin:0;display:grid;gap:6px}
.row-action-menu .action-menu-popover>form>input:not([type="hidden"]),.row-action-menu .action-menu-popover>form>select,.row-action-menu .action-menu-popover>form>textarea{width:100%;min-width:0;margin:0;padding:8px 9px;font-size:12px}
.row-action-menu .action-menu-popover>.muted{display:block;padding:8px 10px;white-space:normal}
.row-action-menu .action-menu-popover .menu-note{padding:6px 10px;font-size:11px;color:var(--muted);white-space:normal}
.row-action-menu .action-menu-popover>form>button{min-height:36px}
.row-action-primary{white-space:nowrap}
@media(max-width:640px){.row-action-cluster{justify-content:flex-start}.row-action-menu .action-menu-popover{max-width:calc(100vw - 16px)}}

/* MADINAH v0.48.0-dev.3.5.8.3.6.2.5 — Global Action Feedback Reliability */
form[data-madinah-submitting="1"] .btn[data-madinah-active-submitter="1"],
form[data-madinah-submitting="1"] button[data-madinah-active-submitter="1"],
form[data-madinah-submitting="1"] input[type="submit"][data-madinah-active-submitter="1"]{
  cursor:progress!important;opacity:.82;pointer-events:none;position:relative
}
.madinah-submit-spinner{display:inline-block;width:.8em;height:.8em;margin-right:.45em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-.08em;animation:madinahSubmitSpin .7s linear infinite}
@keyframes madinahSubmitSpin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.madinah-submit-spinner{animation:none;border-right-color:currentColor}}

/* MADINAH v0.48.0-dev.3.5.8.3.6.2.5.6 — Mobile Footer Responsive */
@media(max-width:640px){
  :root{--madinah-app-footer-height:40px}
  .app-footer{
    height:var(--madinah-app-footer-height)!important;
    min-height:var(--madinah-app-footer-height)!important;
    max-height:var(--madinah-app-footer-height)!important;
    padding:3px 10px!important;
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    grid-template-rows:auto auto!important;
    justify-items:center!important;
    align-content:center!important;
    gap:1px!important;
    box-sizing:border-box!important;
    overflow:hidden!important;
    font-size:9px!important;
    line-height:1.12!important;
  }
  .app-footer>span:first-child{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    overflow:visible!important;
    text-overflow:clip!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
    text-align:center!important;
  }
  .app-footer-version{
    width:auto!important;
    max-width:100%!important;
    white-space:nowrap!important;
    text-align:center!important;
    font-size:8.5px!important;
    line-height:1.08!important;
  }
  .content{padding-bottom:calc(14px + var(--madinah-app-footer-height))!important}
}

/* MADINAH v0.48.0-dev.3.5.8.3.6.2.5.7 — Teacher Gradebook Action Hierarchy */
[data-gradebook-kktp-actions="1"] [hidden]{display:none!important}
.gradebook-sh-action-cell{white-space:nowrap}
.gradebook-sh-action-cell>.gradebook-sh-menu{vertical-align:middle;margin-left:4px}
.gradebook-sh-action-cell .gradebook-sh-menu>summary{min-width:34px;width:34px;padding:6px 8px;justify-content:center}
.gradebook-sh-action-cell [data-gradebook-delete-source="1"]{display:none!important}
.gradebook-row-saved-state{border-color:transparent!important;background:transparent!important;box-shadow:none!important;color:var(--muted,#667085)!important;-webkit-text-fill-color:var(--muted,#667085)!important;opacity:1!important;cursor:default!important;padding-inline:8px!important}
.gradebook-row-saved-state:hover,.gradebook-row-saved-state:focus{background:transparent!important;color:var(--muted,#667085)!important;box-shadow:none!important}
@media(max-width:760px){.gradebook-sh-action-cell{min-width:118px}.gradebook-sh-action-cell>.gradebook-sh-menu{margin-left:2px}}


/* MADINAH v0.48.0-dev.3.5.8.3.6.2.5.8 — Teacher Gradebook Two-Stage Score Entry */
body[data-gradebook-two-stage-score-entry="1"] [data-gradebook-header-source="1"],
body[data-gradebook-two-stage-score-entry="1"] [data-gradebook-main-save-hidden="1"]{display:none!important}
.gradebook-summary-header{display:flex;min-width:118px;flex-direction:column;align-items:center;gap:5px;padding:5px 3px;text-align:center}
.gradebook-summary-code{font-size:14px;line-height:1.2;color:var(--text,#1f2937)}
.gradebook-summary-date{font-size:11px;line-height:1.25;color:var(--muted,#667085);white-space:normal}
.gradebook-assessment-entry{margin-top:2px;min-width:86px;justify-content:center}
.gradebook-main-score-readonly{pointer-events:none;cursor:default!important;opacity:1!important;-webkit-text-fill-color:var(--text,#1f2937)!important;background:var(--surface-soft,#f6f3fb)!important;text-align:center}
.gradebook-score-editor-backdrop{position:fixed;inset:0;z-index:1400;background:rgba(20,16,36,.56);padding:20px;overflow:auto;display:flex;align-items:flex-start;justify-content:center}
.gradebook-score-editor-backdrop[hidden]{display:none!important}
.gradebook-score-editor{width:min(920px,100%);max-height:calc(100dvh - 40px);margin:auto;background:var(--surface,#fff);border:1px solid rgba(96,72,130,.22);border-radius:20px;box-shadow:0 28px 80px rgba(28,16,50,.28);display:flex;flex-direction:column;overflow:hidden}
.gradebook-score-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px 16px;border-bottom:1px solid rgba(96,72,130,.14)}
.gradebook-score-editor-head h2{margin:2px 0 0;font-size:24px}
.gradebook-score-editor-kicker{font-weight:800;color:var(--purple,#5a2e83)}
.gradebook-score-editor-close{min-width:40px;width:40px;height:40px;padding:0;font-size:26px;line-height:1;justify-content:center}
.gradebook-score-editor-body{padding:18px 22px;overflow:auto}
.gradebook-editor-material,.gradebook-editor-bulk{padding:14px 16px;margin-bottom:14px;border:1px solid rgba(96,72,130,.15);border-radius:14px;background:var(--surface-soft,#faf8fd)}
.gradebook-editor-material label,.gradebook-editor-bulk label{display:block;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.02em;color:var(--muted,#667085);margin-bottom:6px}
.gradebook-editor-material-value{white-space:pre-wrap;line-height:1.45;font-weight:600}
.gradebook-editor-bulk-row{display:flex;gap:8px;align-items:center}
.gradebook-editor-bulk-row input{width:150px;max-width:45vw}
.gradebook-editor-table-wrap{max-height:52dvh;border:1px solid rgba(96,72,130,.14);border-radius:14px}
.gradebook-editor-table{margin:0}
.gradebook-editor-table thead th{position:sticky;top:0;z-index:2;background:var(--surface-soft,#f7f4fb)}
.gradebook-editor-score-input{width:110px;max-width:100%;text-align:center;font-weight:700}
.gradebook-score-editor-actions{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px 18px;border-top:1px solid rgba(96,72,130,.14);background:var(--surface,#fff)}
html.gradebook-editor-open,body.gradebook-editor-open{overflow:hidden}
@media(max-width:680px){
 .gradebook-score-editor-backdrop{padding:0}
 .gradebook-score-editor{width:100%;min-height:100dvh;max-height:100dvh;border-radius:0;border:0;margin:0}
 .gradebook-score-editor-head{padding:16px}
 .gradebook-score-editor-body{padding:14px 16px}
 .gradebook-score-editor-actions{padding:12px 16px calc(12px + env(safe-area-inset-bottom))}
 .gradebook-editor-table-wrap{max-height:none}
 .gradebook-editor-bulk-row{align-items:stretch}
 .gradebook-editor-bulk-row input{width:100%;max-width:none;min-width:0}
 .gradebook-summary-header{min-width:104px}
 .gradebook-assessment-entry{min-width:80px}
}

/* MADINAH v0.48.0-dev.3.5.8.3.6.2.5.9 — Teacher Gradebook Two-Stage Runtime Hotfix */
.gradebook-score-display{display:inline-flex;min-width:54px;min-height:34px;align-items:center;justify-content:center;font-weight:700;color:var(--text,#1f2937);font-variant-numeric:tabular-nums}

/* MADINAH v0.48.0-dev.3.5.8.3.6.2.5.10 — compact Teacher Gradebook overview */
body[data-gradebook-two-stage-score-entry="1"] [data-gradebook-overview-legacy-row="1"],
body[data-gradebook-two-stage-score-entry="1"] [data-gradebook-overview-legacy-cell="1"][hidden]{display:none!important}

/* MADINAH v0.48.0-dev.3.5.8.3.6.2.5.12 — Teacher Gradebook Assessment Import UX */
.gradebook-editor-xlsx-tools{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;margin-bottom:14px;border:1px solid rgba(96,72,130,.15);border-radius:14px;background:var(--surface-soft,#faf8fd)}
.gradebook-editor-xlsx-copy{display:flex;flex-direction:column;gap:2px;min-width:0}
.gradebook-editor-xlsx-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.gradebook-editor-xlsx-actions form{margin:0;display:inline-flex}
.gradebook-editor-xlsx-actions .disabled{pointer-events:none;opacity:.48}
@media(max-width:640px){.gradebook-editor-xlsx-tools{align-items:stretch;flex-direction:column}.gradebook-editor-xlsx-actions{justify-content:stretch}.gradebook-editor-xlsx-actions>a,.gradebook-editor-xlsx-actions form,.gradebook-editor-xlsx-actions button{width:100%}.gradebook-editor-xlsx-actions button{justify-content:center}}

/* MADINAH v0.48.0-dev.3.5.8.3.6.2.5.14 — Teacher Gradebook Compact Action Toolbar */
.gradebook-editor-xlsx-tools{display:grid;grid-template-columns:minmax(280px,1fr) minmax(360px,auto);align-items:center;gap:18px}
.gradebook-editor-toolbar-bulk-slot{min-width:0}
.gradebook-editor-toolbar-bulk-slot .gradebook-editor-bulk{margin:0;padding:0;border:0;background:transparent}
.gradebook-editor-toolbar-bulk-slot .gradebook-editor-bulk label{margin-bottom:6px}
.gradebook-editor-xlsx-side{display:flex;flex-direction:column;align-items:flex-end;gap:7px;min-width:0}
.gradebook-editor-xlsx-side .gradebook-editor-xlsx-copy{text-align:right}
.gradebook-editor-xlsx-side .gradebook-editor-xlsx-actions{justify-content:flex-end}
@media(max-width:780px){
 .gradebook-editor-xlsx-tools{grid-template-columns:1fr;align-items:stretch;gap:14px}
 .gradebook-editor-xlsx-side{align-items:stretch}
 .gradebook-editor-xlsx-side .gradebook-editor-xlsx-copy{text-align:left}
 .gradebook-editor-xlsx-side .gradebook-editor-xlsx-actions{justify-content:stretch}
}
