:root{
  --navy:#0b1f4b; --navy-2:#13306f; --accent:#2f80ed; --accent-soft:#e8f1fe;
  --ink:#1f2937; --muted:#6b7280; --line:#e5e7eb; --bg:#f5f7fb; --white:#fff;
  --radius:16px; --shadow:0 1px 3px rgba(11,31,75,.08),0 8px 24px rgba(11,31,75,.06);
  --shadow-hover:0 4px 12px rgba(11,31,75,.12),0 16px 32px rgba(11,31,75,.10);
}
html{scroll-behavior:smooth}
body{font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;color:var(--ink);background:var(--bg);line-height:1.6}
body.modal-open{overflow:hidden}
a{color:var(--accent)}
:focus-visible{outline:3px solid #93c5fd;outline-offset:2px;border-radius:6px}
.skip-link{position:absolute;left:-999px;top:8px;background:var(--navy);color:#fff;padding:.5rem 1rem;border-radius:8px;z-index:3000}
.skip-link:focus{left:8px;color:#fff}

/* Buttons */
.btn{border-radius:10px;font-weight:600}
.btn-navy{background:var(--navy);color:#fff;border:1px solid var(--navy)}
.btn-navy:hover,.btn-navy:focus{background:var(--navy-2);border-color:var(--navy-2);color:#fff}
.btn-outline-navy{border:1px solid var(--navy);color:var(--navy);background:transparent}
.btn-outline-navy:hover{background:var(--navy);color:#fff}
.form-control,.form-select{border-radius:10px;border-color:#d1d5db}
.form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .2rem rgba(47,128,237,.2)}

/* Navbar */
.pm-nav{background:var(--navy);position:sticky;top:0;z-index:1000;box-shadow:0 2px 12px rgba(0,0,0,.15)}
.pm-nav__inner{display:flex;align-items:center;justify-content:space-between;min-height:68px;position:relative}
.pm-brand{display:flex;align-items:center;gap:.6rem;color:#fff;font-weight:800;font-size:1.1rem;text-decoration:none}
.pm-brand i{background:var(--accent);padding:.5rem;border-radius:10px;font-size:1rem}
.pm-brand:hover{color:#fff}
.pm-nav__menu{display:flex;align-items:center;gap:.25rem}
.pm-nav__menu a{color:#cbd5e1;text-decoration:none;padding:.5rem .9rem;border-radius:10px;font-weight:500}
.pm-nav__menu a:hover,.pm-nav__menu a.active{color:#fff;background:rgba(255,255,255,.12)}
.pm-nav__menu a.pm-nav__cta{background:var(--accent);color:#fff;margin-left:.5rem}
.pm-nav__menu a.pm-nav__cta:hover{background:#1c6fe0}
.pm-nav__toggle{display:none;background:transparent;border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:10px;width:44px;height:44px;font-size:1.2rem}
@media (max-width:991.98px){
  .pm-nav__toggle{display:inline-flex;align-items:center;justify-content:center}
  .pm-nav__menu{display:none;position:absolute;left:0;right:0;top:100%;background:var(--navy);flex-direction:column;align-items:stretch;padding:.75rem 1rem 1rem;border-top:1px solid rgba(255,255,255,.1)}
  .pm-nav__menu.open{display:flex}
  .pm-nav__menu a{padding:.8rem 1rem}
  .pm-nav__menu a.pm-nav__cta{margin:.5rem 0 0;text-align:center}
}

/* Hero */
.hero{background:linear-gradient(135deg,var(--navy) 0%,var(--navy-2) 60%,#1d4ed8 100%);color:#fff;padding:5rem 0}
.hero h1{font-size:clamp(2rem,5vw,3.25rem);font-weight:800;line-height:1.15;margin:1rem 0}
.hero__eyebrow{display:inline-flex;gap:.5rem;align-items:center;background:rgba(255,255,255,.14);padding:.35rem .9rem;border-radius:999px;font-size:.85rem;font-weight:600}
.hero__lead{font-size:1.1rem;color:#dbe6ff;max-width:34rem;margin-bottom:2rem}
.hero__art{width:100%;height:auto;filter:drop-shadow(0 20px 30px rgba(0,0,0,.25))}
@media (max-width:991.98px){.hero{padding:3rem 0}.hero__art{max-width:420px;margin:0 auto;display:block}}

/* Sections */
.section{padding-top:3rem;padding-bottom:1rem}
.section__title{font-size:1.5rem;font-weight:800;color:var(--navy);margin-bottom:1.25rem}
.section__head{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center;margin-bottom:1.25rem}
.page-head{background:linear-gradient(135deg,var(--navy),var(--navy-2));color:#fff;padding:2.5rem 0}
.page-head h1{font-weight:800;font-size:clamp(1.6rem,4vw,2.25rem);margin-bottom:.25rem}
.page-head p{margin:0;color:#dbe6ff}

/* Stat cards */
.stat{display:flex;align-items:center;gap:1rem;background:#fff;border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow);height:100%}
.stat__icon{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;font-size:1.3rem;flex:none}
.stat__value{font-size:1.9rem;font-weight:800;line-height:1.1;color:var(--navy)}
.stat__label{font-size:.85rem;color:var(--muted)}
.stat--navy .stat__icon{background:#dbe5ff;color:var(--navy)}
.stat--gray .stat__icon{background:#e5e7eb;color:#4b5563}
.stat--orange .stat__icon{background:#ffedd5;color:#c2410c}
.stat--green .stat__icon{background:#dcfce7;color:#15803d}

/* Program cards */
.program-card{display:flex;flex-direction:column;height:100%;background:#fff;border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow);border:1px solid transparent;transition:transform .2s,box-shadow .2s,border-color .2s}
.program-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-hover);border-color:#cfe0fb}
.program-card__title{font-size:1.15rem;font-weight:700;color:var(--navy)}
.program-card__desc{color:var(--muted);font-size:.95rem}
.program-card__meta{margin:0 0 1.25rem}
.program-card__meta dt{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}
.program-card__meta dd{margin:0 0 .6rem;font-size:.92rem}
.program-card__meta i{color:var(--accent);margin-right:.25rem}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

/* Badges */
.badge-type,.badge-status,.period-badge,.badge-toggle{display:inline-flex;align-items:center;gap:.35rem;font-size:.75rem;font-weight:700;padding:.3rem .7rem;border-radius:999px;white-space:nowrap;border:0}
.type-racing{background:#ede9fe;color:#5b21b6}
.type-cashback{background:#ccfbf1;color:#0f766e}
.type-akuisisi{background:#dbeafe;color:#1d4ed8}
.status-initiated{background:#e5e7eb;color:#374151}
.status-progress{background:#ffedd5;color:#b45309}
.status-done{background:#dcfce7;color:#15803d}
.period-ongoing{background:#dcfce7;color:#15803d}
.period-upcoming{background:#fef9c3;color:#a16207}
.period-ended{background:#f3f4f6;color:#6b7280}
.badge-toggle.on{background:#dcfce7;color:#15803d}
.badge-toggle.off{background:#f3f4f6;color:#6b7280}
button.badge-toggle{cursor:pointer}

/* Filter bar */
.filter-bar{display:flex;flex-wrap:wrap;gap:.75rem;background:#fff;padding:1rem;border-radius:var(--radius);box-shadow:var(--shadow)}
.filter-bar>div{min-width:170px}
.filter-bar__search{position:relative;flex:1 1 260px}
.filter-bar__search i{position:absolute;left:.9rem;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.filter-bar__search .form-control{padding-left:2.4rem}
.filter-bar--admin{box-shadow:none;border:1px solid var(--line);padding:.6rem}
.filter-bar--admin .form-control{flex:1 1 220px;width:auto}
.filter-bar--admin .form-select{width:auto}

/* Table */
.pm-table-wrap{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.pm-table thead th{background:#f1f5ff;color:var(--navy);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line);padding:.9rem 1rem;white-space:nowrap}
.pm-table td{padding:.9rem 1rem;vertical-align:middle}
.pm-table tbody tr:hover{background:#f8fafc}
.cell-notes{max-width:340px}
.link-btn{background:none;border:0;padding:0;color:var(--navy);font-weight:600;text-align:left}
.link-btn:hover{color:var(--accent);text-decoration:underline}
@media (max-width:767.98px){
  .stack-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .stack-table,.stack-table tbody,.stack-table tr,.stack-table td{display:block;width:100%}
  .stack-table tr{padding:.75rem 1rem;border-bottom:8px solid var(--bg)}
  .stack-table td{display:flex;justify-content:space-between;gap:1rem;padding:.4rem 0;text-align:right;border:0}
  .stack-table td::before{content:attr(data-label);font-weight:600;color:var(--muted);text-align:left;flex:none}
  .stack-table td.text-end{justify-content:flex-end}
  .stack-table td.text-end::before{margin-right:auto}
  .cell-notes{max-width:none}
}

/* States & skeleton */
.state{background:#fff;border:2px dashed var(--line);border-radius:var(--radius);padding:2.5rem 1rem;text-align:center;color:var(--muted)}
.state>i{font-size:2.2rem;color:#9db4e0;margin-bottom:.75rem}
.state h2,.state h3{color:var(--navy)}
.skeleton{height:14px;border-radius:8px;margin-bottom:.75rem;background:linear-gradient(90deg,#eef1f6 25%,#f8fafc 37%,#eef1f6 63%);background-size:400% 100%;animation:shimmer 1.4s infinite}
.skeleton--title{height:22px;width:70%;margin-bottom:1rem}
.skeleton--short{width:45%}
@keyframes shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}

/* Modal */
.pm-modal{position:fixed;inset:0;background:rgba(11,31,75,.55);backdrop-filter:blur(2px);z-index:2000;display:flex;align-items:center;justify-content:center;padding:1rem;animation:fade .15s ease-out}
.pm-modal[hidden]{display:none}
.pm-modal__dialog{position:relative;background:#fff;border-radius:20px;width:100%;max-width:720px;max-height:90vh;overflow-y:auto;box-shadow:0 24px 60px rgba(0,0,0,.35);animation:pop .18s ease-out;outline:none}
.pm-modal__dialog--sm{max-width:460px}
.pm-modal__body{padding:2rem}
.pm-modal__close{position:absolute;right:.9rem;top:.9rem;width:40px;height:40px;border-radius:50%;border:0;background:#f1f5f9;color:var(--navy);z-index:2}
.pm-modal__close:hover{background:#e2e8f0}
.detail-head h2{font-size:1.5rem;font-weight:800;color:var(--navy);padding-right:2.5rem}
.detail-block{margin-top:1.25rem}
.detail-block h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin-bottom:.35rem}
.detail-block h3 i{color:var(--accent);margin-right:.3rem}
.detail-block p{margin:0;white-space:pre-line;overflow-wrap:anywhere}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes pop{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@media (max-width:575.98px){.pm-modal{padding:0;align-items:flex-end}.pm-modal__dialog{border-radius:20px 20px 0 0;max-height:92vh}.pm-modal__body{padding:1.5rem 1.25rem}}

/* Toast */
.toast-box{position:fixed;right:1rem;top:1rem;z-index:3000;display:flex;flex-direction:column;gap:.6rem;max-width:min(380px,calc(100vw - 2rem))}
.pm-toast{display:flex;align-items:flex-start;gap:.7rem;background:#fff;border-left:5px solid var(--accent);border-radius:12px;padding:.8rem 1rem;box-shadow:var(--shadow-hover);animation:pop .2s ease-out}
.pm-toast--success{border-color:#16a34a}.pm-toast--success>i{color:#16a34a}
.pm-toast--danger{border-color:#dc2626}.pm-toast--danger>i{color:#dc2626}
.pm-toast--warning{border-color:#f59e0b}.pm-toast--warning>i{color:#f59e0b}
.pm-toast>span{flex:1}
.pm-toast__close{border:0;background:none;font-size:1.3rem;line-height:1;color:var(--muted)}

/* Footer */
.pm-footer{background:var(--navy);color:#cbd5e1;padding:3rem 0 1.5rem;margin-top:4rem}
.pm-footer a{color:#cbd5e1;text-decoration:none}.pm-footer a:hover{color:#fff;text-decoration:underline}
.pm-footer__title{font-size:1rem;color:#fff;font-weight:700;margin-bottom:.75rem}
.pm-footer li{margin-bottom:.4rem}.pm-footer li i{width:1.2rem;color:#7fb2ff}
.pm-footer hr{border-color:rgba(255,255,255,.15)}
.pm-brand--light{font-size:1.1rem}

/* Login */
.login-card{max-width:440px;margin:1rem auto 3rem;background:#fff;border-radius:20px;padding:2rem;box-shadow:var(--shadow-hover)}
.login-card__icon{display:inline-grid;place-items:center;width:60px;height:60px;border-radius:18px;background:var(--accent-soft);color:var(--accent);font-size:1.5rem}

/* Pagination */
.pagination{--bs-pagination-color:var(--navy);--bs-pagination-active-bg:var(--navy);--bs-pagination-active-border-color:var(--navy);--bs-pagination-border-radius:8px}
