:root{--bg:#f7f9fc;--card:#fff;--ink:#172033;--muted:#6b7280;--line:#e5e7eb;--accent:#dd2c3d;--accent2:#102a43;--ok:#15803d;--warn:#b45309}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}a{color:inherit;text-decoration:none}.topbar{height:72px;padding:0 max(24px,6vw);display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;backdrop-filter:blur(12px)}.brand{font-size:26px;font-weight:900;color:var(--accent);display:flex;gap:10px;align-items:center}.brand span{font-size:15px;letter-spacing:.18em;color:var(--accent2)}nav{display:flex;gap:18px;align-items:center;font-size:14px;font-weight:700}nav a:hover{color:var(--accent)}.pill,.btn{border:0;border-radius:11px;background:var(--accent);color:white;padding:11px 16px;font-weight:800;display:inline-block;cursor:pointer}.btn.secondary{background:var(--accent2)}.btn.light{background:#eef2f7;color:var(--ink)}.page{min-height:calc(100vh - 140px)}.hero{padding:90px max(24px,8vw) 70px;background:radial-gradient(circle at 85% 10%,#ffd7dc 0,transparent 30%),linear-gradient(135deg,#fff,#f4f7fb)}.hero-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:center;max-width:1200px;margin:auto}.eyebrow{color:var(--accent);font-weight:900;letter-spacing:.12em;text-transform:uppercase}.hero h1{font-size:clamp(42px,6vw,76px);line-height:.98;margin:12px 0 18px;letter-spacing:-.045em}.hero p{font-size:19px;line-height:1.7;color:var(--muted);max-width:700px}.hero-card{background:var(--card);padding:28px;border-radius:24px;box-shadow:0 22px 70px rgba(16,42,67,.12)}.hero-card .jp{font-size:54px;font-weight:900;color:var(--accent)}.section{max-width:1200px;margin:auto;padding:64px 24px}.section h2{font-size:34px;margin:0 0 10px}.sub{color:var(--muted);margin-bottom:28px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:0 8px 22px rgba(16,42,67,.04)}.card h3{margin-top:0}.metric{font-size:34px;font-weight:900}.muted{color:var(--muted)}.dashboard{max-width:1400px;margin:auto;padding:32px 24px}.dash-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin-bottom:24px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0 26px}.table-wrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:16px}table{width:100%;border-collapse:collapse;font-size:14px}th,td{padding:14px 15px;text-align:left;border-bottom:1px solid var(--line)}th{background:#f8fafc;color:#4b5563;font-size:12px;text-transform:uppercase;letter-spacing:.06em}.status{display:inline-flex;padding:5px 9px;border-radius:999px;background:#edf2f7;font-size:12px;font-weight:800}.status.ok{background:#dcfce7;color:#166534}.status.warn{background:#fef3c7;color:#92400e}.status.bad{background:#fee2e2;color:#991b1b}.form-card{max-width:760px;margin:40px auto;background:white;border:1px solid var(--line);border-radius:18px;padding:26px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:15px}.field label{font-weight:800;font-size:13px}.field input,.field select,.field textarea{border:1px solid #cfd6df;border-radius:10px;padding:12px;font:inherit;background:white}.field textarea{min-height:120px;resize:vertical}.flash{padding:12px 15px;background:#dcfce7;border:1px solid #86efac;color:#166534;border-radius:10px;margin-bottom:18px}.actions{display:flex;gap:8px;flex-wrap:wrap}.split{display:grid;grid-template-columns:1.4fr .6fr;gap:20px}.kanban{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:14px;overflow:auto}.kanban-col{background:#eef2f7;border-radius:14px;padding:12px;min-height:220px}.kanban-col h4{margin:4px 4px 12px}.job{background:white;border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:10px}.job small{color:var(--muted)}footer{padding:28px;text-align:center;color:var(--muted);font-size:13px}.login-wrap{min-height:70vh;display:grid;place-items:center;padding:30px}.login-box{width:min(440px,100%);background:white;border:1px solid var(--line);border-radius:20px;padding:28px}.right{text-align:right}@media(max-width:900px){nav a:not(.pill){display:none}.hero-grid,.split{grid-template-columns:1fr}.grid,.metrics{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}}@media(max-width:560px){.grid,.metrics{grid-template-columns:1fr}.hero{padding-top:55px}.hero h1{font-size:44px}.dashboard{padding:22px 14px}.topbar{padding:0 16px}}
/* Printing */
.print-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.print-only{display:none}.doc-sheet{max-width:900px;margin:28px auto;background:#fff;border:1px solid var(--line);border-radius:18px;padding:42px}.doc-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;border-bottom:2px solid #172033;padding-bottom:18px;margin-bottom:24px}.doc-brand{font-size:24px;font-weight:900}.doc-meta{font-size:13px;color:var(--muted);text-align:right}.doc-title{text-align:center;margin:24px 0;font-size:30px}.signature-row{display:flex;justify-content:flex-end;margin-top:52px}.signature-box{width:280px;text-align:center}.certificate-sheet{min-height:620px;border:10px double #172033;padding:54px;text-align:center;display:flex;flex-direction:column;justify-content:center}.certificate-sheet h1{font-size:42px;margin:10px 0}.certificate-name{font-size:32px;font-weight:900;margin:22px 0}.certificate-no{font-size:13px;letter-spacing:.08em}.receipt-total{font-size:24px;font-weight:900}.print-filter{margin-bottom:14px}
@media print{
 @page{size:A4;margin:12mm}
 body{background:#fff;color:#000;font-size:11pt}
 .topbar,footer,.no-print,form,.print-actions,.flash{display:none!important}
 .page,.dashboard,.section{padding:0!important;margin:0!important;max-width:none!important}
 .print-only{display:block!important}
 .card,.table-wrap,.doc-sheet{box-shadow:none!important;border-color:#bbb!important}
 .table-wrap{overflow:visible!important}
 table{font-size:9.5pt}
 th,td{padding:7px 8px}
 th{background:#eee!important;color:#000!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
 .metrics{grid-template-columns:repeat(4,1fr)!important;gap:8px!important}
 .metric{font-size:18pt}
 .split,.grid{display:block!important}
 .card{break-inside:avoid;margin-bottom:10px}
 .doc-sheet{margin:0!important;padding:0!important;border:0!important;max-width:none!important}
 .certificate-sheet{min-height:245mm;border:8px double #000!important;padding:22mm 15mm}
 a{text-decoration:none;color:#000}
}

/* v6 — public announcements & promos */
.notice-section{padding-top:28px}.section-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:18px}.notice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.notice-card{background:#fff;border:1px solid #e7e9ee;border-radius:18px;padding:22px;box-shadow:0 10px 28px rgba(25,33,56,.06);position:relative;overflow:hidden}.notice-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:#394150}.notice-card.promo:before{background:#b7791f}.notice-card.news:before{background:#246b5b}.notice-card h3{margin:12px 0 8px}.notice-card p{min-height:48px;color:#636b78}.notice-meta{display:flex;align-items:center;justify-content:space-between;gap:10px}.notice-badge{display:inline-flex;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:700;background:#eef1f5;color:#303846}.notice-badge.promo{background:#fff3d9;color:#8a5a08}.notice-badge.news{background:#e4f5ef;color:#18594d}.pin{font-size:12px;color:#737b88}.text-link{font-weight:700;text-decoration:none;color:inherit}.announcement-detail{max-width:850px;margin:0 auto;padding:34px}.announcement-detail h1{font-size:clamp(30px,5vw,50px);margin:14px 0}.announcement-detail .lead{font-size:20px;color:#5f6876}.prose{line-height:1.8;margin:24px 0;white-space:normal}.admin-grid{grid-template-columns:minmax(320px,.9fr) minmax(0,1.5fr)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid label{display:flex;flex-direction:column;gap:6px}.form-grid .full{grid-column:1/-1}.form-grid .check{flex-direction:row;align-items:center}.form-grid input,.form-grid select,.form-grid textarea{width:100%}.btn.small{padding:7px 11px;font-size:12px}.btn.danger{background:#a93636}.table-wrap{overflow:auto}
@media(max-width:850px){.notice-grid,.admin-grid,.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.notice-card p{min-height:0}.section-head{align-items:start;flex-direction:column}}
\n/* v7 — gambar kartu pengumuman/promo */\n.notice-card{padding:0}.notice-card:before{z-index:2}.notice-card-body{padding:20px 22px 22px}.notice-image{display:block;width:100%;aspect-ratio:16/9;overflow:hidden;background:#eef1f5}.notice-image img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .25s ease}.notice-image:hover img{transform:scale(1.025)}.announcement-hero-image{display:block;width:100%;max-height:480px;object-fit:cover;aspect-ratio:16/9;border-radius:14px;margin-bottom:24px;background:#eef1f5}.image-admin-preview{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:12px;border:1px solid #e7e9ee;border-radius:12px}.image-admin-preview img{width:180px;aspect-ratio:16/9;object-fit:cover;border-radius:10px}.announcement-thumb{display:block;width:84px;aspect-ratio:16/9;object-fit:cover;border-radius:8px;background:#eef1f5}\n