/* OMI Pro 8.3 — lightweight native-feel shell shared by web/PWA/Android wrapper */
:root{
  --omi-safe-top: env(safe-area-inset-top, 0px);
  --omi-safe-bottom: env(safe-area-inset-bottom, 0px);
  --omi-safe-left: env(safe-area-inset-left, 0px);
  --omi-safe-right: env(safe-area-inset-right, 0px);
  --omi-shell-green:#075f4d;
  --omi-shell-green-2:#0d7a61;
  --omi-shell-ink:#13231d;
  --omi-shell-muted:#63736d;
  --omi-shell-line:#dbe5e1;
  --omi-shell-surface:rgba(255,255,255,.94);
  --omi-shell-shadow:0 18px 54px rgba(18,62,52,.14);
  --omi-shell-shadow-deep:0 28px 80px rgba(16,53,43,.20);
}
/* v6.1 critical recovery baseline */
:root{
  --bg:#f4f7f6;--panel:#fff;--ink:#14231e;--muted:#62726c;--line:#dce5e1;
  --green:#086451;--green2:#123e34;--gold:#c99026;--danger:#aa3939;
}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:#f4f7f6;color:#14231e;min-height:100dvh;line-height:1.45}
a{color:inherit}
.topbar,.app-header{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border-bottom:1px solid #dce5e1}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none}.brand strong{display:block}.brand small{display:block;color:#62726c}
.mark{width:43px;height:43px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(145deg,#086451,#123e34);color:#fff;font-weight:900}
.btn,.icon-btn{font:inherit;text-decoration:none;border:0;cursor:pointer}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 15px;border-radius:13px;font-weight:800}.btn.primary{background:#086451;color:#fff}.btn.soft{background:#fff;border:1px solid #dce5e1}.icon-btn{width:42px;height:42px;border-radius:13px;background:#fff;border:1px solid #dce5e1}
.notice{padding:11px 13px;border-radius:13px;background:#edf6f2;border:1px solid #cfe5dc;color:#235d4d}.notice.warn{background:#fff7e7;border-color:#ecd6a7;color:#72510f}
@media(max-width:760px){body{font-size:16px}.topbar,.app-header{min-height:62px}}

html{scrollbar-gutter:auto;scroll-behavior:auto;overscroll-behavior-y:auto;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{overflow-x:hidden;touch-action:pan-y;overscroll-behavior-y:none;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:transparent;padding-bottom:0}
button,a,input,select,textarea{touch-action:manipulation}
button,a{-webkit-user-select:none;user-select:none}
input,select,textarea{-webkit-user-select:text;user-select:text}
img,svg{max-width:100%;height:auto}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}

/* Native header treatment */
.topbar,.app-header,body.omi-page .top,body.omi-page header:not(.app-header):not(.topbar){
  padding-top:max(10px,var(--omi-safe-top))!important;
  contain:layout style;
}
.topbar{box-shadow:0 5px 22px rgba(16,53,43,.055)}

/* Global press / focus */
.btn,.icon-btn,.option,.mode-card,.home-subject,.menu-grid a,.subject,.palette button,.omi-nav-item{
  will-change:auto;
}
@media(hover:hover){.btn:hover,.icon-btn:hover,.omi-nav-item:hover{filter:saturate(1.04)}}
.btn:active,.icon-btn:active,.option:active,.mode-card:active,.home-subject:active,.subject:active,.omi-nav-item:active{transform:scale(.975)!important}
:focus-visible{outline:3px solid color-mix(in srgb,var(--omi-shell-green) 28%,transparent)!important;outline-offset:3px!important}

/* Page entrance and loading */
.omi-app-ready .screen.active{animation:omi-rise .22s cubic-bezier(.2,.75,.2,1) both}
@keyframes omi-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.omi-loader{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:linear-gradient(155deg,#f8fbfa,#e9f4f0);transition:opacity .28s ease,visibility .28s ease}
.omi-loader.hidden{opacity:0;visibility:hidden;pointer-events:none}
.omi-loader-card{display:grid;place-items:center;gap:13px;padding:26px;text-align:center}
.omi-loader-orbit{position:relative;width:78px;height:78px;border-radius:26px;background:linear-gradient(145deg,#0d7a61,#063f34);box-shadow:0 24px 50px rgba(7,95,77,.26),inset 0 1px 0 rgba(255,255,255,.35)}
.omi-loader-orbit::before,.omi-loader-orbit::after{content:"";position:absolute;border-radius:50%}
.omi-loader-orbit::before{inset:14px;border:4px solid rgba(255,255,255,.22);border-top-color:#fff;animation:omi-spin .8s linear infinite}
.omi-loader-orbit::after{width:12px;height:12px;background:#f4c96a;left:33px;top:33px;box-shadow:0 0 20px rgba(244,201,106,.65)}
.omi-loader b{font-size:1rem}.omi-loader small{color:var(--omi-shell-muted)}
@keyframes omi-spin{to{transform:rotate(360deg)}}
.omi-loading .btn.primary,.btn.omi-busy{position:relative;color:transparent!important;pointer-events:none}
.omi-loading .btn.primary::after,.btn.omi-busy::after{content:"";position:absolute;width:18px;height:18px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:omi-spin .65s linear infinite}

/* Toast */
.omi-toast-stack{position:fixed;z-index:9998;right:14px;bottom:calc(92px + var(--omi-safe-bottom));display:grid;gap:8px;width:min(360px,calc(100vw - 28px));pointer-events:none}
.omi-toast{pointer-events:auto;background:#153d33;color:#fff;border:1px solid rgba(255,255,255,.14);box-shadow:var(--omi-shell-shadow);border-radius:16px;padding:12px 14px;display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;animation:omi-toast-in .25s ease both}
.omi-toast.ok::before{content:"✓"}.omi-toast.warn::before{content:"!"}.omi-toast::before{width:25px;height:25px;display:grid;place-items:center;border-radius:8px;background:rgba(255,255,255,.14);font-weight:900}
@keyframes omi-toast-in{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}

/* Professional footer */
.omi-site-footer{max-width:1240px;margin:24px auto 0;padding:24px max(16px,3vw) calc(104px + var(--omi-safe-bottom));color:var(--omi-shell-muted);font-size:.78rem}
.omi-site-footer-inner{display:flex;justify-content:space-between;align-items:center;gap:14px;padding-top:18px;border-top:1px solid var(--omi-shell-line)}
.omi-site-footer strong{color:var(--omi-shell-ink)}
.omi-site-footer-links{display:flex;gap:12px;flex-wrap:wrap}.omi-site-footer a{text-decoration:none;font-weight:750}

/* Bottom app navigation — HP / small tablet */
.omi-bottom-nav{position:fixed;z-index:120;left:50%;bottom:max(10px,var(--omi-safe-bottom));transform:translateX(-50%);width:min(560px,calc(100vw - 20px));height:72px;border:1px solid rgba(213,226,220,.94);border-radius:24px;background:#fff;box-shadow:0 12px 34px rgba(16,52,42,.18),inset 0 1px 0 #fff;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;padding:7px 8px}
.omi-nav-item{height:56px;border-radius:17px;text-decoration:none;color:#60716a;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:.64rem;font-weight:820;transition:.18s ease;min-width:0}
.omi-nav-item svg{width:21px;height:21px;stroke:currentColor;stroke-width:2;fill:none}
.omi-nav-item.active{color:#075f4d;background:#edf7f3}
.omi-nav-item.center{height:64px;margin-top:-25px;color:#fff;background:linear-gradient(145deg,#0b8065,#064d40);border-radius:22px;box-shadow:0 13px 32px rgba(7,95,77,.33),inset 0 1px 0 rgba(255,255,255,.32);font-size:.67rem}
.omi-nav-item.center svg{width:25px;height:25px}
.omi-exam-active .omi-bottom-nav{transform:translate(-50%,110px);opacity:0;pointer-events:none}
.omi-exam-active .omi-site-footer{display:none}

/* Mobile/native app mode */
@media(max-width:760px){
  body{padding-bottom:calc(92px + var(--omi-safe-bottom))}
  body.omi-exam-active{padding-bottom:0}
  .topbar,.app-header{min-height:62px!important;padding-left:12px!important;padding-right:12px!important}
  .topbar .brand strong,.app-header .brand h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:49vw}
  .shell,.home-main,body.omi-page .wrap,body.omi-page main{padding-bottom:24px!important}
  .omi-site-footer-inner{align-items:flex-start;flex-direction:column}
  .omi-toast-stack{bottom:calc(96px + var(--omi-safe-bottom))}
}

/* v8.7 mobile rendering contract: one predictable vertical scroller per screen. */
@media (pointer:coarse), (max-width:760px){
  html{scroll-behavior:auto;overscroll-behavior-y:auto;scrollbar-gutter:auto}
  body{overscroll-behavior-y:auto;-webkit-overflow-scrolling:touch}
  body:not(.omi-exam-active):not(.omi-secure-exam){overflow-y:auto!important;touch-action:pan-y!important}
  .topbar,.app-header,body.omi-page .top,body.omi-page header:not(.app-header):not(.topbar){contain:none;backdrop-filter:none!important}
  .home-section-v5,.home-tools-v5,.home-note-v5,.student,.omi-monitor .card{content-visibility:visible;contain:none}
  .student,.home-tool-card,.home-subject{contain:layout style}
  .btn,.icon-btn,.option,.mode-card,.home-subject,.subject,.omi-nav-item{transition-duration:.14s}
}
@media(min-width:761px){.omi-bottom-nav{display:none}.omi-site-footer{padding-bottom:28px}}

/* Tablet enhancements */
@media(min-width:761px) and (max-width:1100px){
  .card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .home-subjects{gap:14px}
}

/* Desktop content polish */
@media(min-width:1101px){.shell{padding-top:34px}}


/* Mobile performance budget: avoid long-lived GPU layers and expensive live blurs while scrolling. */
@media(max-width:760px){
  .topbar,.app-header,body.omi-page .top,body.omi-page header:not(.app-header):not(.topbar){
    backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
    background-color:rgba(255,255,255,.985)!important;
  }
  .omi-bottom-nav{backdrop-filter:none;-webkit-backdrop-filter:none;background:#fff;box-shadow:0 10px 30px rgba(16,52,42,.18),inset 0 1px 0 #fff}
  .btn,.icon-btn,.option,.mode-card,.home-subject,.menu-grid a,.subject,.palette button,.omi-nav-item{will-change:auto!important}
  .float-card{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;background:#fff!important}
}
/* Long catalog lists render lazily where supported, reducing initial layout/paint cost. */
body.omi-catalog .card,body.omi-modules .module{content-visibility:auto;contain-intrinsic-size:180px}

/* v8.3 scroll performance budget. Keep the main thread free while lists move. */
.home-section-v5,.home-tools-v5,.home-note-v5,.student,.omi-monitor .card{content-visibility:auto;contain-intrinsic-size:auto 96px}
.home-visual-v5 img{animation:none!important;filter:none!important}
.float-card,.topbar,.app-header,.omi-monitor .tabs{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.student,.home-tool-card,.home-subject{contain:layout style paint}
@media(pointer:coarse){*{scroll-snap-type:none!important}.btn,.option,.home-subject,.home-tool-card{transition-duration:.12s!important}}

/* OMI Pro 7 — focused mobile exam viewport. The page shell stays fixed; only the
   question surface scrolls when its content is taller than the available screen. */
.omi-security-blocker{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;padding:24px;background:rgba(9,24,20,.96);color:#fff;text-align:center}
.omi-security-blocker>div{width:min(440px,100%);padding:28px;border-radius:24px;background:#153d33;border:1px solid rgba(255,255,255,.15);box-shadow:0 28px 90px rgba(0,0,0,.45)}
.omi-security-blocker b{font-size:1.35rem}.omi-security-blocker p{opacity:.82;line-height:1.6}
/* Tekan lama tidak membuka seleksi/callout pada layar ujian. Scroll vertikal
   tetap aktif pada kartu soal dan gestur ini tidak dihitung sebagai pelanggaran. */
body.omi-secure-exam .screen.active,
body.omi-secure-exam .screen.active *{
  -webkit-user-select:none!important;
  user-select:none!important;
  -webkit-touch-callout:none!important;
}
@media(max-width:760px){
  body.omi-exam-active,body.omi-secure-exam{height:100dvh;overflow:hidden;padding:0!important}
  body.omi-exam-active .app-header,body.omi-secure-exam .app-header,body.omi-exam-active .topbar,body.omi-secure-exam .topbar{display:none!important}
  body.omi-exam-active .screen.active,body.omi-secure-exam .screen.active{height:100dvh;max-height:100dvh;overflow:hidden;margin:0!important}
  body.omi-exam-active .exam-layout.active,body.omi-secure-exam .exam-layout.active{height:100dvh;display:block!important;padding:8px 8px calc(72px + var(--omi-safe-bottom))!important}
  body.omi-exam-active .exam-main,body.omi-secure-exam .exam-main{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden}
  body.omi-exam-active .question-card,body.omi-secure-exam .question-card{min-height:0;height:100%;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:14px!important;border-radius:16px!important}
  body.omi-exam-active .exam-top,body.omi-secure-exam .exam-top{margin:0 0 6px!important;min-height:38px}
  body.omi-exam-active .q-nav,body.omi-secure-exam .q-nav{position:fixed!important;left:0;right:0;bottom:0;margin:0!important;padding:8px 8px max(8px,var(--omi-safe-bottom))!important;min-height:64px}
  body.omi-exam-active .sidebar,body.omi-secure-exam .sidebar{inset:8px!important;height:calc(100dvh - 16px)!important;z-index:140!important}
  body.omi-exam-active .omi-bottom-nav,body.omi-secure-exam .omi-bottom-nav{display:none!important}
}

/* OMI Pro 8.5 - responsive contract for HP, tablet, and desktop. */
html,body{max-width:100%;overflow-x:hidden}
main,.wrap,.shell{min-width:0}
.table-wrap{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
table{font-variant-numeric:tabular-nums}
input,select,textarea{max-width:100%}
@media(pointer:coarse){button,.btn,.icon-btn,a.omi-nav-item,.menu-grid a{min-height:44px}}
@media(max-width:760px){
  input,select,textarea{font-size:16px!important}
  .topbar,.app-header{position:sticky!important;top:0;z-index:80}
  .omi-bottom-nav{width:min(560px,calc(100vw - 16px));bottom:max(6px,var(--omi-safe-bottom));border-radius:22px}
  .omi-nav-item{font-size:clamp(.55rem,2.5vw,.64rem)}
  .omi-nav-item span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  body.omi-page .wrap,body.omi-page main,.shell{width:100%;max-width:100%}
}
@media(max-width:390px){
  .omi-bottom-nav{padding-left:4px;padding-right:4px}
  .omi-nav-item svg{width:19px;height:19px}
  .omi-nav-item.center{margin-top:-20px;height:61px}
}
@media(min-width:761px) and (max-width:1100px){
  body.omi-page .wrap,.shell,.home-main-v5{width:min(100%,980px);padding-left:20px!important;padding-right:20px!important}
  .field-grid,.card-grid{gap:12px}
}
@media(orientation:landscape) and (max-height:520px) and (max-width:920px){
  .omi-bottom-nav{height:60px;bottom:4px}.omi-nav-item{height:47px}.omi-nav-item.center{height:56px;margin-top:-18px}
  body:not(.omi-exam-active){padding-bottom:72px}
}

/* OMI Pro 8.8.0 — kontrak scroll lintas Chrome Android, Safari, WebView,
   tablet, dan desktop. Halaman biasa tidak boleh mewarisi scroll lock dari
   menu/modal. Mode ujian tetap memakai viewport terkunci dan area soal sendiri. */
html{
  height:auto!important;
  min-height:100%;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  overscroll-behavior-y:auto;
  touch-action:pan-y!important;
  -webkit-overflow-scrolling:touch;
}
body:not(.omi-exam-active):not(.omi-secure-exam):not(.menu-open):not(.drawer-open){
  position:relative!important;
  height:auto!important;
  min-height:100vh!important;
  min-height:100svh!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  overscroll-behavior-y:auto!important;
  touch-action:pan-y!important;
  -webkit-overflow-scrolling:touch;
}
.app-menu .menu-grid,.scanner-panel,.drawer-panel,.sidebar,.omi-security-blocker>div{
  touch-action:pan-y!important;
  overflow-y:auto;
  overscroll-behavior-y:contain;
  -webkit-overflow-scrolling:touch;
}
.omi-security-blocker>div{max-height:calc(100svh - 32px)}
[id]{scroll-margin-top:84px}
input,select,textarea{scroll-margin-block:110px 38vh}

@media(max-width:760px){
  body.omi-admin{padding-bottom:max(24px,var(--omi-safe-bottom))!important}
  body.omi-admin .topbar{
    position:relative!important;
    inset:auto!important;
    align-items:stretch!important;
    flex-direction:column!important;
    gap:10px!important;
  }
  body.omi-admin .topbar>.brand{width:100%;min-width:0}
  body.omi-admin .topbar>div{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr));
    width:100%;
    gap:7px!important;
  }
  body.omi-admin .topbar>div>.btn{
    width:100%;
    min-width:0;
    white-space:normal;
    line-height:1.25;
    text-align:center;
  }
  body.omi-monitor .actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  body.omi-monitor .actions>.btn,body.omi-monitor .actions>.quota-box{width:100%;min-width:0}
  body.omi-monitor .actions>.quota-box{grid-column:1/-1}
}
@media(max-width:390px){
  body.omi-admin .topbar>div,body.omi-monitor .actions{grid-template-columns:1fr}
  body.omi-monitor .actions>.quota-box{grid-column:auto}
}

/* OMI Pro 8.8.0 — penguatan responsif seluruh menu dan fitur. */
:where(main,section,article,header,footer,nav,aside,form,fieldset,div){min-width:0}
:where(h1,h2,h3,h4,p,li,td,th,.brand,.btn,.notice){overflow-wrap:anywhere}
:where(img,video,canvas,svg,iframe){max-width:100%}
:where(.table-wrap,.table-scroll,[class*="table-scroll"]){max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}
:where(.table-scroll,[class*="table-scroll"]){touch-action:pan-x pan-y!important;scroll-snap-type:none!important}

.omi-admin-nav{position:fixed;left:50%;bottom:max(8px,env(safe-area-inset-bottom));z-index:120;transform:translateX(-50%);display:flex;gap:3px;width:min(680px,calc(100% - 16px));padding:6px;border:1px solid #d7e3de;border-radius:18px;background:rgba(255,255,255,.96);box-shadow:0 14px 40px rgba(13,55,45,.17);backdrop-filter:blur(12px)}
.omi-admin-nav a{min-width:0;flex:1;display:flex;align-items:center;justify-content:center;gap:5px;min-height:45px;border-radius:12px;color:#52635d;text-decoration:none;font-size:.68rem;font-weight:850}
.omi-admin-nav a.active{background:#e4f3ec;color:#075f4d}.omi-admin-nav svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
body.omi-admin{padding-bottom:max(86px,calc(env(safe-area-inset-bottom) + 76px))!important}
@media(max-width:620px){.omi-admin-nav{overflow-x:auto;justify-content:flex-start}.omi-admin-nav a{flex:0 0 64px;flex-direction:column;gap:2px;min-height:50px}.omi-admin-nav svg{width:19px;height:19px}}
:where(dialog,.modal,.drawer,.app-menu,.scanner-panel){max-width:100vw}

@media(max-width:760px){
  body{max-width:100vw}
  body.omi-page .wrap,.shell,.home-main,.home-main-v5,.screen{
    width:100%;max-width:100%;padding-left:max(10px,var(--omi-safe-left,0px))!important;padding-right:max(10px,var(--omi-safe-right,0px))!important
  }
  .topbar,.app-header,body.omi-page .top{gap:8px!important}
  .topbar .brand,.app-header .brand{min-width:0;max-width:100%}
  .btn{max-width:100%;white-space:normal;text-align:center;line-height:1.25}
  .card-grid,.field-grid,.detail-grid,.result-grid,.result-layout,.metric-grid{min-width:0}
  .app-menu,.drawer,.scanner-panel{inset-inline:max(8px,var(--omi-safe-left,0px)) max(8px,var(--omi-safe-right,0px));max-height:calc(100svh - 16px)}
  input,select,textarea{max-width:100%;font-size:16px}
}

/* Touch permissions must include both axes on ancestors of scrollable tables. */
@media (pointer:coarse), (max-width:760px){
  html{scroll-behavior:auto!important;overscroll-behavior-y:auto!important;scrollbar-gutter:auto!important}
  body:not(.omi-exam-active):not(.omi-secure-exam){height:auto!important;min-height:100svh!important;overflow-y:auto!important;touch-action:pan-x pan-y pinch-zoom!important}
  .home-section-v5,.home-tools-v5,.home-note-v5,.student,.omi-monitor .card{content-visibility:visible!important;contain:none!important}
  .topbar,.app-header,body.omi-page .top,body.omi-page header:not(.app-header):not(.topbar){contain:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
}

/* OMI 8.9: consistent app chrome; existing page actions remain below it. */
.omi-app-bar{display:none}
@media(max-width:760px){body.omi-login.omi-has-app-bar{display:block;padding:0 0 24px!important}body.omi-login.omi-has-app-bar .login{margin:16px auto;width:min(440px,calc(100% - 24px))}}
.omi-menu-dialog{position:fixed;inset:0 0 0 auto;margin:0;width:min(390px,94vw);height:100dvh;max-height:100dvh;border:0;border-radius:20px 0 0 20px;padding:0;background:#f5f8f6;color:#172d25;overscroll-behavior:contain}
.omi-menu-dialog::backdrop{background:#102d2366}
.omi-menu-heading{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;background:#fff;padding:14px 18px;padding-top:max(14px,env(safe-area-inset-top));border-bottom:1px solid #dbe5e1;z-index:1}
.omi-menu-heading h2{font-size:18px;margin:0}.omi-menu-heading button,.omi-bar-menu{width:44px;height:44px;border:1px solid #dbe5e1;background:#f0f6f3;border-radius:13px;font-size:24px;color:#075f4d;cursor:pointer}
.omi-menu-dialog nav{display:grid;gap:7px;padding:14px 14px max(24px,env(safe-area-inset-bottom))}
.omi-menu-dialog nav a{display:block;text-decoration:none;padding:12px 14px;background:#fff;border:1px solid #dbe5e1;border-radius:14px}
.omi-menu-dialog nav small{display:block;color:#64776e;margin-top:3px}
html,body,.screen,.q-card,.question-card,.q-body,.question-body,.stimulus,.table-wrap,.table-scroll{touch-action:pan-x pan-y pinch-zoom!important}
@media(max-width:760px){
 .omi-app-bar{position:sticky;top:0;z-index:125;display:flex;gap:10px;align-items:center;height:calc(64px + env(safe-area-inset-top));padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top));background:#fff;border-bottom:1px solid #dbe5e1}
 .omi-bar-home{display:flex;flex:0 0 36px}.omi-bar-home img{border-radius:11px}
 .omi-bar-title{flex:1;min-width:0;line-height:1.3}.omi-bar-title strong{display:block;font-size:16px;color:#075f4d}.omi-bar-title span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;color:#60736a}
 body.omi-has-app-bar:not(.omi-exam-active):not(.omi-secure-exam)>.topbar,body.omi-has-app-bar:not(.omi-exam-active):not(.omi-secure-exam)>.app-header,body.omi-has-app-bar.omi-page>header{position:relative!important;top:auto!important;z-index:40!important;min-height:0!important;box-shadow:none!important}
 body.omi-has-app-bar>.topbar>.brand{display:none}
 body.omi-exam-active>.omi-app-bar,body.omi-secure-exam>.omi-app-bar{display:none}
 .omi-has-app-bar .app-menu{top:calc(64px + env(safe-area-inset-top))!important;max-height:calc(100dvh - 64px - env(safe-area-inset-top))!important}
}


/* OMI Pro V9 Unified Student App Shell
   One visual shell: one header, one content scroller, one bottom navigation.
*/
:root{
  --omi-v9-header-h:64px;
  --omi-v9-nav-h:76px;
  --omi-v9-green:#086451;
  --omi-v9-line:#dbe5e1;
  --omi-v9-bg:#f4f7f6;
}
html{overflow-x:hidden;scroll-padding-top:calc(var(--omi-v9-header-h) + env(safe-area-inset-top));}
body{overflow-x:hidden;min-height:100dvh;}
/* The generated app shell is the only non-exam student header. */
body.omi-has-app-bar > header.omi-topbar,
body.omi-has-app-bar > header.app-header,
body.omi-has-app-bar > header.topbar,
body.omi-has-app-bar > main > header.top,
body.omi-has-app-bar > header.top{display:none!important}
body.omi-has-app-bar > .omi-app-bar{
  position:sticky!important;
  top:0!important;
  z-index:125!important;
  display:flex!important;
  flex:0 0 auto;
  align-items:center;
  gap:10px;
  width:100%;
  min-height:calc(var(--omi-v9-header-h) + env(safe-area-inset-top));
  padding:calc(8px + env(safe-area-inset-top)) 14px 8px;
  background:rgba(255,255,255,.97);
  border-bottom:1px solid var(--omi-v9-line);
  box-shadow:0 3px 18px rgba(18,62,52,.055);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}
.omi-v9-brandmark{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(145deg,#086451,#075042);color:#fff;font-weight:900;font-size:15px;flex:none}
.omi-bar-home{width:40px;height:40px;flex:0 0 40px;display:grid!important;place-items:center;text-decoration:none;border-radius:12px;background:#eef6f3;border:1px solid #dce9e4;overflow:hidden}
.omi-bar-home img{width:34px;height:34px;border-radius:10px;display:block}
.omi-bar-title{min-width:0;flex:1;line-height:1.15}
.omi-bar-title strong{display:block;font-size:17px;font-weight:900;color:#15251f;letter-spacing:-.02em}
.omi-bar-title span{display:block;margin-top:2px;font-size:12px;color:#66766f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.omi-bar-menu{width:44px!important;height:44px!important;min-height:44px!important;flex:none;border:1px solid #dbe5e1!important;background:#eef6f3!important;border-radius:13px!important;color:#075f4d!important;font-size:23px!important;line-height:1!important;display:grid;place-items:center;cursor:pointer}
/* Do not let old local app headers reappear through inline styles. */
body.omi-has-app-bar .legacy-app > .app-header,
body.omi-has-app-bar.legacy-app > .app-header{display:none!important}
/* Single vertical scrolling surface on normal student pages. */
body.omi-has-app-bar:not(.omi-exam-active):not(.omi-secure-exam){
  padding-top:0!important;
  padding-bottom:calc(var(--omi-v9-nav-h) + 24px + env(safe-area-inset-bottom))!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
}
body.omi-has-app-bar:not(.omi-exam-active):not(.omi-secure-exam) > main,
body.omi-has-app-bar:not(.omi-exam-active):not(.omi-secure-exam) > .archive-main,
body.omi-has-app-bar:not(.omi-exam-active):not(.omi-secure-exam) > .guidance-main{
  min-height:0;
}
/* Student navigation: exactly four primary destinations. */
body.omi-has-app-bar > .omi-bottom-nav{
  position:fixed!important;
  z-index:130!important;
  left:50%!important;
  right:auto!important;
  bottom:max(10px,env(safe-area-inset-bottom))!important;
  transform:translateX(-50%)!important;
  width:min(560px,calc(100vw - 20px))!important;
  height:72px!important;
  padding:7px 8px!important;
  border:1px solid rgba(213,226,220,.96)!important;
  border-radius:24px!important;
  background:rgba(255,255,255,.97)!important;
  box-shadow:0 12px 34px rgba(16,52,42,.18),inset 0 1px 0 #fff!important;
  backdrop-filter:blur(14px)!important;
  -webkit-backdrop-filter:blur(14px)!important;
  display:grid!important;
  grid-template-columns:repeat(4,1fr)!important;
  gap:4px!important;
}
body.omi-has-app-bar > .omi-bottom-nav a,
body.omi-has-app-bar > .omi-bottom-nav .omi-nav-item{
  min-height:56px!important;height:56px!important;border-radius:17px!important;
  display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;
  gap:3px!important;padding:4px!important;text-decoration:none!important;color:#60716a!important;
  font-size:12px!important;font-weight:700!important;line-height:1.05!important;
}
body.omi-has-app-bar > .omi-bottom-nav a svg{width:21px;height:21px;stroke:currentColor;stroke-width:2;fill:none}
body.omi-has-app-bar > .omi-bottom-nav a.active{color:#075f4d!important;background:#edf7f3!important;font-weight:850!important}
body.omi-has-app-bar.omi-exam-active > .omi-bottom-nav,
body.omi-has-app-bar.omi-secure-exam > .omi-bottom-nav{display:none!important}
/* Global app shell menu stays inside the shell; it must not create a second page header. */
.omi-menu-dialog{z-index:1000!important}
.omi-menu-heading{padding-top:max(14px,env(safe-area-inset-top))!important}
/* Avoid nested scroll containers on the legacy subject apps. */
body.legacy-app:not(.omi-exam-active) .screen.active{overflow:visible!important}
body.legacy-app:not(.omi-exam-active) main{overflow:visible!important}
@media(max-width:760px){
  .omi-bar-title strong{font-size:16px}
  body.omi-has-app-bar > .omi-bottom-nav{width:calc(100vw - 20px)}
}
@media(min-width:761px){
  body.omi-has-app-bar > .omi-app-bar{padding-left:max(18px,calc((100vw - 1120px)/2));padding-right:max(18px,calc((100vw - 1120px)/2));}
  body.omi-has-app-bar > .omi-bottom-nav{display:none!important}
}
@media(prefers-reduced-motion:reduce){body.omi-has-app-bar > .omi-bottom-nav a{transition:none!important}}
