/* ============================================================
   ผังคณะผู้บริหาร — หน้าสาธารณะ
   ธีมน้ำเงินคราม/ทอง · ฟอนต์ Prompt + Sarabun (โหลดจากเครื่อง)
   ============================================================ */
:root{
  --ink:#1a2340;
  --muted:#616e8c;
  --faint:#8b96b0;
  --paper:#f4f6fb;
  --surface:#ffffff;
  --line:#e2e7f2;
  --gold:#c69a3c;
  --gold-soft:#f2e6c8;
  --indigo:#1f2f6b;
  --indigo-deep:#151f47;
  --shadow:24px 32px 60px -30px rgba(24,34,72,.32);
  --shadow-sm:0 10px 24px -14px rgba(24,34,72,.4);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:"Sarabun",system-ui,sans-serif;
  color:var(--ink);
  background:
    radial-gradient(1100px 520px at 78% -8%, rgba(198,154,60,.10), transparent 60%),
    radial-gradient(900px 480px at 6% 4%, rgba(31,47,107,.10), transparent 55%),
    linear-gradient(180deg,#f7f9fd 0%, var(--paper) 22%, var(--paper) 100%);
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}

/* ---------- HERO ---------- */
.hero{max-width:1180px;margin:0 auto;padding:44px 24px 8px;text-align:center;position:relative}
.hero-actions{position:absolute;top:22px;right:24px;display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.admin-link{
  display:inline-flex;align-items:center;gap:7px;font-family:"Prompt",sans-serif;font-weight:500;font-size:13.5px;
  color:var(--indigo);text-decoration:none;padding:8px 14px;border-radius:11px;background:#fff;
  border:1px solid var(--line);box-shadow:var(--shadow-sm);transition:border-color .18s,color .18s,transform .18s;
}
.admin-link:hover{border-color:var(--indigo);transform:translateY(-1px)}
.admin-link svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}

.seal{width:96px;height:96px;margin:0 auto 20px;position:relative;display:grid;place-items:center}
.seal .ring{position:absolute;inset:-4px;border-radius:50%;border:2px solid var(--gold);
  box-shadow:0 0 0 6px rgba(198,154,60,.14), inset 0 0 0 6px rgba(31,47,107,.06);animation:spinSlow 26s linear infinite}
.seal .ring::before{content:"";position:absolute;inset:-2px;border-radius:50%;border:2px dashed rgba(31,47,107,.35)}
.seal .logo{width:88px;height:88px;object-fit:contain;border-radius:50%;position:relative;z-index:1}
.seal .mark{font-family:"Prompt",sans-serif;font-weight:700;font-size:26px;color:var(--indigo)}
@keyframes spinSlow{to{transform:rotate(360deg)}}

.eyebrow{font-family:"Prompt",sans-serif;font-weight:500;font-size:13px;letter-spacing:3px;
  color:var(--gold);text-transform:uppercase;margin-bottom:10px}
.hero h1{font-family:"Prompt",sans-serif;font-weight:600;font-size:clamp(28px,4.4vw,44px);
  line-height:1.1;margin:0 0 6px;color:var(--indigo-deep);letter-spacing:-.5px}
.hero .sub{font-size:clamp(15px,2vw,18px);color:var(--muted);font-weight:400;margin:0}
.rule{width:64px;height:3px;margin:22px auto 0;border-radius:3px;background:linear-gradient(90deg,var(--gold),var(--indigo))}
.stats{display:flex;gap:34px;justify-content:center;flex-wrap:wrap;margin-top:26px}
.stat{text-align:center}
.stat b{display:block;font-family:"Prompt",sans-serif;font-weight:600;font-size:26px;color:var(--indigo)}
.stat span{font-size:12.5px;color:var(--faint);letter-spacing:.5px}

/* ---------- CANVAS ---------- */
.canvas{max-width:1180px;margin:0 auto;padding:44px 24px 90px;display:flex;flex-direction:column;align-items:center}
.connector{width:2px;height:34px;margin:0 auto;background:linear-gradient(var(--line),var(--indigo));opacity:.6}
.node-dot{width:9px;height:9px;border-radius:50%;background:var(--indigo);margin:0 auto;box-shadow:0 0 0 5px rgba(31,47,107,.12)}

.band{display:flex;align-items:center;gap:14px;justify-content:center;margin:8px auto 26px}
.band .tag{font-family:"Prompt",sans-serif;font-weight:600;font-size:15px;letter-spacing:.5px;color:var(--indigo);
  padding:7px 20px;border-radius:999px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.band .tag::before{content:"◆";color:var(--gold);margin-right:8px;font-size:11px}

.tier{display:flex;justify-content:center;gap:26px;flex-wrap:wrap;width:100%}
.tier-row{max-width:920px}

/* ---------- EXEC CARD ---------- */
.exec{
  display:flex;gap:18px;align-items:center;text-align:left;
  background:var(--surface);border:1px solid var(--line);border-radius:22px;
  padding:20px 22px;cursor:pointer;font-family:inherit;position:relative;overflow:hidden;
  box-shadow:var(--shadow);width:100%;
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.exec::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;
  background:linear-gradient(var(--c),color-mix(in srgb,var(--c) 60%,#000))}
.exec:hover,.exec:focus-visible{transform:translateY(-4px);border-color:var(--c);
  box-shadow:0 26px 44px -24px color-mix(in srgb,var(--c) 55%, transparent);outline:none}
.exec:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 40%, transparent)}

.exec .avatar{width:88px;height:88px;flex:none;border-radius:50%;display:grid;place-items:center;overflow:hidden;
  font-family:"Prompt",sans-serif;font-weight:600;font-size:32px;color:#fff;
  background:linear-gradient(135deg,var(--c),color-mix(in srgb,var(--c) 66%,#000));
  box-shadow:0 0 0 4px #fff, 0 0 0 6px color-mix(in srgb,var(--c) 30%, transparent)}
.exec .avatar img{width:100%;height:100%;object-fit:cover}
.exec .info{min-width:0;flex:1}
.exec .nm{font-family:"Prompt",sans-serif;font-weight:600;font-size:20px;color:var(--ink);line-height:1.25}
.exec .pos{display:inline-block;font-family:"Prompt",sans-serif;font-weight:500;font-size:13.5px;color:#fff;
  white-space:nowrap;background:linear-gradient(135deg,var(--c),color-mix(in srgb,var(--c) 70%,#000));
  padding:5px 15px;border-radius:999px;margin:8px 0 4px;box-shadow:var(--shadow-sm)}
.exec .tel{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted);margin-top:6px}
.exec .tel svg{width:15px;height:15px;stroke:var(--c);fill:none;stroke-width:2;flex:none}
.exec .note{font-size:12.7px;color:var(--faint);line-height:1.45;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.exec .arrow{position:absolute;top:20px;right:20px;color:var(--faint);transition:transform .16s,color .16s;
  width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2}
.exec:hover .arrow{transform:translateX(3px);color:var(--c)}
.exec.vacant{border-style:dashed;background:repeating-linear-gradient(135deg,#fff,#fff 8px,#fafbfe 8px,#fafbfe 16px)}
.exec.vacant .avatar{background:none;color:var(--faint);border:2px dashed var(--faint);box-shadow:0 0 0 4px #fff}
.exec.vacant .nm{color:var(--faint)}

/* tier: single (mayor / secretary) */
.tier-single .exec{max-width:520px}
/* mayor prominent */
.exec.mayor{max-width:560px;padding:26px 30px}
.exec.mayor::after{content:"";position:absolute;left:0;right:0;top:0;height:4px;
  background:linear-gradient(90deg,var(--gold),var(--gold-soft),var(--gold))}
.exec.mayor .avatar{width:118px;height:118px;font-size:42px}
.exec.mayor .nm{font-size:25px}
.exec.mayor .pos{font-size:15px;padding:6px 18px}
.exec.mayor .tel{font-size:15px}
/* row members (deputies) */
.tier-row .exec{flex:1 1 380px;max-width:430px}

/* tier: grid จัดกึ่งกลาง กำหนดจำนวนการ์ดต่อแถว (col1..col5) */
.tier-grid{display:grid;justify-content:center;gap:22px;width:100%;margin:0 auto}
.tier-grid .exec{max-width:none;width:100%}
.tier-cols-1{grid-template-columns:minmax(0,520px)}
.tier-cols-2{grid-template-columns:repeat(2,minmax(0,410px))}
.tier-cols-3{grid-template-columns:repeat(3,minmax(0,330px))}
.tier-cols-4{grid-template-columns:repeat(4,minmax(0,270px))}
.tier-cols-5{grid-template-columns:repeat(5,minmax(0,232px))}
/* การ์ดในกริดที่แคบลง — ลดขนาด avatar/ตัวอักษรให้พอดี */
.tier-cols-3 .exec,.tier-cols-4 .exec,.tier-cols-5 .exec{gap:14px;padding:16px 16px}
.tier-cols-3 .exec .avatar,.tier-cols-4 .exec .avatar,.tier-cols-5 .exec .avatar{width:64px;height:64px;font-size:24px}
.tier-cols-3 .exec .nm,.tier-cols-4 .exec .nm,.tier-cols-5 .exec .nm{font-size:17px}
.tier-cols-3 .exec .pos,.tier-cols-4 .exec .pos,.tier-cols-5 .exec .pos{font-size:12.5px;padding:4px 12px}

@media(max-width:1120px){
  .tier-cols-5{grid-template-columns:repeat(4,minmax(0,1fr));max-width:1000px}
  .tier-cols-4{grid-template-columns:repeat(3,minmax(0,1fr));max-width:900px}
}
@media(max-width:840px){
  .tier-cols-5,.tier-cols-4,.tier-cols-3{grid-template-columns:repeat(2,minmax(0,1fr));max-width:640px}
}
@media(max-width:560px){
  .tier-cols-5,.tier-cols-4,.tier-cols-3,.tier-cols-2{grid-template-columns:minmax(0,1fr);max-width:440px}
}

/* reveal */
.reveal{opacity:0;transform:translateY(16px)}
.reveal.in{opacity:1;transform:none;transition:opacity .55s ease, transform .55s cubic-bezier(.2,.7,.2,1)}

/* ---------- MODAL ---------- */
.overlay{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;
  background:rgba(20,27,58,.5);backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .28s}
.overlay.open{opacity:1;pointer-events:auto}
.modal{width:min(560px,100%);background:var(--surface);border-radius:24px;overflow:hidden;
  box-shadow:0 40px 90px -30px rgba(20,27,58,.6);transform:translateY(18px) scale(.97);
  transition:transform .3s cubic-bezier(.2,.8,.2,1);max-height:92vh;overflow-y:auto}
.overlay.open .modal{transform:none}
.modal-head{padding:30px 30px 26px;color:#fff;position:relative;
  background:linear-gradient(135deg,var(--c),color-mix(in srgb,var(--c) 66%,#000))}
.modal-head::after{content:"";position:absolute;right:-40px;bottom:-60px;width:180px;height:180px;
  border-radius:50%;background:rgba(255,255,255,.08)}
.modal-head .m-av{width:86px;height:86px;border-radius:50%;display:grid;place-items:center;overflow:hidden;
  font-family:"Prompt",sans-serif;font-weight:600;font-size:34px;color:#fff;
  background:rgba(255,255,255,.16);border:2px solid rgba(255,255,255,.5);margin-bottom:16px;
  backdrop-filter:blur(4px);position:relative;z-index:1}
.modal-head .m-av img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.modal-head .m-name{font-family:"Prompt",sans-serif;font-weight:600;font-size:25px;line-height:1.2;position:relative;z-index:1}
.modal-head .m-pos{font-size:15px;opacity:.94;margin-top:5px;position:relative;z-index:1;font-weight:300}
.m-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;position:relative;z-index:1}
.m-badge{font-family:"Prompt",sans-serif;font-size:12px;font-weight:500;padding:4px 11px;border-radius:999px;
  background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.28)}
.close{position:absolute;top:18px;right:18px;z-index:2;width:36px;height:36px;border-radius:50%;
  border:none;background:rgba(255,255,255,.18);color:#fff;cursor:pointer;display:grid;place-items:center;transition:background .18s}
.close:hover{background:rgba(255,255,255,.32)}
.modal-body{padding:26px 30px 30px}
.m-section-title{font-family:"Prompt",sans-serif;font-weight:600;font-size:14px;color:var(--c);
  letter-spacing:.5px;margin:0 0 10px;display:flex;align-items:center;gap:8px}
.m-section-title::before{content:"";width:20px;height:2px;background:var(--c);border-radius:2px}
.m-duty{font-size:15.5px;line-height:1.72;color:#3a445f;margin:0;white-space:pre-line}
.m-note{margin-top:14px;font-size:14px;color:var(--muted);line-height:1.6;padding:12px 14px;
  background:var(--paper);border-radius:12px;border:1px solid var(--line)}
.m-contact{margin-top:22px;display:flex;flex-wrap:wrap;gap:10px}
.m-contact a,.m-contact span{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:9px 14px;text-decoration:none;transition:border-color .18s}
.m-contact a:hover{border-color:var(--c);color:var(--c)}
.m-contact svg{width:15px;height:15px;stroke:var(--c);fill:none;stroke-width:1.9}

/* footer */
.foot{text-align:center;padding:26px 24px 44px;color:var(--faint);font-size:13px}
.foot b{color:var(--muted);font-weight:500}

.empty-note{max-width:520px;margin:20px auto;text-align:center;color:var(--muted);
  background:#fff;border:1px dashed var(--line);border-radius:16px;padding:26px}

@media(max-width:760px){
  .hero{padding-top:74px}
  .hero-actions{top:16px;right:16px}
  .tier-row{flex-direction:column;align-items:center;max-width:470px}
  .tier-row .exec{max-width:470px}
}
@media(max-width:480px){
  .canvas{padding:28px 16px 70px}
  .exec{flex-direction:column;text-align:center;gap:12px}
  .exec .arrow{display:none}
  .exec .tel{justify-content:center}
  .exec .note{text-align:center}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .reveal{opacity:1;transform:none}
}
