/* ============================================================
   ผังโครงสร้างองค์กร — สไตล์หน้าสาธารณะ
   ============================================================ */

:root{
  --ink:#1a2340;
  --muted:#616e8c;
  --faint:#8b96b0;
  --paper:#e9f2fb;      /* ฟ้าอ่อนโทนหลัก */
  --paper-2:#dcebf8;
  --paper-3:#f2f8ff;
  --surface:#ffffff;
  --line:#d5e4f3;
  --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);
  --c:#1f2f6b;
}
*{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,.12), transparent 62%),
    radial-gradient(900px 480px at 6% 4%, rgba(59,130,190,.16), transparent 58%),
    linear-gradient(180deg,#f4faff 0%, var(--paper) 24%, #e3eff9 100%);
  background-attachment:fixed;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}

/* ---------- HERO ---------- */
.hero{max-width:1380px;margin:0 auto;padding:48px 24px 8px;text-align:center;position:relative}
.seal{width:118px;height:118px;margin:0 auto 20px;position:relative;display:grid;place-items:center}
.seal .ring{
  position:absolute;inset:-7px;border-radius:50%;
  border:2px dashed rgba(31,47,107,.28);
  animation:spinSlow 26s linear infinite;
}
.seal .mark{font-family:"Prompt",sans-serif;font-weight:700;font-size:35px;color:var(--indigo);letter-spacing:.5px}
.seal .logo{
  width:100%;height:100%;border-radius:50%;display:block;object-fit:contain;
  background:#fff;padding:3px;
  box-shadow:0 0 0 1px rgba(198,154,60,.5), 0 12px 28px -14px rgba(24,34,72,.55);
}
@keyframes spinSlow{to{transform:rotate(360deg)}}
.hero h1{font-family:"Prompt",sans-serif;font-weight:600;font-size:clamp(28px,4.4vw,46px);
  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}

.hero-actions{position:absolute;top:20px;right:24px;display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.admin-link{
  font-family:"Prompt",sans-serif;font-weight:500;font-size:13.5px;
  text-decoration:none;color:var(--muted);background:#fff;border:1px solid var(--line);
  padding:8px 16px;border-radius:999px;box-shadow:var(--shadow-sm);transition:all .18s;
  display:inline-flex;align-items:center;gap:7px;white-space:nowrap;
}
.admin-link:hover{color:var(--indigo);border-color:var(--indigo)}
.admin-link svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.9}

/* ---------- CONTROLS ---------- */
.controls{
  position:sticky;top:0;z-index:40;backdrop-filter:blur(10px);
  background:linear-gradient(180deg, rgba(240,247,254,.94), rgba(233,242,251,.76));
  border-bottom:1px solid var(--line);margin-top:30px;
}
.controls-inner{max-width:1380px;margin:0 auto;padding:12px 24px;
  display:flex;gap:14px;align-items:center;flex-wrap:wrap;justify-content:space-between}
.search{position:relative;flex:1;min-width:210px;max-width:340px}
.search input{
  width:100%;padding:11px 14px 11px 40px;border:1px solid var(--line);border-radius:12px;
  background:var(--surface);font-family:inherit;font-size:15px;color:var(--ink);
  outline:none;transition:border-color .2s, box-shadow .2s;
}
.search input:focus{border-color:var(--indigo);box-shadow:0 0 0 4px rgba(31,47,107,.1)}
.search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:17px;height:17px;stroke:var(--faint);fill:none;stroke-width:2}
/* ตัวกรองหน่วยงานแบบ dropdown (listbox) — กะทัดรัดกว่าปุ่มหลายบรรทัด */
.group-filter{
  position:relative;display:inline-flex;align-items:center;gap:9px;
  background:var(--surface);border:1px solid var(--line);border-radius:12px;
  padding:0 12px;min-width:210px;max-width:340px;
  box-shadow:var(--shadow-sm);transition:border-color .2s, box-shadow .2s;
}
.group-filter:focus-within{border-color:var(--indigo);box-shadow:0 0 0 4px rgba(31,47,107,.1)}
.group-filter .gf-ic{width:17px;height:17px;flex:none;stroke:var(--faint)}
.group-filter select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  border:none;background:transparent;outline:none;cursor:pointer;
  font-family:"Prompt",sans-serif;font-weight:500;font-size:14.5px;color:var(--ink);
  padding:11px 0;flex:1;min-width:0;width:100%;
}
.group-filter .gf-caret{width:16px;height:16px;flex:none;stroke:var(--faint);pointer-events:none;transition:transform .2s}
.group-filter:focus-within .gf-caret{transform:rotate(180deg);stroke:var(--indigo)}
@media(max-width:560px){.group-filter{max-width:none;flex:1 1 100%}}

