:root{
  --paper:#F3EEDC;
  --paper-raised:#FBF8EE;
  --paper-dark:#E7DFC4;
  --ink:#2A2620;
  --ink-soft:#6B6552;
  --line:#C7BEA0;
  --forest:#3F6B4F;
  --forest-dark:#2A4A37;
  --forest-tint:#E1EBE1;
  --stamp:#AE3A2E;
  --stamp-tint:#F5E2DF;
  --amber:#A9791F;
  --amber-tint:#F2E8D2;
  --whatsapp:#25D366;
  --whatsapp-tint:#DFF5E7;
  --info-color:#2E6F8E;
  --info-tint:#DEEAF0;
  --pengumuman:#C1562C;
  --pengumuman-tint:#F3E2D8;
  --radius:10px;
}
*{box-sizing:border-box;}
body{
  margin:0;
  background:var(--paper);
  background-image:linear-gradient(var(--paper-dark) 1px, transparent 1px);
  background-size:100% 34px;
  color:var(--ink);
  font-family:'IBM Plex Sans', sans-serif;
  min-height:100vh;
  padding:32px 16px 110px;
}
.wrap{max-width:760px;margin:0 auto;}
.masthead{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  border-bottom:3px double var(--ink);
  padding-bottom:16px;
  margin-bottom:24px;
}
.masthead h1{
  font-family:'Zilla Slab', serif;
  font-weight:700;
  font-size:32px;
  letter-spacing:0.5px;
  margin:0;
}
.masthead p{margin:4px 0 0;color:var(--ink-soft);font-size:14px;}
.masthead a{color:var(--ink-soft);font-size:12.5px;}
.stamp-logo{
  width:64px;height:64px;
  border:2.5px dashed var(--stamp);
  border-radius:50%;
  color:var(--stamp);
  display:flex;align-items:center;justify-content:center;
  font-family:'Zilla Slab', serif;
  font-weight:700;
  font-size:13px;
  transform:rotate(-9deg);
  letter-spacing:1px;
  flex-shrink:0;
  text-align:center;
  line-height:1.1;
}
.ticket{
  position:relative;
  background:var(--paper-raised);
  border:1.5px solid var(--ink);
  border-radius:var(--radius);
  padding:20px 22px;
  margin-bottom:20px;
}
.ticket-eyebrow{
  font-size:11px;text-transform:uppercase;letter-spacing:1.2px;
  color:var(--ink-soft);margin:0 0 4px;
}
.ticket-name{
  font-family:'Zilla Slab', serif;font-weight:600;font-size:22px;margin:0 0 14px;
}
.empty-state{text-align:center;padding:28px 16px;color:var(--ink-soft);font-size:14px;}
.empty-state i{font-size:26px;display:block;margin-bottom:8px;color:var(--line);}
label{display:block;font-size:12.5px;font-weight:500;color:var(--ink-soft);margin:14px 0 5px;}
label:first-of-type{margin-top:0;}
input[type=text],input[type=tel],input[type=password]{
  width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:6px;
  background:#fff;font-family:'IBM Plex Sans', sans-serif;font-size:14.5px;color:var(--ink);
}
input:focus{outline:none;border-color:var(--forest);}
.token-input{
  font-family:'IBM Plex Mono', monospace;letter-spacing:3px;text-transform:uppercase;
  font-weight:600;text-align:center;
}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:11px 18px;border-radius:6px;border:1.5px solid var(--forest-dark);
  background:var(--forest);color:#fff;font-family:'IBM Plex Sans', sans-serif;
  font-weight:500;font-size:14px;cursor:pointer;width:100%;margin-top:16px;
}
.btn.secondary{
  background:var(--paper-raised);color:var(--ink);border-color:var(--line);
  width:auto;margin-top:0;padding:7px 12px;font-size:12.5px;
}
.btn.danger-line{
  background:var(--paper-raised);color:var(--stamp);border-color:var(--stamp);
  width:auto;margin-top:0;padding:7px 12px;font-size:12.5px;
}
.msg{font-size:13px;margin-top:10px;padding:8px 10px;border-radius:6px;}
.msg.err{background:var(--stamp-tint);color:var(--stamp);}
.msg.ok{background:var(--forest-tint);color:var(--forest-dark);}
.ledger{margin-top:22px;}
.ledger-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;}
.ledger-head h3{font-family:'Zilla Slab', serif;font-size:16px;margin:0;font-weight:600;}
.ledger-count{font-family:'IBM Plex Mono', monospace;font-size:13px;color:var(--ink-soft);}
table{width:100%;border-collapse:collapse;font-size:13.5px;}
th{
  text-align:left;font-weight:500;color:var(--ink-soft);font-size:11.5px;
  text-transform:uppercase;letter-spacing:0.5px;border-bottom:1.5px solid var(--ink);padding:6px 8px;
}
td{padding:8px;border-bottom:1px solid var(--line);}
tr:nth-child(even) td{background:rgba(199,190,160,0.18);}
td.no{color:var(--ink-soft);font-family:'IBM Plex Mono', monospace;width:32px;}
td.time{font-family:'IBM Plex Mono', monospace;color:var(--ink-soft);white-space:nowrap;}
.session-card{
  position:relative;background:var(--paper-raised);border:1.5px solid var(--ink);
  border-radius:var(--radius);margin-bottom:16px;overflow:hidden;
}
.session-card.active-session{border-color:var(--forest);}
.session-main{padding:16px 18px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.session-info h4{font-family:'Zilla Slab', serif;font-size:17px;margin:0 0 4px;}
.session-meta{font-size:12px;color:var(--ink-soft);margin:0;}
.session-token{
  font-family:'IBM Plex Mono', monospace;font-weight:600;letter-spacing:2px;
  background:var(--paper-dark);padding:3px 8px;border-radius:4px;font-size:13px;
}
.badge-active{
  display:inline-block;background:var(--forest);color:#fff;font-size:10.5px;
  text-transform:uppercase;letter-spacing:0.5px;padding:2px 8px;border-radius:20px;
  margin-left:8px;vertical-align:middle;
}
.perforation{height:0;border-top:2px dashed var(--line);margin:0 18px;}
.session-actions{padding:10px 18px 14px;display:flex;gap:8px;flex-wrap:wrap;}
.session-actions form{display:inline;}
.recap-box{padding:0 18px 16px;}
.stamp-overlay{
  position:fixed;inset:0;background:rgba(42,38,32,0.35);
  display:none;align-items:center;justify-content:center;z-index:50;
}
.stamp-overlay.show{display:flex;}
.stamp-mark{
  font-family:'Zilla Slab', serif;font-weight:700;font-size:38px;color:var(--stamp);
  border:5px solid var(--stamp);border-radius:14px;padding:14px 34px;
  transform:rotate(-8deg) scale(1);background:var(--paper-raised);
  animation:stampIn 0.45s ease-out;text-transform:uppercase;letter-spacing:2px;
}
@keyframes stampIn{
  0%{opacity:0;transform:rotate(-8deg) scale(1.8);}
  60%{opacity:1;transform:rotate(-8deg) scale(0.92);}
  100%{opacity:1;transform:rotate(-8deg) scale(1);}
}
.foot-note{text-align:center;font-size:11.5px;color:var(--ink-soft);margin-top:28px;}
.login-box{max-width:360px;margin:80px auto 0;}

/* ==== Kuis ==== */
.question-card{
  background:var(--paper-raised);
  border:1.5px solid var(--line);
  border-radius:var(--radius);
  padding:16px 18px;
  margin-bottom:16px;
}
.question-card .q-num{
  font-family:'IBM Plex Mono', monospace;
  font-size:11.5px;
  color:var(--ink-soft);
  text-transform:uppercase;
  letter-spacing:1px;
}
.question-card .q-score{
  float:right;
  font-family:'IBM Plex Mono', monospace;
  font-size:11.5px;
  color:var(--forest-dark);
  background:var(--forest-tint);
  padding:2px 8px;
  border-radius:20px;
}
.question-body{
  margin:8px 0 14px;
  font-size:14.5px;
  line-height:1.55;
}
.question-body img{max-width:100%;border-radius:6px;}
.option-list{display:flex;flex-direction:column;gap:8px;}
.option-row{
  display:flex;
  align-items:center;
  gap:10px;
  padding:9px 12px;
  border:1.5px solid var(--line);
  border-radius:6px;
  cursor:pointer;
  font-size:14px;
}
.option-row:hover{border-color:var(--forest);}
.option-row input{margin:0;accent-color:var(--forest);}
.option-letter{
  font-family:'IBM Plex Mono', monospace;
  font-weight:600;
  color:var(--ink-soft);
  width:18px;
}
.score-banner{
  text-align:center;
  padding:26px 16px;
}
.score-banner .big-score{
  font-family:'Zilla Slab', serif;
  font-weight:700;
  font-size:44px;
  color:var(--forest-dark);
  margin:4px 0;
}
.leaderboard-row{
  display:flex;
  align-items:center;
  gap:12px;
  padding:10px 12px;
  border-bottom:1px solid var(--line);
}
.leaderboard-rank{
  font-family:'Zilla Slab', serif;
  font-weight:700;
  font-size:16px;
  width:32px;
  color:var(--ink-soft);
}
.leaderboard-row.top1 .leaderboard-rank{color:var(--stamp);}
.leaderboard-row.top2 .leaderboard-rank{color:var(--forest-dark);}
.leaderboard-row.top3 .leaderboard-rank{color:#8a6d1f;}
.leaderboard-name{flex:1;font-size:14.5px;}
.leaderboard-score{
  font-family:'IBM Plex Mono', monospace;
  font-weight:600;
  font-size:14px;
}
.ck-wrap{margin-top:4px;}

/* ==== Navbar bawah (Absen / Kuis / Bantuan) ==== */
.bottom-nav{
  position:fixed;
  left:12px;right:12px;bottom:12px;
  max-width:736px;
  margin:0 auto;
  background:var(--paper-raised);
  border:1.5px solid var(--ink);
  border-radius:20px;
  display:flex;
  gap:4px;
  padding:7px;
  z-index:40;
  box-shadow:0 10px 24px rgba(42,38,32,0.18);
}
.bottom-nav .nav-item{
  flex:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:4px;
  padding:7px 4px 8px;
  border-radius:14px;
  color:var(--ink-soft);
  text-decoration:none;
  font-size:11px;
  font-weight:600;
  font-family:'IBM Plex Sans', sans-serif;
  transition:background .15s ease, color .15s ease;
}
.bottom-nav .nav-icon{
  width:34px;height:34px;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;
  background:var(--paper-dark);
  color:var(--ink-soft);
  transition:background .15s ease, color .15s ease, transform .15s ease;
}
.bottom-nav .nav-item i{font-size:18px;}

.bottom-nav .nav-item.nav-absen.active{color:var(--forest-dark);background:var(--forest-tint);}
.bottom-nav .nav-item.nav-absen.active .nav-icon{background:var(--forest);color:#fff;transform:scale(1.06);}

.bottom-nav .nav-item.nav-kuis.active{color:var(--amber);background:var(--amber-tint);}
.bottom-nav .nav-item.nav-kuis.active .nav-icon{background:var(--amber);color:#fff;transform:scale(1.06);}

.bottom-nav .nav-item.nav-info.active{color:var(--info-color);background:var(--info-tint);}
.bottom-nav .nav-item.nav-info.active .nav-icon{background:var(--info-color);color:#fff;transform:scale(1.06);}

.bottom-nav .nav-item.nav-pengumuman.active{color:var(--pengumuman);background:var(--pengumuman-tint);}
.bottom-nav .nav-item.nav-pengumuman.active .nav-icon{background:var(--pengumuman);color:#fff;transform:scale(1.06);}

.bottom-nav .nav-item.disabled{color:var(--line);pointer-events:none;}
.bottom-nav .nav-item.disabled .nav-icon{background:var(--paper-dark);color:var(--line);}

/* ==== Tombol Hubungi Admin (WhatsApp) ==== */
.wa-contact-card{
  display:flex;
  align-items:center;
  gap:14px;
  width:100%;
  background:var(--paper-raised);
  border:1.5px solid var(--ink);
  border-radius:var(--radius);
  padding:14px 16px;
  text-decoration:none;
  color:var(--ink);
  margin-top:8px;
  position:relative;
  overflow:hidden;
}
.wa-contact-card::before{
  content:"";
  position:absolute;
  left:64px;
  top:0;
  bottom:0;
  border-left:2px dashed var(--line);
}
.wa-contact-icon{
  width:42px;height:42px;
  flex-shrink:0;
  border-radius:50%;
  background:var(--whatsapp);
  color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-size:22px;
  box-shadow:0 3px 8px rgba(37,211,102,0.35);
}
.wa-contact-body{flex:1;padding-left:6px;}
.wa-contact-title{
  font-family:'Zilla Slab', serif;
  font-weight:600;
  font-size:16px;
  margin:0;
}
.wa-contact-subtitle{
  font-size:12px;
  color:var(--ink-soft);
  margin:2px 0 0;
}
.wa-contact-chevron{color:var(--ink-soft);font-size:20px;flex-shrink:0;}
.wa-contact-card.disabled{
  opacity:.6;
  pointer-events:none;
}
.wa-contact-card.disabled .wa-contact-icon{background:var(--paper-dark);color:var(--line);box-shadow:none;}

/* ==== Tab (Menunggu / Disetujui / Ditolak) ==== */
.tabs{
  display:flex;
  gap:8px;
}
.tab-btn{
  flex:1;
  padding:11px 16px;
  background:var(--paper-raised);
  border:1.5px solid var(--ink);
  border-radius:8px;
  font-family:'IBM Plex Sans', sans-serif;
  font-weight:500;
  font-size:13.5px;
  color:var(--ink);
  cursor:pointer;
}
.tab-btn.active{
  background:var(--forest);
  border-color:var(--forest-dark);
  color:#fff;
}
