/* =====================================================
   NSRS Certificate System — V5 NG-MC Like UI
   ใช้ไฟล์นี้แทน style.css เดิม
   หมายเหตุ: คงสไตล์ Admin จาก V2 และ override เฉพาะหน้า Public
   ===================================================== */

/* ---------- Base from V2 / Admin-safe ---------- */
:root{
  --bg:#f4f8ff;
  --bg2:#eef7f1;
  --card:#ffffff;
  --text:#102033;
  --muted:#667085;
  --line:rgba(27,55,100,.12);
  --p:#2457e6;
  --p2:#09a8d8;
  --p3:#12b981;
  --gold:#f6b73c;
  --dark:#0b1730;
  --green:#10b981;
  --orange:#f59e0b;
  --red:#ef4444;
  --shadow:0 18px 50px rgba(22,42,82,.12);
  --shadow2:0 8px 24px rgba(22,42,82,.08);
  --radius:26px;
  --font:'Sarabun','Noto Sans Thai',system-ui,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font);background:#f4f6fb;color:var(--text)}
a{text-decoration:none;color:inherit}
button,input,select,textarea{font:inherit}
.container{width:min(1180px,calc(100% - 32px));margin:auto}
.hidden{display:none!important}
.muted{color:var(--muted)}
.full{width:100%}
.span2{grid-column:1/-1}
.eyebrow{margin:0 0 8px;color:var(--p);font-weight:900;letter-spacing:.08em;text-transform:uppercase;font-size:.78rem}
.loader{position:fixed;inset:0;display:grid;place-items:center;background:rgba(244,248,255,.86);backdrop-filter:blur(14px);z-index:9999}
.loader>div{background:#fff;border:1px solid var(--line);border-radius:22px;padding:26px 34px;text-align:center;box-shadow:var(--shadow)}
.loader span,.spinner{display:block;width:42px;height:42px;border-radius:50%;border:4px solid rgba(36,87,230,.14);border-top-color:var(--p);animation:spin 1s linear infinite;margin:0 auto 12px}
@keyframes spin{to{transform:rotate(360deg)}}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:0;border-radius:999px;padding:12px 20px;cursor:pointer;font-weight:900;transition:.18s ease;white-space:nowrap}
.btn:hover{transform:translateY(-1px)}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.primary{background:linear-gradient(135deg,var(--p),var(--p2));color:#fff;box-shadow:0 14px 28px rgba(36,87,230,.20)}
.light{background:rgba(255,255,255,.9);color:var(--p);border:1px solid rgba(255,255,255,.66)}
.ghost{background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.38);backdrop-filter:blur(12px)}
.danger{background:linear-gradient(135deg,#ef4444,#f97316);color:#fff}
.small{padding:8px 13px;font-size:.92rem}

/* ---------- V5 Public page ---------- */
body.public-page{
  background:#f2f3f8;
  min-height:100vh;
}

body.public-page::before{
  content:none;
}

.public-page .container{
  width:min(1180px,calc(100% - 44px));
}

/* Hero เหมือนตัวอย่าง: ภาพพื้นหลังเต็ม, ความสูงกระชับ */
.public-page .hero{
  position:relative;
  min-height:360px;
  color:#fff;
  overflow:hidden;
  background:#9ebbd3;
  isolation:isolate;
}

.public-page .hero:before{
  content:'';
  position:absolute;
  inset:0;
  background-image:
    var(--hero-img,
      linear-gradient(rgba(255,255,255,0),rgba(255,255,255,0)),
      url('https://images.unsplash.com/photo-1506744038136-46273834b3fb?auto=format&fit=crop&w=1600&q=80')
    );
  background-size:cover;
  background-position:center 46%;
  filter:saturate(1.06) contrast(1.02);
  z-index:-3;
}

.public-page .hero-overlay{
  position:absolute;
  inset:0;
  background:
    linear-gradient(180deg,rgba(30,50,70,.16),rgba(30,50,70,.18)),
    linear-gradient(90deg,rgba(0,0,0,.20),rgba(0,0,0,.06),rgba(0,0,0,.18));
  z-index:-2;
}

.public-page .hero:after,
.public-page .hero .container:before,
.public-page .hero .container:after{
  display:none;
}

/* Header */
.public-page .nav{
  position:relative;
  z-index:4;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:22px 0 8px;
}

.public-page .brand{
  display:flex;
  align-items:center;
  gap:10px;
  padding:0;
  background:transparent;
  border:0;
  box-shadow:none;
  backdrop-filter:none;
}

.public-page .brand-logo{
  display:none;
}

.public-page .brand b{
  color:#fff;
  font-size:1.12rem;
  font-weight:900;
  text-shadow:0 2px 9px rgba(0,0,0,.30);
  letter-spacing:-.01em;
}

.public-page .nav .btn.light.small{
  color:#fff;
  background:rgba(255,255,255,.25);
  border:1px solid rgba(255,255,255,.42);
  border-radius:999px;
  box-shadow:none;
  padding:8px 18px;
  min-width:128px;
  opacity:.96;
  backdrop-filter:blur(9px);
}

/* Hero content */
.public-page .hero-content{
  position:relative;
  z-index:3;
  text-align:center;
  padding:26px 0 54px;
}

.public-page .hero-logo{
  width:76px;
  height:76px;
  border-radius:0;
  margin:0 auto 10px;
  display:grid;
  place-items:center;
  background:transparent;
  border:0;
  box-shadow:none;
  overflow:visible;
}

.public-page .hero-logo img{
  width:100%;
  height:100%;
  object-fit:contain;
  filter:drop-shadow(0 6px 11px rgba(0,0,0,.18));
}

.public-page .hero-logo i{
  font-size:4.15rem;
  color:#ffc928;
  filter:drop-shadow(0 6px 10px rgba(0,0,0,.22));
}

.public-page .pill{
  display:none;
}

.public-page .hero h1{
  margin:4px 0 10px;
  color:#fff;
  font-size:clamp(2.45rem,5.4vw,4.2rem);
  line-height:1;
  letter-spacing:-.045em;
  font-weight:900;
  text-shadow:
    0 3px 0 rgba(0,0,0,.16),
    0 6px 14px rgba(0,0,0,.22);
}

.public-page .hero h2{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin:0 auto;
  padding:6px 18px;
  border-radius:999px;
  background:rgba(42,49,58,.54);
  color:#fff;
  font-size:1.02rem;
  font-weight:700;
  line-height:1.35;
  box-shadow:0 4px 14px rgba(0,0,0,.12);
  backdrop-filter:blur(7px);
}

.public-page #heroDesc,
.public-page .hero-actions{
  display:none;
}

/* main section */
.public-page main{
  background:#f2f3f8;
  border-top:1px solid rgba(0,0,0,.04);
  padding-top:22px;
}

.public-page .block{
  padding:0 0 20px;
}

.public-page .section-head{
  display:none;
}

.public-page #events.container{
  width:min(860px,calc(100% - 44px));
}

/* Event cards */
.public-page .event-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:24px;
  align-items:stretch;
}

.public-page .event-card{
  background:#fff;
  border:0;
  border-radius:22px;
  overflow:hidden;
  box-shadow:0 7px 18px rgba(30,41,59,.08);
  display:flex;
  flex-direction:column;
  transition:.18s ease;
  min-height:318px;
}

.public-page .event-card:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 24px rgba(30,41,59,.11);
}

.public-page .event-top{
  height:120px;
  position:relative;
  display:grid;
  place-items:center;
  color:#fff;
  overflow:hidden;
  padding:0;
}

