:root{--emerald:#075e4b;--deep:#06483b;--green:#0c8065;--mint:#e9f5ef;--gold:#c7a454;--gold-light:#f5ecd4;--ink:#173b32;--muted:#7b8d85;--line:#e6ece7;--paper:#f6f8f5;--white:#fff;--shadow:0 12px 35px rgba(12,65,48,.06)}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:14px}h1,h2,h3,b,strong{font-family:'Plus Jakarta Sans',sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.pattern{position:fixed;pointer-events:none;z-index:0;opacity:.14;background-image:linear-gradient(30deg,transparent 45%,var(--gold) 46%,var(--gold) 48%,transparent 49%),linear-gradient(150deg,transparent 45%,var(--gold) 46%,var(--gold) 48%,transparent 49%);background-size:42px 42px;width:260px;height:200px}.pattern-top{right:0;top:0;mask-image:linear-gradient(135deg,#000,transparent 80%)}.app-shell{position:relative;z-index:1;display:flex;min-height:100vh}.sidebar{width:255px;background:linear-gradient(165deg,#064d3e,#063c32);color:#fff;padding:28px 18px 18px;display:flex;flex-direction:column;flex-shrink:0;min-height:100vh}.brand,.login-brand{display:flex;align-items:center;gap:12px;padding:0 8px 32px}.brand-mark{width:43px;height:43px;border:1px solid #d7bd76;border-radius:14px;display:grid;place-items:center;color:#f1d58c;font-size:26px;background:rgba(255,255,255,.06);font-family:serif}.brand b,.login-brand b{display:block;font-size:18px;letter-spacing:-.5px}.brand small,.login-brand small{display:block;font-size:8px;letter-spacing:1.8px;color:#d8c78e;margin-top:4px}.side-caption,.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700;color:#a8b9ae}.side-caption{padding:0 12px 12px}.sidebar nav{display:grid;gap:5px}.sidebar nav a{padding:13px 14px;border-radius:11px;color:#d1e0d8;font-weight:600;display:flex;gap:13px;align-items:center;transition:.2s}.sidebar nav a span{font-size:18px;color:#d5bb76;width:20px;text-align:center}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(255,255,255,.12);color:white}.sidebar nav a.active{box-shadow:inset 3px 0 var(--gold)}.sidebar-quote{margin-top:auto;margin-bottom:24px;padding:18px 15px;border:1px solid rgba(224,201,132,.3);border-radius:15px;background:rgba(255,255,255,.045)}.quote-star{color:#e0c77f;font-size:22px}.sidebar-quote p{font-family:'Plus Jakarta Sans',sans-serif;font-size:12px;line-height:1.8;color:#e3e9e3}.sidebar-quote small{font-size:10px;color:#d9c27d}.side-user{border-top:1px solid rgba(255,255,255,.15);padding:18px 4px 0;display:flex;align-items:center;gap:10px}.avatar,.mini-avatar{width:37px;height:37px;border-radius:12px;background:#d8eee3;color:var(--emerald);display:grid;place-items:center;font-weight:800}.user-meta{flex:1;min-width:0}.user-meta b,.user-meta small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-meta b{font-size:12px}.user-meta small{font-size:10px;color:#c0d4ca;text-transform:capitalize;margin-top:4px}.logout{background:transparent;border:0;color:#f2d78e;font-size:20px;cursor:pointer}.main{flex:1;min-width:0;padding:30px clamp(18px,3vw,48px) 20px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:26px}.topbar .eyebrow{color:#9aa99f}.topbar h1{font-size:clamp(20px,2vw,27px);margin:8px 0 0;letter-spacing:-.8px}.top-date{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:10px}.gold-dot{width:7px;height:7px;border-radius:50%;background:var(--gold)}.hero-banner{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:220px;padding:32px 38px;border-radius:22px;background:linear-gradient(110deg,#075e4b,#0b745b 72%,#0a654f);color:#fff;box-shadow:0 15px 35px #075e4b19}.hero-banner:after{content:"";position:absolute;inset:0;background-image:linear-gradient(30deg,transparent 48%,#ffffff0b 49%,#ffffff0b 51%,transparent 52%),linear-gradient(150deg,transparent 48%,#ffffff0b 49%,#ffffff0b 51%,transparent 52%);background-size:44px 44px;mask-image:linear-gradient(90deg,transparent,#000)}.hero-copy,.hero-medallion{position:relative;z-index:1}.hero-tag{font-size:9px;letter-spacing:1.8px;color:#e7d397;font-weight:700}.hero-copy h2{font-size:clamp(22px,2.4vw,31px);line-height:1.35;margin:15px 0 10px;letter-spacing:-.8px}.hero-copy h2 em{font-family:Georgia,serif;font-weight:400;color:#f0d993}.hero-copy p{color:#d3e8dc;font-size:12px;line-height:1.7;margin:0;max-width:480px}.hero-medallion{width:115px;height:115px;flex-shrink:0;border:1px solid #d9bf72;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 0 0 8px #ffffff0b,0 0 0 9px #d9bf7255;color:#f0d68f}.hero-medallion span{font-family:serif;font-size:34px}.hero-medallion small{font-size:8px;letter-spacing:2px;margin-top:4px}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:22px 0 30px}.stat-card{background:white;border:1px solid var(--line);border-radius:17px;padding:19px 20px;box-shadow:var(--shadow);min-width:0}.stat-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:11px;font-size:20px;margin-bottom:16px}.stat-icon.emerald{background:#e1f3e9;color:#087356}.stat-icon.gold{background:#fbf1d9;color:#a17c26}.stat-icon.blue{background:#e8effc;color:#4668a6}.stat-icon.rose{background:#f9e9e4;color:#b86b55}.stat-label{font-size:11px;color:var(--muted);display:block}.stat-card strong{display:block;font-size:30px;letter-spacing:-1px;margin:5px 0}.stat-card small{font-size:10px;color:#9ba9a0}.section-heading,.card-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.section-heading{margin:26px 0 15px}.section-heading .eyebrow,.page-intro .eyebrow{color:#a58b48}.section-heading h2,.card-heading h2,.page-intro h2{font-size:19px;margin:6px 0 0;letter-spacing:-.5px}.actions{display:flex;gap:9px}.btn{border:0;border-radius:10px;padding:11px 15px;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-weight:700;font-size:12px;cursor:pointer;transition:transform .15s,box-shadow .15s}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--emerald);color:#fff;box-shadow:0 6px 14px #075e4b20}.btn-primary span{color:#e8cf85;font-size:16px}.btn-light{background:#fff;border:1px solid var(--line);color:var(--ink)}.content-card{background:#fff;border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow);overflow:hidden;margin-bottom:20px}.card-heading{padding:22px 24px;border-bottom:1px solid #eef1ed}.card-heading h2{font-size:15px;margin:0}.card-heading p{font-size:11px;color:var(--muted);margin:7px 0 0}.pill{background:var(--mint);color:var(--emerald);padding:7px 10px;border-radius:20px;font-size:10px;font-weight:700}.table-wrap{width:100%;overflow-x:auto}table{border-collapse:collapse;width:100%;white-space:nowrap}th{text-align:left;font-size:9px;text-transform:uppercase;letter-spacing:1px;color:#87958d;background:#fbfcfa;padding:14px 20px;border-bottom:1px solid var(--line)}td{padding:15px 20px;border-bottom:1px solid #eff2ee;font-size:11px;color:#61736a}tbody tr:last-child td{border-bottom:0}td b{color:var(--ink);font-size:11px}.person-cell{display:flex;align-items:center;gap:10px}.person-cell small,.subline{display:block;font-size:10px;color:#96a39b;margin-top:4px}.mini-avatar{width:34px;height:34px;border-radius:10px;flex-shrink:0}.mini-avatar.large{width:44px;height:44px}.status{display:inline-block;border-radius:20px;padding:6px 9px;font-size:9px;font-weight:700;text-transform:capitalize}.status-menunggu{background:#fff2d8;color:#9b6e13}.status-diterbitkan{background:#e1f4e8;color:#17734e}.status-perlu_perbaikan{background:#fbe9e5;color:#b4503d}.table-action{background:none;border:0;color:#08745a;font-weight:700;font-size:10px;cursor:pointer}.table-action.danger{color:#b4503d}.empty-state{text-align:center!important;padding:35px!important;color:#8c9a91;font-size:12px}.student-progress{margin-top:22px}.student-grid{padding:18px 22px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.student-tile{border:1px solid var(--line);border-radius:13px;padding:14px;display:flex;align-items:center;gap:11px}.student-tile b,.student-tile small,.student-tile span{display:block}.student-tile b{font-size:11px}.student-tile small{font-size:10px;color:var(--muted);margin:4px 0}.student-tile span{font-size:9px;color:#19805c}.page-intro{margin:4px 0 22px}.page-intro h2{font-size:24px;margin-top:9px}.page-intro p{color:var(--muted);font-size:12px;line-height:1.7}.form-card{padding:25px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.field{display:flex;flex-direction:column;gap:8px;min-width:0}.field label,form>label{font-size:11px;font-weight:700;color:#405c50}.field input,.field select,.field textarea,.login-card input[type=email],.login-card input[type=password]{width:100%;border:1px solid #dfe8e1;background:#fcfdfb;border-radius:10px;padding:12px 13px;color:var(--ink);outline:none;min-width:0}.field input:focus,.field select:focus,.field textarea:focus,.login-card input:focus{border-color:#72b39a;box-shadow:0 0 0 3px #dff2e7}.field small{font-size:10px;color:var(--muted);line-height:1.5}.full-field{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:25px;padding-top:20px;border-top:1px solid var(--line)}.video-card video{display:block;width:calc(100% - 48px);max-height:520px;background:#102c24;border-radius:12px;margin:24px auto;}.rubric-intro{background:#f3f8f3;border:1px solid #e0ece1;border-radius:12px;padding:14px 16px;margin-bottom:18px}.rubric-intro b{font-size:12px}.rubric-intro p{font-size:11px;line-height:1.6;color:var(--muted);margin:6px 0 0}.rubric-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:17px 0;border-bottom:1px solid #edf1ed}.rubric-name b,.rubric-name small{display:block}.rubric-name b{font-size:12px}.rubric-name small{font-size:10px;color:#9b895b;margin-top:5px}.score-options{display:flex;gap:8px}.score-options label{cursor:pointer}.score-options input{position:absolute;opacity:0}.score-options span{width:35px;height:35px;border:1px solid #dce7de;border-radius:10px;display:grid;place-items:center;color:#60756a;font-weight:700}.score-options input:checked+span{background:var(--emerald);color:white;border-color:var(--emerald);box-shadow:0 4px 10px #075e4b25}.rubric-row+.field{margin-top:23px}.filter-bar{display:flex;align-items:end;gap:12px;padding:20px;border-bottom:1px solid var(--line)}.filter-bar .field{max-width:210px;flex:1}.pagination{padding:15px 20px}.pagination nav{display:flex;justify-content:space-between;font-size:11px}.score-value{color:var(--emerald);font-size:13px}.alert{border-radius:10px;padding:12px 15px;margin-bottom:16px;font-size:12px}.alert.success{background:#e6f5eb;color:#146b4b}.alert.error{background:#fff0eb;color:#a33e2d}.main footer{text-align:center;font-size:10px;color:#a0aca4;padding:20px}.main footer span{color:var(--gold);padding:0 6px}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 15% 15%,#e5f2e9,transparent 34%),#f5f8f4}.login-card{position:relative;z-index:1;width:min(100%,465px);padding:34px;background:#fff;border:1px solid var(--line);border-radius:23px;box-shadow:0 25px 80px #063c3215}.login-brand{padding:0;margin-bottom:32px}.login-brand b{color:var(--emerald)}.login-intro .eyebrow{color:#a58b48}.login-intro h1{font-size:27px;line-height:1.35;letter-spacing:-1px;margin:12px 0}.login-intro h1 em{font-family:Georgia,serif;color:var(--emerald);font-weight:400}.login-intro p{color:var(--muted);font-size:12px;line-height:1.7;margin-bottom:25px}.login-card form{display:grid;gap:10px}.login-card form>label{margin-top:4px}.login-card input[type=email],.login-card input[type=password]{margin-bottom:6px}.remember{display:flex;align-items:center;gap:8px;color:var(--muted)!important;font-weight:500!important}.remember input{accent-color:var(--emerald)}.full{width:100%;margin-top:10px;padding:14px}.login-foot{text-align:center;color:#a28b4d;font-size:12px;margin-top:25px;letter-spacing:.5px}
@media(max-width:1100px){.sidebar{width:220px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.student-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-banner{padding:28px}.hero-medallion{width:90px;height:90px}}
@media(max-width:760px){.app-shell{display:block}.sidebar{width:100%;min-height:auto;padding:16px;display:block}.brand{padding:0 3px 14px}.sidebar nav{display:flex;overflow:auto;gap:6px}.side-caption,.sidebar-quote,.side-user{display:none}.sidebar nav a{white-space:nowrap;padding:10px 12px;font-size:11px}.main{padding:20px 14px}.topbar{align-items:flex-start}.top-date{display:none}.hero-banner{padding:23px;min-height:0}.hero-medallion{display:none}.hero-copy h2{font-size:24px}.stats-grid{gap:10px;margin:14px 0 22px}.stat-card{padding:14px}.stat-card strong{font-size:25px}.stat-icon{margin-bottom:10px}.section-heading{align-items:flex-start}.section-heading h2{font-size:16px}.actions{flex-direction:column}.btn{font-size:11px;padding:10px}.student-grid{grid-template-columns:1fr}.form-card{padding:17px}.form-grid{grid-template-columns:1fr;gap:16px}.full-field{grid-column:auto}.form-actions{flex-wrap:wrap}.rubric-row{align-items:flex-start;flex-direction:column;gap:10px}.score-options{width:100%;justify-content:space-between}.score-options span{width:39px;height:39px}.filter-bar{align-items:stretch;flex-direction:column}.filter-bar .field{max-width:none}.card-heading{padding:17px}.topbar h1{font-size:20px}.login-card{padding:25px}.login-intro h1{font-size:24px}}


/* FIX UTAMA: app-shell membuat stacking context sehingga overlay dapat menutupi sidebar.
   Override ini membuat sidebar berada di atas overlay pada layar mobile. */
@media (max-width: 760px) {
  .app-shell { position: static !important; z-index: auto !important; display: block !important; }
  .mobile-header { position: sticky; top: 0; z-index: 1100; display: flex; align-items: center; justify-content: space-between; }
  #sidebarOverlay.sidebar-overlay {
    position: fixed; inset: 0; z-index: 2000 !important;
    opacity: 0; visibility: hidden; pointer-events: none;
  }
  #sidebarOverlay.sidebar-overlay.active {
    opacity: 1; visibility: visible; pointer-events: auto;
  }
  #appSidebar.sidebar {
    position: fixed !important; top: 0; bottom: 0; left: 0;
    z-index: 2001 !important; width: min(86vw, 320px);
    height: 100vh; height: 100dvh; overflow-y: auto;
    display: flex !important; flex-direction: column;
    transform: translateX(-105%); visibility: hidden; pointer-events: none;
    transition: transform .25s ease, visibility .25s ease;
  }
  #appSidebar.sidebar.active {
    transform: translateX(0); visibility: visible; pointer-events: auto !important;
  }
  #appSidebar nav { display: grid !important; grid-template-columns: minmax(0,1fr); gap: 5px; }
  #appSidebar nav a {
    position: relative; display: flex !important; width: 100%; min-height: 46px;
    white-space: normal; touch-action: manipulation; pointer-events: auto !important;
  }
  body.sidebar-open { overflow: hidden; }
}
@media (min-width: 761px) {
  .mobile-header, #sidebarOverlay.sidebar-overlay { display: none !important; }
  #appSidebar.sidebar { position: relative; transform: none; visibility: visible; pointer-events: auto; }
}