/* ---------- CANVAS ---------- */
.canvas{max-width:1380px;margin:0 auto;padding:40px 24px 90px}
.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)}

/* แผงพื้นหลังส่วนผู้บริหาร */
.lead{
  display:flex;flex-direction:column;align-items:center;position:relative;
  padding:40px 26px 36px;border-radius:30px;overflow:hidden;
  background:
    radial-gradient(640px 280px at 50% -12%, rgba(198,154,60,.16), transparent 70%),
    radial-gradient(820px 340px at 50% 118%, rgba(31,47,107,.13), transparent 72%),
    linear-gradient(158deg, #f6fbff 0%, #e6f1fc 52%, #d9e9f8 100%);
  border:1px solid rgba(31,47,107,.10);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.92),
    0 26px 54px -36px rgba(24,34,72,.4);
}
/* ลายจุดจางๆ ไล่หายลงด้านล่าง */
.lead::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(31,47,107,.075) 1px, transparent 1px);
  background-size:22px 22px;
  -webkit-mask-image:linear-gradient(180deg, rgba(0,0,0,.6), transparent 76%);
  mask-image:linear-gradient(180deg, rgba(0,0,0,.6), transparent 76%);
}
/* เส้นทองบางๆ ด้านบนสุดของแผง */
.lead::after{
  content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:min(340px,60%);height:3px;border-radius:0 0 4px 4px;
  background:linear-gradient(90deg, transparent, var(--gold), transparent);
  opacity:.75;
}
.lead > *{position:relative;z-index:1}

/* คอลัมน์ผู้บริหาร + หน่วยงานขึ้นตรงที่แตกกิ่งไปด้านขวา
   ใช้ grid 3 คอลัมน์ ซ้ายและขวากว้างเท่ากันเสมอ (minmax(0,1fr))
   คอลัมน์ผู้บริหารจึงอยู่กึ่งกลางจอเป๊ะ ไม่ขยับตามจำนวนการ์ดในกิ่งขวา */
.lead-layout{
  /* วัดจากของจริง: ชื่อที่ยาวที่สุดในระบบกว้าง 239px (Prompt 500 ขนาด 19px)
     ส่วนประกอบอื่นของการ์ด (ขอบ+รูป+ลูกศร) กิน 146px → ต้องการ 385px
     ตั้งไว้เผื่อชื่อที่ยาวกว่านี้ในอนาคต */
  --main-w:430px;    /* คอลัมน์ผู้บริหาร */
  --branch-w:390px;  /* กิ่งขวา — กว้างพอให้ชื่อ-นามสกุลอยู่บรรทัดเดียว */
  display:grid;
  grid-template-columns:minmax(0,1fr) var(--main-w) minmax(0,1fr);
  align-items:start;
  width:100%;
}
.lead-main{
  grid-column:2;
  display:flex;flex-direction:column;align-items:center;width:100%;
}
/* กิ่งขวา (หน่วยงานขึ้นตรง/หมายเหตุ) เกาะที่ระดับ "ใต้ปลัด" (คนที่ 1)
   margin-top ≈ ความสูงการ์ดปลัด เพื่อให้เส้นกิ่งอยู่ที่คอนเนกเตอร์แรก */
