:root{--bg:#f5f7fb;--surface:#fff;--text:#172033;--muted:#667085;--line:#e4e8f0;--primary:#2357d8;--primary2:#123da8;--ok:#16845b;--warn:#b7791f;--error:#c23b3b;--shadow:0 8px 30px rgba(31,42,68,.08);--radius:18px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.55}a{color:var(--primary);text-decoration:none}.app-shell{display:flex;min-height:100vh}.sidebar{width:265px;background:#111a2e;color:#fff;padding:20px 14px;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:30}.brand{display:flex;gap:12px;align-items:center;padding:6px 8px 18px}.brand strong{display:block;font-size:15px}.brand span{display:block;color:#aeb8cc;font-size:12px}.brand-mark{width:64px;height:64px;border-radius:18px;background:linear-gradient(135deg,#3b75ff,#28b99a);display:flex;align-items:center;justify-content:center;color:white;font-weight:800;letter-spacing:.8px;box-shadow:0 12px 30px rgba(35,87,216,.28)}.brand-mark.small{width:42px;height:42px;border-radius:12px;font-size:12px}.sidebar nav{display:flex;flex-direction:column;gap:4px;overflow:auto;padding-right:3px}.sidebar nav a{color:#cfd6e5;padding:10px 11px;border-radius:11px;display:flex;align-items:center;gap:10px;font-size:14px}.sidebar nav a:hover,.sidebar nav a.active{background:#1e2b48;color:#fff}.nav-icon{min-width:25px;font-size:12px;text-align:center;font-weight:800;color:#8ea4d2}.sidebar-foot{margin-top:auto;padding:12px 10px 0;color:#75839f;font-size:11px}.main{margin-left:265px;width:calc(100% - 265px)}.topbar{height:72px;background:rgba(255,255,255,.92);backdrop-filter:blur(9px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 28px;position:sticky;top:0;z-index:20}.topbar>div:first-of-type strong{display:block}.topbar>div:first-of-type span{display:block;font-size:12px;color:var(--muted)}.menu-btn{display:none;border:0;background:#eef2fa;border-radius:10px;padding:8px 11px}.user-menu{margin-left:auto;display:flex;align-items:center;gap:12px}.user-menu>span{font-size:13px;text-align:right}.user-menu small{display:block;color:var(--muted)}.content{padding:28px;max-width:1480px;margin:auto}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:22px}.page-head h1{font-size:28px;line-height:1.15;margin:0 0 7px}.page-head p{margin:0;color:var(--muted);max-width:800px}.actions{display:flex;gap:8px;flex-wrap:wrap}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin-bottom:20px}.card.compact{padding:18px}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:17px}.card-head h3{margin:2px 0 0;font-size:18px}.eyebrow{text-transform:uppercase;font-weight:800;letter-spacing:.08em;font-size:10px;color:var(--primary)}.hero{background:linear-gradient(135deg,#172d66,#2357d8 58%,#27a98d);color:white;border-radius:24px;padding:30px;display:flex;justify-content:space-between;align-items:center;gap:30px;box-shadow:0 20px 50px rgba(35,87,216,.18);margin-bottom:20px}.hero h2{font-size:30px;margin:8px 0 8px;max-width:800px}.hero p{margin:0;color:#dfe8ff;max-width:720px}.hero .eyebrow{color:#c7dcff}.score-ring{width:125px;height:125px;border:10px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;flex:0 0 auto}.score-ring strong{font-size:35px;line-height:1}.score-ring span{font-size:10px;text-align:center;margin-top:4px}.score-ring.large{width:145px;height:145px;border-color:#dfe8ff;border-top-color:var(--primary);color:var(--primary)}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:20px}.stat{background:white;border:1px solid var(--line);border-radius:15px;padding:16px}.stat span,.stat small{display:block;color:var(--muted);font-size:12px}.stat strong{display:block;font-size:28px;margin:4px 0}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.progress-row{margin:15px 0}.progress-row>div:first-child{display:flex;justify-content:space-between;font-size:13px}.progress{height:8px;background:#edf0f6;border-radius:20px;overflow:hidden;margin-top:6px}.progress i{display:block;height:100%;background:linear-gradient(90deg,#2357d8,#27a98d);border-radius:20px}.semester-box{border:1px solid var(--line);padding:15px;border-radius:14px;display:flex;justify-content:space-between;gap:14px;margin:10px 0}.semester-box span{display:block;color:var(--muted);font-size:12px}.semester-box>div:last-child{text-align:right}.quick-links{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.quick-links a{background:#f1f5fb;border:1px solid #e3e9f4;padding:9px 11px;border-radius:10px;font-size:12px}.unit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.unit-card{display:flex;flex-direction:column;border:1px solid var(--line);background:#fff;border-radius:14px;padding:16px;color:var(--text);transition:.18s}.unit-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#bdcafa}.unit-card span,.unit-card small{font-size:11px;color:var(--muted)}.unit-card strong{margin:6px 0 8px}.unit-card.big{min-height:155px}.unit-actions{margin-top:auto;color:var(--primary);font-size:12px;font-weight:700}.badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}.badge-ok{background:#e8f7f1;color:var(--ok)}.badge-warn{background:#fff4dc;color:var(--warn)}.badge-error{background:#ffe8e8;color:var(--error)}.badge-info{background:#eaf0ff;color:var(--primary)}form label,.selector label{display:block;font-size:12px;font-weight:700;color:#3d485c;margin-bottom:13px}input,textarea,select{width:100%;font:inherit;color:var(--text);background:#fff;border:1px solid #cfd6e3;border-radius:10px;padding:10px 11px;margin-top:6px;outline:none;transition:.15s}textarea{resize:vertical}input:focus,textarea:focus,select:focus{border-color:#5d82e9;box-shadow:0 0 0 3px rgba(35,87,216,.1)}.btn{border:1px solid transparent;border-radius:10px;padding:10px 14px;font-weight:750;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.btn-sm{padding:7px 10px;font-size:11px}.btn-block{width:100%}.btn-primary{background:var(--primary);color:white}.btn-primary:hover{background:var(--primary2)}.btn-light{background:#f4f7fc;border-color:#dde4ef;color:#2c3b55}.btn-danger{background:#fff0f0;border-color:#ffd1d1;color:#a92f2f}.materials,.note{background:#f7f9fc;border:1px dashed #cfd8e8;border-radius:11px;padding:12px;margin:8px 0 14px;color:#4b5b72;font-size:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.form-grid .full{grid-column:1/-1}.tp-row{display:grid;grid-template-columns:140px 1fr 75px 90px;gap:12px;align-items:start;padding:12px 0;border-top:1px solid var(--line)}.tp-row:first-of-type{border-top:0}.tp-code{font-weight:800;font-size:12px;color:var(--primary);padding-top:11px}.tp-main textarea{margin:0}.tp-main input{margin-top:7px}.tp-row .jp{margin:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:12px}th,td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left}th{background:#f7f9fc;color:#526176;font-size:11px;position:sticky;top:0}tfoot th{background:#eef3fb;color:#22304a}.tabs,.rpm-tabs{display:flex;gap:8px;overflow:auto;padding-bottom:8px;margin-bottom:10px}.tabs a,.rpm-tabs a{background:white;border:1px solid var(--line);padding:8px 10px;border-radius:9px;font-size:11px;white-space:nowrap}.rpm-overview{display:grid;grid-template-columns:1fr 1fr;gap:20px}.rpm-overview p{margin:6px 0}.tp-callout{background:#f1f5ff;border-left:4px solid var(--primary);padding:12px 14px;border-radius:10px;margin-bottom:16px;font-size:12px}.tp-callout strong{display:block;color:var(--primary);margin-bottom:4px}.tp-callout span{display:block}.selector{background:white;border:1px solid var(--line);border-radius:13px;padding:12px 15px;margin-bottom:16px}.selector label{margin:0}.audit-summary{display:flex;gap:25px;align-items:center;background:white;border:1px solid var(--line);border-radius:18px;padding:22px;margin-bottom:20px}.audit-summary h2{margin:0 0 5px}.audit-summary p{color:var(--muted)}.audit-list{display:flex;flex-direction:column;gap:10px}.audit-item{display:flex;gap:12px;border:1px solid var(--line);border-radius:12px;padding:13px}.audit-item.ok{background:#f4fbf8}.audit-item.warn{background:#fffaf0}.audit-item.error{background:#fff5f5}.audit-icon{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:900;background:white}.audit-item p{margin:4px 0 0;color:var(--muted);font-size:12px}.status-list{margin:0 0 16px}.status-list div{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}.status-list dt{color:var(--muted)}.status-list dd{margin:0;font-weight:700}.danger-zone{margin-top:25px;padding-top:15px;border-top:1px solid #ffd3d3}.muted{color:var(--muted);font-size:12px}.flash{padding:12px 14px;border-radius:11px;margin-bottom:14px;font-size:13px;font-weight:650}.flash-success{background:#e8f7f1;color:#176a4d;border:1px solid #c9eddf}.flash-error{background:#ffe8e8;color:#962f2f;border:1px solid #ffcaca}.login-body{min-height:100vh;background:radial-gradient(circle at top left,#274fa8 0,#182643 42%,#101726 100%);display:flex;align-items:center;justify-content:center;padding:24px}.login-wrap{max-width:980px;width:100%;display:grid;grid-template-columns:1.1fr .9fr;background:white;border-radius:28px;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.3)}.login-brand{background:linear-gradient(140deg,#17346e,#245bd7 60%,#24a98c);color:#fff;padding:55px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start}.login-brand h1{font-size:42px;line-height:1.06;margin:22px 0 12px}.login-brand p{color:#dfe8ff;font-size:16px;max-width:380px}.login-card{padding:50px}.login-card h2{font-size:28px;margin:0}.password-row{display:grid;grid-template-columns:1fr auto;gap:7px}.demo-box{margin-top:20px;border:1px solid var(--line);background:#f7f9fd;border-radius:12px;padding:13px;display:flex;flex-direction:column;gap:4px;font-size:11px}.demo-box strong{margin-bottom:4px}.demo-box code{background:#e9eef7;border-radius:5px;padding:2px 4px}.small-link{display:inline-block;margin-top:15px;font-size:11px}.actions .btn{white-space:nowrap}@media(max-width:1180px){.stats{grid-template-columns:repeat(3,1fr)}.unit-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:900px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0)}.main{margin-left:0;width:100%}.menu-btn{display:block}.content{padding:18px}.grid-2,.rpm-overview,.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.unit-grid{grid-template-columns:1fr}.page-head{flex-direction:column}.tp-row{grid-template-columns:1fr}.tp-code{padding-top:0}.login-wrap{grid-template-columns:1fr}.login-brand{display:none}.login-card{padding:32px}.hero{align-items:flex-start}.hero h2{font-size:24px}}@media(max-width:620px){.stats{grid-template-columns:repeat(2,1fr)}.topbar{padding:0 12px}.topbar>div:first-of-type span{display:none}.user-menu>span{display:none}.hero{flex-direction:column}.score-ring{width:100px;height:100px}.audit-summary{align-items:flex-start;flex-direction:column}.content{padding:14px}.card{padding:16px}.page-head h1{font-size:23px}.login-card{padding:24px}}@media print{.sidebar,.topbar,.menu-btn,.actions,.btn,.selector{display:none!important}.main{margin:0;width:100%}.content{padding:0}.card{box-shadow:none;border:0;break-inside:avoid}.page-head{margin-bottom:12px}body{background:white}.table-wrap{overflow:visible}table{font-size:10px}a{color:black}}
.grade-switch{display:flex;align-items:center;margin-left:auto}.grade-switch label{display:flex;align-items:center;gap:8px;margin:0;font-size:12px;font-weight:700}.grade-switch select{min-width:86px;padding:8px 30px 8px 10px;border:1px solid var(--line,#dbe3ea);border-radius:10px;background:#fff}.school-title{min-width:220px}@media(max-width:900px){.grade-switch{margin-left:0}.school-title{display:none}.topbar{gap:8px}.grade-switch label{font-size:0}.grade-switch label:before{content:'Kelas';font-size:12px}}

.role-notice{margin:0 0 16px;padding:12px 14px;border:1px solid #d7dde8;border-radius:12px;background:#f7f9fc;color:#38465d}.role-notice strong{margin-right:6px}.role-readonly .readonly-form{opacity:.86}.role-readonly .readonly-form textarea,.role-readonly .readonly-form input,.role-readonly .readonly-form select{background:#f5f6f8;cursor:not-allowed}.role-task-list{display:grid;gap:10px}.role-task-list a{display:flex;flex-direction:column;gap:3px;padding:13px 14px;border:1px solid var(--border,#dfe3e8);border-radius:12px;text-decoration:none;color:inherit;background:#fff}.role-task-list a:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(31,41,55,.08)}.role-task-list span{font-size:.88rem;color:#667085}.inline-form{display:inline-flex;align-items:center;gap:8px;margin:0}.inline-form select{min-width:150px}.grade-monitor-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.selected-grade{outline:2px solid rgba(51,102,204,.25)}.score-ring.mini{width:72px;height:72px}.score-ring.mini strong{font-size:1.15rem}.reviewer-links{margin-bottom:18px}@media(max-width:900px){.grade-monitor-grid{grid-template-columns:1fr}}
