*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  --font-display:'Poppins',sans-serif;
  --font-mono:'Inter',sans-serif;
  --font-body:'Inter',sans-serif;
  --ease:cubic-bezier(.65,0,.35,1);
}
:root[data-theme="dark"]{
  --bg:#0A0D13; --bg-elevated:#10141C; --bg-card:#151B26;
  --text:#E7ECF3; --text-dim:#8993A6; --text-faint:#4E5768;
  --accent-orange:#FF7A33; --accent-teal:#2FE6B5; --accent-blue:#5B8CFF; --accent-red:#FF6B6B;
  --border:#212938; --border-soft:#1A212D; --shadow:0 20px 50px -20px rgba(0,0,0,.5);
  --bg-scrim:rgba(10,13,19,.97);
}
:root[data-theme="light"]{
  --bg:#EEF1F6; --bg-elevated:#FFFFFF; --bg-card:#FFFFFF;
  --text:#131826; --text-dim:#5B6577; --text-faint:#9AA3B2;
  --accent-orange:#D9560E; --accent-teal:#0C9C77; --accent-blue:#2E56D6; --accent-red:#D6357E;
  --border:#DCE1EA; --border-soft:#E7EBF1; --shadow:0 20px 44px -18px rgba(30,40,60,.18);
  --bg-scrim:rgba(238,241,246,.97);
}
body{background:var(--bg);color:var(--text);font-family:var(--font-body);min-height:100vh;transition:background .3s,color .3s;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
input,textarea{font-family:inherit;}

.hero{
  position:relative;background-size:cover;background-position:center 30%;
  padding:34px 24px 30px;color:#fff;overflow:hidden;
}
.hero-overlay{
  position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(10,14,25,.55), rgba(10,14,25,.85));
}
.hero-content{position:relative;max-width:760px;margin:0 auto;}
.hero-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.hero-tag{
  font-family:var(--font-body);font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;
  background:rgba(255,255,255,.14);padding:5px 12px;border-radius:999px;
}
.hero h1{font-family:var(--font-display);font-size:clamp(26px,6vw,34px);font-weight:700;}
.hero-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;font-size:13.5px;color:rgba(255,255,255,.85);}
.special-badge{
  display:inline-flex;align-items:center;background:rgba(255,255,255,.16);padding:4px 12px;border-radius:999px;font-size:12.5px;
}
.hero-copyright{font-size:11px;color:rgba(255,255,255,.6);margin-top:10px;}
.theme-toggle{width:42px;height:23px;border-radius:20px;background:rgba(255,255,255,.25);position:relative;flex-shrink:0;}
.theme-toggle::after{content:'';position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:50%;background:#fff;transition:transform .3s var(--ease);}
:root[data-theme="light"] .theme-toggle::after{transform:translateX(19px);}

.admin-contact{
  display:inline-block;margin-left:10px;font-size:13px;color:var(--text-faint);opacity:.55;
  text-decoration:none;transition:opacity .2s;
}
.admin-contact:hover{opacity:1;}

.tabs{display:flex;gap:4px;padding:10px 20px;overflow-x:auto;border-bottom:1px solid var(--border-soft);}
.tab{
  font-family:var(--font-mono);font-size:12.5px;padding:9px 16px;border-radius:10px;color:var(--text-faint);
  white-space:nowrap;transition:background .2s,color .2s;
}
.tab.active{background:var(--bg-card);color:var(--text);border:1px solid var(--border);}

main{max-width:760px;margin:0 auto;padding:22px 18px 60px;}
.view{display:none;animation:fadeIn .35s var(--ease);}
.view.active{display:block;}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}

.card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:20px;box-shadow:var(--shadow);}
.card + .card{margin-top:18px;}
.card-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:16px;}
.card-head h2{font-family:var(--font-display);font-size:17px;}
.hint{font-family:var(--font-mono);font-size:11px;color:var(--text-faint);}

.guru-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;}
.guru-item{
  display:flex;justify-content:space-between;gap:8px;background:var(--bg-elevated);
  border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:12.5px;
}
.guru-mapel{color:var(--text-dim);}
.guru-nama{font-weight:600;color:var(--text);}

.coming-soon{text-align:center;padding:60px 20px;}
.coming-soon-icon{font-size:44px;margin-bottom:12px;opacity:.8;}
.coming-soon h2{font-family:var(--font-display);font-size:19px;margin-bottom:6px;}
.coming-soon p{color:var(--text-dim);font-size:13.5px;}

.table-wrap{overflow-x:auto;}
.sched-table{width:100%;border-collapse:collapse;font-size:12.5px;min-width:480px;}
.sched-table th{
  text-align:left;font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;
  color:var(--text-faint);padding:9px 10px;background:var(--bg-elevated);border-bottom:1px solid var(--border);
}
.sched-table td{padding:9px 10px;border-bottom:1px solid var(--border-soft);color:var(--text-dim);white-space:nowrap;}
.sched-table tr.pulang-row td{font-weight:600;color:var(--accent-orange);border-top:1px dashed var(--border);}
.sched-table tr.pulang-row td:first-child{color:var(--text-faint);font-weight:400;}

