:root{
  --brand:#0B5132;
  --brand-dark:#063B25;
  --brand-soft:#EAF4EE;
  --accent:#F58220;
  --accent-soft:#FFF1E6;
  --ink:#18352A;
  --muted:#6E7E76;
  --surface:#FFFFFF;
  --page:#F4F8F5;
  --border:#DCE8E0;
  --shadow:0 16px 45px rgba(7,61,38,.09);
  --radius:20px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:"Segoe UI",Inter,system-ui,-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;color:var(--ink);background:var(--page);min-height:100vh}
a{text-decoration:none}
img{max-width:100%}
::selection{background:rgba(245,130,32,.24)}
.text-brand{color:var(--brand)!important}.text-accent{color:var(--accent)!important}
.bg-brand{background:var(--brand)!important}.bg-brand-soft{background:var(--brand-soft)!important}
.btn-brand{--bs-btn-color:#fff;--bs-btn-bg:var(--brand);--bs-btn-border-color:var(--brand);--bs-btn-hover-color:#fff;--bs-btn-hover-bg:var(--brand-dark);--bs-btn-hover-border-color:var(--brand-dark);--bs-btn-active-bg:var(--brand-dark);border-radius:13px;font-weight:700;box-shadow:0 8px 20px rgba(11,81,50,.15)}
.btn-accent{--bs-btn-color:#fff;--bs-btn-bg:var(--accent);--bs-btn-border-color:var(--accent);--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc6e10;--bs-btn-hover-border-color:#dc6e10;border-radius:13px;font-weight:700}
.btn-soft{background:var(--brand-soft);color:var(--brand);border:1px solid transparent;border-radius:13px;font-weight:700}
.btn-soft:hover{background:#dceee3;color:var(--brand-dark)}
.btn-white{background:#fff;color:var(--brand);border:1px solid rgba(255,255,255,.25);border-radius:13px;font-weight:700}
.btn-icon{width:42px;height:42px;display:inline-grid;place-items:center;padding:0;border-radius:12px}
.form-control,.form-select{border-color:var(--border);border-radius:13px;padding:.72rem .88rem;color:var(--ink)}
.form-control:focus,.form-select:focus{border-color:rgba(11,81,50,.55);box-shadow:0 0 0 .22rem rgba(11,81,50,.1)}
.form-label{font-weight:700;font-size:.91rem;color:#28473a}
.form-text{color:#819087}
.card-soft{border:1px solid var(--border);border-radius:var(--radius);background:#fff;box-shadow:0 8px 30px rgba(8,60,37,.05)}
.panel{border:1px solid var(--border);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow)}
.badge-soft-success{background:#e5f7eb;color:#15763d}.badge-soft-warning{background:#fff3d9;color:#9d6700}.badge-soft-danger{background:#ffe7e7;color:#b52d2d}.badge-soft-secondary{background:#edf1ef;color:#64746b}
.status-badge{display:inline-flex;align-items:center;gap:.35rem;padding:.42rem .68rem;border-radius:999px;font-weight:800;font-size:.78rem}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace}
.hash-box{word-break:break-all;background:#f6f9f7;border:1px dashed #cadbd1;padding:.9rem;border-radius:13px;font-size:.78rem}
.empty-state{padding:4rem 1.5rem;text-align:center}.empty-state-icon{width:74px;height:74px;border-radius:24px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;margin:0 auto 1rem}
.page-heading{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:1.5rem}.page-heading h1{font-size:clamp(1.55rem,2.4vw,2.1rem);font-weight:800;letter-spacing:-.03em;margin-bottom:.25rem}.page-heading p{color:var(--muted);margin:0}
.table-modern{margin:0}.table-modern>:not(caption)>*>*{padding:1rem;border-bottom-color:#edf2ef;vertical-align:middle}.table-modern thead th{font-size:.74rem;text-transform:uppercase;letter-spacing:.07em;color:#7a8b82;font-weight:800;background:#f8fbf9}.table-modern tbody tr:hover{background:#fbfdfc}
.avatar{width:42px;height:42px;border-radius:14px;background:linear-gradient(145deg,var(--brand),#138154);display:grid;place-items:center;color:#fff;font-weight:800}
.alert{border-radius:15px;border-width:1px}

/* Admin shell */
.admin-shell{min-height:100vh}
.admin-sidebar{position:fixed;inset:0 auto 0 0;width:276px;background:linear-gradient(180deg,#073f28 0%,#052d1d 100%);color:#fff;z-index:1030;padding:1.25rem;display:flex;flex-direction:column;overflow-y:auto}
.sidebar-brand{display:flex;gap:.85rem;align-items:center;padding:.35rem .25rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:1rem}
.sidebar-brand img{width:55px;height:55px;object-fit:contain;background:#fff;border-radius:15px;padding:5px}
.sidebar-brand strong{font-size:.95rem;line-height:1.25;display:block}.sidebar-brand small{opacity:.65;font-size:.75rem}
.sidebar-section{font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;font-weight:800;opacity:.48;padding:.7rem .8rem .45rem}
.sidebar-nav{display:flex;flex-direction:column;gap:.3rem}
.sidebar-link{display:flex;align-items:center;gap:.8rem;color:rgba(255,255,255,.72);padding:.78rem .85rem;border-radius:13px;font-weight:650;transition:.2s ease}
.sidebar-link:hover,.sidebar-link.active{color:#fff;background:rgba(255,255,255,.1);transform:translateX(2px)}
.sidebar-link.active{box-shadow:inset 3px 0 var(--accent)}
.sidebar-user{margin-top:auto;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:.9rem}
.admin-main{margin-left:276px;min-height:100vh}
.admin-topbar{height:78px;background:rgba(255,255,255,.92);backdrop-filter:blur(14px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 2rem;position:sticky;top:0;z-index:1020}
.admin-content{padding:2rem;max-width:1500px;margin:0 auto}
.mobile-brand img{width:44px;height:44px;object-fit:contain;background:#fff;border-radius:12px;padding:4px}
.offcanvas-brand{background:linear-gradient(180deg,#073f28,#052d1d);color:white}
.stat-card{padding:1.25rem;border:1px solid var(--border);border-radius:20px;background:#fff;box-shadow:0 8px 28px rgba(8,60,37,.05);height:100%;position:relative;overflow:hidden}
.stat-card:after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;right:-30px;top:-35px;background:var(--brand-soft)}
.stat-icon{width:48px;height:48px;border-radius:16px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;position:relative;z-index:1}.stat-value{font-size:2rem;font-weight:850;letter-spacing:-.05em;margin-top:.8rem}.stat-label{color:var(--muted);font-weight:650;font-size:.88rem}

/* Login */
.auth-page{min-height:100vh;background:radial-gradient(circle at 90% 10%,rgba(245,130,32,.18),transparent 28%),radial-gradient(circle at 10% 90%,rgba(11,81,50,.12),transparent 30%),#f5f9f6;display:grid;place-items:center;padding:1.5rem}
.auth-card{width:min(960px,100%);border:0;border-radius:30px;overflow:hidden;box-shadow:0 35px 95px rgba(6,59,37,.16);background:#fff}
.auth-visual{background:linear-gradient(155deg,rgba(6,59,37,.96),rgba(11,81,50,.9)),url('../img/logo-sditmk.png') center/55% no-repeat;color:#fff;min-height:600px;position:relative;overflow:hidden}
.auth-visual:before,.auth-visual:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.07)}.auth-visual:before{width:260px;height:260px;right:-100px;top:-70px}.auth-visual:after{width:180px;height:180px;left:-70px;bottom:-60px}
.auth-logo{width:108px;background:white;padding:10px;border-radius:22px}.auth-form{padding:clamp(2rem,5vw,4.5rem)}

/* Public */
.public-body{background:#f7faf8}
.public-nav{background:rgba(255,255,255,.92);backdrop-filter:blur(15px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1020}
.public-brand{display:flex;align-items:center;gap:.8rem;color:var(--brand)}.public-brand img{width:58px;height:52px;object-fit:contain}.public-brand strong{line-height:1.15;display:block}.public-brand small{color:var(--muted);font-size:.75rem}
.hero-public{position:relative;overflow:hidden;padding:clamp(4.5rem,9vw,8rem) 0;background:linear-gradient(145deg,#063b25,#0b5132 64%,#11633f);color:#fff}
.hero-public:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 85% 15%,rgba(245,130,32,.3),transparent 22%),radial-gradient(circle at 5% 90%,rgba(255,255,255,.08),transparent 28%)}
.hero-public .container{position:relative}.hero-kicker{display:inline-flex;align-items:center;gap:.5rem;padding:.42rem .72rem;border-radius:999px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.16);font-weight:750;font-size:.8rem}
.hero-public h1{font-size:clamp(2.3rem,5vw,4.7rem);font-weight:850;letter-spacing:-.055em;line-height:1.02;max-width:820px}
.hero-public p{font-size:clamp(1rem,1.7vw,1.22rem);color:rgba(255,255,255,.75);max-width:700px}
.verify-search-card{background:#fff;border-radius:22px;padding:.7rem;display:flex;gap:.6rem;box-shadow:0 20px 55px rgba(0,0,0,.18);max-width:720px}.verify-search-card .form-control{border:0;box-shadow:none;font-size:1.05rem}.verify-search-card .btn{white-space:nowrap}
.feature-card{height:100%;padding:1.5rem;border:1px solid var(--border);border-radius:20px;background:#fff}.feature-icon{width:52px;height:52px;border-radius:17px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;margin-bottom:1rem}
.public-footer{background:#052f1f;color:rgba(255,255,255,.72);padding:3rem 0}.public-footer a{color:#fff}
.verify-wrap{padding:3rem 0 5rem;min-height:70vh}
.verify-status-card{border-radius:28px;overflow:hidden;border:1px solid var(--border);background:#fff;box-shadow:var(--shadow)}
.verify-status-head{padding:2rem;background:linear-gradient(145deg,#0b5132,#08703f);color:#fff}.verify-status-head.revoked{background:linear-gradient(145deg,#8b2020,#bd3535)}
.verify-checkmark{width:72px;height:72px;border-radius:24px;background:rgba(255,255,255,.16);display:grid;place-items:center}
.meta-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:18px;overflow:hidden}.meta-item{background:#fff;padding:1rem}.meta-item small{display:block;color:var(--muted);font-weight:700;font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.3rem}.meta-item strong{display:block;font-weight:750;word-break:break-word}
.file-check{border:1px dashed #b9cfc1;background:#f8fbf9;border-radius:18px;padding:1.2rem}

/* Placement */
.placement-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:1.25rem;align-items:start}.pdf-stage{background:#dfe7e2;border-radius:20px;padding:1rem;min-height:620px;display:flex;align-items:flex-start;justify-content:center;overflow:auto;position:relative}.pdf-canvas-wrap{position:relative;display:inline-block;line-height:0;box-shadow:0 12px 35px rgba(0,0,0,.17);background:white}.pdf-canvas-wrap canvas{display:block;max-width:none}.verification-overlay{position:absolute;border:2px dashed var(--accent);background:rgba(255,255,255,.94);box-shadow:0 4px 14px rgba(0,0,0,.14);cursor:move;touch-action:none;line-height:1.15;overflow:hidden;min-width:70px;min-height:45px}.verification-overlay.selected{outline:3px solid rgba(245,130,32,.2)}.overlay-resize{position:absolute;right:-1px;bottom:-1px;width:18px;height:18px;background:var(--accent);border-radius:7px 0 0 0;cursor:nwse-resize;touch-action:none}.overlay-content{height:100%;display:flex;align-items:center;gap:4%;padding:4%;color:#113e2b;overflow:hidden}.overlay-qr{height:84%;aspect-ratio:1/1;object-fit:contain;flex:none}.overlay-text{min-width:0;flex:1;line-height:1.15}.overlay-title{font-size:clamp(5px,1vw,12px);font-weight:900;color:var(--brand)}.overlay-school{font-size:clamp(4px,.8vw,10px);font-weight:800}.overlay-small{font-size:clamp(3px,.65vw,8px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.verification-overlay.layout-qr .overlay-content{display:block;padding:4%;text-align:center}.verification-overlay.layout-qr .overlay-qr{height:78%;max-width:90%}.verification-overlay.layout-qr .overlay-text{height:18%}.verification-overlay.layout-qr .overlay-title,.verification-overlay.layout-qr .overlay-school{display:none}
.placement-sidebar{position:sticky;top:98px}.tool-group{border-bottom:1px solid var(--border);padding-bottom:1rem;margin-bottom:1rem}.tool-group:last-child{border:0;margin:0}.preset-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}.preset-btn{border:1px solid var(--border);background:#fff;border-radius:12px;padding:.65rem;font-size:.8rem;font-weight:700;color:var(--ink)}.preset-btn:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}.publish-progress{display:none}.publish-progress.show{display:block}

/* Timeline */
.timeline{position:relative;padding-left:1.7rem}.timeline:before{content:"";position:absolute;left:.45rem;top:.5rem;bottom:.5rem;width:2px;background:var(--border)}.timeline-item{position:relative;padding-bottom:1.2rem}.timeline-item:before{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:var(--brand);left:-1.58rem;top:.25rem;box-shadow:0 0 0 5px var(--brand-soft)}.timeline-item:last-child{padding-bottom:0}

/* responsive */
@media(max-width:1199.98px){.placement-grid{grid-template-columns:1fr}.placement-sidebar{position:static}}
@media(max-width:991.98px){.admin-sidebar{display:none}.admin-main{margin-left:0}.admin-topbar{height:68px;padding:0 1rem}.admin-content{padding:1.25rem}.auth-visual{min-height:260px}.placement-sidebar{position:static}.page-heading{flex-direction:column}.meta-list{grid-template-columns:1fr}}
@media(max-width:575.98px){.admin-content{padding:1rem}.verify-search-card{flex-direction:column;padding:.8rem}.verify-search-card .btn{width:100%}.hero-public{padding:4rem 0}.verify-status-head{padding:1.4rem}.meta-list{grid-template-columns:1fr}.pdf-stage{padding:.5rem;min-height:420px;border-radius:14px}.table-responsive{border-radius:16px}.page-heading .btn{width:100%}.public-brand small{display:none}}
@media print{.admin-sidebar,.admin-topbar,.public-nav,.public-footer,.no-print{display:none!important}.admin-main{margin:0}.admin-content{padding:0}.panel,.card-soft{box-shadow:none}}