.lead-side{grid-column:3;display:flex;align-items:center;min-width:0;margin-top:var(--branch-top,44px)}

/* ถ้ากรองจนคอลัมน์ผู้บริหารถูกซ่อน ให้กิ่งขวาเลื่อนมากลางจอแทน
   (เฉพาะจอกว้าง — จอแคบเรียงลงล่างอยู่แล้ว) */
@media(min-width:1366px){
  .lead-layout:has(> .lead-main.hide){grid-template-columns:0 0 minmax(0,1fr)}
  .lead-layout:has(> .lead-main.hide) .lead-side{justify-content:center}
}

/* เส้นแนวนอนจากกลางคอลัมน์ผู้บริหารไปยังหน่วยงานขึ้นตรง */
/* การ์ดได้ความกว้างคงที่ก่อน เส้นลูกศรค่อยยืดกินพื้นที่ที่เหลือ
   (ถ้าให้เส้นเป็น % เส้นจะแย่งที่จนชื่อในการ์ดถูกตัดท้าย) */
.branch-link{
  flex:1 1 auto;min-width:28px;height:2px;position:relative;
  background:linear-gradient(90deg, rgba(31,47,107,.5), var(--c,var(--indigo)));
}
.branch-link::before{
  content:"";position:absolute;left:-4px;top:50%;transform:translateY(-50%);
  width:9px;height:9px;border-radius:50%;background:var(--indigo);
  box-shadow:0 0 0 5px rgba(31,47,107,.12);
}
.branch-link::after{
  content:"";position:absolute;right:-1px;top:50%;transform:translateY(-50%);
  border-left:9px solid var(--c,var(--indigo));
  border-top:6px solid transparent;border-bottom:6px solid transparent;
}