.acara-list{list-style:none;display:flex;flex-direction:column;gap:10px;}
.acara-list li{
  display:flex;justify-content:space-between;gap:10px;padding:12px 14px;background:var(--bg-elevated);
  border:1px solid var(--border);border-radius:10px;font-size:13px;
}
.acara-list .day{font-family:var(--font-mono);font-weight:600;color:var(--accent-orange);}

.piket-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;}
.piket-day{background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:12px 14px;}
.piket-day.is-today{border-color:var(--accent-teal);}
.piket-day h4{font-family:var(--font-mono);font-size:11.5px;text-transform:uppercase;color:var(--text-faint);margin-bottom:8px;}
.piket-day.is-today h4{color:var(--accent-teal);}
.piket-day ol{padding-left:18px;font-size:12.5px;color:var(--text-dim);display:flex;flex-direction:column;gap:3px;}

.edit-btn{
  display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:12px;
  padding:8px 14px;border-radius:999px;border:1px solid var(--border);background:var(--bg-elevated);
  transition:transform .2s,border-color .2s;
}
.edit-btn:hover{transform:translateY(-2px);border-color:var(--accent-orange);}
.brush-icon{font-size:13px;}

.pr-list{display:flex;flex-direction:column;gap:10px;}
.pr-item{
  background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:14px 16px;
  display:flex;flex-direction:column;gap:4px;
}
.pr-item.overdue{border-left:3px solid var(--accent-red);}
.pr-item.soon{border-left:3px solid var(--accent-orange);}
.pr-subject{font-family:var(--font-display);font-size:14.5px;font-weight:600;}
.pr-task{font-size:13px;color:var(--text-dim);}
.pr-deadline{font-family:var(--font-mono);font-size:11px;color:var(--text-faint);}
.pr-deadline.overdue{color:var(--accent-red);}
.pr-deadline.soon{color:var(--accent-orange);}

.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;}
.gallery-item{cursor:pointer;transition:transform .2s var(--ease);}
.gallery-item:hover{transform:translateY(-3px);}
.gallery-thumb{
  width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:10px;
  border:1px solid var(--border);background:var(--bg-elevated);display:block;
}
.gallery-name{font-size:11.5px;color:var(--text-dim);margin-top:6px;text-align:center;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

.lightbox{
  position:fixed;inset:0;background:rgba(0,0,0,.9);display:none;align-items:center;justify-content:center;
  flex-direction:column;gap:14px;z-index:1500;padding:24px;
}
.lightbox.show{display:flex;}
.lightbox img{max-width:100%;max-height:78vh;border-radius:10px;object-fit:contain;}
.lightbox-caption{color:#fff;font-family:var(--font-display);font-size:14px;}
.lightbox-close{
  position:absolute;top:18px;right:20px;width:38px;height:38px;border-radius:50%;
  background:rgba(255,255,255,.12);color:#fff;font-size:16px;
}
.lightbox-close:hover{background:rgba(255,255,255,.24);}


.modal-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.55);display:none;align-items:center;justify-content:center;
  z-index:1000;padding:20px;
}
.modal-overlay.show{display:flex;}
.modal{
  background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:22px;width:100%;max-width:360px;
  box-shadow:var(--shadow);
}
.modal h3{font-family:var(--font-display);font-size:16px;margin-bottom:6px;}
.modal p{font-size:12.5px;color:var(--text-dim);margin-bottom:12px;}
.modal label{font-family:var(--font-mono);font-size:11px;color:var(--text-faint);display:block;margin:10px 0 5px;}
.modal input,.modal textarea{
  width:100%;background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;
  padding:10px 12px;color:var(--text);font-size:13px;resize:vertical;
}
.modal input:focus,.modal textarea:focus{outline:2px solid var(--accent-teal);outline-offset:1px;}
.modal-error{color:var(--accent-red);font-size:11.5px;min-height:16px;margin-top:8px;}
.modal-actions{display:flex;gap:10px;margin-top:14px;justify-content:flex-end;}
.btn{font-family:var(--font-mono);font-size:12.5px;padding:9px 16px;border-radius:8px;font-weight:600;}
.btn.primary{background:var(--accent-teal);color:#04241c;}
.btn.secondary{background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-dim);}

.toast{
  position:fixed;top:20px;left:50%;transform:translateX(-50%) translateY(-14px);
  background:var(--bg-elevated);border:1px solid var(--border);color:var(--text);
  font-family:var(--font-mono);font-size:12.5px;padding:11px 18px;border-radius:10px;
  box-shadow:var(--shadow);z-index:2000;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

.footer{text-align:center;padding:24px;font-family:var(--font-mono);font-size:11px;color:var(--text-faint);}

@media(max-width:480px){
  .topbar{padding:14px 16px;}
  main{padding:18px 12px 50px;}
}
