/* 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-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:stable;scroll-behavior:smooth;overscroll-behavior-y:none;-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))}
}
@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}
@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.6.1 — 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}
}