.lead-branch{display:flex;flex-direction:column;gap:20px;flex:0 0 var(--branch-w,390px);max-width:100%}
.branch-unit{display:flex;flex-direction:column;align-items:center;gap:11px}
.branch-label{
  font-family:"Prompt",sans-serif;font-weight:600;font-size:13.5px;letter-spacing:.3px;color:#fff;
  padding:6px 17px;border-radius:999px;white-space:nowrap;
  background:linear-gradient(135deg,var(--c),color-mix(in srgb,var(--c) 70%,#000));
  box-shadow:0 10px 20px -12px var(--c);
}
.branch-unit .card{max-width:100%}

.band{display:flex;align-items:center;gap:14px;justify-content:center;margin:6px auto 26px}
.band .tag{
  font-family:"Prompt",sans-serif;font-weight:600;font-size:15px;letter-spacing:.5px;color:#fff;
  padding:7px 20px;border-radius:999px;border:none;
  background:linear-gradient(135deg,var(--c,var(--indigo)),color-mix(in srgb,var(--c,var(--indigo)) 70%,#000));
  box-shadow:0 10px 22px -12px var(--c,var(--indigo));
}
.band .tag::before{content:"◆";color:rgba(255,255,255,.72);margin-right:8px;font-size:11px}

.divisions{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:22px;align-items:start}
.division{
  background:var(--surface);border-radius:20px;border:1px solid var(--line);
  box-shadow:var(--shadow);overflow:hidden;position:relative;transition:opacity .3s;
}
.division-head{padding:20px 20px 18px;position:relative;color:#fff;
  background:linear-gradient(135deg, var(--c), color-mix(in srgb, var(--c) 72%, #000))}
.division-head .kicker{font-family:"Prompt",sans-serif;font-weight:600;font-size:18px;letter-spacing:.5px;
  display:flex;align-items:center;gap:9px}
.division-head .kicker .ic{width:26px;height:26px;flex:none;opacity:.95}
.division-head .cnt{font-size:12.5px;opacity:.82;margin-top:2px}
.division-body{padding:16px;display:flex;flex-direction:column;gap:11px}
.hgap{height:14px}

/* ---------- การ์ดบุคลากร ---------- */
.card{
  display:flex;gap:13px;align-items:center;text-align:left;width:100%;
  background:var(--surface);border:1px solid var(--line);border-radius:14px;
  /* แถบสีด้านซ้ายเป็นสีประจำหน่วยงาน (สีที่เลือกในการ์ด) */
  border-left:5px solid var(--c);
  padding:12px 13px;cursor:pointer;font-family:inherit;
  transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease, opacity .2s;
  position:relative;
}
.card:hover,.card:focus-visible{
  transform:translateY(-3px);border-color:var(--c);
  box-shadow:0 16px 30px -18px color-mix(in srgb,var(--c) 55%, transparent);outline:none;
}
.card:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 40%, transparent)}
.avatar{
  width:calc(52px * var(--avatar-scale,1));height:calc(52px * var(--avatar-scale,1));
  flex:none;border-radius:50%;display:grid;place-items:center;overflow:hidden;
  font-family:"Prompt",sans-serif;font-weight:600;font-size:calc(22px * var(--avatar-scale,1));color:#fff;
  background:linear-gradient(135deg,var(--c),color-mix(in srgb,var(--c) 68%,#000));
  box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 16%, transparent);
}
.avatar img{width:100%;height:100%;object-fit:cover;display:block}
.card .info{min-width:0;flex:1;display:flex;flex-direction:column;align-items:flex-start}
.card .info > *{max-width:100%}
.card .nm{font-family:"Sarabun",sans-serif;font-weight:700;font-size:15px;color:var(--ink);
  line-height:1.55;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card .pos{font-size:12.8px;color:var(--muted);line-height:1.55;margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* บรรทัดที่ 2 — ระดับของผู้ที่รักษาราชการแทน */
.card .acting-line{
  font-family:"Prompt",sans-serif;font-weight:500;font-size:12.5px;
  color:var(--c);line-height:1.55;margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
/* คำว่า "รักษาราชการแทน" นำหน้าชื่อตำแหน่งในบรรทัดที่ 3 */
.card .acting-tag{
  font-family:"Prompt",sans-serif;font-weight:600;color:var(--c);
}
/* การ์ดผู้รักษาราชการแทนปล่อยให้บรรทัดตำแหน่งตัดขึ้นบรรทัดใหม่ได้
   เพราะมีคำว่ารักษาราชการแทนนำหน้า จะยาวเกินหนึ่งบรรทัด */
.card.acting .pos{white-space:normal}

/* ประเภทบุคลากร (เฉพาะผู้ที่ไม่ใช่ข้าราชการ) — ตัวอักษรสี muted */
.card .emp-type{
  margin-top:3px;
  font-family:"Sarabun",sans-serif;font-weight:400;font-size:12px;line-height:1.5;
  color:var(--muted);max-width:100%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.card.lead-card .emp-type{font-size:12.5px;margin-top:4px}

/* เบอร์โทรศัพท์ใต้ตำแหน่ง */
.card .tel{
  display:flex;align-items:center;gap:5px;margin-top:4px;line-height:1.5;
  font-family:"Prompt",sans-serif;font-weight:500;font-size:12.5px;color:var(--c);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.card .tel svg{width:12px;height:12px;flex:none;opacity:.85}
.card.vacant .tel{color:var(--faint)}
.card .arrow{color:var(--faint);flex:none;transition:transform .16s, color .16s;fill:none;stroke:currentColor;stroke-width:2}
.card:hover .arrow{transform:translateX(3px);color:var(--c)}
.card.lead-card{
  padding:18px 20px;max-width:100%;   /* เต็มความกว้างคอลัมน์ที่กำหนดไว้ */
  box-shadow:0 18px 36px -26px rgba(24,34,72,.5), inset 0 1px 0 rgba(255,255,255,.9);
}
.card.lead-card .avatar{
  width:calc(72px * var(--avatar-scale,1));height:calc(72px * var(--avatar-scale,1));
  font-size:calc(29px * var(--avatar-scale,1))}
/* ชื่อ-นามสกุลต้องอยู่บรรทัดเดียวเสมอ — การ์ดถูกตั้งความกว้างให้พอแล้ว */
.card.lead-card .nm{font-size:19px;white-space:nowrap;line-height:1.5}
.card.lead-card .pos{font-size:13.5px;white-space:normal;line-height:1.55}
.card.lead-card .acting-line{font-size:13.5px;margin-top:3px}
.card.lead-card .tel{font-size:13.5px;margin-top:5px}
.card.lead-card .tel svg{width:13px;height:13px}
.card.head-card{background:color-mix(in srgb,var(--c) 6%, #fff)}
/* ป้าย "รก." มุมบนขวาถูกยกเลิก — แสดงคำว่ารักษาราชการแทนเต็มๆ ในบรรทัดที่ 2 แทน */
.card.vacant{border-style:dashed;border-left-style:solid;background:repeating-linear-gradient(135deg,#fff,#fff 8px,#fafbfe 8px,#fafbfe 16px)}
.card.vacant .avatar{background:none;color:var(--faint);border:2px dashed var(--faint);box-shadow:none}
.card.vacant .nm{color:var(--faint)}

.dimmed{opacity:.16;filter:grayscale(.4);pointer-events:none}
.hide{display:none !important}
.hit{box-shadow:0 0 0 3px var(--gold), 0 16px 30px -18px rgba(198,154,60,.6)!important;border-color:var(--gold)!important}
.noresult{text-align:center;color:var(--muted);padding:40px;font-size:16px;display:none}
.noresult.show{display:block}

.edu-wrap{
  margin-top:44px;padding:30px 24px 32px;border-radius:26px;position:relative;overflow:hidden;
  background:
    radial-gradient(700px 300px at 50% -20%, rgba(109,40,217,.09), transparent 70%),
    linear-gradient(160deg, #f7fbff 0%, #e9f2fc 100%);
  border:1px solid rgba(31,47,107,.09);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 22px 46px -36px rgba(24,34,72,.34);
}
.edu-wrap > *{position:relative;z-index:1}
.edu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}

/* กริดจัดกึ่งกลาง กำหนดจำนวนการ์ดต่อแถว (col1..col5) */
/* จัดกึ่งกลางเมื่อพอดี แต่ถ้าการ์ดกว้างเกินจะเลื่อนแนวนอนภายในกลุ่ม (ไม่ดันทั้งหน้า) */
.custom-grid{display:grid;justify-content:safe center;gap:16px;width:100%;margin:0 auto;
  overflow-x:auto;padding:5px 2px 8px}
/* คอลัมน์กว้างตามเนื้อหา — การ์ดขยายให้ข้อความอยู่บรรทัดเดียวเสมอ */
.cg-cols-1{grid-template-columns:max-content}
.cg-cols-2{grid-template-columns:repeat(2,max-content)}
.cg-cols-3{grid-template-columns:repeat(3,max-content)}
.cg-cols-4{grid-template-columns:repeat(4,max-content)}
.cg-cols-5{grid-template-columns:repeat(5,max-content)}
/* การ์ดในกริดกลุ่มงาน: ทุกบรรทัดแสดงครบ ไม่ตัด … ไม่หล่นบรรทัด การ์ดกว้างตามข้อความ */
.custom-grid .card .nm,
.custom-grid .card .pos,
.custom-grid .card .acting-line,
.custom-grid .card .emp-type,
.custom-grid .card .tel{white-space:nowrap;overflow:visible;text-overflow:clip;max-width:none}
@media(max-width:840px){
  .cg-cols-3,.cg-cols-4,.cg-cols-5{grid-template-columns:repeat(2,max-content)}
}
@media(max-width:560px){
  .cg-cols-2,.cg-cols-3,.cg-cols-4,.cg-cols-5{grid-template-columns:max-content}
}

/* กลุ่มที่มีหัวหน้าเป็นการ์ดเดี่ยวกึ่งกลาง แล้วบุคลากรที่เหลือเป็นกริดด้านล่าง */
.head-solo{display:flex;flex-direction:column;align-items:center;gap:14px;width:100%;max-width:520px;margin:0 auto}
.head-solo .card{width:100%}
.headgrid-wrap .solo-link{
  width:2px;height:30px;margin:14px auto;
  background:linear-gradient(var(--line),var(--c,var(--indigo)));opacity:.55;
}

/* ผังลำดับชั้น (tree) — หัวหน้าซ้อนบนกึ่งกลาง เชื่อมด้วยเส้น แล้วทีมงานด้านล่าง */
.tree-wrap{display:flex;flex-direction:column;align-items:center}
.tree-wrap .band{width:100%}
.tree-heads{display:flex;flex-direction:column;align-items:center;width:100%;max-width:520px;margin:0 auto}
.tree-heads .card{width:100%}
.tree-wrap .custom-grid{margin-top:2px}

.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:105px;height:105px;border-radius:50%;display:grid;place-items:center;overflow:hidden;
  font-family:"Prompt",sans-serif;font-weight:600;font-size:39px;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;display:block}
.modal-head .m-name{font-family:"Sarabun",sans-serif;font-weight:700;font-size:25px;line-height:1.4;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}
.m-meta{margin-top:22px;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.m-meta div{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:11px 14px}
.m-meta dt{font-size:11.5px;color:var(--faint);font-family:"Prompt",sans-serif;font-weight:500;margin:0 0 3px}
.m-meta dd{margin:0;font-size:14.5px;color:var(--ink)}
.m-contact{margin-top:18px;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}

.foot{text-align:center;padding:26px 24px 44px;color:var(--faint);font-size:13px}
.foot b{color:var(--muted);font-weight:500}
.foot .foot-contact{color:var(--muted);font-size:12.5px;line-height:2}
.stats .stat.total b{color:var(--gold)}

/* แคบกว่า 1366px: กิ่งขวาเลื่อนลงมาต่อท้ายแทน
   คำนวณจาก: คอลัมน์กลาง 430 + (กิ่ง 390 + เส้น 28) × 2 = 1266px
   บวกระยะขอบแผง 52 และขอบ canvas 48 → ต้องมีจอกว้างอย่างน้อย 1366px */
@media(max-width:1365px){
  .lead-layout{grid-template-columns:minmax(0,1fr);justify-items:center}
  .lead-main{grid-column:1;max-width:430px}
  .lead-side{grid-column:1;flex-direction:column;align-items:center;width:100%;max-width:430px;margin-top:0}
  .lead-branch{max-width:430px;width:100%}
  .branch-link{
    flex:0 0 34px;width:2px;height:34px;
    background:linear-gradient(180deg, rgba(31,47,107,.5), var(--c,var(--indigo)));
  }
  .branch-link::before{left:50%;top:-4px;transform:translateX(-50%)}
  .branch-link::after{
    left:50%;right:auto;top:auto;bottom:-1px;transform:translateX(-50%);
    border-left:6px solid transparent;border-right:6px solid transparent;
    border-top:9px solid var(--c,var(--indigo));border-bottom:none;
  }
}
@media(max-width:860px){
  .divisions{grid-template-columns:1fr;gap:18px}
  .hero-actions{position:static;justify-content:center;margin-bottom:16px}
}
@media(max-width:480px){
  .hero{padding-top:34px}
  .controls-inner{padding:10px 16px}
  .canvas{padding:28px 16px 70px}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .reveal{opacity:1;transform:none}
}
