:root{--bg:#0f151c;--surface:#191f28;--surface-2:#1f2732;--surface-3:#262f3b;--canvas:#14181d;--viewport:#0f1317;--line:#2a333f;--line-2:#3b4653;--text:#e6ebf1;--text-strong:#f5f8fb;--muted:#93a1b0;--faint:#6d7986;--accent:#41a7dd;--accent-hi:#5dbdee;--accent-ink:#06131d;--accent-soft:rgba(65,167,221,.14);--brand-2:#4fd19a;--ok:#4fd19a;--ok-bg:#123f2c;--ok-line:#1d6a49;--warn:#e0b23a;--warn-bg:#3c3113;--warn-line:#6f5728;--amber:#d1904f;--danger:#e26565;--danger-bg:#3a1a1a;--danger-line:#7a3535;--info:#7fd4ff;--r-xs:5px;--r-sm:7px;--r:10px;--r-lg:14px;--r-pill:999px;--sh-1:0 1px 2px rgba(0,0,0,.35);--sh-2:0 10px 28px rgba(0,0,0,.42);--sh-3:0 26px 64px rgba(0,0,0,.55);--ring:0 0 0 3px rgba(65,167,221,.32);--font:Segoe UI,system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;--mono:Consolas,"SF Mono",Menlo,monospace;--gap:16px;--sidebar-w:246px;--sidebar-w-min:70px;--topbar-h:58px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.5;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body.modal-open{overflow:hidden}h1,h2,h3,h4{margin:0;font-weight:700;color:var(--text-strong);letter-spacing:-.01em}h1{font-size:21px}h2{font-size:17px}h3{font-size:15px}h4{font-size:13.5px}p{margin:0 0 8px}p:last-child{margin-bottom:0}a{color:var(--accent-hi);text-decoration:none}a:hover{text-decoration:underline}small{font-size:12px}b{font-weight:700}ul,ol{margin:0;padding-left:18px}li{margin:3px 0}hr{border:0;border-top:1px solid var(--line);margin:14px 0}::selection{background:#41a7dd59;color:#fff}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:#313c49;border-radius:var(--r-pill);border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:#41505f;background-clip:content-box}*::-webkit-scrollbar-track{background:transparent}:focus-visible{outline:none;box-shadow:var(--ring)}.icon{flex:none;vertical-align:-3px}pre{white-space:pre-wrap;word-break:break-word;font-size:12px;font-family:var(--mono);background:var(--viewport);padding:9px 10px;border-radius:var(--r-sm);border:1px solid var(--line);margin:6px 0;color:#cdd6df}code{font-family:var(--mono);font-size:12.5px;background:var(--canvas);border:1px solid var(--line);border-radius:4px;padding:1px 5px}.dim{color:var(--muted);font-size:13px}.err{color:var(--danger)}.ok{color:var(--ok)}.mono{font-family:var(--mono)}.spacer{flex:1}.ta-r{text-align:right}.ta-c{text-align:center}.u-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.u-row--end{justify-content:flex-end}.u-row--between{justify-content:space-between;width:100%}.u-grid{display:grid;gap:var(--gap)}.u-grid--auto{grid-template-columns:repeat(auto-fill,minmax(var(--grid-min,220px),1fr))}.mt0{margin-top:0}.mb0{margin-bottom:0}.nowrap{white-space:nowrap}.count{font-family:var(--mono);font-size:12px;color:var(--muted)}button{font:inherit;font-weight:600;font-size:13px;color:#fff;background:var(--surface-3);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:8px 13px;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .06s ease,box-shadow .15s ease}button:hover:not(:disabled){background:#2f3947;border-color:#4b5764}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;line-height:1.2}.btn--primary{background:linear-gradient(180deg,var(--accent),#3184b4);border-color:#57b4e6;color:var(--accent-ink);box-shadow:0 6px 16px #3184b447}.btn--primary:hover:not(:disabled){background:linear-gradient(180deg,var(--accent-hi),#3b95c6);border-color:#7cc8ee;box-shadow:0 8px 20px #3184b45c}.btn--sec{background:var(--surface-2);border-color:var(--line-2);color:var(--text)}.btn--sec:hover:not(:disabled){background:var(--surface-3)}.btn--ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn--ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text);border-color:transparent}.btn--danger{background:linear-gradient(180deg,#c9524f,#9c3a38);border-color:#d9706d;color:#fff}.btn--danger:hover:not(:disabled){background:linear-gradient(180deg,#d9615e,#a94341)}.btn--ok{background:linear-gradient(180deg,#3fbf85,#2a8f63);border-color:#57d69b;color:#04160e}.btn--sm{padding:5px 10px;font-size:12px;border-radius:var(--r-xs)}.btn--lg{padding:11px 20px;font-size:14px}.btn--icon{padding:0;width:34px;height:32px}.btn--icon.btn--sm{width:28px;height:26px}.btn--block{display:flex;width:100%}.btn.is-loading{pointer-events:none}.btn-load{background:var(--surface-2);border:1px solid var(--line-2);color:var(--text)}.btn-del{background:linear-gradient(180deg,#c9524f,#9c3a38);border:1px solid #d9706d;color:#fff}.btn-link{display:inline-flex;align-items:center;gap:6px;color:var(--info);font-size:13px;border:1px solid var(--line-2);padding:7px 11px;border-radius:var(--r-sm);background:var(--surface);white-space:nowrap;text-decoration:none}.btn-link:hover{border-color:var(--accent);color:#bfe7ff;text-decoration:none;background:var(--surface-2)}.btn-group{display:inline-flex;border:1px solid var(--line-2);border-radius:var(--r-sm);overflow:hidden}.btn-group button{border:0;border-radius:0;background:var(--surface);color:var(--muted);padding:6px 11px;font-size:12px}.btn-group button+button{border-left:1px solid var(--line)}.btn-group button.is-active{background:var(--accent-soft);color:#fff;box-shadow:inset 0 -2px 0 var(--accent)}button.mini{padding:3px 9px;font-size:11.5px;margin-left:4px;background:var(--surface-2);border-color:var(--line-2)}button.mini.danger{background:var(--danger-bg);border-color:var(--danger-line);color:#ffb4b4}input,textarea,select{font:inherit;font-size:13.5px;color:var(--text);background:var(--canvas);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:8px 10px;margin:4px 0;width:100%;transition:border-color .15s ease,box-shadow .15s ease}input::placeholder,textarea::placeholder{color:#5f6b78}input:hover,textarea:hover,select:hover{border-color:#4b5764}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}input[type=checkbox],input[type=radio]{width:auto;margin:0;accent-color:var(--accent);cursor:pointer}input[type=range]{width:auto;accent-color:var(--accent)}textarea{font-family:var(--mono);resize:vertical;min-height:70px;line-height:1.5}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 15px) 15px,calc(100% - 10px) 15px;background-size:5px 5px;background-repeat:no-repeat;padding-right:30px}.field{display:block;margin:0 0 11px}.field__label{display:block;font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--muted);margin-bottom:4px;text-transform:uppercase}.field__label i{color:var(--danger);font-style:normal;margin-left:3px}.field .input{margin:0}.field__hint{display:block;margin-top:4px;font-size:11.5px}.field__error{display:block;margin-top:4px;font-size:11.5px;color:var(--danger)}.field--error .input{border-color:var(--danger-line);box-shadow:0 0 0 3px #e2656529}.search{display:inline-flex;align-items:center;gap:7px;background:var(--canvas);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:0 10px;color:var(--faint);min-width:190px}.search:focus-within{border-color:var(--accent);box-shadow:var(--ring)}.search input{border:0;background:transparent;padding:8px 0;margin:0;box-shadow:none}.search input:focus{box-shadow:none}.switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:var(--text)}.switch input{position:absolute;opacity:0;width:0;height:0}.switch__track{width:36px;height:20px;border-radius:var(--r-pill);background:var(--surface-3);border:1px solid var(--line-2);position:relative;transition:background .18s ease,border-color .18s ease;flex:none}.switch__track:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--muted);transition:transform .18s ease,background .18s ease}.switch input:checked+.switch__track{background:var(--accent);border-color:var(--accent-hi)}.switch input:checked+.switch__track:after{transform:translate(16px);background:#fff}.switch.is-disabled{opacity:.5;cursor:not-allowed}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:0 12px}.app{min-height:100vh}.shell{display:flex;min-height:100vh;background:radial-gradient(1200px 600px at 78% -10%,rgba(65,167,221,.09),transparent 60%),var(--bg)}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);z-index:40;display:flex;flex-direction:column;gap:6px;padding:14px 12px;background:linear-gradient(180deg,#161d26,#121820 60%,#101720);border-right:1px solid var(--line);box-shadow:var(--sh-2);transition:width .2s ease,transform .22s ease;overflow:hidden}.sidebar--min{width:var(--sidebar-w-min)}.sidebar--min .brand__text,.sidebar--min .nav__label,.sidebar--min .nav__title,.sidebar--min .nav__count,.sidebar--min .user-chip__text,.sidebar--min .nav__sub{display:none}.sidebar--min .nav__item{justify-content:center;padding:10px}.sidebar--min .nav__title{margin:0}.brand{display:flex;align-items:center;gap:10px;padding:6px 6px 12px;border-bottom:1px solid var(--line);margin-bottom:6px}.brand__mark{width:32px;height:32px;flex:none;border-radius:9px;background:linear-gradient(140deg,var(--accent),#2c8f6b);display:grid;place-items:center;color:#04121c;box-shadow:0 4px 14px #41a7dd66}.brand__text{min-width:0}.brand__text b{display:block;font-size:13.5px;letter-spacing:.02em;color:var(--text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand__text span{display:block;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}.nav{display:flex;flex-direction:column;gap:2px;overflow-y:auto;flex:1;padding-bottom:8px}.nav__title{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);padding:12px 10px 5px}.nav__item{position:relative;display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:var(--r-sm);color:var(--muted);font-size:13.5px;font-weight:600;background:transparent;border:0;width:100%;text-align:left;cursor:pointer}.nav__item:hover{background:var(--surface-2);color:var(--text-strong);transform:none}.nav__item.is-active{background:linear-gradient(90deg,var(--accent-soft),rgba(65,167,221,.03));color:#fff}.nav__item.is-active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--accent);box-shadow:0 0 10px var(--accent)}.nav__label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav__count{font-family:var(--mono);font-size:11px;padding:1px 6px;border-radius:var(--r-pill);background:var(--surface-3);color:var(--muted)}.nav__item.is-active .nav__count{background:var(--accent);color:var(--accent-ink)}.nav__sub{padding-left:14px}.sidebar__foot{border-top:1px solid var(--line);padding-top:10px;display:flex;flex-direction:column;gap:8px}.user-chip{display:flex;align-items:center;gap:9px;padding:7px;border-radius:var(--r-sm);background:var(--surface);border:1px solid var(--line)}.user-chip__ava{width:30px;height:30px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800;color:var(--accent-ink);background:linear-gradient(140deg,#5dbdee,#4fd19a)}.user-chip__text{min-width:0;flex:1}.user-chip__text b{display:block;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-chip__text span{display:block;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}.main{flex:1;min-width:0;display:flex;flex-direction:column;margin-left:var(--sidebar-w);transition:margin-left .2s ease}.main--min{margin-left:var(--sidebar-w-min)}.topbar{position:sticky;top:0;z-index:30;height:var(--topbar-h);display:flex;align-items:center;gap:12px;padding:0 22px;background:#0f151cd1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topbar__title{min-width:0;flex:1}.topbar__title b{display:block;font-size:14.5px;color:var(--text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar__title span{display:block;font-size:11.5px;color:var(--faint)}.topbar__actions{display:flex;align-items:center;gap:8px}.content{width:100%;max-width:1420px;margin:0 auto;padding:22px 26px 44px;flex:1}.content--wide{max-width:none}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#06090c9e;z-index:35;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.04em;padding:4px 10px;border-radius:var(--r-pill);background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-line)}.chip--accent{background:var(--accent-soft);color:var(--accent-hi);border-color:#2f6a8c}.chip--warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-line)}.chip--danger{background:var(--danger-bg);color:#ffb4b4;border-color:var(--danger-line)}.chip--muted{background:var(--surface-2);color:var(--muted);border-color:var(--line-2)}.role-tag{font:700 10px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;padding:4px 7px;border-radius:4px;border:1px solid var(--line-2);color:var(--muted);background:var(--surface)}.role-tag--admin{color:#f0b7ff;border-color:#6a3c78;background:#2a1a33}.role-tag--guru{color:var(--accent-hi);border-color:#2f6a8c;background:#11222b}.role-tag--siswa{color:var(--ok);border-color:var(--ok-line);background:var(--ok-bg)}.card{background:linear-gradient(180deg,var(--surface),#161c24);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:var(--gap);box-shadow:var(--sh-1)}.card--flush{padding:0}.card--hi{border-color:var(--line-2)}.card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.card__title{display:flex;gap:9px;min-width:0}.card__icon{color:var(--accent);margin-top:1px}.card__actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}.card__body{min-width:0}.card__foot{margin-top:12px;padding-top:11px;border-top:1px solid var(--line);display:flex;gap:8px;align-items:center;flex-wrap:wrap}.card__subhead{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--faint);margin:14px 0 8px;font-weight:700}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}.page-head__actions{display:flex;gap:8px;flex-wrap:wrap}.page-head__badge{margin-top:6px}.section-title{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin:22px 0 10px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:12px;margin-bottom:var(--gap)}.stat{display:flex;align-items:center;gap:11px;background:linear-gradient(180deg,var(--surface),#161c24);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;box-shadow:var(--sh-1)}.stat__icon{color:var(--accent);opacity:.85}.stat b{display:block;font-family:var(--mono);font-size:21px;line-height:1.1;font-weight:800;color:var(--text-strong)}.stat span{display:block;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.stat em{display:block;font-style:normal;font-size:11px;color:var(--faint);margin-top:2px}.stat--ok b{color:var(--ok)}.stat--warn b{color:var(--warn)}.stat--danger b{color:var(--danger)}.table-wrap{border:1px solid var(--line);border-radius:var(--r);overflow:auto;background:var(--surface)}.table{width:100%;border-collapse:collapse;font-size:13px;min-width:520px}.table th{position:sticky;top:0;background:#141a22;color:var(--faint);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:9px 12px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;z-index:1}.table td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:nth-child(2n){background:#ffffff04}.table tbody tr.is-clickable{cursor:pointer}.table tbody tr:hover{background:var(--accent-soft)}.table__empty,.table__loading{text-align:center;color:var(--faint);padding:26px 12px!important}.table--tight td,.table--tight th{padding:6px 9px;font-size:12px}.table-raw{width:100%;border-collapse:collapse;font-size:12px}.tbl{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}.tbl th,.tbl td{border:1px solid var(--line);padding:5px 8px;text-align:left}.tbl th{background:#141a22;color:var(--muted)}.badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;letter-spacing:.02em;padding:2px 9px;border-radius:var(--r-pill);background:var(--surface-3);color:var(--muted);border:1px solid transparent;white-space:nowrap}.badge--ok,.badge.ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-line)}.badge--warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-line)}.badge--danger{background:var(--danger-bg);color:#ffb4b4;border-color:var(--danger-line)}.badge--info{background:#11222b;color:var(--info);border-color:#2f5a72}.badge--accent{background:var(--accent-soft);color:var(--accent-hi);border-color:#2f6a8c}.badge--muted{background:var(--surface-2);color:var(--muted);border-color:var(--line-2)}.sub{background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 11px;margin:8px 0}.sub.active{border-color:var(--accent);background:linear-gradient(180deg,rgba(65,167,221,.08),transparent)}.sub--list{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.prog-item{display:flex;align-items:center;gap:6px;padding:7px 9px;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-sm);margin:6px 0;font-size:12.5px}.prog-item .prog-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prog-item button{padding:4px 9px;font-size:12px}.list{display:flex;flex-direction:column;gap:7px}.list__item{display:flex;align-items:center;gap:10px;padding:9px 11px;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-sm)}.list__item:hover{border-color:var(--line-2)}.list__main{flex:1;min-width:0}.list__main b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list__side{text-align:right;flex:none}.pbar{position:relative;height:7px;border-radius:var(--r-pill);background:var(--surface-3);overflow:hidden}.pbar>i{display:block;height:100%;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--accent),var(--brand-2));transition:width .3s ease}.pbar--ok>i{background:linear-gradient(90deg,#39b57e,var(--ok))}.pbar--warn>i{background:linear-gradient(90deg,#b98a20,var(--warn))}.pbar--danger>i{background:linear-gradient(90deg,#b4453f,var(--danger))}.pbar>span{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font:700 9px/1 var(--mono);color:#04121c;mix-blend-mode:hard-light}.pbar--tall{height:16px}.spinner{display:inline-block;border:2px solid rgba(255,255,255,.22);border-top-color:currentColor;border-radius:50%;animation:spin .7s linear infinite;flex:none;vertical-align:-2px}@keyframes spin{to{transform:rotate(1turn)}}.tabs{display:flex;gap:3px;padding:3px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);margin-bottom:16px;overflow-x:auto}.tabs__item{display:inline-flex;align-items:center;gap:7px;border:0;background:transparent;color:var(--muted);padding:8px 13px;font-size:13px;border-radius:var(--r-sm);white-space:nowrap}.tabs__item:hover{background:var(--surface-2);color:var(--text-strong)}.tabs__item.is-active{background:var(--accent-soft);color:#fff;box-shadow:inset 0 0 0 1px #41a7dd66}.tabs__item em{font-style:normal;font-family:var(--mono);font-size:11px;color:var(--faint)}.tabs__item.is-active em{color:var(--accent-hi)}.alert{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border-radius:var(--r);border:1px solid var(--line-2);background:var(--surface-2);font-size:13px;margin-bottom:12px}.alert__body{flex:1;min-width:0}.alert__body b{display:block;margin-bottom:2px}.alert__action{flex:none}.alert--ok{background:#4fd19a1a;border-color:var(--ok-line);color:#b9f2d6}.alert--info{background:#7fd4ff14;border-color:#2f5a72;color:#cfe9f8}.alert--warn{background:#e0b23a1a;border-color:var(--warn-line);color:#f2dfa6}.alert--danger{background:#e265651c;border-color:var(--danger-line);color:#ffc2c2}.empty{display:flex;flex-direction:column;align-items:center;gap:7px;padding:34px 18px;text-align:center;color:var(--muted);border:1px dashed var(--line-2);border-radius:var(--r);background:#14181d80}.empty b{font-size:14px;color:var(--text)}.empty p{max-width:420px;margin:0}.empty__action{margin-top:8px}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#06090ca8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:18px;animation:fadeIn .16s ease}.modal{width:100%;max-height:calc(100vh - 36px);display:flex;flex-direction:column;background:linear-gradient(180deg,#1c232d,#171d25);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--sh-3);animation:pop .18s cubic-bezier(.2,.8,.2,1)}.modal__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;border-bottom:1px solid var(--line)}.modal__head b{display:flex;align-items:center;gap:8px;font-size:14.5px;color:var(--text-strong)}.modal__body{padding:16px;overflow:auto}.modal__foot{padding:12px 16px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.confirm-msg{margin:0;font-size:13.5px;color:var(--text)}@keyframes fadeIn{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(10px) scale(.985)}}.toasts{position:fixed;right:18px;bottom:18px;z-index:120;display:flex;flex-direction:column;gap:8px;align-items:flex-end}.toast{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:var(--r);background:#1d2530;border:1px solid var(--line-2);box-shadow:var(--sh-2);font-size:13px;max-width:min(420px,92vw);animation:toastIn .2s ease}.toast button{background:transparent;border:0;color:var(--muted);padding:2px 4px;font-size:12px}.toast span{flex:1}.toast--ok{border-color:var(--ok-line)}.toast--ok>svg{color:var(--ok)}.toast--danger{border-color:var(--danger-line)}.toast--danger>svg{color:var(--danger)}.toast--warn{border-color:var(--warn-line)}.toast--warn>svg{color:var(--warn)}.toast--info>svg{color:var(--info)}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}}.auth{display:grid;grid-template-columns:1.05fr .95fr;min-height:100vh;background:var(--bg)}.auth__aside{position:relative;padding:44px;display:flex;flex-direction:column;justify-content:center;gap:18px;overflow:hidden;background:linear-gradient(150deg,#12202c,#0f151c 55%,#101a1a)}.auth__aside:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(520px 300px at 82% 12%,rgba(65,167,221,.18),transparent 70%),radial-gradient(420px 320px at 22% 88%,rgba(79,209,154,.13),transparent 70%);pointer-events:none}.auth__aside>*{position:relative;z-index:1}.auth__brand{display:flex;align-items:center;gap:12px}.auth__mark{width:44px;height:44px;border-radius:12px;background:linear-gradient(140deg,var(--accent),#2c8f6b);display:grid;place-items:center;color:#04121c;box-shadow:0 8px 24px #41a7dd59}.auth h2{font-size:26px;line-height:1.25;max-width:520px}.auth__list{display:flex;flex-direction:column;gap:11px;margin-top:6px;max-width:520px}.auth__li{display:flex;gap:11px;align-items:flex-start;font-size:13px;color:#c2cdd8}.auth__li>svg{color:var(--accent-hi);margin-top:1px}.auth__foot{margin-top:12px;font-size:11.5px;color:var(--faint)}.auth__panel{display:flex;align-items:center;justify-content:center;padding:34px 24px;background:var(--bg)}.auth-card{width:100%;max-width:392px;background:linear-gradient(180deg,var(--surface),#161c24);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:24px;box-shadow:var(--sh-3)}.auth-card h1{font-size:19px}.auth-card .input{margin:0}.auth-switch{display:flex;gap:4px;padding:4px;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-sm);margin:14px 0}.auth-switch button{flex:1;background:transparent;border:0;color:var(--muted);padding:7px}.auth-switch button.is-active{background:var(--accent);color:var(--accent-ink);font-weight:700}.auth-demo{margin-top:14px;padding:10px 12px;border-radius:var(--r-sm);background:var(--canvas);border:1px dashed var(--line-2);font-size:12px;color:var(--muted)}.auth-demo code{cursor:pointer}.auth-wrap{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:20px}.auth-card input,.auth-card select{width:100%;margin:6px 0;padding:9px}.pw-box{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;background:var(--canvas);border:1px dashed var(--line-2);border-radius:var(--r-sm);margin-top:8px}.pw-box code{font-size:15px;letter-spacing:.05em;color:var(--info);background:transparent;border:0;padding:0}.only-mobile{display:none}.link-berkas{display:inline-flex;align-items:center;gap:5px;color:var(--accent-hi);font-size:12.5px;text-decoration:none}.link-berkas:hover{text-decoration:underline}.link-berkas--statis{color:var(--muted);pointer-events:none}.materi{align-items:flex-start}.materi__icon{flex:none;width:34px;height:34px;border-radius:var(--r-sm);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-hi)}.materi__isi{margin:6px 0 0;font-size:13px;line-height:1.6;color:#c8d3de;white-space:pre-line}.materi__video{display:block;width:100%;aspect-ratio:16/9;margin-top:9px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:#000}.kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;margin:9px 0;font-size:12.5px}.kv>span{color:var(--muted)}.kv>b{color:var(--text-strong);font-weight:600}.catatan{padding:9px 11px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--r-sm);background:var(--canvas);font-size:12.5px;color:#c4cfd9;gap:8px;margin:9px 0}.lampiran{display:flex;flex-wrap:wrap;gap:16px;margin:10px 0 0;padding-top:9px;border-top:1px dashed var(--line-2)}.instruksi{margin:6px 0 0;padding:10px 12px;border-left:3px solid var(--brand-2);background:var(--canvas);border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:13px;line-height:1.6;color:#ccd6e0;white-space:pre-line}.langkah{margin:0;padding:0;list-style:none;counter-reset:lng;display:flex;flex-direction:column;gap:9px}.langkah li{position:relative;padding-left:28px;font-size:12.8px;line-height:1.55;color:#c4cfd9;counter-increment:lng}.langkah li:before{content:counter(lng);position:absolute;left:0;top:1px;width:19px;height:19px;border-radius:50%;background:var(--accent-soft);color:var(--accent-hi);font:700 11px/19px var(--mono);text-align:center}.belajar-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(196px,1fr));gap:11px}.belajar-kartu{display:flex;flex-direction:column;gap:5px;padding:14px;background:linear-gradient(180deg,var(--surface),#161c24);border:1px solid var(--line);border-radius:var(--r);color:var(--text);text-decoration:none;transition:border-color .16s ease,transform .16s ease}.belajar-kartu:hover{border-color:var(--accent);transform:translateY(-1px)}.belajar-kartu>svg{color:var(--accent)}.belajar-kartu b{font-size:13.5px}.grid-tugas{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:var(--gap);align-items:start}.soal-daftar{display:flex;flex-direction:column;gap:11px}.soal-kartu{padding:12px 14px;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-sm)}.soal-kartu.is-benar{border-color:var(--ok-line);background:linear-gradient(180deg,rgba(79,209,154,.09),transparent 65%)}.soal-kartu.is-salah{border-color:var(--danger-line);background:linear-gradient(180deg,rgba(226,101,101,.09),transparent 65%)}.soal-kartu__head{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px}.soal-kartu__teks{flex:1;min-width:0;font-size:13.5px;line-height:1.5;font-weight:600;color:var(--text-strong)}.soal-nomor{flex:none;width:24px;height:24px;border-radius:50%;background:var(--surface-3);color:var(--accent-hi);font:700 12px/24px var(--mono);text-align:center}.kunci{margin:9px 0 0;font-size:12.5px;color:var(--ok)}.pembahasan{margin:5px 0 0;font-size:12.5px;line-height:1.55;color:var(--muted)}.opsi{display:flex;flex-direction:column;gap:6px;margin:2px 0}.opsi--2{flex-direction:row;flex-wrap:wrap}.opsi--2 .opsi__pilih{flex:1;min-width:120px}.opsi__pilih{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer;font-size:13px;transition:border-color .14s ease,background .14s ease}.opsi__pilih:hover{border-color:var(--line-2)}.opsi__pilih.is-active{border-color:var(--accent);background:var(--accent-soft)}.opsi__huruf{flex:none;width:21px;height:21px;border-radius:var(--r-xs);background:var(--surface-3);color:var(--muted);font:700 11px/21px var(--mono);text-align:center}.opsi__pilih.is-active .opsi__huruf{background:var(--accent);color:var(--accent-ink)}.soal-praktik{margin-top:2px}.soal-praktik__info{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:8px}.soal-ringkas{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:9px}.soal-ringkas__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.editor--mini textarea{min-height:210px}.editor--mini pre.hl,.editor--mini textarea{font-size:12.5px}.gcode-view{margin:8px 0 0;padding:10px 12px;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-sm);font:12.5px/1.55 var(--mono);color:#d6dbe0;white-space:pre;overflow:auto;max-height:340px}.content-loading{display:flex;align-items:center;gap:9px;padding:24px 4px;color:var(--muted);font-size:13px}.spin{animation:putar 1s linear infinite}@keyframes putar{to{transform:rotate(360deg)}}.amber{color:var(--amber)}.sim-of{font-weight:600;font-size:13px;color:var(--muted)}.stat__text{min-width:0}.switch__label{font-size:12.5px;color:var(--text)}.pilih-siswa{display:flex;flex-direction:column;gap:7px;max-height:280px;overflow:auto;padding:10px;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-sm)}.cari-siswa{max-width:340px;width:100%}.range{width:100%;accent-color:var(--accent);margin:8px 0}.list__item--pilih{width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;background:var(--canvas)}.list__item--pilih.is-active{border-color:var(--accent);background:var(--accent-soft)}.rekap-scroll{max-height:560px}.rekap-kol{min-width:120px}.rekap-sticky{position:sticky;left:0;z-index:2;background:var(--surface)}.prog-sel{display:flex;flex-direction:column;gap:2px}.prog-sel b{font-size:13px}.row{display:flex;gap:8px;margin:8px 0;align-items:center}.row.wrap{flex-wrap:wrap}.step-info{align-self:center}.log{font-family:var(--mono);font-size:12px;max-height:132px;overflow:auto;margin-top:8px;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 10px}.log .err{color:var(--danger)}.log .ok{color:var(--ok)}.log .warn{color:var(--warn)}.tutor{background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-sm);padding:11px;margin-top:10px;font-size:13px}.tutor li{margin-bottom:6px}.score{margin-top:8px;padding:11px;border-radius:var(--r-sm);font-weight:700;background:var(--canvas);border:1px solid var(--line-2);font-size:13px}.score.match{border-color:var(--ok);color:var(--ok)}.score.nomatch{border-color:var(--amber);color:var(--amber)}.editor{position:relative}.editor pre.hl,.editor textarea{font-family:var(--mono);font-size:13px;line-height:1.5;padding:10px;margin:0;white-space:pre;overflow:auto;-moz-tab-size:2;tab-size:2}.editor pre.hl{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--canvas);border:1px solid var(--line-2);border-radius:var(--r-sm);color:#d6dbe0;pointer-events:none}.editor textarea{position:relative;background:transparent;color:transparent;caret-color:#fff;border:1px solid transparent;border-radius:var(--r-sm);resize:vertical;width:100%;min-height:150px}.editor textarea:focus{box-shadow:none;border-color:transparent}.tk-g{color:var(--ok);font-weight:700}.tk-a{color:#e0c23a;font-weight:700}.tk-n{color:var(--info)}.tk-c{color:#6b7580;font-style:italic}.target-box{margin:8px 0 4px;padding:9px 11px;border-left:3px solid #5b8fb0;background:var(--canvas);border-radius:var(--r-xs);font-size:12px;color:var(--muted)}.sim-grid{display:grid;grid-template-columns:340px 1fr;gap:var(--gap)}.sim-grid.demo{grid-template-columns:380px minmax(0,1fr)}.sim-grid--run{grid-template-columns:1fr!important}.canvas,.viewport2d canvas{background:var(--canvas)}canvas{width:100%;background:var(--canvas);border-radius:var(--r-sm)}.demo3d{max-width:1320px;margin:auto;padding:18px 20px 40px}.demo3d-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:14px}.demo3d-head h1{font-size:20px;margin:0 0 4px}.demo3d-head .sub{color:var(--muted);font-size:13px;max-width:660px;background:transparent;border:0;padding:0;margin:0}.demo3d-head .row{align-items:center}.demo-load{min-height:100vh;display:flex;align-items:center;justify-content:center;gap:9px;color:var(--muted);font-size:14px}.demo-link{color:var(--info);text-decoration:none;border-bottom:1px dashed #3f7f9f}.demo-link:hover{color:#b9e6ff}.viewport3d{position:relative;width:100%;border-radius:var(--r);overflow:hidden;background:var(--viewport);border:1px solid var(--line-2)}.viewport3d canvas{display:block;width:100%!important;height:100%!important;border-radius:0;background:transparent}.vp3d-badge{position:absolute;top:10px;left:12px;font:600 11px/1 var(--mono);letter-spacing:.08em;color:var(--info);background:#0f1317b8;border:1px solid #2f3a44;padding:5px 8px;border-radius:var(--r-xs);pointer-events:none}.vp3d-views{position:absolute;top:10px;right:10px;display:flex;gap:3px;background:#0f1317bf;border:1px solid #2f3a44;padding:3px;border-radius:var(--r)}.vp3d-views button{background:transparent;color:#c3ccd5;font-size:11px;font-weight:600;padding:5px 8px;border-radius:var(--r-xs);border:0}.vp3d-views button.active{background:var(--accent);color:var(--viewport)}.vp3d-views button:hover:not(.active){background:#2b333b}.vp3d-legend{position:absolute;left:12px;bottom:10px;display:flex;align-items:center;gap:12px;font-size:11px;color:#c3ccd5;background:#0f1317bf;border:1px solid #2f3a44;padding:6px 9px;border-radius:var(--r-sm);max-width:calc(100% - 24px)}.vp3d-legend span{display:flex;align-items:center;gap:5px;white-space:nowrap}.vp3d-legend .dot{width:16px;height:3px;border-radius:2px;display:inline-block}.vp3d-legend .dot.feed{background:var(--ok)}.vp3d-legend .dot.rapid{background:repeating-linear-gradient(90deg,var(--amber) 0 4px,transparent 4px 7px)}.vp3d-legend .hint{color:#7d8894;font-size:10.5px;overflow:hidden;text-overflow:ellipsis}.vp3d-hint{position:absolute;right:12px;bottom:10px;font-size:10.5px;color:#7d8894;background:#0f1317b3;padding:4px 7px;border-radius:var(--r-xs);pointer-events:none}.hud3d{position:absolute;top:46px;left:12px;display:flex;gap:6px}.hud3d>div{background:#0f1317cc;border:1px solid #2f3a44;border-radius:var(--r-sm);padding:5px 8px;min-width:66px}.hud3d span{display:block;font-size:9.5px;letter-spacing:.07em;color:#7d8894;text-transform:uppercase}.hud3d b{font:700 14px/1.25 var(--mono);color:#e8eef4}.hud3d em{font-style:normal;font-size:9.5px;color:#7d8894;margin-left:2px}.vp3d-alert{position:absolute;left:50%;top:92px;transform:translate(-50%);display:inline-flex;align-items:center;gap:6px;background:#5a1212eb;border:1px solid var(--danger);color:#ffb4b4;padding:7px 13px;border-radius:var(--r-sm);font-size:12px;font-weight:700;white-space:nowrap;box-shadow:0 6px 18px #00000059}.vp3d-fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:20px;color:#c3ccd5;font-size:13px}.vp3d-fallback b{color:var(--amber)}.toggles3d label{display:flex;align-items:center;gap:6px;font-size:12px;color:#c3ccd5;background:var(--canvas);border:1px solid var(--line);padding:6px 8px;border-radius:var(--r-sm);margin:2px 0;cursor:pointer}.toggles3d input{width:auto;margin:0;accent-color:var(--accent)}.simulator-card h3{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.simulator-card--running{padding:0;border:0;background:transparent;margin:0;box-shadow:none}.view-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:8px}.view-head b{font-size:13px}.viewport2d{width:100%;background:var(--canvas);border:1px solid var(--line-2);border-radius:var(--r);overflow:hidden}.viewport2d canvas{display:block;width:100%;height:auto;border-radius:0}.viewport-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:12px;color:var(--muted)}.viewport-tools label{display:flex;align-items:center;gap:5px;margin:0;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-sm);padding:5px 8px;font-size:12px;color:#c3ccd5;cursor:pointer}.viewport-tools input{width:auto;margin:0;accent-color:var(--accent)}.viewport-tools .dim{margin-left:auto;font-size:11px}.vp3d-loading{display:flex;align-items:center;justify-content:center;gap:9px;background:var(--viewport);border:1px dashed var(--line-2);border-radius:var(--r);color:#7d8894;font-size:13px}.fallback-note{margin:8px 0 0;padding:8px 10px;background:var(--warn-bg);border:1px solid #5a4520;border-radius:var(--r-sm);color:#e0c07a;font-size:12px}body.sim-theater{overflow:hidden}.view-stage{position:relative}.view-stage--full{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--viewport)}.view-stage--full .viewport3d{height:100vh!important;height:100dvh!important;border:0;border-radius:0}.view-stage--full .vp3d-loading{height:100vh!important;height:100dvh!important;border:0;border-radius:0;background:var(--viewport)}.view-stage--full .vp3d-badge,.view-stage--full .vp3d-hint{display:none}.view-stage--full .vp3d-views{top:auto;bottom:82px;right:18px}.view-stage--full .vp3d-legend{display:none}.view-stage--full .vp3d-alert{top:86px}.run-hud{position:absolute;top:0;right:0;bottom:0;left:0;z-index:9;pointer-events:none;font-family:var(--font)}.run-progress{position:absolute;top:0;left:0;right:0;height:3px;background:#ffffff14;pointer-events:none}.run-progress i{display:block;height:100%;background:linear-gradient(90deg,#3f93c4,#52e0a0);box-shadow:0 0 12px #4fd19aa6;transition:width .22s linear}.run-top{position:absolute;top:14px;left:16px;right:16px;display:flex;align-items:flex-start;justify-content:space-between;gap:14px;pointer-events:none}.run-status,.run-score,.run-controls{pointer-events:auto}.run-status{display:flex;align-items:center;gap:10px;max-width:min(460px,58vw);padding:9px 13px;background:#090e12d1;border:1px solid #33404a;border-radius:9px;box-shadow:0 8px 26px #00000059;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.run-status i{width:9px;height:9px;border-radius:50%;background:#7d8894;flex:none;box-shadow:0 0 0 3px #7d889424}.run-status b{display:block;font:700 12px/1.3 var(--mono);letter-spacing:.06em;color:#eaf0f5}.run-status span{display:block;font-size:11px;line-height:1.35;color:#93a0ac;margin-top:2px}.run-status--auto i{background:var(--ok);box-shadow:0 0 0 3px #4fd19a2e,0 0 14px #4fd19ab3;animation:runPulse 1.2s ease-in-out infinite}.run-status--pause i{background:var(--warn);box-shadow:0 0 0 3px #e0b23a29}.run-status--stop i{background:#7fb2d1;box-shadow:0 0 0 3px #7fb2d129}.run-status--alarm i{background:#e06161;box-shadow:0 0 0 3px #e061612e,0 0 14px #e06161a6;animation:runPulse .7s ease-in-out infinite}.run-status--selesai i{background:#58b8e8;box-shadow:0 0 0 3px #58b8e829}@keyframes runPulse{0%,to{opacity:1}50%{opacity:.35}}.run-score{display:flex;flex-direction:column;align-items:flex-end;gap:1px;padding:8px 13px;background:#090e12d1;border:1px solid #33404a;border-radius:9px;box-shadow:0 8px 26px #00000059;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex:none}.run-score b{font:800 21px/1 var(--mono);color:#eaf0f5}.run-score b em{font:600 11px/1 var(--mono);color:#7d8894;font-style:normal;margin-left:2px}.run-score span{font-size:10px;letter-spacing:.04em;color:#8c98a4;white-space:nowrap}.run-score.match{border-color:#2c6d50;color:var(--ok)}.run-score.match span{color:var(--ok)}.run-score.nomatch{border-color:var(--warn-line);color:var(--warn)}.run-score.nomatch span{color:var(--warn)}.run-controls{position:absolute;right:18px;bottom:16px;display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end;padding:8px;background:#090e12d1;border:1px solid #33404a;border-radius:var(--r);box-shadow:0 8px 26px #00000059;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);max-width:calc(100vw - 36px)}.run-step{font:600 11px/1 var(--mono);color:#8c98a4;margin:0 5px 0 3px;white-space:nowrap}.run-btn{padding:8px 12px;font-size:12px;font-weight:700;border-radius:var(--r-sm);background:#26313a;color:#e6ebef;border:1px solid #3d4b56;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.run-btn:hover{background:#31404b;border-color:#4a5a66}.run-btn--primary{background:#3f93c4;border-color:#5fb4e0;color:#071015}.run-btn--primary:hover{background:#58a9d7;border-color:#7cc8ee}.panel-stage{position:absolute;top:0;right:0;bottom:0;left:0;z-index:8;display:flex;align-items:center;justify-content:center;padding:10px;background:radial-gradient(ellipse at 50% 42%,#131b1ff5,#05080afb 72%);opacity:1;transform:translate(0) scale(1);transition:opacity .5s ease,transform .8s cubic-bezier(.2,.8,.2,1);will-change:transform,opacity}.panel-stage--hidden{opacity:0;transform:translate(20%,14%) scale(.32);pointer-events:none}.panel-unit{width:min(88%,570px);max-height:100%;display:flex;flex-direction:column;gap:7px;padding:9px 11px 10px;background:linear-gradient(160deg,#252d34,#151b20 58%,#10151a);border:1px solid #414b54;border-radius:11px;box-shadow:0 18px 50px #0000008c,inset 0 1px #ffffff12}.panel-brand{display:flex;align-items:baseline;gap:8px;padding:1px 2px 0;color:#e8edf2}.panel-brand__name{font:800 15px/1 var(--mono);letter-spacing:.1em}.panel-brand__series{font:600 11px/1 var(--mono);color:#aeb9c4}.panel-brand__led{margin-left:auto;width:9px;height:9px;border-radius:50%;background:#55e86b;box-shadow:0 0 8px #55e86b;animation:panelLed 1.8s ease-in-out infinite}@keyframes panelLed{0%,to{opacity:1}50%{opacity:.35}}.panel-screen-wrap{position:relative;border:1px solid #344049;border-radius:var(--r-xs);overflow:hidden;background:#040705;box-shadow:inset 0 0 26px #000000eb,0 0 0 1px #0009}.panel-screen-wrap canvas{display:block;width:100%;height:auto;border-radius:0;background:#040705}.panel-glare{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(115deg,rgba(255,255,255,.075),transparent 36%,transparent 70%,rgba(120,200,230,.045))}.panel-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:26px}.panel-strip__hint{display:flex;flex-direction:column;gap:2px;font-size:10.5px;line-height:1.35;color:#8c98a4}.panel-strip__hint b{font-size:10px;letter-spacing:.09em;color:#ffd21e}.panel-strip__tag{font:700 9px/1 var(--mono);letter-spacing:.1em;color:var(--info);border:1px solid #35566a;background:#11222b;border-radius:4px;padding:4px 6px;white-space:nowrap}@media (max-width:1180px){.content{padding:20px 18px 40px}.topbar{padding:0 14px}}@media (max-width:1040px){.sim-grid,.sim-grid.demo{grid-template-columns:1fr}.demo3d{padding:14px 12px 32px}.grid2,.grid-tugas{grid-template-columns:1fr}.cari-siswa{max-width:none}.auth{grid-template-columns:1fr}.auth__aside{display:none}}@media (max-width:860px){.only-mobile{display:inline-flex}.sidebar{transform:translate(-102%);box-shadow:none}.sidebar--open{transform:none;width:var(--sidebar-w);box-shadow:var(--sh-3)}.sidebar--open .brand__text,.sidebar--open .nav__label,.sidebar--open .nav__title,.sidebar--open .nav__count,.sidebar--open .user-chip__text,.sidebar--open .nav__sub{display:revert}.main,.main--min{margin-left:0}}@media (max-width:640px){.panel-unit{width:97%;padding:6px}.panel-brand__series,.panel-strip__hint span,.viewport-tools .dim{display:none}.viewport3d{height:400px!important}.vp3d-legend,.vp3d-hint{display:none}.vp3d-views{top:auto;bottom:10px;right:10px}.view-stage--full .viewport3d{height:100vh!important;height:100dvh!important}.view-stage--full .vp3d-views{display:none}.view-stage--full .vp3d-alert{top:auto;bottom:128px;left:10px;right:10px;transform:none;text-align:center;white-space:normal}.run-top{top:10px;left:10px;right:10px;flex-direction:column;align-items:flex-start;gap:6px}.run-status{max-width:calc(100vw - 20px);padding:8px 10px}.run-status b{font-size:11px}.run-status span{font-size:10px}.run-score{align-items:flex-start;padding:6px 9px}.run-score b{font-size:18px}.run-controls{left:10px;right:10px;bottom:10px;justify-content:center;max-width:none}.run-step{width:100%;text-align:center;margin:0 0 2px}.content{padding:16px 12px 34px}.page-head{align-items:flex-start}.toasts{left:12px;right:12px;bottom:12px;align-items:stretch}.modal{border-radius:var(--r)}}
