:root{
  --ink:#303938; --ink-deep:#232B2A; --taupe:#888379; --gold:#C9A961;
  --cream:#F5F1E8; --paper:#FCFAF6; --clay:#A65A4B; --sage:#7C9070;
  --line:rgba(136,131,121,.28);
  --serif:'Lora',Georgia,'Times New Roman',serif;
  --sans:'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
}
*,*::before,*::after{box-sizing:border-box;}
html,body{margin:0;min-height:100%;}
body{background:var(--cream);color:var(--ink);font-family:var(--sans);font-weight:300;-webkit-font-smoothing:antialiased;}
a{color:inherit;}

/* ── lonceng pengingat ─────────────────────────────────────────── */
.bell{position:relative;background:none;border:0;cursor:pointer;color:rgba(245,241,232,.62);
  width:34px;height:34px;display:grid;place-items:center;border-radius:3px;}
.bell:hover{color:var(--cream);background:rgba(255,255,255,.07);}
.bell:focus-visible{outline:2px solid var(--gold);outline-offset:1px;}
.bell b{position:absolute;top:2px;right:1px;min-width:15px;height:15px;border-radius:8px;
  background:var(--clay);color:#fff;font-family:var(--mono);font-size:.55rem;font-weight:500;
  display:grid;place-items:center;padding:0 3px;}

.notif{position:fixed;top:56px;right:max(1rem,calc(50vw - 640px));width:min(340px,calc(100vw - 2rem));
  background:var(--paper);border:1px solid var(--line);border-radius:4px;z-index:50;
  box-shadow:0 18px 44px -22px rgba(35,43,42,.55);display:none;max-height:70vh;overflow-y:auto;}
.notif.on{display:block;}
.notif__hd{padding:.8rem .95rem;border-bottom:1px solid var(--line);
  font-family:var(--mono);font-size:.58rem;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe);}
.notif__i{padding:.75rem .95rem;border-bottom:1px solid rgba(136,131,121,.16);display:flex;gap:.6rem;align-items:flex-start;}
.notif__i:last-child{border-bottom:0;}
.notif__i i{width:6px;height:6px;border-radius:50%;background:var(--taupe);flex:none;margin-top:6px;font-style:normal;}
.notif__i.warn i{background:var(--gold);}
.notif__i.urgent i{background:var(--clay);}
.notif__i div{flex:1;min-width:0;}
.notif__i strong{display:block;font-weight:400;font-size:.82rem;line-height:1.35;}
.notif__i small{display:block;color:var(--taupe);font-size:.71rem;margin-top:.2rem;line-height:1.45;}
.notif__i button{background:none;border:0;cursor:pointer;color:var(--taupe);font-size:.68rem;
  font-family:var(--mono);letter-spacing:.06em;padding:.15rem .3rem;}
.notif__i button:hover{color:var(--ink);}
.notif__k{padding:1.6rem .95rem;text-align:center;color:var(--taupe);font-size:.8rem;}

/* ── umum ──────────────────────────────────────────────────────── */
.flash{margin:1rem 0 0;padding:.7rem .9rem;border-left:2px solid var(--gold);
  background:rgba(201,169,97,.1);font-size:.8rem;border-radius:0 3px 3px 0;}
.flash.bad{border-color:var(--clay);background:rgba(166,90,75,.08);color:#7E4437;}

.errpage{max-width:520px;margin:0 auto;padding:5rem 1.5rem;text-align:center;}
.errpage h1{font-family:var(--serif);font-weight:500;font-size:1.7rem;margin:0 0 .6rem;}
.errpage p{color:var(--taupe);font-size:.88rem;margin:0 0 1.6rem;line-height:1.6;}
.errpage a{display:inline-flex;align-items:center;gap:.45rem;min-height:42px;padding:0 1.1rem;
  background:var(--ink);color:var(--cream);text-decoration:none;border-radius:3px;font-size:.82rem;font-weight:500;}

.badge-status{display:inline-flex;align-items:center;gap:.32rem;font-size:.72rem;white-space:nowrap;
  padding:.18rem .5rem .18rem .42rem;border-radius:2px;border:1px solid;}
.badge-status i{width:5px;height:5px;border-radius:50%;flex:none;font-style:normal;}
.s-draft{color:#6E6A61;border-color:rgba(136,131,121,.4);background:rgba(136,131,121,.08);} .s-draft i{background:var(--taupe);}
.s-tunggu{color:#8C6E2E;border-color:rgba(201,169,97,.5);background:rgba(201,169,97,.12);} .s-tunggu i{background:var(--gold);}
.s-setuju{color:#4F6146;border-color:rgba(124,144,112,.5);background:rgba(124,144,112,.12);} .s-setuju i{background:var(--sage);}
.s-tolak{color:var(--clay);border-color:rgba(166,90,75,.4);background:rgba(166,90,75,.08);} .s-tolak i{background:var(--clay);}

@media (prefers-reduced-motion:reduce){ *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;} }