.public-page .event-card:nth-child(4n+1) .event-top,
.public-page .event-card:nth-child(4n+3) .event-top{
  background:linear-gradient(135deg,#6878ea 0%,#6842b5 100%);
}

.public-page .event-card:nth-child(4n+2) .event-top,
.public-page .event-card:nth-child(4n+4) .event-top{
  background:linear-gradient(135deg,#ff8a00 0%,#ffd23f 100%);
}

.public-page .event-top::before{
  content:'';
  position:absolute;
  right:-26px;
  top:-32px;
  width:122px;
  height:122px;
  border-radius:50%;
  background:rgba(255,255,255,.13);
}

.public-page .event-top::after{
  content:'';
  position:absolute;
  right:34px;
  top:10px;
  width:66px;
  height:66px;
  border-radius:50%;
  background:rgba(255,255,255,.10);
}

.public-page .event-top i{
  position:relative;
  z-index:2;
  width:auto;
  height:auto;
  border-radius:0;
  display:block;
  background:transparent;
  box-shadow:none;
  font-size:3.8rem;
  color:#fff;
  opacity:.98;
}

/* Content */
.public-page .event-body{
  flex:1;
  padding:0 22px 22px;
  text-align:center;
  display:flex;
  flex-direction:column;
  align-items:center;
}

.public-page .badge{
  position:relative;
  z-index:3;
  margin-top:-22px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:72px;
  width:auto;
  padding:7px 18px;
  border-radius:999px;
  background:#fff;
  color:#6a6172;
  font-size:.92rem;
  font-weight:800;
  box-shadow:0 4px 12px rgba(30,41,59,.12);
}

.public-page .event-body h3{
  margin:16px 0 12px;
  font-size:1.09rem;
  line-height:1.45;
  font-weight:900;
  color:#2f3542;
  min-height:50px;
  display:flex;
  align-items:center;
  justify-content:center;
}

.public-page .event-body p{
  display:none;
}

.public-page .event-foot{
  width:100%;
  border-top:0;
  padding-top:0;
  margin-top:auto;
  display:grid;
  justify-items:center;
  gap:7px;
  color:#6f7784;
  font-size:.93rem;
  font-weight:600;
}

/* ทำให้ metadata ใน app.js แสดงกลางสวยขึ้น */
.public-page .event-foot > *:not(.btn){
  display:block;
}

.public-page .event-foot i{
  color:#21b7d5;
  margin-right:4px;
}

.public-page .event-card .btn,
.public-page .event-body .btn,
.public-page .event-foot .btn{
  width:100%;
  margin-top:14px;
  border-radius:12px;
  padding:12px 18px;
  color:#fff;
  font-size:.98rem;
  font-weight:900;
  box-shadow:0 6px 12px rgba(0,0,0,.10);
}

.public-page .event-card:nth-child(4n+1) .btn.primary,
.public-page .event-card:nth-child(4n+3) .btn.primary{
  background:linear-gradient(135deg,#5f78ef,#7538ad);
}

.public-page .event-card:nth-child(4n+2) .btn.primary,
.public-page .event-card:nth-child(4n+4) .btn.primary{
  background:linear-gradient(135deg,#ff8a00,#ffd03b);
}

.public-page .event-more-panel{
  margin:26px auto 0;
  padding:18px;
  width:min(760px,100%);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  border:1px solid rgba(99,102,241,.16);
  border-radius:24px;
  background:
    radial-gradient(circle at 8% 12%,rgba(99,102,241,.16),transparent 34%),
    radial-gradient(circle at 92% 18%,rgba(14,165,233,.16),transparent 34%),
    rgba(255,255,255,.86);
  box-shadow:0 12px 30px rgba(30,41,59,.08);
  backdrop-filter:blur(12px);
}

.public-page .event-more-text{
  display:flex;
  align-items:center;
  gap:14px;
  color:#475569;
}

.public-page .event-more-pill{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:7px;
  padding:9px 14px;
  border-radius:999px;
  background:linear-gradient(135deg,#eef2ff,#e0f2fe);
  color:#4f46e5;
  font-size:.86rem;
  font-weight:900;
  box-shadow:inset 0 0 0 1px rgba(99,102,241,.12);
}

.public-page .event-more-text b{
  display:block;
  margin:0 0 3px;
  color:#1e293b;
  font-size:1.02rem;
  font-weight:900;
}

.public-page .event-more-text p{
  margin:0;
  color:#64748b;
  font-size:.92rem;
  font-weight:700;
}

.public-page .event-more-actions{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  justify-content:flex-end;
}

.public-page .event-more-btn,
.public-page .event-less-btn{
  border:0;
  border-radius:999px;
  padding:12px 18px;
  font-weight:900;
  box-shadow:0 10px 18px rgba(30,41,59,.10);
}

.public-page .event-more-btn{
  background:linear-gradient(135deg,#6366f1,#06b6d4);
  color:#fff;
}

.public-page .event-less-btn{
  background:#fff;
  color:#4f46e5;
  border:1px solid rgba(79,70,229,.18);
}


.public-page .empty{
  margin-top:20px;
  background:#fff;
  border:1px dashed rgba(30,41,59,.18);
  border-radius:22px;
  text-align:center;
  padding:40px 20px;
  color:#6f7784;
  box-shadow:0 7px 18px rgba(30,41,59,.06);
}

.public-page .empty i{
  color:#667eea;
  font-size:3rem;
}

/* Stats like sample */
.public-page .stats{
  position:static;
  width:min(700px,calc(100% - 44px));
  margin:30px auto 22px;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:18px;
}

.public-page .stats article{
  min-height:76px;
  display:grid;
  grid-template-columns:auto 1fr;
  align-items:center;
  gap:12px;
  padding:14px 16px;
  background:#fff;
  border:0;
  border-radius:16px;
  box-shadow:0 6px 16px rgba(30,41,59,.07);
  overflow:hidden;
}

.public-page .stats article::after{
  display:none;
}

.public-page .stats i{
  width:42px;
  height:42px;
  border-radius:12px;
  display:grid;
  place-items:center;
  color:#fff;
  font-size:1.2rem;
  background:linear-gradient(135deg,#33c6f0,#1fb7dc);
}

.public-page .stats article:nth-child(2) i{
  background:linear-gradient(135deg,#41e6b4,#20d39a);
}

.public-page .stats article:nth-child(3) i{
  background:linear-gradient(135deg,#ff8c38,#f35d57);
}

.public-page .stats article:nth-child(4) i{
  background:linear-gradient(135deg,#5b5ce9,#7c4dcc);
}

.public-page .stats article div{
  display:grid;
  line-height:1.05;
}

.public-page .stats span{
  order:1;
  color:#8b909a;
  font-size:.86rem;
  font-weight:700;
}

.public-page .stats b{
  order:2;
  color:#2b2f38;
  font-size:1.45rem;
  font-weight:900;
  line-height:1.1;
}

/* Hide howto to keep page short like sample */
.public-page .howto{
  display:none;
}

/* Footer */
.public-page .footer{
  background:transparent;
  color:#6e7480;
  padding:8px 0 24px;
}

.public-page .footer .container{
  display:block;
  text-align:center;
  font-size:.92rem;
  line-height:1.7;
}

.public-page .footer b{
  display:none;
}

.public-page .footer span{
  color:#6e7480;
}

/* Modals still modern */
.modal{position:fixed;inset:0;background:rgba(11,23,48,.62);backdrop-filter:blur(14px);z-index:1000;display:grid;place-items:center;padding:18px}
.modal-card{width:min(800px,100%);max-height:92vh;overflow:auto;background:rgba(255,255,255,.96);border:1px solid rgba(255,255,255,.65);border-radius:28px;box-shadow:var(--shadow);padding:28px;position:relative}
.modal-card.wide{width:min(1080px,100%);height:min(92vh,880px);display:flex;flex-direction:column}
.x{position:absolute;right:16px;top:16px;width:42px;height:42px;border:0;border-radius:50%;background:#eef4ff;color:var(--text);cursor:pointer}
.cert-search{display:flex;gap:10px;margin:22px 0 8px}
.cert-search-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:10px 0 14px}
.cert-search-tools small{display:flex;align-items:center;gap:6px}
.names-button{background:#eef6ff;color:#1769e0;border:1px solid #cfe4ff;box-shadow:none}
.names-button:hover{background:#deedff;transform:translateY(-1px)}
.results{display:grid;gap:12px;margin-top:16px}
.names-summary{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:18px;background:linear-gradient(135deg,#eff6ff,#f5f3ff);border:1px solid #dbeafe;color:#203054}
.names-summary>i{font-size:1.55rem;color:#1769e0}
.names-summary div{display:grid;gap:2px}
.names-summary span{font-size:.9rem;color:var(--muted)}
.names-pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.names-pager span{font-weight:700;color:#34415a;text-align:center}
.result{border:1px solid var(--line);border-radius:22px;padding:17px;display:grid;grid-template-columns:1fr auto;gap:12px;background:#fff}
.result h3{margin:8px 0 4px}
.result p{margin:0;color:var(--muted)}
.actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
iframe{width:100%;flex:1;border:1px solid var(--line);border-radius:20px;background:#f1f6ff}
.search{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:999px;padding:0 15px;box-shadow:var(--shadow2)}
.search i{color:var(--p)}
.search input{border:0;background:transparent;outline:0;padding:13px 0;min-width:230px}
.search.big{flex:1;border-radius:22px}
.search.big input{width:100%;font-size:1.06rem;padding:17px 0}
input,select,textarea{width:100%;border:1px solid var(--line);border-radius:17px;padding:12px 14px;outline:0;background:#fff}
input:focus,select:focus,textarea:focus{box-shadow:0 0 0 4px rgba(36,87,230,.12);border-color:rgba(36,87,230,.45)}

/* ---------- Admin styles from V2 ---------- */
.login-screen{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at top left,rgba(36,87,230,.16),transparent 28rem),radial-gradient(circle at bottom right,rgba(18,185,129,.16),transparent 24rem),#f6f9ff}
.login-card{width:min(470px,100%);background:rgba(255,255,255,.94);border:1px solid rgba(255,255,255,.7);border-radius:32px;box-shadow:var(--shadow);padding:34px;display:grid;gap:14px}
.login-card label,.form label{display:grid;gap:7px;font-weight:900}
.login-icon{width:74px;height:74px;border-radius:24px;display:grid;place-items:center;background:linear-gradient(135deg,var(--p),var(--p2));color:#fff;font-size:2rem;box-shadow:0 16px 32px rgba(36,87,230,.22)}
.admin-shell{display:grid;grid-template-columns:288px 1fr;min-height:100vh}
.sidebar{position:sticky;top:0;height:100vh;background:linear-gradient(180deg,#0b1730,#102449);color:#fff;padding:18px;display:flex;flex-direction:column;gap:16px;box-shadow:10px 0 30px rgba(22,42,82,.12)}
.side-brand{display:flex;align-items:center;gap:10px;padding:10px}
.side-brand i{width:46px;height:46px;border-radius:17px;display:grid;place-items:center;background:linear-gradient(135deg,var(--p),var(--p2));box-shadow:0 12px 26px rgba(0,0,0,.18)}
.sidebar nav{display:grid;gap:6px}
.sidebar button,.sidebar a{display:flex;align-items:center;gap:10px;border:0;background:transparent;color:rgba(255,255,255,.72);padding:12px 14px;border-radius:17px;cursor:pointer;font-weight:900;text-align:left}
.sidebar button:hover,.sidebar button.active,.sidebar a:hover{background:rgba(255,255,255,.11);color:#fff}
.side-bottom{margin-top:auto}
.admin-main{min-width:0;padding:26px}
.admin-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}
.admin-head h1{margin:0;font-size:2.25rem;letter-spacing:-.04em}
.user-pill{background:#fff;border:1px solid var(--line);border-radius:999px;padding:10px 15px;box-shadow:var(--shadow2)}
.admin-sec{display:none}
.admin-sec.active{display:block}
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:20px}
.metrics article{background:rgba(255,255,255,.88);border:1px solid rgba(255,255,255,.72);border-radius:26px;padding:20px;box-shadow:var(--shadow);display:grid;gap:7px;backdrop-filter:blur(16px);position:relative;overflow:hidden}
.metrics article:after{content:'';position:absolute;right:-30px;top:-30px;width:90px;height:90px;border-radius:50%;background:linear-gradient(135deg,rgba(36,87,230,.12),rgba(18,185,129,.12))}
.metrics i{width:50px;height:50px;border-radius:17px;display:grid;place-items:center;background:linear-gradient(135deg,rgba(36,87,230,.12),rgba(9,168,216,.12));color:var(--p);font-size:1.35rem}
.metrics b{font-size:1.9rem;line-height:1}
.metrics span{color:var(--muted);font-weight:800}
.panel{background:rgba(255,255,255,.94);border:1px solid rgba(27,55,100,.12);border-radius:26px;box-shadow:var(--shadow2);padding:20px;margin-bottom:20px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.wide-left{grid-template-columns:.9fr 1.1fr}
.titlebar,.modal-title-row{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:22px}
.titlebar.compact{margin-bottom:12px}
.titlebar h2,.panel h2{margin:0;font-size:clamp(1.55rem,3vw,2.25rem);letter-spacing:-.03em}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.row-form{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-items:end}
.data-table{width:100%;border-collapse:separate;border-spacing:0;min-width:760px}
.data-table th,.data-table td{padding:12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.data-table th{background:#f0f6ff;color:#475467;font-weight:900}
.table-wrap{overflow:auto}
.status{display:inline-flex;align-items:center;gap:6px;font-weight:900}
.status:before{content:'';width:8px;height:8px;border-radius:50%;background:var(--muted)}
.ok:before{background:var(--green)}
.wait:before{background:var(--orange)}
.bad:before{background:var(--red)}
.modal-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.check{display:flex!important;align-items:center;gap:8px}
.check input{width:auto}
.progress{margin-top:16px;background:#f1f6ff;border-radius:20px;padding:14px}
.progress div{display:flex;justify-content:space-between;margin-bottom:10px;color:var(--muted)}
.progress em{display:block;height:12px;width:0%;background:linear-gradient(135deg,var(--p),var(--p2));border-radius:999px;transition:.2s}
.log{margin-top:16px;background:#09162d;color:#d7e1ee;border-radius:20px;min-height:130px;max-height:330px;overflow:auto;padding:14px;font-family:ui-monospace,monospace}
.hero-preview{min-height:340px;border-radius:26px;overflow:hidden;background:linear-gradient(135deg,var(--p),var(--p2));position:relative;color:#fff;display:grid;place-items:center;text-align:center;box-shadow:var(--shadow2)}
.hero-preview:before{content:'';position:absolute;inset:0;background-image:var(--preview-img,none);background-size:cover;background-position:center}
.hero-preview>div{position:absolute;inset:0;background:var(--preview-overlay,linear-gradient(135deg,rgba(10,25,55,.9),rgba(36,87,230,.72),rgba(18,185,129,.65)))}
.hero-preview section{position:relative;padding:24px}
.hero-preview span{width:78px;height:78px;border-radius:24px;margin:0 auto 10px;background:rgba(255,255,255,.2);display:grid;place-items:center;overflow:hidden;font-size:2.2rem}
.hero-preview img{width:100%;height:100%;object-fit:cover}
.editor-wrap{position:relative;background:#f1f6ff;border:1px solid var(--line);border-radius:22px;overflow:hidden}
.editor-wrap img{width:100%;display:block}
.marker{position:absolute;transform:translate(-50%,-50%);background:rgba(36,87,230,.92);color:#fff;border-radius:999px;padding:4px 8px;font-size:.8rem;cursor:grab}
.field-row{display:grid;grid-template-columns:1fr 90px 90px 90px;gap:8px;margin-top:10px;align-items:center;border:1px solid var(--line);border-radius:17px;padding:10px;background:#fff}

/* Responsive */
@media(max-width:980px){
  .grid2,.wide-left{grid-template-columns:1fr}
  .admin-shell{grid-template-columns:92px 1fr}
  .side-brand b,.sidebar button span{font-size:0}
  .sidebar button i,.sidebar a i{font-size:1.05rem}
  .row-form{grid-template-columns:1fr 1fr}
  .metrics{grid-template-columns:repeat(2,1fr)}
  .public-page .event-grid{grid-template-columns:1fr}
  .public-page #events.container{width:min(520px,calc(100% - 36px))}
  .public-page .stats{grid-template-columns:repeat(2,1fr);width:min(420px,calc(100% - 36px))}
}

@media(max-width:720px){
  .container{width:min(100% - 24px,1180px)}
  .result{grid-template-columns:1fr}
  .actions{justify-content:flex-start}
  .admin-shell{grid-template-columns:1fr}
  .sidebar{position:static;height:auto;overflow:auto;flex-direction:row}
  .sidebar nav{display:flex;overflow:auto}
  .side-bottom{display:none}
  .admin-main{padding:16px}
  .footer div{display:grid}
  .public-page .container{width:min(100% - 24px,1180px)}
  .public-page .hero{min-height:320px}
  .public-page .nav{padding:16px 0 6px}
  .public-page .brand b{font-size:1rem}
  .public-page .nav .btn.light.small{min-width:auto;padding:8px 14px;font-size:.86rem}
  .public-page .hero-content{padding:24px 0 42px}
  .public-page .hero-logo{width:62px;height:62px}
  .public-page .hero-logo i{font-size:3.2rem}
  .public-page .hero h1{font-size:2.15rem;letter-spacing:-.03em}
  .public-page .hero h2{font-size:.9rem;padding:5px 12px}
  .public-page #events.container{width:min(100% - 28px,520px)}
  .public-page .event-card{min-height:0}
  .public-page .event-top{height:106px}
  .public-page .event-top i{font-size:3.1rem}
  .public-page .event-body h3{min-height:auto;font-size:1rem}
  .public-page .stats{grid-template-columns:repeat(2,1fr);gap:12px;width:min(100% - 28px,420px)}
  .public-page .event-more-panel{align-items:stretch;flex-direction:column;padding:16px}
  .public-page .event-more-text{align-items:flex-start;flex-direction:column;gap:10px}
  .public-page .event-more-actions{width:100%;justify-content:stretch}
  .public-page .event-more-actions .btn{width:100%;justify-content:center}
  .public-page .stats article{padding:12px;min-height:70px}
  .public-page .stats i{width:38px;height:38px}
  .public-page .stats b{font-size:1.28rem}
  .cert-search{flex-direction:column}
  .cert-search-tools{align-items:stretch;flex-direction:column}
  .cert-search-tools .btn{width:100%;justify-content:center}
  .names-pager{display:grid;grid-template-columns:1fr 1fr}
  .names-pager span{grid-column:1/-1;grid-row:1}
  .search input{width:100%;min-width:0}
  .modal-form{grid-template-columns:1fr}
}



/* Admin Hero Preview Extra */
.admin-hero-preview{
  min-height: 360px;
  background:
    linear-gradient(rgba(0,0,0,.12),rgba(0,0,0,.12)),
    url('https://images.unsplash.com/photo-1506744038136-46273834b3fb?auto=format&fit=crop&w=1400&q=80');
  background-size: cover;
  background-position: center;
}
.admin-hero-preview section{
  text-align:center;
  color:#fff;
  text-shadow:0 3px 12px rgba(0,0,0,.28);
}
.admin-hero-preview h1{
  font-size:clamp(2rem,4vw,3.4rem);
  margin:.4rem 0;
  font-weight:900;
}
.admin-hero-preview h3{
  display:inline-block;
  margin:0;
  padding:6px 14px;
  border-radius:999px;
  background:rgba(0,0,0,.35);
}
.admin-hero-preview p{
  max-width:620px;
  margin:12px auto 0;
}
.admin-hero-preview span img{
  width:100%;
  height:100%;
  object-fit:contain;
}



/* =====================================================
   V6 Admin Beauty + Template Background Upload Fix UI
   ===================================================== */
body.admin-page{
  background:
    radial-gradient(circle at 12% 5%, rgba(37,99,235,.14), transparent 28rem),
    radial-gradient(circle at 92% 0%, rgba(14,165,233,.18), transparent 28rem),
    linear-gradient(180deg,#f7faff 0%,#eef4ff 100%);
}

.admin-page .admin-shell{
  grid-template-columns: 292px 1fr;
}

.admin-page .sidebar{
  margin:16px;
  height:calc(100vh - 32px);
  border-radius:30px;
  background:
    radial-gradient(circle at 10% 0%,rgba(96,165,250,.22),transparent 14rem),
    linear-gradient(180deg,#071937 0%,#0b2f5c 52%,#0b1730 100%);
  box-shadow:0 24px 60px rgba(15,23,42,.22);
  border:1px solid rgba(255,255,255,.10);
}

.admin-page .side-brand{
  border-radius:22px;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.12);
  padding:14px;
}

.admin-page .side-brand i{
  background:linear-gradient(135deg,#38bdf8,#6366f1);
}

.admin-page .sidebar nav{
  gap:7px;
}

.admin-page .sidebar button,
.admin-page .sidebar a{
  border-radius:18px;
  padding:12px 14px;
  transition:.18s ease;
}

.admin-page .sidebar button.active{
  background:#fff;
  color:#0b2f5c;
  box-shadow:0 12px 26px rgba(0,0,0,.18);
}

.admin-page .admin-main{
  padding:24px 28px 40px 10px;
}

.admin-page .admin-head{
  margin:4px 0 22px;
  padding:20px 24px;
  border-radius:28px;
  background:rgba(255,255,255,.76);
  border:1px solid rgba(255,255,255,.78);
  box-shadow:0 14px 36px rgba(15,23,42,.08);
  backdrop-filter:blur(14px);
}

.admin-page .admin-head h1{
  font-size:2rem;
  color:#102033;
}

.admin-page .user-pill{
  background:linear-gradient(135deg,#ffffff,#eef6ff);
  border:1px solid rgba(37,99,235,.12);
}

.admin-page .panel,
.admin-page .admin-card{
  background:rgba(255,255,255,.90);
  border:1px solid rgba(255,255,255,.85);
  border-radius:28px;
  box-shadow:0 16px 42px rgba(15,23,42,.08);
  backdrop-filter:blur(14px);
}

.admin-page .metrics article{
  background:rgba(255,255,255,.88);
  border:1px solid rgba(255,255,255,.86);
  border-radius:26px;
  box-shadow:0 14px 35px rgba(15,23,42,.08);
}

.admin-page .metrics article:nth-child(1) i{background:linear-gradient(135deg,#3b82f6,#06b6d4);color:#fff}
.admin-page .metrics article:nth-child(2) i{background:linear-gradient(135deg,#10b981,#2dd4bf);color:#fff}
.admin-page .metrics article:nth-child(3) i{background:linear-gradient(135deg,#f59e0b,#f97316);color:#fff}
.admin-page .metrics article:nth-child(4) i{background:linear-gradient(135deg,#8b5cf6,#6366f1);color:#fff}

.admin-page .data-table th{
  background:#f4f8ff;
  color:#475569;
}

.admin-page .data-table td{
  color:#334155;
}

.admin-page input,
.admin-page select,
.admin-page textarea{
  border-radius:16px;
  border:1px solid rgba(15,23,42,.10);
  background:#fff;
}

.page-hero-title{
  padding:22px 24px;
  border-radius:28px;
  background:linear-gradient(135deg,rgba(255,255,255,.90),rgba(238,246,255,.90));
  border:1px solid rgba(255,255,255,.90);
  box-shadow:0 14px 36px rgba(15,23,42,.08);
}

.soft-pill{
  display:inline-flex;
  align-items:center;
  gap:7px;
  padding:8px 12px;
  border-radius:999px;
  background:#eef6ff;
  color:#2563eb;
  font-weight:900;
  font-size:.86rem;
}

.template-admin-grid{
  grid-template-columns:1.35fr .75fr;
}

.helper-card{
  position:relative;
  overflow:hidden;
}

.helper-card:after{
  content:'';
  position:absolute;
  right:-70px;
  bottom:-90px;
  width:220px;
  height:220px;
  border-radius:50%;
  background:linear-gradient(135deg,rgba(37,99,235,.10),rgba(14,165,233,.12));
}

.helper-icon{
  width:68px;
  height:68px;
  border-radius:24px;
  display:grid;
  place-items:center;
  color:#fff;
  background:linear-gradient(135deg,#2563eb,#06b6d4);
  font-size:2rem;
  box-shadow:0 18px 36px rgba(37,99,235,.20);
  margin-bottom:14px;
}

.tips-list{
  display:grid;
  gap:10px;
  margin-top:18px;
}

.tips-list div{
  display:flex;
  gap:9px;
  align-items:center;
  background:#f7fbff;
  border:1px solid rgba(37,99,235,.10);
  border-radius:16px;
  padding:11px 12px;
  color:#475569;
  font-weight:700;
}

.tips-list i{
  color:#10b981;
}

.template-thumb{
  width:92px;
  height:60px;
  padding:0;
  border:1px solid rgba(15,23,42,.10);
  border-radius:12px;
  overflow:hidden;
  background:#f8fafc;
  cursor:pointer;
  box-shadow:0 6px 16px rgba(15,23,42,.08);
}

.template-thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

.template-modal-card{
  width:min(1120px,100%);
}

.template-modal-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:20px;
}

.template-upload-box,
.template-form-box{
  display:grid;
  gap:14px;
  align-content:start;
}

.template-bg-preview{
  min-height:310px;
  border-radius:24px;
  background:
    linear-gradient(45deg,#f8fafc 25%,transparent 25%),
    linear-gradient(-45deg,#f8fafc 25%,transparent 25%),
    linear-gradient(45deg,transparent 75%,#f8fafc 75%),
    linear-gradient(-45deg,transparent 75%,#f8fafc 75%);
  background-size:24px 24px;
  background-position:0 0,0 12px,12px -12px,-12px 0px;
  border:1px dashed rgba(37,99,235,.35);
  display:grid;
  place-items:center;
  overflow:hidden;
}

.template-bg-preview > div{
  display:grid;
  justify-items:center;
  gap:7px;
  color:#64748b;
  text-align:center;
}

.template-bg-preview i{
  width:66px;
  height:66px;
  border-radius:22px;
  display:grid;
  place-items:center;
  color:#fff;
  background:linear-gradient(135deg,#2563eb,#06b6d4);
  font-size:2rem;
  margin-bottom:4px;
}

.template-bg-preview.has-image{
  background:#0f172a;
  border-style:solid;
}

.template-bg-preview img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
  background:#111827;
}

.upload-drop{
  border:1px solid rgba(37,99,235,.20);
  border-radius:22px;
  padding:18px;
  background:linear-gradient(180deg,#f8fbff,#eef6ff);
  display:grid!important;
  justify-items:center;
  gap:8px!important;
  text-align:center;
  cursor:pointer;
  transition:.18s ease;
}

.upload-drop:hover{
  transform:translateY(-1px);
  box-shadow:0 12px 28px rgba(37,99,235,.12);
}

.upload-drop input{
  display:none;
}

.upload-drop i{
  width:56px;
  height:56px;
  border-radius:19px;
  display:grid;
  place-items:center;
  color:#fff;
  background:linear-gradient(135deg,#2563eb,#06b6d4);
  font-size:1.8rem;
}

.upload-drop span{
  color:#64748b;
  font-weight:700;
  word-break:break-word;
}

.upload-hint{
  margin:0;
  padding:12px 14px;
  border-radius:16px;
  color:#475569;
  background:#fff7ed;
  border:1px solid rgba(245,158,11,.18);
  font-weight:700;
}

@media(max-width:980px){
  .admin-page .admin-shell{
    grid-template-columns:92px 1fr;
  }
  .admin-page .sidebar{
    margin:10px;
    height:calc(100vh - 20px);
  }
  .admin-page .admin-main{
    padding:16px 16px 30px 0;
  }
  .template-admin-grid,
  .template-modal-grid{
    grid-template-columns:1fr;
  }
}

@media(max-width:720px){
  .admin-page .admin-shell{
    grid-template-columns:1fr;
  }
  .admin-page .sidebar{
    height:auto;
    margin:10px;
    border-radius:22px;
  }
  .admin-page .admin-main{
    padding:12px;
  }
  .admin-page .admin-head{
    display:block;
    padding:18px;
  }
  .template-bg-preview{
    min-height:220px;
  }
}



/* =====================================================
   V7 additions: school website button, compact footer,
   import sample downloads, field position builder
   ===================================================== */

/* Public school link */
.public-page .school-return-wrap{
  display:flex;
  justify-content:center;
  margin-top:14px;
}

.public-page .school-return-btn{
  padding:9px 18px;
  border-radius:999px;
  background:rgba(255,255,255,.24);
  border:1px solid rgba(255,255,255,.40);
  color:#fff;
  box-shadow:0 8px 22px rgba(0,0,0,.13);
  backdrop-filter:blur(8px);
  font-size:.95rem;
  font-weight:800;
}

.public-page .school-return-btn:hover{
  transform:translateY(-1px);
  background:rgba(255,255,255,.32);
}

/* Footer compact bottom bar */
.public-page .footer{
  background:#0f172a !important;
  color:#ffffff !important;
  padding:9px 0 !important;
  margin-top:18px;
  border-top:1px solid rgba(255,255,255,.08);
}

.public-page .footer .container{
  display:block !important;
  text-align:center !important;
  font-size:.82rem;
  line-height:1.5;
  color:#ffffff !important;
}

.public-page .footer b{
  display:none !important;
}

.public-page .footer span{
  color:#ffffff !important;
}

/* Import sample buttons */
.download-samples{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  padding:18px;
  margin-bottom:18px;
  border-radius:24px;
  background:
    radial-gradient(circle at 0% 0%,rgba(37,99,235,.12),transparent 18rem),
    linear-gradient(135deg,#ffffff,#f1f7ff);
  border:1px solid rgba(37,99,235,.12);
}

.download-samples h2{
  margin:0 0 4px;
  font-size:1.25rem;
}

/* Generate note */
.generate-note{
  display:flex;
  align-items:center;
  gap:14px;
  padding:16px;
  margin-bottom:18px;
  border-radius:22px;
  background:linear-gradient(135deg,#f8fbff,#eef6ff);
  border:1px solid rgba(37,99,235,.12);
}

.generate-note > i{
  width:54px;
  height:54px;
  border-radius:18px;
  display:grid;
  place-items:center;
  background:linear-gradient(135deg,#2563eb,#06b6d4);
  color:#fff;
  font-size:1.7rem;
}

.generate-note p{
  margin:4px 0 0;
}

/* Field builder */
.field-builder{
  display:grid;
  gap:12px;
  padding:14px;
  border-radius:22px;
  background:#f8fbff;
  border:1px solid rgba(37,99,235,.12);
}

.field-builder-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}

.field-builder-head p{
  margin:4px 0 0;
}

.field-editor{
  display:grid;
  gap:12px;
  max-height:430px;
  overflow:auto;
  padding-right:4px;
}

.field-edit-row{
  display:grid;
  gap:12px;
  padding:13px;
  border-radius:18px;
  background:#fff;
  border:1px solid rgba(15,23,42,.09);
  box-shadow:0 8px 18px rgba(15,23,42,.05);
}

.field-main{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}

.field-main .static-value{
  grid-column:1/-1;
}

.field-numbers{
  display:grid;
  grid-template-columns:repeat(8, minmax(70px,1fr));
  gap:8px;
}

.field-numbers label,
.field-main label{
  font-size:.82rem;
  color:#475569;
}

.field-numbers input,
.field-numbers select,
.field-main input,
.field-main select{
  margin-top:5px;
  padding:9px 10px;
  border-radius:12px;
}

.field-delete{
  justify-self:end;
}

.advanced-json{
  padding:12px 14px;
  border-radius:18px;
  background:#fff;
  border:1px solid rgba(15,23,42,.08);
}

.advanced-json summary{
  cursor:pointer;
  font-weight:900;
  color:#2563eb;
}

@media(max-width:1100px){
  .field-numbers{
    grid-template-columns:repeat(4,1fr);
  }
}

@media(max-width:720px){
  .public-page .school-return-btn{
    width:100%;
    white-space:normal;
    line-height:1.45;
  }
  .download-samples,
  .generate-note{
    display:grid;
  }
  .field-main{
    grid-template-columns:1fr;
  }
  .field-numbers{
    grid-template-columns:repeat(2,1fr);
  }
}



/* =====================================================
   V8 Certificate Generation Ready UI
   ===================================================== */
.generate-panel{
  display:grid;
  gap:18px;
  background:
    radial-gradient(circle at 100% 0%, rgba(37,99,235,.08), transparent 18rem),
    rgba(255,255,255,.92);
}

.generate-note{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:16px;
  align-items:center;
  padding:18px;
  border-radius:22px;
  background:linear-gradient(135deg,#eff6ff,#f8fbff);
  border:1px solid rgba(37,99,235,.12);
}

.generate-note > i{
  width:58px;
  height:58px;
  border-radius:20px;
  display:grid;
  place-items:center;
  color:#fff;
  background:linear-gradient(135deg,#2563eb,#06b6d4);
  font-size:1.8rem;
  box-shadow:0 14px 28px rgba(37,99,235,.18);
}

.generate-note b{
  font-size:1.08rem;
  color:#102033;
}

.generate-note p{
  margin:4px 0 0;
}

.generate-grid{
  display:grid;
  grid-template-columns:1.2fr 1.2fr .8fr .9fr;
  gap:14px;
  align-items:end;
}

.generate-grid label{
  display:grid;
  gap:7px;
  font-weight:900;
  color:#334155;
}

.generate-summary{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:14px;
}

.generate-summary article{
  display:grid;
  grid-template-columns:auto 1fr;
  align-items:center;
  gap:12px;
  padding:16px;
  border-radius:22px;
  background:#fff;
  border:1px solid rgba(15,23,42,.08);
  box-shadow:0 10px 24px rgba(15,23,42,.06);
}

.generate-summary i{
  width:44px;
  height:44px;
  border-radius:15px;
  display:grid;
  place-items:center;
  color:#fff;
  background:linear-gradient(135deg,#2563eb,#06b6d4);
  font-size:1.25rem;
}

.generate-summary article:nth-child(2) i{
  background:linear-gradient(135deg,#f59e0b,#f97316);
}

.generate-summary article:nth-child(3) i{
  background:linear-gradient(135deg,#10b981,#2dd4bf);
}

.generate-summary article:nth-child(4) i{
  background:linear-gradient(135deg,#ef4444,#f97316);
}

.generate-summary b{
  display:block;
  font-size:1.7rem;
  line-height:1;
  color:#0f172a;
}

.generate-summary span{
  display:block;
  margin-top:4px;
  color:#64748b;
  font-weight:800;
  font-size:.9rem;
}

.generate-actions{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
}

.generate-actions .btn{
  min-width:180px;
}

.generate-log{
  min-height:220px;
  max-height:420px;
  white-space:pre-wrap;
  line-height:1.6;
}

@media(max-width:1100px){
  .generate-grid{
    grid-template-columns:1fr 1fr;
  }
  .generate-summary{
    grid-template-columns:repeat(2,1fr);
  }
}

@media(max-width:720px){
  .generate-note{
    grid-template-columns:1fr;
  }
  .generate-grid,
  .generate-summary{
    grid-template-columns:1fr;
  }
  .generate-actions .btn{
    width:100%;
  }
}



/* =====================================================
   V9 Signature / Image Field UI
   ===================================================== */
.image-field-uploader{
  margin-top:14px;
  display:grid;
  gap:12px;
  padding:16px;
  border-radius:22px;
  background:linear-gradient(135deg,#f8fbff,#eef6ff);
  border:1px solid rgba(37,99,235,.14);
}

.image-field-uploader b{
  color:#102033;
}

.image-field-uploader p{
  margin:4px 0 0;
}

.upload-mini{
  display:flex!important;
  align-items:center;
  gap:10px!important;
  padding:12px 14px;
  border-radius:16px;
  background:#fff;
  border:1px dashed rgba(37,99,235,.28);
  cursor:pointer;
}

.upload-mini input{
  display:none;
}

.upload-mini i{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:14px;
  color:#fff;
  background:linear-gradient(135deg,#2563eb,#06b6d4);
}

.upload-mini span{
  color:#64748b;
  font-weight:800;
  word-break:break-word;
}

.field-edit-row.image-field-row{
  border-color:rgba(16,185,129,.28);
  background:linear-gradient(180deg,#ffffff,#f0fdf4);
}

.image-url-value input{
  font-size:.86rem;
}

.signature-row-preview{
  margin-top:10px;
  padding:10px;
  border-radius:16px;
  background:#fff;
  border:1px solid rgba(15,23,42,.08);
  display:grid;
  place-items:center;
}

.signature-row-preview img{
  max-width:220px;
  max-height:90px;
  object-fit:contain;
}

.image-only.hidden,
.text-only.hidden,
.height-box.hidden,
.image-url-value.hidden{
  display:none!important;
}



/* =====================================================
   V11 fixes: Import + Designer + Generate save-one
   ===================================================== */
.import-actions{margin-top:14px;margin-bottom:14px}
.import-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:12px 0 16px}
.import-summary article{background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:18px;padding:14px;text-align:center;box-shadow:0 8px 20px rgba(15,23,42,.06)}
.import-summary b{display:block;font-size:1.8rem;color:#0f172a;line-height:1}.import-summary span{color:#64748b;font-weight:800;font-size:.9rem}
.template-modal-card{width:min(1280px,calc(100% - 20px));}
.template-modal-grid{grid-template-columns:minmax(520px,1.2fr) minmax(420px,.8fr);align-items:start}.template-upload-box{position:sticky;top:10px}
.designer-stage{position:relative;min-height:420px;background:#111827!important;border:1px solid rgba(15,23,42,.12);box-shadow:0 18px 42px rgba(15,23,42,.16)}
.designer-stage>img{width:100%;height:100%;object-fit:contain;display:block;background:#0f172a}.template-markers{position:absolute;inset:0;pointer-events:none}.designer-marker{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;border:0;border-radius:999px;background:rgba(37,99,235,.94);color:#fff;padding:7px 10px;display:inline-flex;align-items:center;gap:6px;font-weight:900;font-size:.78rem;box-shadow:0 8px 18px rgba(37,99,235,.30);cursor:grab;user-select:none;white-space:nowrap}.designer-marker:active{cursor:grabbing;transform:translate(-50%,-50%) scale(.96)}.designer-marker.is-image{background:rgba(16,185,129,.94);box-shadow:0 8px 18px rgba(16,185,129,.28)}.designer-marker i{font-size:.95rem}.designer-hint{display:flex;gap:8px;align-items:center;margin:10px 0 0;color:#475569;background:#eff6ff;border:1px solid rgba(37,99,235,.12);border-radius:16px;padding:10px 12px;font-weight:800}.field-editor{max-height:520px;overflow:auto;padding-right:4px}.field-edit-row{border-radius:20px;background:#fff;border:1px solid rgba(15,23,42,.10);padding:14px;margin-bottom:12px;box-shadow:0 8px 18px rgba(15,23,42,.05)}.field-main{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field-main .static-value,.field-main .image-url-value{grid-column:1/-1}.field-numbers{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}.field-numbers label{font-size:.82rem}.field-numbers input,.field-numbers select{padding:8px 9px;border-radius:12px}.field-delete{margin-top:10px}.generate-actions #genSingleSaveBtn{border:1px solid rgba(16,185,129,.22);color:#047857;background:#ecfdf5}.generate-actions #genSingleSaveBtn:hover{background:#d1fae5}.template-bg-preview.has-image img{height:auto;min-height:420px}.template-bg-preview.has-image.designer-stage img{min-height:0;height:auto}
@media(max-width:1100px){.template-modal-grid{grid-template-columns:1fr}.template-upload-box{position:static}.designer-stage{min-height:260px}.field-main,.field-numbers{grid-template-columns:1fr 1fr}.import-summary{grid-template-columns:1fr}}



/* =====================================================
   V12 Designer Page Like Sample + Drag Real Text
   ===================================================== */
.template-designer-modal{
  padding:0;
  align-items:stretch;
  justify-items:stretch;
}
.template-designer-modal .certificate-designer-card{
  width:100%;
  height:100vh;
  max-height:100vh;
  border-radius:0;
  padding:0;
  overflow:hidden;
  background:#f4f7f6;
}
.designer-topbar{
  margin:18px auto 14px;
  width:min(1180px,calc(100% - 42px));
  min-height:78px;
  border-radius:22px;
  background:linear-gradient(135deg,#17652b,#6ed37c);
  color:#fff;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  padding:18px 22px;
  box-shadow:0 16px 36px rgba(23,101,43,.18);
}
.designer-title{display:flex;align-items:center;gap:14px;min-width:0}
.designer-app-icon{width:44px;height:44px;border-radius:16px;background:rgba(255,255,255,.18);display:grid;place-items:center;font-size:1.4rem}
.designer-title h2{margin:0;font-size:1.55rem;letter-spacing:-.02em;color:#fff}
.designer-title .eyebrow,.designer-title .muted{color:rgba(255,255,255,.86);margin:0}
.designer-top-actions{display:flex;gap:10px;flex-wrap:wrap}
.designer-top-actions .light{background:#fff;color:#17652b;border:0}
.designer-top-actions .primary{background:#17652b;color:#fff;box-shadow:0 10px 22px rgba(0,0,0,.14)}
.certificate-designer-layout{
  width:min(1180px,calc(100% - 42px));
  height:calc(100vh - 128px);
  margin:0 auto;
  display:grid;
  grid-template-columns:minmax(0,1fr) 330px;
  gap:16px;
  overflow:hidden;
}
.designer-canvas-panel,.designer-properties-panel{min-height:0}
.designer-canvas-panel{
  background:#fff;
  border:1px solid rgba(15,23,42,.08);
  border-radius:22px;
  box-shadow:0 10px 26px rgba(15,23,42,.06);
  display:grid;
  grid-template-rows:auto 1fr auto;
  overflow:hidden;
}
.designer-canvas-toolbar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:13px 16px;
  border-bottom:1px solid rgba(15,23,42,.06);
  background:#fbfdfc;
}
.designer-canvas-toolbar b{display:block;color:#1e293b}
.designer-canvas-toolbar span{display:block;color:#64748b;font-size:.88rem;margin-top:2px}
.designer-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.file-mini-btn{cursor:pointer}.file-mini-btn input{display:none!important}
.designer-stage-wrap{
  min-height:0;
  display:grid;
  place-items:center;
  padding:16px;
  overflow:auto;
  background:#eef4f1;
}
.template-bg-preview.designer-stage{
  width:min(100%,900px);
  aspect-ratio:1.414/1;
  min-height:auto;
  max-height:100%;
  position:relative;
  border-radius:10px;
  background:#f6faf7;
  border:1px solid rgba(15,23,42,.08);
  box-shadow:0 8px 0 #cbd5e1,0 12px 30px rgba(15,23,42,.08);
  overflow:hidden;
}
.template-bg-preview.designer-stage > .designer-bg-img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#f7fbf8;
}
.template-markers{position:absolute;inset:0;z-index:2}
.designer-marker{
  position:absolute;
  transform:translate(-50%,-50%);
  border:1.5px dashed transparent;
  background:transparent;
  padding:2px 4px;
  cursor:move;
  user-select:none;
  min-height:22px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-family:'Sarabun','Noto Sans Thai',sans-serif;
  line-height:1.18;
}
.designer-marker:hover,.designer-marker.active{
  border-color:#17823b;
  background:rgba(255,255,255,.22);
  box-shadow:0 0 0 2px rgba(23,130,59,.10);
}
.designer-text-marker span{width:100%;display:block;white-space:normal;text-shadow:none}
.designer-image-marker{padding:0;border-style:solid;background:rgba(255,255,255,.16)}
.designer-image-marker img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}
.designer-image-marker span{font-size:.8rem;color:#64748b}
.designer-canvas-footer{
  display:flex;gap:12px;justify-content:space-between;align-items:center;padding:10px 16px;border-top:1px solid rgba(15,23,42,.06);color:#64748b;font-size:.86rem;background:#fff;
}
.designer-properties-panel{
  display:flex;
  flex-direction:column;
  gap:10px;
  overflow:auto;
  padding-right:4px;
}
.designer-prop-card{
  background:#fff;
  border:1px solid rgba(15,23,42,.08);
  border-radius:18px;
  padding:13px;
  box-shadow:0 8px 18px rgba(15,23,42,.04);
}
.designer-prop-card h3{margin:0 0 10px;font-size:1rem;color:#1e293b;display:flex;gap:8px;align-items:center}
.prop-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.section-mini-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.section-mini-head h3{margin:0}
.designer-field-list{display:grid;gap:8px;max-height:330px;overflow:auto;padding-right:2px}
.field-edit-row{
  border:1px solid rgba(15,23,42,.08);
  border-radius:14px;
  padding:0;
  background:#fff;
  overflow:hidden;
}
.field-edit-row.active{border-color:#22a447;box-shadow:0 0 0 3px rgba(34,164,71,.10)}
.component-row-head{display:flex;align-items:center;gap:8px;padding:9px 10px;background:#f8fafc;cursor:pointer}
.component-row-head b{font-size:.92rem;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drag-dots{color:#94a3b8}
.component-row-head .field-delete{padding:4px 7px;min-width:auto}
.field-main{display:grid;gap:8px;padding:10px;border-top:1px solid rgba(15,23,42,.05)}
.field-numbers{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 10px 10px}
.field-edit-row label{font-size:.78rem;font-weight:800;color:#475569;gap:4px!important}
.field-edit-row input,.field-edit-row select,.field-edit-row textarea{padding:8px 9px;border-radius:10px;font-size:.86rem}
.signature-row-preview{margin:0 10px 10px}.signature-row-preview img{max-width:100%;max-height:70px}
.image-field-uploader{margin:0!important}.image-field-uploader .upload-mini{padding:10px}.image-field-uploader p{font-size:.84rem}
.designer-active-check{background:#fff;border-radius:15px;padding:12px;border:1px solid rgba(15,23,42,.08)}
.advanced-json textarea{font-family:ui-monospace,monospace;font-size:.8rem}
@media(max-width:980px){
  .designer-topbar,.certificate-designer-layout{width:calc(100% - 22px)}
  .certificate-designer-layout{grid-template-columns:1fr;height:auto;overflow:auto}
  .template-designer-modal .certificate-designer-card{overflow:auto}
  .designer-properties-panel{overflow:visible}
}



/* V13 Template button + certificate error polish */
.data-table .status + .btn.small.light{
  margin-left:6px;
  padding:6px 9px;
  min-width:auto;
}

.status.bad{
  color:#ef4444;
  font-weight:900;
}

.status.wait{
  color:#f59e0b;
  font-weight:900;
}

.status.ok{
  color:#10b981;
  font-weight:900;
}



/* =====================================================
   V15 Designer Scroll + Image Upload Fix
   ===================================================== */
body:has(#templateModal:not(.hidden)){
  overflow:hidden!important;
}

#templateModal.template-designer-modal{
  overflow:hidden!important;
  padding:0!important;
  align-items:stretch!important;
  justify-items:stretch!important;
}

#templateModal.template-designer-modal:not(.hidden){
  display:grid!important;
}

.template-designer-modal .certificate-designer-card{
  width:100vw!important;
  height:100dvh!important;
  max-width:100vw!important;
  max-height:100dvh!important;
  overflow:hidden!important;
  border-radius:0!important;
}

.template-designer-modal .designer-topbar{
  width:min(1320px,calc(100vw - 24px))!important;
  min-height:64px!important;
  margin:10px auto 8px!important;
  padding:12px 18px!important;
}

.template-designer-modal .designer-title h2{
  font-size:1.35rem!important;
}

.template-designer-modal .designer-title .muted{
  font-size:.86rem!important;
}

.template-designer-modal .certificate-designer-layout{
  width:min(1320px,calc(100vw - 24px))!important;
  height:calc(100dvh - 94px)!important;
  grid-template-columns:minmax(0,1fr) minmax(340px,380px)!important;
  overflow:hidden!important;
  gap:14px!important;
}

.template-designer-modal .designer-canvas-panel,
.template-designer-modal .designer-properties-panel{
  min-height:0!important;
  max-height:100%!important;
}

.template-designer-modal .designer-canvas-panel{
  min-width:0!important;
}

.template-designer-modal .designer-stage-wrap{
  min-height:0!important;
  overflow:auto!important;
  padding:12px!important;
}

.template-designer-modal .template-bg-preview.designer-stage{
  max-width:100%!important;
  max-height:calc(100dvh - 205px)!important;
  min-height:0!important;
}

.template-designer-modal .designer-properties-panel{
  overflow-y:auto!important;
  overflow-x:hidden!important;
  padding:0 8px 140px 0!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable;
}

.template-designer-modal .designer-prop-card{
  flex:0 0 auto!important;
}

.template-designer-modal .image-field-uploader{
  margin-top:0!important;
}

.template-designer-modal .upload-mini{
  min-height:78px!important;
  border:2px dashed rgba(37,99,235,.28)!important;
  background:linear-gradient(180deg,#ffffff,#f8fbff)!important;
}

.template-designer-modal .upload-mini:hover{
  border-color:#2563eb!important;
  box-shadow:0 12px 30px rgba(37,99,235,.12)!important;
}

.template-designer-modal #addImageFieldBtn{
  width:100%!important;
  justify-content:center!important;
  padding:12px 16px!important;
  font-size:1rem!important;
  color:#2563eb!important;
}

.template-designer-modal .signature-row-preview{
  max-width:100%;
}

.template-designer-modal .signature-row-preview img{
  max-width:100%;
}

@media(max-width:980px){
  body:has(#templateModal:not(.hidden)){
    overflow:auto!important;
  }

  .template-designer-modal .certificate-designer-card{
    overflow:auto!important;
  }

  .template-designer-modal .certificate-designer-layout{
    height:auto!important;
    min-height:calc(100dvh - 95px)!important;
    grid-template-columns:1fr!important;
    overflow:visible!important;
  }

  .template-designer-modal .designer-properties-panel{
    overflow:visible!important;
    padding:0 0 100px 0!important;
  }

  .template-designer-modal .template-bg-preview.designer-stage{
    max-height:none!important;
  }
}


/* V16 preview text consistency */
.designer-marker{white-space:normal!important;line-height:1.28;}
.designer-text-marker{padding:0!important;background:transparent!important;box-shadow:none!important;border:2px dashed rgba(34,197,94,.8)!important;border-radius:999px!important;color:inherit!important;}
.designer-text-marker>span{display:block;width:100%;padding:6px 10px;}
.designer-image-marker{border-radius:16px!important;overflow:hidden;}


/* V17 WYSIWYG + Font selector */
.designer-text-marker{
  overflow:visible!important;
  min-height:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  border:1.5px dashed rgba(34,197,94,.72)!important;
  border-radius:10px!important;
  background:rgba(255,255,255,.04)!important;
}
.designer-text-marker>span{
  padding:0!important;
  margin:0!important;
  display:block!important;
  width:100%!important;
  white-space:pre-wrap!important;
  overflow-wrap:break-word!important;
  text-shadow:none!important;
}
.field-numbers .font-select-box{
  grid-column:span 2;
}
.font-select-box select{
  font-weight:700;
}


/* V21 Public PDF Preview Fixed */
#previewFrame[aria-busy="true"]{
  background:
    radial-gradient(circle at center, rgba(37,99,235,.14), transparent 9rem),
    linear-gradient(180deg,#f8fbff,#eef6ff);
}
.preview-help{
  margin:10px 0 0;
  color:#64748b;
  font-weight:700;
  text-align:center;
  font-size:.92rem;
}


/* V22 SRP Designer Port refinements */
.template-designer-modal .designer-stage-wrap{background:linear-gradient(135deg,#f8faf8,#eef5ef)!important;}
.template-designer-modal .designer-text-marker{cursor:move!important;user-select:none!important;}
.template-designer-modal .designer-text-marker.active,.template-designer-modal .designer-image-marker.active{outline:2px solid #16a34a!important;outline-offset:2px!important;box-shadow:0 12px 30px rgba(22,163,74,.18)!important;}
.template-designer-modal .field-edit-row{transition:.18s ease;}
.template-designer-modal .field-edit-row:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(15,23,42,.08);}
.template-var-help{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.template-var-help code{padding:5px 8px;border-radius:999px;background:#f1f5f9;color:#2563eb;font-weight:800;font-size:.75rem;}


/* V23 Drag stability + alignment guides */
.template-markers{
  overflow:visible!important;
}

.designer-guides{
  position:absolute;
  inset:0;
  z-index:9;
  pointer-events:none;
}

.dg-line{
  position:absolute;
  pointer-events:none;
  opacity:.95;
}

.dg-v{
  top:0;
  bottom:0;
  width:0;
  border-left:1.5px dashed #2563eb;
  filter:drop-shadow(0 0 3px rgba(37,99,235,.35));
}

.dg-h{
  left:0;
  right:0;
  height:0;
  border-top:1.5px dashed #2563eb;
  filter:drop-shadow(0 0 3px rgba(37,99,235,.35));
}

.dg-line.center{
  border-color:#0ea5e9;
}

.dg-line.object{
  border-color:#16a34a;
}

.designer-marker.active{
  z-index:12!important;
}

.designer-text-marker{
  touch-action:none!important;
}

.designer-text-marker>span{
  overflow:visible!important;
}

.field-numbers input[data-field="maxLines"]{
  font-weight:900;
}


/* V24 PDF font size fix */
.field-hint{
  display:block;
  color:#64748b;
  font-size:.72rem;
  font-weight:800;
  margin-bottom:4px;
}


/* V25 No auto shrink: show overflow/wrap in designer */
.designer-text-marker{
  height:auto!important;
  min-height:1em!important;
  overflow:visible!important;
  white-space:normal!important;
}

.designer-text-marker>span{
  white-space:pre-wrap!important;
  overflow:visible!important;
  word-break:normal!important;
  overflow-wrap:anywhere!important;
  line-height:inherit!important;
}

.template-bg-preview,
.template-markers{
  overflow:visible!important;
}


/* V27 Activity QR */
.designer-qr-marker{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:#fff!important;
  border:2px dashed rgba(37,99,235,.65)!important;
  border-radius:10px!important;
  box-shadow:0 10px 24px rgba(15,23,42,.10)!important;
  cursor:move!important;
  touch-action:none!important;
  padding:4px!important;
  color:#0f172a!important;
}

.designer-qr-marker>span{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
  width:100%;
  height:100%;
}

.designer-qr-marker i{
  font-size:clamp(18px,4vw,42px);
  line-height:1;
}

.designer-qr-marker small{
  font-size:10px;
  font-weight:900;
  color:#2563eb;
  white-space:nowrap;
}

.designer-qr-marker.active{
  outline:2px solid #2563eb!important;
  outline-offset:2px!important;
}


/* V28 Admin filters, equal search controls, bulk delete */
.admin-filterbar{
  display:grid!important;
  grid-template-columns:minmax(260px, 1fr) minmax(280px, 1.4fr) auto;
  gap:12px!important;
  align-items:end!important;
  margin-bottom:14px!important;
}

.admin-filterbar .filter-control{
  display:flex;
  flex-direction:column;
  gap:6px;
  color:#475569;
  font-size:.86rem;
  font-weight:900;
  min-width:0;
}

.admin-filterbar .filter-control.grow{
  min-width:280px;
}

.admin-filterbar select,
.admin-filterbar input{
  width:100%!important;
  height:50px!important;
  min-height:50px!important;
  padding:0 16px!important;
  border:1px solid #dbe5f2!important;
  border-radius:16px!important;
  background:#fff!important;
  color:#0f172a!important;
  font-weight:800!important;
  box-sizing:border-box!important;
  outline:none!important;
}

.admin-filterbar select:focus,
.admin-filterbar input:focus{
  border-color:#2563eb!important;
  box-shadow:0 0 0 4px rgba(37,99,235,.12)!important;
}

.admin-filterbar .btn{
  height:50px!important;
  white-space:nowrap!important;
}

.admin-filterbar .btn:disabled{
  opacity:.48!important;
  cursor:not-allowed!important;
  filter:grayscale(.2);
}

@media (max-width: 980px){
  .admin-filterbar{
    grid-template-columns:1fr!important;
  }
  .admin-filterbar .filter-control.grow{
    min-width:0;
  }
  .admin-filterbar .btn{
    width:100%;
  }
}


/* V30 force show bulk delete event button */
#deleteByEventBtn.bulk-delete-event-btn,
#deleteByEventBtn{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:8px!important;
  min-height:46px!important;
  padding:0 18px!important;
  margin-top:10px!important;
  border-radius:16px!important;
  font-weight:900!important;
  background:#ef4444!important;
  color:#fff!important;
  border:none!important;
  box-shadow:0 12px 26px rgba(239,68,68,.20)!important;
}

#deleteByEventBtn:disabled{
  opacity:.45!important;
  cursor:not-allowed!important;
  filter:grayscale(.25);
}

#certEventFilter + #deleteByEventBtn,
#certSearchAdmin + #deleteByEventBtn{
  margin-left:10px!important;
}

@media (max-width: 980px){
  #deleteByEventBtn{
    width:100%!important;
    margin-left:0!important;
  }
}


/* V31 PDF font match and legacy tiny font repair */
.field-warning{
  display:block;
  margin-top:4px;
  color:#f97316;
  font-size:.72rem;
  font-weight:900;
  line-height:1.25;
}

.designer-text-marker{
  /* exact scale preview; no fake minimum font size */
  overflow:visible!important;
}

.designer-text-marker>span{
  overflow:visible!important;
}


/* V32 Event icon + gradient picker */
.event-style-select{
  width:100%!important;
  height:48px!important;
  border:1px solid #dbe5f2!important;
  border-radius:16px!important;
  background:#fff!important;
  color:#0f172a!important;
  font-weight:800!important;
  padding:0 14px!important;
  outline:none!important;
}

.event-style-select:focus{
  border-color:#2563eb!important;
  box-shadow:0 0 0 4px rgba(37,99,235,.12)!important;
}

.event-style-preview{
  display:grid!important;
  grid-template-columns:140px 1fr!important;
  gap:14px!important;
  align-items:stretch!important;
  margin-top:4px!important;
}

.event-icon-preview,
.event-gradient-preview{
  border-radius:20px!important;
  min-height:86px!important;
  color:#fff!important;
  box-shadow:0 16px 34px rgba(15,23,42,.15)!important;
  overflow:hidden!important;
}

.event-icon-preview{
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  align-items:center!important;
  gap:6px!important;
}

.event-icon-preview i{
  font-size:2.2rem!important;
  line-height:1!important;
}

.event-icon-preview small{
  font-size:.74rem!important;
  font-weight:900!important;
  opacity:.92!important;
}

.event-gradient-preview{
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  gap:6px!important;
  padding:16px 18px!important;
}

.event-gradient-preview span{
  font-size:1.05rem!important;
  font-weight:900!important;
  text-shadow:0 1px 8px rgba(0,0,0,.25)!important;
}

.event-gradient-preview code{
  display:block!important;
  max-width:100%!important;
  padding:5px 8px!important;
  border-radius:10px!important;
  background:rgba(255,255,255,.22)!important;
  color:#fff!important;
  font-size:.72rem!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

@media (max-width: 720px){
  .event-style-preview{
    grid-template-columns:1fr!important;
  }
}

/* =====================================================
   V35 — Premium Hero Text Upgrade
   ปรับข้อความ Hero ให้เด่น ชัด และดูพรีเมียมขึ้น
   ===================================================== */
.public-page .hero{
  min-height:390px;
}

.public-page .hero:before{
  filter:saturate(1.12) contrast(1.05) brightness(.92);
  transform:scale(1.01);
}

.public-page .hero-overlay{
  background:
    radial-gradient(circle at 50% 48%, rgba(255,255,255,.16) 0%, rgba(255,255,255,.05) 25%, rgba(0,0,0,0) 54%),
    linear-gradient(180deg, rgba(6,16,32,.32) 0%, rgba(6,16,32,.22) 42%, rgba(6,16,32,.38) 100%),
    linear-gradient(90deg, rgba(3,9,24,.54) 0%, rgba(3,9,24,.18) 38%, rgba(3,9,24,.48) 100%);
}

.public-page .hero-content{
  max-width:860px;
  padding:30px 0 62px;
}

.public-page .hero-content::before{
  content:'';
  position:absolute;
  left:50%;
  top:20px;
  width:min(780px, calc(100vw - 64px));
  height:245px;
  transform:translateX(-50%);
  border-radius:38px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,255,255,.05)),
    linear-gradient(135deg, rgba(8,19,43,.62), rgba(8,19,43,.26));
  border:1px solid rgba(255,255,255,.26);
  box-shadow:
    0 34px 90px rgba(0,0,0,.30),
    inset 0 1px 0 rgba(255,255,255,.32),
    inset 0 -1px 0 rgba(255,255,255,.08);
  backdrop-filter:blur(10px) saturate(1.25);
  -webkit-backdrop-filter:blur(10px) saturate(1.25);
  z-index:-1;
}

.public-page .hero-content::after{
  content:'';
  position:absolute;
  left:50%;
  top:36px;
  width:min(520px, 72vw);
  height:90px;
  transform:translateX(-50%);
  background:radial-gradient(ellipse at center, rgba(255,255,255,.28), rgba(255,255,255,0) 68%);
  filter:blur(10px);
  pointer-events:none;
  z-index:-1;
}

.public-page .hero-content > *{
  position:relative;
  z-index:1;
}

.public-page .hero-logo{
  width:84px;
  height:84px;
  margin:0 auto 12px;
  padding:8px;
  border-radius:50%;
  background:linear-gradient(145deg, rgba(255,255,255,.95), rgba(255,255,255,.68));
  border:1px solid rgba(255,255,255,.82);
  box-shadow:
    0 18px 44px rgba(0,0,0,.24),
    inset 0 1px 0 rgba(255,255,255,.9);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  overflow:hidden;
}

.public-page .hero-logo img{
  filter:drop-shadow(0 8px 12px rgba(0,0,0,.18));
}

.public-page .hero-logo i{
  color:#f6b73c;
  font-size:3.55rem;
  filter:drop-shadow(0 8px 14px rgba(0,0,0,.20));
}

.public-page .hero h1{
  margin:8px 0 12px;
  color:#fff;
  font-size:clamp(2.75rem, 6vw, 4.75rem);
  line-height:.94;
  letter-spacing:-.055em;
  font-weight:900;
  text-wrap:balance;
  -webkit-text-stroke:1px rgba(255,255,255,.18);
  text-shadow:
    0 1px 0 rgba(255,255,255,.28),
    0 4px 0 rgba(0,0,0,.12),
    0 14px 34px rgba(0,0,0,.46),
    0 0 34px rgba(255,255,255,.22);
}

.public-page .hero h1::after{
  content:'';
  display:block;
  width:120px;
  height:4px;
  margin:14px auto 0;
  border-radius:999px;
  background:linear-gradient(90deg, rgba(255,255,255,0), #fff, #ffd166, rgba(255,255,255,0));
  box-shadow:0 0 26px rgba(255,255,255,.64);
}

.public-page .hero h2{
  padding:8px 22px;
  border-radius:999px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.96), rgba(255,255,255,.78));
  color:#102033;
  font-size:1.06rem;
  font-weight:900;
  letter-spacing:.01em;
  border:1px solid rgba(255,255,255,.9);
  box-shadow:
    0 16px 36px rgba(0,0,0,.20),
    inset 0 1px 0 rgba(255,255,255,.85);
  text-shadow:none;
}

.public-page #heroDesc{
  display:block;
  width:fit-content;
  max-width:min(680px, calc(100% - 28px));
  margin:14px auto 0;
  padding:9px 18px;
  border-radius:999px;
  color:rgba(255,255,255,.96);
  font-size:1rem;
  font-weight:700;
  line-height:1.55;
  background:rgba(5,14,31,.34);
  border:1px solid rgba(255,255,255,.20);
  box-shadow:0 12px 30px rgba(0,0,0,.18);
  backdrop-filter:blur(9px);
  -webkit-backdrop-filter:blur(9px);
  text-shadow:0 3px 12px rgba(0,0,0,.34);
}

.public-page .school-return-wrap{
  margin-top:18px;
}

.public-page .school-return-btn{
  background:linear-gradient(135deg, rgba(255,255,255,.94), rgba(255,255,255,.76));
  color:#12203a;
  border:1px solid rgba(255,255,255,.88);
  box-shadow:
    0 16px 38px rgba(0,0,0,.22),
    inset 0 1px 0 rgba(255,255,255,.92);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.public-page .school-return-btn i{
  color:#2457e6;
}

.public-page .brand b{
  text-shadow:
    0 2px 10px rgba(0,0,0,.42),
    0 0 18px rgba(255,255,255,.18);
}

@media(max-width:720px){
  .public-page .hero{
    min-height:350px;
  }

  .public-page .hero-content{
    padding:22px 0 46px;
  }

  .public-page .hero-content::before{
    top:14px;
    width:min(100% - 18px, 520px);
    height:246px;
    border-radius:30px;
  }

  .public-page .hero-logo{
    width:68px;
    height:68px;
    padding:6px;
    margin-bottom:10px;
  }

  .public-page .hero-logo i{
    font-size:2.9rem;
  }

  .public-page .hero h1{
    font-size:clamp(2.15rem, 12vw, 3.05rem);
    letter-spacing:-.04em;
    line-height:1;
  }

  .public-page .hero h1::after{
    width:86px;
    height:3px;
    margin-top:10px;
  }

  .public-page .hero h2{
    font-size:.88rem;
    padding:7px 14px;
  }

  .public-page #heroDesc{
    font-size:.88rem;
    padding:8px 13px;
    border-radius:18px;
  }

  .public-page .school-return-btn{
    max-width:100%;
    white-space:normal;
    text-align:center;
    line-height:1.35;
    padding:10px 14px;
  }
}


/* =====================================================
   V36 — Compact 3 Cards Row + Cleaner More Panel
   แสดงการ์ด 3 ใบในแถวเดียวบนจอใหญ่ / ย่อการ์ดลง / ข้อความแถบดูเพิ่มเติมกระชับขึ้น
   ===================================================== */
.public-page #events.container{
  width:min(1120px, calc(100% - 44px));
}

.public-page .event-grid{
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:20px;
}

.public-page .event-card{
  border-radius:20px;
  min-height:286px;
  box-shadow:0 8px 20px rgba(30,41,59,.08);
}

.public-page .event-top{
  height:104px;
}

.public-page .event-top::before{
  right:-28px;
  top:-34px;
  width:112px;
  height:112px;
}

.public-page .event-top::after{
  right:30px;
  top:10px;
  width:58px;
  height:58px;
}

.public-page .event-top i{
  font-size:3.25rem;
}

.public-page .event-body{
  padding:0 18px 18px;
}

.public-page .badge{
  margin-top:-19px;
  padding:6px 15px;
  font-size:.84rem;
  box-shadow:0 5px 13px rgba(30,41,59,.12);
}

.public-page .event-body h3{
  margin:13px 0 8px;
  min-height:44px;
  font-size:1rem;
  line-height:1.42;
}

.public-page .event-foot{
  gap:5px;
  font-size:.88rem;
}

.public-page .event-card .btn,
.public-page .event-body .btn,
.public-page .event-foot .btn{
  margin-top:10px;
  padding:10px 15px;
  border-radius:11px;
  font-size:.93rem;
}

.public-page .event-more-panel{
  width:min(760px,100%);
  margin-top:22px;
  padding:15px 16px;
  border-radius:22px;
}

.public-page .event-more-text{
  gap:12px;
}

.public-page .event-more-pill{
  padding:8px 13px;
  font-size:.84rem;
}

.public-page .event-more-text b{
  font-size:1rem;
  margin-bottom:1px;
}

.public-page .event-more-text p{
  font-size:.88rem;
}

@media(max-width:1100px){
  .public-page #events.container{
    width:min(760px, calc(100% - 36px));
  }

  .public-page .event-grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
}

@media(max-width:720px){
  .public-page #events.container{
    width:min(100% - 28px, 520px);
  }

  .public-page .event-grid{
    grid-template-columns:1fr;
  }

  .public-page .event-card{
    min-height:0;
  }
}

/* =====================================================
   V37 — Desktop Fit One Screen
   ปรับหน้า public ให้กระชับมากขึ้นบนจอคอม เพื่อให้เห็นครบในหน้าเดียวโดยไม่ต้องเลื่อน
   ===================================================== */
@media (min-width:1101px){
  body.public-page{
    overflow-x:hidden;
  }

  .public-page .hero{
    min-height:clamp(215px, 28vh, 255px);
  }

  .public-page .nav{
    padding:14px 0 4px;
  }

  .public-page .brand b{
    font-size:1.02rem;
  }

  .public-page .nav .btn.light.small{
    padding:7px 15px;
    min-width:118px;
    font-size:.84rem;
  }

  .public-page .hero-content{
    max-width:860px;
    padding:8px 0 22px;
  }

  .public-page .hero-content::before{
    top:6px;
    width:min(720px, calc(100vw - 110px));
    height:168px;
    border-radius:30px;
    box-shadow:
      0 20px 50px rgba(0,0,0,.24),
      inset 0 1px 0 rgba(255,255,255,.28),
      inset 0 -1px 0 rgba(255,255,255,.08);
  }

  .public-page .hero-content::after{
    top:20px;
    width:min(430px, 58vw);
    height:58px;
    filter:blur(9px);
  }

  .public-page .hero-logo{
    width:56px;
    height:56px;
    margin:0 auto 8px;
    padding:5px;
  }

  .public-page .hero-logo i{
    font-size:2.5rem;
  }

  .public-page .hero h1{
    margin:4px 0 8px;
    font-size:clamp(2.15rem, 4.6vw, 3.45rem);
    line-height:.96;
  }

  .public-page .hero h1::after{
    width:94px;
    height:3px;
    margin-top:9px;
  }

  .public-page .hero h2{
    padding:6px 16px;
    font-size:.92rem;
  }

  .public-page #heroDesc{
    max-width:min(680px, calc(100% - 20px));
    margin-top:10px;
    padding:7px 14px;
    font-size:.88rem;
    line-height:1.4;
  }

  .public-page .school-return-wrap{
    margin-top:10px;
  }

  .public-page .school-return-btn{
    padding:9px 16px;
    font-size:.88rem;
    line-height:1.2;
    box-shadow:
      0 10px 24px rgba(0,0,0,.16),
      inset 0 1px 0 rgba(255,255,255,.92);
  }

  .public-page main{
    padding-top:12px;
  }

  .public-page .block{
    padding-bottom:8px;
  }

  .public-page #events.container{
    width:min(1130px, calc(100% - 38px));
  }

  .public-page .event-grid{
    gap:14px;
  }

  .public-page .event-card{
    min-height:226px;
    border-radius:18px;
  }

  .public-page .event-top{
    height:82px;
  }

  .public-page .event-top::before{
    width:94px;
    height:94px;
    right:-24px;
    top:-28px;
  }

  .public-page .event-top::after{
    width:48px;
    height:48px;
    right:22px;
    top:8px;
  }

  .public-page .event-top i{
    font-size:2.7rem;
  }

  .public-page .event-body{
    padding:0 14px 14px;
  }

  .public-page .badge{
    margin-top:-16px;
    padding:5px 12px;
    font-size:.8rem;
  }

  .public-page .event-body h3{
    margin:11px 0 7px;
    min-height:38px;
    font-size:.96rem;
    line-height:1.34;
  }

  .public-page .event-foot{
    gap:3px;
    font-size:.84rem;
  }

  .public-page .event-card .btn,
  .public-page .event-body .btn,
  .public-page .event-foot .btn{
    margin-top:8px;
    padding:9px 14px;
    font-size:.9rem;
    border-radius:10px;
  }

  .public-page .event-more-panel{
    width:min(690px, 100%);
    margin-top:14px;
    padding:10px 14px;
    border-radius:18px;
    gap:12px;
  }

  .public-page .event-more-text{
    gap:10px;
  }

  .public-page .event-more-pill{
    padding:7px 11px;
    font-size:.8rem;
  }

  .public-page .event-more-text b{
    font-size:.93rem;
    line-height:1.1;
  }

  .public-page .event-more-text p{
    font-size:.8rem;
    line-height:1.2;
  }

  .public-page .event-more-btn,
  .public-page .event-less-btn{
    padding:9px 14px;
    font-size:.86rem;
  }

  .public-page .stats{
    width:min(820px, calc(100% - 38px));
    margin:12px auto 8px;
    gap:12px;
  }

  .public-page .stats article{
    min-height:58px;
    gap:10px;
    padding:10px 12px;
    border-radius:14px;
  }

  .public-page .stats i{
    width:34px;
    height:34px;
    font-size:1rem;
    border-radius:10px;
  }

  .public-page .stats span{
    font-size:.78rem;
  }

  .public-page .stats b{
    font-size:1.08rem;
  }

  .public-page .footer{
    padding:2px 0 10px;
  }

  .public-page .footer .container{
    font-size:.78rem;
    line-height:1.45;
  }
}

/* จอเตี้ยเป็นพิเศษ เช่น โน้ตบุ๊ก 1366x768 ให้กระชับลงอีก */
@media (min-width:1101px) and (max-height:760px){
  .public-page .hero{
    min-height:210px;
  }

  .public-page .hero-content::before{
    height:158px;
  }

  .public-page #heroDesc{
    display:none;
  }

  .public-page .school-return-wrap{
    margin-top:8px;
  }

  .public-page .event-card{
    min-height:214px;
  }

  .public-page .event-top{
    height:78px;
  }

  .public-page .event-top i{
    font-size:2.5rem;
  }

  .public-page .event-body h3{
    min-height:34px;
    font-size:.92rem;
  }

  .public-page .stats{
    margin-top:10px;
  }

  .public-page .stats article{
    min-height:54px;
    padding:9px 11px;
  }
}

/* =====================================================
   V38 — Balanced Desktop Fit + Logo Clean Up
   - ลดความย่อเกินไปของ V37
   - เอา stroke/กรอบโลโก้ออก
   - ขยายโลโก้ขึ้นเล็กน้อย
   ===================================================== */

@media (min-width:1101px){
  /* คืนความสูงหน้าเว็บให้สมดุลขึ้น ไม่อัดจนเกินไป */
  .public-page .hero{
    min-height:250px;
  }

  .public-page .hero-content{
    padding:10px 0 28px;
  }

  .public-page .hero-content::before{
    top:8px;
    width:min(740px, calc(100vw - 110px));
    height:182px;
    border-radius:32px;
  }

  .public-page .hero-content::after{
    top:24px;
    width:min(470px, 60vw);
    height:68px;
  }

  /* โลโก้: เอา stroke/กรอบ/วงกลมพื้นหลังออก และขยายขึ้นอีกนิด */
  .public-page .hero-logo{
    width:70px;
    height:70px;
    margin:0 auto 9px;
    padding:0;
    background:transparent;
    border:0;
    box-shadow:none;
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
    border-radius:0;
    overflow:visible;
  }

  .public-page .hero-logo img{
    width:100%;
    height:100%;
    object-fit:contain;
    filter:drop-shadow(0 6px 12px rgba(0,0,0,.20));
  }

  .public-page .hero-logo i{
    font-size:3.1rem;
    filter:drop-shadow(0 6px 12px rgba(0,0,0,.20));
  }

  .public-page .hero h1{
    margin:6px 0 9px;
    font-size:clamp(2.3rem, 4.8vw, 3.7rem);
  }

  .public-page .hero h1::after{
    width:102px;
    margin-top:10px;
  }

  .public-page .hero h2{
    padding:7px 18px;
    font-size:.96rem;
  }

  .public-page #heroDesc{
    display:block;
    margin-top:11px;
    padding:8px 15px;
    font-size:.9rem;
    line-height:1.45;
  }

  .public-page .school-return-wrap{
    margin-top:12px;
  }

  .public-page .school-return-btn{
    padding:10px 16px;
    font-size:.9rem;
  }

  .public-page main{
    padding-top:14px;
  }

  .public-page .block{
    padding-bottom:12px;
  }

  .public-page .event-grid{
    gap:16px;
  }

  .public-page .event-card{
    min-height:236px;
  }

  .public-page .event-top{
    height:86px;
  }

  .public-page .event-top i{
    font-size:2.85rem;
  }

  .public-page .event-body{
    padding:0 15px 15px;
  }

  .public-page .badge{
    margin-top:-17px;
    padding:5px 12px;
    font-size:.81rem;
  }

  .public-page .event-body h3{
    min-height:40px;
    font-size:.97rem;
    margin:12px 0 8px;
  }

  .public-page .event-foot{
    font-size:.85rem;
    gap:4px;
  }

  .public-page .event-card .btn,
  .public-page .event-body .btn,
  .public-page .event-foot .btn{
    margin-top:9px;
    padding:9px 14px;
    font-size:.91rem;
  }

  .public-page .event-more-panel{
    margin-top:16px;
    padding:11px 14px;
  }

  .public-page .stats{
    margin:14px auto 12px;
    gap:13px;
  }

  .public-page .stats article{
    min-height:60px;
    padding:10px 13px;
  }

  .public-page .footer{
    padding:4px 0 14px;
  }
}

/* จอเตี้ย: ผ่อนความย่อจาก V37 ไม่ให้ขาด/อัดเกินไป */
@media (min-width:1101px) and (max-height:760px){
  .public-page .hero{
    min-height:232px;
  }

  .public-page .hero-content{
    padding:8px 0 24px;
  }

  .public-page .hero-content::before{
    height:174px;
  }

  .public-page #heroDesc{
    display:block;
    font-size:.86rem;
    padding:7px 13px;
  }

  .public-page .hero-logo{
    width:66px;
    height:66px;
  }

  .public-page .hero h1{
    font-size:clamp(2.15rem, 4.5vw, 3.35rem);
  }

  .public-page .event-card{
    min-height:228px;
  }

  .public-page .event-top{
    height:82px;
  }

  .public-page .event-body h3{
    min-height:38px;
    font-size:.95rem;
  }

  .public-page .stats{
    margin-top:12px;
  }
}


/* =====================================================
   V39 — Full Screen Balance
   ทำให้หน้า Public เต็มจอคอมแบบพอดี: ไม่มีพื้นที่ว่างใต้ Footer
   โดยไม่บีบย่อการ์ด/hero จนเกินไป
   ===================================================== */

/* ใช้เฉพาะหน้า Public */
body.public-page{
  min-height:100vh;
  display:flex;
  flex-direction:column;
}

.public-page .hero{
  flex:0 0 auto;
}

.public-page main{
  flex:1 0 auto;
  display:flex;
  flex-direction:column;
}

.public-page .footer{
  flex:0 0 auto;
  margin-top:auto;
}

/* จอคอม: ดัน footer ลงล่าง และเติมระยะหายใจให้เนื้อหาดูเต็มจอ */
@media (min-width:1101px){
  .public-page main{
    justify-content:flex-start;
  }

  .public-page #events.container{
    margin-top:0;
  }

  .public-page .stats{
    margin-bottom:22px;
  }

  .public-page .footer{
    padding:8px 0 16px;
  }
}

/* จอเตี้ย: ยังเต็มจอ แต่ไม่ปล่อยพื้นที่ว่างใต้ footer */
@media (min-width:1101px) and (max-height:760px){
  .public-page .stats{
    margin-bottom:18px;
  }

  .public-page .footer{
    padding:6px 0 14px;
  }
}


/* =====================================================
   V40 — Event Slider 3 Cards
   ถ้ามีกิจกรรมเกิน 3 รายการ ให้เลื่อนดูด้วยปุ่มซ้าย-ขวา
   และแสดงทีละ 3 กิจกรรมเท่านั้น
   ===================================================== */
.public-page .event-more-actions{
  gap:10px;
}

.public-page .event-more-actions .btn{
  min-width:128px;
}

.public-page .event-more-actions .btn i:last-child{
  margin-left:2px;
}

.public-page .event-more-actions .btn.is-disabled,
.public-page .event-more-actions .btn:disabled{
  opacity:.5;
  cursor:not-allowed;
  pointer-events:none;
  transform:none;
  box-shadow:none;
}

@media(max-width:720px){
  .public-page .event-more-actions{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
    width:100%;
  }

  .public-page .event-more-actions .btn{
    width:100%;
    min-width:0;
  }
}


/* =====================================================
   V41 — Premium Admin UI
   ปรับหน้าแอดมินให้ดูมืออาชีพ เรียบหรู และทันสมัยมากขึ้น
   ===================================================== */

.admin-page{
  background:
    radial-gradient(circle at 0% 0%, rgba(37,99,235,.10), transparent 28rem),
    radial-gradient(circle at 100% 10%, rgba(14,165,233,.10), transparent 22rem),
    linear-gradient(180deg, #f5f8ff 0%, #edf3ff 100%);
  color:#102033;
}

.admin-page .loader>div{
  border-radius:28px;
  box-shadow:0 24px 60px rgba(15,23,42,.18);
}

/* Login */
.admin-page .login-screen{
  background:
    radial-gradient(circle at top left, rgba(37,99,235,.16), transparent 26rem),
    radial-gradient(circle at bottom right, rgba(59,130,246,.12), transparent 24rem),
    linear-gradient(180deg,#f6f9ff 0%,#eef4ff 100%);
}

.admin-page .login-card{
  border-radius:34px;
  padding:36px;
  background:rgba(255,255,255,.92);
  border:1px solid rgba(255,255,255,.78);
  box-shadow:
    0 30px 70px rgba(15,23,42,.14),
    inset 0 1px 0 rgba(255,255,255,.8);
  backdrop-filter:blur(14px);
}

.admin-page .login-card h1{
  margin:0;
  font-size:2rem;
  letter-spacing:-.04em;
}

.admin-page .login-card form{
  display:grid;
  gap:12px;
  margin-top:8px;
}

/* App shell */
.admin-page .admin-shell{
  grid-template-columns:300px 1fr;
  min-height:100vh;
  gap:20px;
  padding:18px;
  background:transparent;
}

/* Sidebar */
.admin-page .sidebar{
  position:sticky;
  top:18px;
  height:calc(100vh - 36px);
  padding:18px 16px;
  border-radius:30px;
  background:
    linear-gradient(180deg, rgba(10,30,68,.98) 0%, rgba(8,27,61,.98) 55%, rgba(5,21,50,.99) 100%);
  border:1px solid rgba(255,255,255,.08);
  box-shadow:
    0 24px 60px rgba(2,8,23,.28),
    inset 0 1px 0 rgba(255,255,255,.06);
}

.admin-page .side-brand{
  gap:12px;
  padding:14px 14px 16px;
  margin-bottom:8px;
  border-radius:24px;
  background:linear-gradient(135deg, rgba(255,255,255,.11), rgba(255,255,255,.05));
  border:1px solid rgba(255,255,255,.08);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
}

.admin-page .side-brand i{
  width:50px;
  height:50px;
  border-radius:16px;
  font-size:1.2rem;
  background:linear-gradient(135deg,#43a3ff,#6a6cff);
  box-shadow:
    0 14px 28px rgba(59,130,246,.35),
    inset 0 1px 0 rgba(255,255,255,.25);
}

.admin-page .side-brand b{
  font-size:1.25rem;
  letter-spacing:-.02em;
}

.admin-page .sidebar nav{
  gap:8px;
  margin-top:10px;
}

.admin-page .sidebar button,
.admin-page .sidebar a{
  position:relative;
  gap:12px;
  padding:12px 14px;
  border-radius:18px;
  color:rgba(255,255,255,.76);
  transition:.18s ease;
}

.admin-page .sidebar button i,
.admin-page .sidebar a i{
  width:22px;
  text-align:center;
  font-size:1.05rem;
}

.admin-page .sidebar button:hover,
.admin-page .sidebar a:hover{
  color:#fff;
  background:rgba(255,255,255,.08);
  transform:translateX(2px);
}

.admin-page .sidebar button.active{
  color:#0b2f65;
  background:linear-gradient(135deg,#ffffff,#eef5ff);
  box-shadow:
    0 10px 24px rgba(255,255,255,.16),
    inset 0 1px 0 rgba(255,255,255,.85);
}

.admin-page .sidebar button.active::before{
  content:'';
  position:absolute;
  left:10px;
  top:50%;
  width:4px;
  height:24px;
  border-radius:999px;
  background:linear-gradient(180deg,#2563eb,#06b6d4);
  transform:translateY(-50%);
}

.admin-page .side-bottom{
  padding-top:12px;
  border-top:1px solid rgba(255,255,255,.08);
}

/* Main content */
.admin-page .admin-main{
  min-width:0;
  padding:0;
}

.admin-page .admin-head{
  position:relative;
  align-items:flex-start;
  margin-bottom:20px;
  padding:24px 26px;
  border-radius:30px;
  background:
    radial-gradient(circle at 100% 0%, rgba(56,189,248,.12), transparent 14rem),
    radial-gradient(circle at 0% 100%, rgba(37,99,235,.10), transparent 12rem),
    rgba(255,255,255,.82);
  border:1px solid rgba(255,255,255,.74);
  box-shadow:
    0 22px 50px rgba(15,23,42,.08),
    inset 0 1px 0 rgba(255,255,255,.86);
  backdrop-filter:blur(12px);
}

.admin-page .admin-head h1{
  margin:0 0 8px;
  font-size:clamp(2rem,3.1vw,2.8rem);
  letter-spacing:-.045em;
  line-height:1;
}

.admin-page .admin-head .muted{
  margin:0;
  font-size:1rem;
  color:#667085;
}

.admin-page .user-pill{
  border:1px solid rgba(148,163,184,.22);
  background:rgba(255,255,255,.8);
  border-radius:999px;
  padding:12px 18px;
  font-weight:700;
  color:#334155;
  box-shadow:0 12px 24px rgba(15,23,42,.06);
}

/* Metrics */
.admin-page .metrics{
  gap:16px;
  margin-bottom:20px;
}

.admin-page .metrics article{
  padding:18px 18px 16px;
  border-radius:26px;
  background:
    radial-gradient(circle at 100% 0%, rgba(14,165,233,.10), transparent 4.5rem),
    rgba(255,255,255,.9);
  border:1px solid rgba(255,255,255,.78);
  box-shadow:
    0 18px 40px rgba(15,23,42,.08),
    inset 0 1px 0 rgba(255,255,255,.9);
}

.admin-page .metrics article::before{
  content:'';
  position:absolute;
  left:18px;
  right:18px;
  top:0;
  height:4px;
  border-radius:999px;
  background:linear-gradient(90deg,#2563eb,#06b6d4);
  opacity:.95;
}

.admin-page .metrics article:nth-child(2)::before{
  background:linear-gradient(90deg,#10b981,#34d399);
}

.admin-page .metrics article:nth-child(3)::before{
  background:linear-gradient(90deg,#f59e0b,#fb7185);
}

.admin-page .metrics article:nth-child(4)::before{
  background:linear-gradient(90deg,#8b5cf6,#6366f1);
}

.admin-page .metrics i{
  width:48px;
  height:48px;
  border-radius:16px;
  background:linear-gradient(135deg,#40a9ff,#1d72f2);
  color:#fff;
  box-shadow:0 12px 24px rgba(37,99,235,.22);
}

.admin-page .metrics article:nth-child(2) i{
  background:linear-gradient(135deg,#2dd4bf,#10b981);
}
.admin-page .metrics article:nth-child(3) i{
  background:linear-gradient(135deg,#fb923c,#f59e0b);
}
.admin-page .metrics article:nth-child(4) i{
  background:linear-gradient(135deg,#8b5cf6,#6366f1);
}

.admin-page .metrics b{
  font-size:2.1rem;
  margin-top:4px;
}

.admin-page .metrics span{
  font-size:.98rem;
  color:#64748b;
}

/* Panels & cards */
.admin-page .panel{
  border-radius:30px;
  padding:20px 20px 18px;
  background:rgba(255,255,255,.9);
  border:1px solid rgba(255,255,255,.78);
  box-shadow:
    0 20px 45px rgba(15,23,42,.08),
    inset 0 1px 0 rgba(255,255,255,.9);
  backdrop-filter:blur(10px);
}

.admin-page .titlebar{
  margin-bottom:18px;
}

.admin-page .titlebar h2,
.admin-page .panel h2{
  font-size:clamp(1.5rem,2vw,2.1rem);
}

.admin-page .admin-card,
.admin-page .helper-card{
  height:100%;
}

/* Tables */
.admin-page .table-wrap{
  border-radius:22px;
  overflow:auto;
  border:1px solid rgba(148,163,184,.18);
  background:rgba(248,250,252,.76);
}

.admin-page .data-table{
  min-width:100%;
}

.admin-page .data-table thead th{
  position:sticky;
  top:0;
  z-index:1;
  background:linear-gradient(180deg,#f6f8fc,#edf2f9);
  color:#475467;
  font-size:.95rem;
  font-weight:900;
}

.admin-page .data-table th,
.admin-page .data-table td{
  padding:13px 14px;
  border-bottom:1px solid rgba(148,163,184,.16);
}

.admin-page .data-table tbody tr{
  transition:.15s ease;
}

.admin-page .data-table tbody tr:hover{
  background:rgba(37,99,235,.035);
}

.admin-page .status{
  padding:0;
  font-size:.96rem;
}

.admin-page .status.ok{
  color:#059669;
}
.admin-page .status.bad{
  color:#dc2626;
}
.admin-page .status.wait{
  color:#d97706;
}

/* Filter/tool rows */
.admin-page .toolbar{
  gap:10px;
}

.admin-page .admin-filterbar{
  padding:14px;
  margin-bottom:14px;
  border-radius:22px;
  background:linear-gradient(180deg, rgba(248,250,252,.96), rgba(241,245,249,.85));
  border:1px solid rgba(148,163,184,.16);
}

.admin-page .filter-control{
  display:grid;
  gap:6px;
  font-weight:800;
  color:#475467;
}

.admin-page .filter-control.grow{
  flex:1 1 260px;
}

/* Buttons */
.admin-page .btn{
  border-radius:16px;
  padding:12px 18px;
  font-weight:900;
  box-shadow:none;
}

.admin-page .btn.primary{
  background:linear-gradient(135deg,#2563eb,#0ea5e9);
  box-shadow:0 14px 26px rgba(37,99,235,.20);
}

.admin-page .btn.light{
  background:#fff;
  color:#1d4ed8;
  border:1px solid rgba(37,99,235,.15);
  box-shadow:0 10px 20px rgba(15,23,42,.05);
}

.admin-page .btn.danger{
  box-shadow:0 14px 26px rgba(239,68,68,.16);
}

/* Inputs */
.admin-page input,
.admin-page select,
.admin-page textarea{
  border-radius:16px;
  padding:12px 14px;
  border:1px solid rgba(148,163,184,.24);
  background:rgba(255,255,255,.96);
}

.admin-page input:focus,
.admin-page select:focus,
.admin-page textarea:focus{
  box-shadow:0 0 0 4px rgba(37,99,235,.12);
  border-color:rgba(37,99,235,.42);
}

/* Logs / progress */
.admin-page .progress{
  border-radius:20px;
  background:linear-gradient(180deg,#f8fbff,#eef5ff);
  border:1px solid rgba(148,163,184,.16);
}

.admin-page .log{
  border-radius:22px;
  border:1px solid rgba(255,255,255,.08);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.02);
}

/* Modal */
.admin-page .modal-card{
  border-radius:30px;
  border:1px solid rgba(255,255,255,.8);
  box-shadow:
    0 26px 60px rgba(15,23,42,.18),
    inset 0 1px 0 rgba(255,255,255,.9);
}

.admin-page .x{
  background:#eff6ff;
  color:#1d4ed8;
}

/* Responsive */
@media(max-width:1200px){
  .admin-page .admin-shell{
    grid-template-columns:260px 1fr;
  }
}

@media(max-width:980px){
  .admin-page .admin-shell{
    gap:14px;
    padding:14px;
  }

  .admin-page .sidebar{
    top:14px;
    height:calc(100vh - 28px);
    border-radius:24px;
  }

  .admin-page .admin-head{
    padding:20px;
    border-radius:24px;
  }

  .admin-page .metrics{
    grid-template-columns:repeat(2,1fr);
  }
}

@media(max-width:720px){
  .admin-page .admin-shell{
    grid-template-columns:1fr;
    padding:10px;
  }

  .admin-page .sidebar{
    position:static;
    height:auto;
    border-radius:22px;
    padding:14px;
  }

  .admin-page .side-brand{
    margin-bottom:4px;
  }

  .admin-page .sidebar nav{
    display:flex;
    overflow:auto;
    gap:8px;
    padding-bottom:4px;
  }

  .admin-page .sidebar button,
  .admin-page .sidebar a{
    flex:0 0 auto;
    white-space:nowrap;
  }

  .admin-page .side-bottom{
    margin-top:8px;
    display:flex;
    gap:8px;
    flex-wrap:wrap;
  }

  .admin-page .admin-head{
    flex-direction:column;
    gap:14px;
  }

  .admin-page .user-pill{
    width:100%;
    text-align:center;
  }

  .admin-page .metrics{
    grid-template-columns:1fr;
  }
}


/* =====================================================
   V42 — Admin Modern Blue ตามตัวอย่าง
   Sidebar น้ำเงินเข้ม + Header ภาพโรงเรียน + การ์ด dashboard แบบมืออาชีพ
   ===================================================== */

.admin-page{
  --admin-navy:#00336f;
  --admin-navy2:#00295c;
  --admin-blue:#1d6ff2;
  --admin-cyan:#18a7ff;
  --admin-green:#12c98b;
  --admin-orange:#ff8a12;
  --admin-purple:#7c4dff;
  --admin-text:#10233f;
  --admin-muted:#63748d;
  --admin-line:rgba(148,163,184,.18);
  --admin-hero-img:linear-gradient(135deg,rgba(221,239,255,.9),rgba(255,255,255,.94));
  min-height:100vh;
  background:
    radial-gradient(circle at 30% 0%,rgba(37,99,235,.08),transparent 28rem),
    linear-gradient(180deg,#eef6ff 0%,#f7fbff 48%,#ffffff 100%);
}

.admin-page .admin-shell{
  display:grid;
  grid-template-columns:270px 1fr;
  min-height:100vh;
  gap:0;
  padding:0;
  background:transparent;
}

/* Sidebar เหมือนตัวอย่าง */
.admin-page .sidebar{
  position:sticky;
  top:0;
  height:100vh;
  padding:26px 18px 24px;
  border-radius:0;
  background:
    radial-gradient(circle at 0% 0%,rgba(38,119,255,.28),transparent 18rem),
    linear-gradient(180deg,#003a7d 0%,#002b62 45%,#001f49 100%);
  border:0;
  box-shadow:10px 0 34px rgba(0,31,73,.18);
  overflow:hidden;
}

.admin-page .sidebar::before{
  content:'';
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 20% 18%,rgba(255,255,255,.12),transparent 14rem),
    linear-gradient(180deg,rgba(255,255,255,.03),transparent);
  pointer-events:none;
}

.admin-page .sidebar > *{
  position:relative;
  z-index:1;
}

.admin-page .side-brand{
  display:grid;
  grid-template-columns:58px 1fr;
  align-items:center;
  gap:12px;
  padding:4px 4px 24px;
  margin:0 0 14px;
  background:transparent;
  border:0;
  box-shadow:none;
}

.admin-page .side-logo{
  width:58px;
  height:58px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:rgba(255,255,255,.96);
  box-shadow:0 12px 22px rgba(0,0,0,.18);
  overflow:hidden;
}

.admin-page .side-logo img{
  width:100%;
  height:100%;
  object-fit:contain;
  padding:2px;
}

.admin-page .side-logo i{
  color:#1d6ff2;
  font-size:1.65rem;
}

.admin-page .side-brand-text{
  min-width:0;
  display:grid;
  gap:2px;
}

.admin-page .side-brand-text b{
  color:#fff;
  font-size:1.04rem;
  line-height:1.25;
  font-weight:900;
  letter-spacing:-.02em;
}

.admin-page .side-brand-text small{
  color:rgba(255,255,255,.82);
  font-size:.85rem;
  font-weight:600;
}

.admin-page .sidebar nav{
  gap:8px;
  margin-top:10px;
}

.admin-page .sidebar button,
.admin-page .sidebar a{
  height:44px;
  gap:12px;
  padding:0 14px;
  border-radius:12px;
  color:rgba(255,255,255,.82);
  font-size:.96rem;
  font-weight:800;
  background:transparent;
  transition:.18s ease;
}

.admin-page .sidebar button i,
.admin-page .sidebar a i{
  width:22px;
  font-size:1.1rem;
  text-align:center;
}

.admin-page .sidebar button:hover,
.admin-page .sidebar a:hover{
  color:#fff;
  background:rgba(255,255,255,.10);
  transform:translateX(2px);
}

.admin-page .sidebar button.active{
  color:#fff;
  background:linear-gradient(135deg,#2d8cff,#1d5ff0);
  box-shadow:0 14px 26px rgba(29,111,242,.34);
}

.admin-page .sidebar button.active::before{
  display:none;
}

.admin-page .side-bottom{
  margin-top:auto;
  padding-top:18px;
  border-top:1px solid rgba(255,255,255,.20);
}

/* Main */
.admin-page .admin-main{
  min-width:0;
  padding:0 32px 26px;
  background:transparent;
}

/* Header แบบภาพตัวอย่าง มีภาพโรงเรียนด้านขวา */
.admin-page .admin-head{
  position:relative;
  min-height:205px;
  margin:0 -32px 0;
  padding:44px 44px 84px;
  border-radius:0 0 30px 30px;
  overflow:hidden;
  align-items:flex-start;
  background:
    linear-gradient(90deg,rgba(246,251,255,.98) 0%,rgba(239,249,255,.94) 36%,rgba(232,246,255,.72) 58%,rgba(232,246,255,.18) 100%),
    var(--admin-hero-img);
  background-size:cover;
  background-position:center right;
  border:0;
  box-shadow:0 16px 38px rgba(15,35,70,.08);
}

.admin-page .admin-head::after{
  content:'';
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 26% 8%,rgba(29,111,242,.12),transparent 17rem),
    linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.02));
  pointer-events:none;
}

.admin-page .admin-head > *{
  position:relative;
  z-index:1;
}

.admin-page .admin-head h1{
  margin:0 0 12px;
  color:#0b234d;
  font-size:clamp(2rem,3.3vw,2.9rem);
  line-height:1.08;
  letter-spacing:-.045em;
  font-weight:900;
}

.admin-page .admin-head .muted{
  color:#596b84;
  font-size:1.08rem;
  font-weight:600;
}

.admin-page .user-pill{
  display:flex;
  align-items:center;
  gap:12px;
  min-width:212px;
  padding:9px 14px 9px 9px;
  border-radius:999px;
  background:rgba(255,255,255,.93);
  border:1px solid rgba(255,255,255,.9);
  box-shadow:0 16px 34px rgba(15,35,70,.13);
  color:#0b234d;
  backdrop-filter:blur(10px);
}

.admin-page .user-avatar{
  width:44px;
  height:44px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:#0b4aa2;
  color:#fff;
  font-size:1.35rem;
  box-shadow:0 8px 18px rgba(11,74,162,.22);
}

.admin-page .user-detail{
  display:grid;
  line-height:1.1;
  flex:1;
  min-width:0;
}

.admin-page .user-detail b{
  color:#0b234d;
  font-size:.98rem;
  font-weight:900;
}

.admin-page .user-detail small{
  color:#64748b;
  font-size:.78rem;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:160px;
}

.admin-page .user-chevron{
  color:#64748b;
  font-size:.9rem;
}

/* Dashboard เฉพาะหน้าแรก ยกขึ้นทับ header เล็กน้อย */
.admin-page #page-dashboard{
  margin-top:-52px;
  position:relative;
  z-index:2;
}

/* Metrics ตามตัวอย่าง */
.admin-page .metrics{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
  margin:0 0 20px;
}

.admin-page .metrics article{
  min-height:126px;
  display:grid;
  grid-template-columns:82px 1fr;
  align-items:center;
  gap:14px;
  padding:20px 22px;
  border-radius:20px;
  background:rgba(255,255,255,.94);
  border:1px solid rgba(255,255,255,.86);
  box-shadow:0 16px 36px rgba(15,35,70,.08);
  overflow:hidden;
}

.admin-page .metrics article::before{
  display:none;
}

.admin-page .metrics article::after{
  content:'';
  position:absolute;
  left:58px;
  right:58px;
  bottom:8px;
  height:3px;
  border-radius:999px;
  background:#1d6ff2;
  opacity:.95;
}

.admin-page .metrics article:nth-child(2)::after{background:#10b981}
.admin-page .metrics article:nth-child(3)::after{background:#ff8a12}
.admin-page .metrics article:nth-child(4)::after{background:#7c4dff}

.admin-page .metrics i{
  width:64px;
  height:64px;
  border-radius:22px;
  display:grid;
  place-items:center;
  background:linear-gradient(135deg,#e5f0ff,#d6e8ff);
  color:#1d6ff2;
  font-size:1.6rem;
  box-shadow:none;
}

.admin-page .metrics article:nth-child(2) i{
  background:linear-gradient(135deg,#dcfce7,#c7f9df);
  color:#12b981;
}
.admin-page .metrics article:nth-child(3) i{
  background:linear-gradient(135deg,#fff0d8,#ffe6bd);
  color:#ff8a12;
}
.admin-page .metrics article:nth-child(4) i{
  background:linear-gradient(135deg,#eee7ff,#e4dbff);
  color:#7c4dff;
}

.admin-page .metrics article div{
  display:grid;
  gap:2px;
}

.admin-page .metrics span{
  order:1;
  color:#5d6c82;
  font-size:.96rem;
  font-weight:800;
}

.admin-page .metrics b{
  order:2;
  color:#10233f;
  font-size:2.15rem;
  line-height:1;
  font-weight:900;
  margin:2px 0;
}

.admin-page .metrics small{
  order:3;
  color:#4b5d75;
  font-size:.9rem;
  font-weight:700;
}

/* Panels */
.admin-page .grid2{
  display:grid;
  grid-template-columns:1.08fr .92fr;
  gap:16px;
}

.admin-page .panel{
  border-radius:20px;
  padding:20px;
  background:rgba(255,255,255,.95);
  border:1px solid rgba(255,255,255,.86);
  box-shadow:0 16px 36px rgba(15,35,70,.07);
}

.admin-page #page-dashboard .panel{
  min-height:345px;
}

.admin-page .titlebar.compact{
  margin-bottom:16px;
}

.admin-page .titlebar h2,
.admin-page .panel h2{
  color:#10233f;
  font-size:1.45rem;
  letter-spacing:-.03em;
}

.admin-page .titlebar .btn{
  border-radius:10px;
  padding:10px 16px;
}

/* Tables clean */
.admin-page .table-wrap{
  border-radius:0;
  border:0;
  background:transparent;
  overflow:auto;
}

.admin-page .data-table{
  min-width:100%;
  border-collapse:separate;
  border-spacing:0;
}

.admin-page .data-table thead th{
  position:static;
  background:#f0f5fc;
  color:#52627a;
  font-size:.9rem;
  padding:12px 12px;
  border-bottom:0;
}

.admin-page .data-table thead th:first-child{
  border-radius:10px 0 0 0;
}

.admin-page .data-table thead th:last-child{
  border-radius:0 10px 0 0;
}

.admin-page .data-table td{
  padding:13px 12px;
  border-bottom:1px solid rgba(148,163,184,.18);
  color:#344054;
}

.admin-page .data-table tbody tr:hover{
  background:rgba(29,111,242,.035);
}

.admin-page .admin-event-cell{
  display:grid;
  grid-template-columns:54px 1fr;
  align-items:center;
  gap:12px;
}

.admin-page .event-mini-thumb{
  width:54px;
  height:44px;
  border-radius:10px;
  display:grid;
  place-items:center;
  color:#fff;
  font-size:1.25rem;
  box-shadow:0 10px 18px rgba(15,35,70,.12);
  overflow:hidden;
}

.admin-page .admin-event-cell b{
  display:block;
  color:#1f2937;
  font-size:.95rem;
  line-height:1.25;
}

.admin-page .admin-event-cell small{
  display:block;
  margin-top:3px;
  color:#667085;
  font-size:.78rem;
  line-height:1.25;
  max-width:360px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.admin-page .date-chip{
  display:inline-flex;
  align-items:center;
  gap:6px;
  color:#475467;
  white-space:nowrap;
}

.admin-page .search-keyword{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:#475467;
  white-space:nowrap;
}

.admin-page .search-keyword i{
  color:#7a8aa1;
}

/* Status */
.admin-page .status{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:6px 12px;
  border-radius:999px;
  font-size:.9rem;
  font-weight:900;
}

.admin-page .status.ok{
  color:#059669;
  background:#eafaf2;
  border:1px solid rgba(16,185,129,.20);
}

.admin-page .status.bad{
  color:#dc2626;
  background:#fff1f2;
  border:1px solid rgba(239,68,68,.18);
}

.admin-page .status.wait{
  color:#d97706;
  background:#fff7ed;
  border:1px solid rgba(245,158,11,.18);
}

/* Buttons / Inputs */
.admin-page .btn{
  border-radius:12px;
  padding:11px 16px;
  font-weight:900;
}

.admin-page .btn.primary{
  background:linear-gradient(135deg,#2563eb,#0ea5e9);
  box-shadow:0 14px 24px rgba(37,99,235,.18);
}

.admin-page .btn.light{
  background:#fff;
  color:#1d4ed8;
  border:1px solid rgba(37,99,235,.18);
  box-shadow:0 8px 18px rgba(15,35,70,.05);
}

.admin-page input,
.admin-page select,
.admin-page textarea{
  border-radius:12px;
  border:1px solid rgba(148,163,184,.22);
  background:#fff;
}

/* Dashboard footer feel */
.admin-page::after{
  content:'© 2025 โรงเรียนหนองแสงถวิลราษฎร์  |  NSR Certificate System';
  position:fixed;
  left:302px;
  bottom:14px;
  color:#7b8798;
  font-size:.82rem;
  pointer-events:none;
}

/* หน้าอื่นไม่ต้องทับ header */
.admin-page .admin-sec:not(#page-dashboard){
  margin-top:22px;
}

/* Responsive */
@media(max-width:1180px){
  .admin-page .admin-shell{
    grid-template-columns:250px 1fr;
  }

  .admin-page .admin-main{
    padding:0 22px 22px;
  }

  .admin-page .admin-head{
    margin:0 -22px 0;
    padding-left:34px;
    padding-right:34px;
  }

  .admin-page .metrics{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .admin-page .grid2{
    grid-template-columns:1fr;
  }

  .admin-page::after{
    left:272px;
  }
}

@media(max-width:980px){
  .admin-page .admin-shell{
    grid-template-columns:86px 1fr;
  }

  .admin-page .sidebar{
    padding:18px 10px;
  }

  .admin-page .side-brand{
    display:flex;
    justify-content:center;
    padding-bottom:14px;
  }

  .admin-page .side-logo{
    width:48px;
    height:48px;
  }

  .admin-page .side-brand-text,
  .admin-page .sidebar button span,
  .admin-page .sidebar a span{
    display:none;
  }

  .admin-page .sidebar button,
  .admin-page .sidebar a{
    justify-content:center;
    padding:0;
  }

  .admin-page::after{
    left:118px;
  }
}

@media(max-width:720px){
  .admin-page .admin-shell{
    grid-template-columns:1fr;
  }

  .admin-page .sidebar{
    position:static;
    height:auto;
    border-radius:0 0 22px 22px;
    padding:14px;
  }

  .admin-page .side-brand{
    display:grid;
    grid-template-columns:48px 1fr;
    justify-content:start;
  }

  .admin-page .side-brand-text{
    display:grid;
  }

  .admin-page .sidebar nav{
    display:flex;
    overflow:auto;
    gap:8px;
  }

  .admin-page .sidebar button,
  .admin-page .sidebar a{
    flex:0 0 auto;
    justify-content:flex-start;
    padding:0 14px;
  }

  .admin-page .sidebar button span,
  .admin-page .sidebar a span{
    display:inline;
  }

  .admin-page .admin-main{
    padding:0 14px 22px;
  }

  .admin-page .admin-head{
    margin:0 -14px;
    min-height:190px;
    padding:28px 20px 72px;
    border-radius:0 0 24px 24px;
    flex-direction:column;
    gap:14px;
  }

  .admin-page #page-dashboard{
    margin-top:-42px;
  }

  .admin-page .metrics{
    grid-template-columns:1fr;
  }

  .admin-page .metrics article{
    min-height:110px;
  }

  .admin-page::after{
    display:none;
  }
}

/* =====================================================
   V43 — Sidebar Premium Full Blue
   - ปรับ sidebar ให้พรีเมียมขึ้น
   - พื้นหลังสีน้ำเงินเต็มพื้นที่มากขึ้น
   - ลดความรู้สึกเป็นกล่องลอย แต่อยู่เต็มฝั่งซ้าย
   ===================================================== */

.admin-page .admin-shell{
  gap:0;
}

.admin-page .sidebar{
  width:100%;
  padding:22px 22px 20px;
  background:
    radial-gradient(circle at 18% 10%, rgba(73,151,255,.30), transparent 16rem),
    radial-gradient(circle at 82% 28%, rgba(17,95,214,.18), transparent 18rem),
    linear-gradient(180deg, #06499a 0%, #033a86 26%, #022f73 55%, #01275f 100%);
  box-shadow:12px 0 34px rgba(1,33,84,.20);
  overflow:hidden;
}

.admin-page .sidebar::before{
  content:'';
  position:absolute;
  inset:0;
  background:
    linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,0) 30%),
    radial-gradient(circle at 20% 16%, rgba(255,255,255,.12), transparent 11rem),
    radial-gradient(circle at 76% 78%, rgba(255,255,255,.05), transparent 14rem);
  pointer-events:none;
}

.admin-page .sidebar::after{
  content:'';
  position:absolute;
  inset:16px 12px 16px 12px;
  border-radius:22px;
  border:1px solid rgba(255,255,255,.08);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
  pointer-events:none;
}

.admin-page .side-brand{
  grid-template-columns:64px 1fr;
  gap:14px;
  padding:6px 6px 22px;
  margin:0 0 14px;
}

.admin-page .side-logo{
  width:64px;
  height:64px;
  background:rgba(255,255,255,.97);
  box-shadow:
    0 14px 26px rgba(0,0,0,.16),
    inset 0 1px 0 rgba(255,255,255,.88);
}

.admin-page .side-brand-text b{
  font-size:1.1rem;
  line-height:1.18;
}

.admin-page .side-brand-text small{
  font-size:.9rem;
  color:rgba(255,255,255,.86);
}

.admin-page .sidebar nav{
  gap:8px;
  margin-top:8px;
}

.admin-page .sidebar button,
.admin-page .sidebar a{
  min-height:48px;
  border-radius:16px;
  color:rgba(255,255,255,.90);
  text-shadow:0 1px 0 rgba(0,0,0,.08);
}

.admin-page .sidebar button:hover,
.admin-page .sidebar a:hover{
  background:rgba(255,255,255,.10);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
}

.admin-page .sidebar button.active{
  background:linear-gradient(135deg, #3a94ff 0%, #2b78ff 55%, #2762f0 100%);
  box-shadow:
    0 14px 26px rgba(34,116,255,.32),
    inset 0 1px 0 rgba(255,255,255,.22);
}

.admin-page .sidebar button.active i,
.admin-page .sidebar button.active span{
  color:#fff;
}

.admin-page .side-bottom{
  margin-top:auto;
  padding-top:18px;
  border-top:1px solid rgba(255,255,255,.16);
}

.admin-page .side-bottom a,
.admin-page .side-bottom button{
  border-radius:16px;
}

/* จอระดับ tablet / notebook เล็ก */
@media (max-width:980px){
  .admin-page .sidebar{
    padding:18px 14px 18px;
  }

  .admin-page .sidebar::after{
    inset:10px;
    border-radius:18px;
  }
}

/* มือถือ: ให้พื้นหลังน้ำเงินเต็มพื้นที่จริง และไม่เป็นกล่องลอย */
@media (max-width:720px){
  .admin-page .admin-shell{
    grid-template-columns:1fr;
    padding:0;
  }

  .admin-page .sidebar{
    position:static;
    width:100%;
    height:auto;
    min-height:100vh;
    padding:22px 20px 26px;
    border-radius:0;
    box-shadow:none;
  }

  .admin-page .sidebar::after{
    inset:0;
    border-radius:0;
    border-left:none;
    border-right:none;
    border-bottom:none;
  }

  .admin-page .side-brand{
    grid-template-columns:62px 1fr;
    padding:6px 4px 20px;
    margin-bottom:14px;
  }

  .admin-page .side-logo{
    width:62px;
    height:62px;
  }

  .admin-page .side-brand-text b{
    font-size:1rem;
  }

  .admin-page .side-brand-text small{
    font-size:.86rem;
  }

  .admin-page .sidebar nav{
    display:grid;
    gap:10px;
    overflow:visible;
    padding-bottom:0;
  }

  .admin-page .sidebar button,
  .admin-page .sidebar a{
    width:100%;
    justify-content:flex-start;
    padding:0 18px;
    min-height:52px;
    border-radius:18px;
  }

  .admin-page .sidebar button span,
  .admin-page .sidebar a span{
    display:inline;
  }

  .admin-page .side-bottom{
    margin-top:20px;
    padding-top:20px;
    display:grid;
    gap:10px;
  }
}


/* =====================================================
   V44 — Header + Dashboard Cards Premium Match
   ปรับ Header และ Dashboard Cards ให้เข้าชุดกับ Sidebar น้ำเงินเต็มพื้นที่
   ===================================================== */

/* Main background ให้รับกับ sidebar */
.admin-page .admin-main{
  background:
    radial-gradient(circle at 78% 0%, rgba(52,144,255,.12), transparent 28rem),
    radial-gradient(circle at 26% 38%, rgba(14,165,233,.06), transparent 22rem),
    linear-gradient(180deg,#f3f8ff 0%,#f8fbff 44%,#ffffff 100%);
}

/* Header premium blue glass */
.admin-page .admin-head{
  min-height:222px;
  padding:42px 46px 92px;
  border-radius:0 0 34px 34px;
  background:
    linear-gradient(90deg,
      rgba(244,250,255,.98) 0%,
      rgba(238,248,255,.94) 34%,
      rgba(220,241,255,.68) 58%,
      rgba(8,55,124,.30) 100%),
    var(--admin-hero-img);
  background-size:cover;
  background-position:center right;
  box-shadow:
    0 20px 44px rgba(2,47,115,.11),
    inset 0 -1px 0 rgba(255,255,255,.78);
}

.admin-page .admin-head::before{
  content:'';
  position:absolute;
  inset:18px 30px auto 30px;
  height:118px;
  border-radius:28px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.52), rgba(255,255,255,.16)),
    radial-gradient(circle at 12% 30%, rgba(37,99,235,.12), transparent 16rem);
  border:1px solid rgba(255,255,255,.46);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.72);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
  pointer-events:none;
  opacity:.9;
}

.admin-page .admin-head::after{
  background:
    radial-gradient(circle at 22% 14%, rgba(29,111,242,.18), transparent 16rem),
    radial-gradient(circle at 80% 20%, rgba(255,255,255,.22), transparent 14rem),
    linear-gradient(180deg, rgba(255,255,255,.28), rgba(255,255,255,.03));
}

.admin-page .admin-head > div:first-child{
  max-width:760px;
  padding-left:2px;
}

.admin-page .admin-head h1{
  position:relative;
  display:inline-block;
  margin:0 0 14px;
  color:#092655;
  font-size:clamp(2.1rem,3.35vw,3rem);
  text-shadow:0 1px 0 rgba(255,255,255,.65);
}

.admin-page .admin-head h1::after{
  content:'';
  display:block;
  width:106px;
  height:5px;
  margin-top:14px;
  border-radius:999px;
  background:linear-gradient(90deg,#1d6ff2,#18a7ff,#f7c948);
  box-shadow:0 8px 18px rgba(29,111,242,.22);
}

.admin-page .admin-head .muted{
  color:#43536d;
  font-size:1.08rem;
  font-weight:700;
  text-shadow:0 1px 0 rgba(255,255,255,.5);
}

/* User pill ให้ดูพรีเมียมขึ้น */
.admin-page .user-pill{
  min-width:230px;
  padding:8px 15px 8px 8px;
  background:rgba(255,255,255,.94);
  border:1px solid rgba(255,255,255,.92);
  box-shadow:
    0 18px 38px rgba(2,47,115,.16),
    inset 0 1px 0 rgba(255,255,255,.9);
}

.admin-page .user-avatar{
  width:48px;
  height:48px;
  background:
    linear-gradient(135deg,#0a4da8,#073a82);
  box-shadow:
    0 10px 22px rgba(7,58,130,.26),
    inset 0 1px 0 rgba(255,255,255,.20);
}

.admin-page .user-detail b{
  font-size:1rem;
}

/* Dashboard ยกขึ้นแบบพรีเมียม */
.admin-page #page-dashboard{
  margin-top:-64px;
}

/* Metric cards เข้าชุดกับน้ำเงินพรีเมียม */
.admin-page .metrics{
  gap:16px;
  margin-bottom:22px;
}

.admin-page .metrics article{
  min-height:136px;
  grid-template-columns:82px 1fr;
  padding:22px 22px 20px;
  border-radius:24px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.98), rgba(250,253,255,.94));
  border:1px solid rgba(255,255,255,.90);
  box-shadow:
    0 20px 42px rgba(2,47,115,.10),
    inset 0 1px 0 rgba(255,255,255,.96);
}

.admin-page .metrics article::before{
  content:'';
  display:block;
  position:absolute;
  inset:0;
  border-radius:24px;
  padding:1px;
  background:linear-gradient(135deg, rgba(29,111,242,.32), rgba(255,255,255,.75), rgba(24,167,255,.24));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  pointer-events:none;
}

.admin-page .metrics article::after{
  left:54px;
  right:54px;
  bottom:10px;
  height:4px;
  border-radius:999px;
  box-shadow:0 8px 18px rgba(29,111,242,.18);
}

.admin-page .metrics i{
  width:66px;
  height:66px;
  border-radius:24px;
  background:
    radial-gradient(circle at 30% 20%,rgba(255,255,255,.60),transparent 38%),
    linear-gradient(135deg,#e5f0ff,#cae1ff);
  color:#1d6ff2;
  font-size:1.65rem;
  box-shadow:
    0 14px 26px rgba(29,111,242,.12),
    inset 0 1px 0 rgba(255,255,255,.82);
}

.admin-page .metrics article:nth-child(2) i{
  background:
    radial-gradient(circle at 30% 20%,rgba(255,255,255,.60),transparent 38%),
    linear-gradient(135deg,#dcfce7,#bff5d8);
  color:#10b981;
}

.admin-page .metrics article:nth-child(3) i{
  background:
    radial-gradient(circle at 30% 20%,rgba(255,255,255,.60),transparent 38%),
    linear-gradient(135deg,#fff2da,#ffd8a8);
  color:#f97316;
}

.admin-page .metrics article:nth-child(4) i{
  background:
    radial-gradient(circle at 30% 20%,rgba(255,255,255,.60),transparent 38%),
    linear-gradient(135deg,#eee7ff,#dcd1ff);
  color:#7c4dff;
}

.admin-page .metrics span{
  color:#52627b;
  font-size:.96rem;
}

.admin-page .metrics b{
  color:#0d2346;
  font-size:2.35rem;
  letter-spacing:-.04em;
}

.admin-page .metrics small{
  color:#50617a;
  font-size:.92rem;
}

/* Dashboard panels ให้เข้าชุดกับ cards */
.admin-page .grid2{
  gap:18px;
}

.admin-page #page-dashboard .panel{
  position:relative;
  min-height:358px;
  padding:22px;
  border-radius:24px;
  background:
    linear-gradient(180deg,rgba(255,255,255,.98),rgba(253,254,255,.94));
  border:1px solid rgba(255,255,255,.90);
  box-shadow:
    0 22px 46px rgba(2,47,115,.09),
    inset 0 1px 0 rgba(255,255,255,.98);
  overflow:hidden;
}

.admin-page #page-dashboard .panel::before{
  content:'';
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 0% 0%, rgba(29,111,242,.07), transparent 12rem),
    radial-gradient(circle at 100% 0%, rgba(24,167,255,.06), transparent 10rem);
  pointer-events:none;
}

.admin-page #page-dashboard .panel > *{
  position:relative;
  z-index:1;
}

.admin-page #page-dashboard .titlebar.compact{
  align-items:center;
  margin-bottom:18px;
  padding-bottom:0;
}

.admin-page #page-dashboard .titlebar.compact h2{
  display:flex;
  align-items:center;
  gap:10px;
  color:#10233f;
  font-size:1.55rem;
}

.admin-page #page-dashboard .titlebar.compact h2::before{
  content:'';
  width:34px;
  height:34px;
  border-radius:12px;
  background:
    radial-gradient(circle at 30% 20%,rgba(255,255,255,.60),transparent 38%),
    linear-gradient(135deg,#eaf3ff,#d8eaff);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);
}

.admin-page #page-dashboard .grid2 .panel:nth-child(1) .titlebar.compact h2::before{
  background:
    radial-gradient(circle at 30% 20%,rgba(255,255,255,.60),transparent 38%),
    linear-gradient(135deg,#e5f0ff,#cae1ff);
}

.admin-page #page-dashboard .grid2 .panel:nth-child(2) .titlebar.compact h2::before{
  background:
    radial-gradient(circle at 30% 20%,rgba(255,255,255,.60),transparent 38%),
    linear-gradient(135deg,#eee7ff,#dcd1ff);
}

.admin-page #page-dashboard .titlebar .btn{
  background:#ffffff;
  color:#1d4ed8;
  border:1px solid rgba(37,99,235,.22);
  box-shadow:0 10px 20px rgba(2,47,115,.07);
}

.admin-page #page-dashboard .table-wrap{
  border-radius:16px;
  overflow:hidden;
  border:1px solid rgba(148,163,184,.14);
  background:rgba(255,255,255,.72);
}

.admin-page #page-dashboard .data-table thead th{
  background:
    linear-gradient(180deg,#f4f8ff,#edf4ff);
  color:#52627a;
  padding:13px 14px;
}

.admin-page #page-dashboard .data-table td{
  padding:14px;
}

.admin-page .admin-event-cell{
  grid-template-columns:58px 1fr;
}

.admin-page .event-mini-thumb{
  width:58px;
  height:48px;
  border-radius:13px;
  box-shadow:0 12px 22px rgba(2,47,115,.13);
}

.admin-page .admin-event-cell b{
  color:#172033;
  font-size:.98rem;
}

.admin-page .admin-event-cell small{
  color:#667085;
  max-width:410px;
}

/* Page header ของเมนูอื่น ๆ ให้ยังเข้าชุด */
.admin-page .admin-sec:not(#page-dashboard){
  margin-top:26px;
}

.admin-page .admin-sec:not(#page-dashboard) .titlebar{
  padding:18px 20px;
  border-radius:22px;
  background:rgba(255,255,255,.86);
  border:1px solid rgba(255,255,255,.82);
  box-shadow:0 14px 32px rgba(2,47,115,.06);
}

.admin-page .admin-sec:not(#page-dashboard) .titlebar.compact{
  padding:0;
  background:transparent;
  border:0;
  box-shadow:none;
}

.admin-page .admin-sec:not(#page-dashboard) .titlebar h2{
  color:#0d2346;
}

/* Footer note ให้ไม่เกะกะ */
.admin-page::after{
  color:#7a8aa0;
  font-weight:600;
}

/* Responsive */
@media(max-width:1180px){
  .admin-page .admin-head{
    padding:36px 34px 84px;
  }

  .admin-page #page-dashboard{
    margin-top:-54px;
  }

  .admin-page .metrics article{
    min-height:124px;
  }
}

@media(max-width:720px){
  .admin-page .admin-main{
    padding:0 14px 22px;
  }

  .admin-page .admin-head{
    margin:0 -14px;
    min-height:206px;
    padding:26px 20px 76px;
    border-radius:0 0 26px 26px;
  }

  .admin-page .admin-head::before{
    inset:12px 12px auto 12px;
    height:136px;
    border-radius:22px;
  }

  .admin-page .admin-head h1{
    font-size:1.9rem;
  }

  .admin-page .admin-head h1::after{
    width:84px;
    height:4px;
    margin-top:10px;
  }

  .admin-page .user-pill{
    width:100%;
    min-width:0;
  }

  .admin-page #page-dashboard{
    margin-top:-42px;
  }

  .admin-page .metrics article{
    min-height:116px;
  }

  .admin-page #page-dashboard .panel{
    min-height:0;
  }
}

/* =====================================================
   V45 — Fix search input border / outline mismatch
   - แก้กรอบในช่องค้นหาให้เท่ากัน
   - ย้าย focus ring ไปอยู่ที่กรอบภายนอกแทน input ด้านใน
   ===================================================== */

.search{
  transition:border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}

.search input,
.search input[type="search"]{
  appearance:none;
  -webkit-appearance:none;
  -moz-appearance:none;
  border:0 !important;
  outline:0;
  box-shadow:none !important;
  background:transparent;
  border-radius:0;
}

.search input::-webkit-search-decoration,
.search input::-webkit-search-cancel-button,
.search input::-webkit-search-results-button,
.search input::-webkit-search-results-decoration{
  -webkit-appearance:none;
}

.search:focus-within{
  border-color:rgba(36,87,230,.45);
  box-shadow:
    0 0 0 4px rgba(36,87,230,.12),
    var(--shadow2);
  background:rgba(255,255,255,.98);
}

.search input:focus,
.search input[type="search"]:focus{
  border:0 !important;
  outline:0 !important;
  box-shadow:none !important;
}

/* V29 Generate individual selection + files pagination */
.admin-page .generate-select-card{
  margin-top:16px;
  padding:16px;
  border:1px solid rgba(148,163,184,.22);
  border-radius:22px;
  background:linear-gradient(180deg,#ffffff,#f8fbff);
  box-shadow:0 14px 34px rgba(15,23,42,.06);
}

.admin-page .generate-select-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:14px;
  margin-bottom:12px;
}

.admin-page .generate-select-head h3{
  margin:0 0 4px;
  color:#102033;
  font-size:1.08rem;
  font-weight:900;
}

.admin-page .generate-mini-tools{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  justify-content:flex-end;
}

.admin-page .generate-mini-tools input{
  height:40px;
  min-width:220px;
  padding:0 13px;
  border:1px solid #dbe5f2;
  border-radius:13px;
  font-weight:800;
  outline:none;
}

.admin-page .generate-mini-tools input:focus{
  border-color:#2563eb;
  box-shadow:0 0 0 4px rgba(37,99,235,.10);
}

.admin-page .generate-table-wrap{
  max-height:360px;
  overflow:auto;
}

.admin-page .generate-certs-table{
  min-width:900px;
}

.admin-page .center-col{
  text-align:center!important;
  width:64px;
}

.admin-page .gen-row-check{
  width:18px;
  height:18px;
  accent-color:#2563eb;
  cursor:pointer;
}

.admin-page .files-filterbar{
  grid-template-columns:minmax(230px,1fr) minmax(260px,1.4fr) minmax(130px,.45fr) auto!important;
}

.admin-page .files-page-size{
  min-width:130px!important;
}

.admin-page .pagination-bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
  padding:12px 2px 0;
}

.admin-page .pager-info{
  color:#475569;
  font-weight:800;
}

.admin-page .pager-buttons{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}

.admin-page .page-chip{
  display:inline-flex;
  align-items:center;
  min-height:34px;
  padding:0 12px;
  border-radius:999px;
  background:#eff6ff;
  color:#1d4ed8;
  font-weight:900;
}

.admin-page .pager-buttons .btn:disabled{
  opacity:.45;
  cursor:not-allowed;
}

@media (max-width: 980px){
  .admin-page .generate-select-head{
    align-items:stretch;
    flex-direction:column;
  }

  .admin-page .generate-mini-tools{
    justify-content:flex-start;
  }

  .admin-page .generate-mini-tools input,
  .admin-page .generate-mini-tools .btn{
    width:100%;
  }

  .admin-page .files-filterbar{
    grid-template-columns:1fr!important;
  }
}

/* V25 Public PDF Preview with PDF.js canvas renderer */
.pdf-preview-box{
  width:100%;
  flex:1;
  min-height:420px;
  border:1px solid var(--line);
  border-radius:20px;
  background:linear-gradient(180deg,#f8fbff,#eef6ff);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:auto;
  padding:18px;
}
.pdf-preview-canvas,
.pdf-preview-img{
  display:block;
  max-width:100%;
  max-height:100%;
  height:auto!important;
  border-radius:12px;
  box-shadow:0 16px 45px rgba(15,23,42,.18);
  background:#fff;
}
.preview-status{
  color:#64748b;
  font-weight:800;
  text-align:center;
  line-height:1.7;
  padding:18px;
}
.preview-status i{
  font-size:2rem;
  color:#2563eb;
  display:block;
  margin-bottom:8px;
}
#previewFrame[hidden],#previewCanvas[hidden],#previewImage[hidden]{display:none!important;}
#previewFrame{
  min-height:580px;
  flex:0 0 auto;
}
@media (max-width:720px){
  .pdf-preview-box{min-height:320px;padding:10px;}
  .modal-card.wide{height:92vh;}
}
