:root {
    color-scheme: dark;

    --bg: #000000;
    --panel: #0e0e0e;
    --panel2: #ffffff08;
    --col-head: #141414;
    --border: #2a2a2a;
    --text: #eef0f6;
    --muted: #8d92a8;
    --gold: #c9a04a;
    --gold-soft: #c9a04a22;
    --green: #06c755;
    --badge: #1a1a1a;

    /* สีแจ้งเตือน */
    --amber: #f5c451;
    --amber-ink: #3a2e00;
    --orange: #ff7a1a;
    --orange-ink: #3a1c00;
    --red: #ff5a67;
    --red-ink: #380006;
}


* { box-sizing: border-box; }


body {
    /* FIX (2026-08): ฟอนต์แบบ iPhone — อังกฤษ San Francisco (SF Pro) · ไทย Sukhumvit Set
       เครื่องที่ไม่ใช่ Apple ได้ Noto Sans Thai (โหลดจาก Google Fonts ใน html) หน้าตาใกล้เคียง */
    font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Sukhumvit Set", "Thonburi", "Noto Sans Thai", "Segoe UI", sans-serif;
    margin:0;
    background:
    radial-gradient(1200px 560px at 50% -12%, rgba(201,160,74,.12) 0%, transparent 62%),
    var(--bg);
    color:var(--text);
    min-height:100vh;
}


h1,h2,.serif{
    font-family:Georgia,"Times New Roman",serif;
}


/* ===================== LOGIN ===================== */

#loginScreen {
    max-width:340px;
    margin:90px auto;
    padding:32px 28px;
    background:linear-gradient(180deg, var(--panel), #0a0a0a);
    border:1px solid var(--border);
    border-radius:14px;
    box-shadow:0 20px 50px rgba(0,0,0,.45);
    position:relative;
}

#loginScreen::before {
    content:"";
    position:absolute;
    top:0; left:24px; right:24px;
    height:2px;
    background:linear-gradient(90deg, transparent, var(--gold), transparent);
}

#loginScreen .eyebrow {
    letter-spacing:.12em;
    text-transform:uppercase;
    font-size:11px;
    color:var(--gold);
    /* 🐞 FIX (logo-space): เดิม margin-bottom:6px ของบรรทัดนี้ "ยุบรวม" กับ
       margin-top:46px ของกล่องโลโก้ -> ช่องไฟบนโลโก้ไม่เท่ากับล่าง ดูชิดด้านบน
       ตัดออกแล้วให้กล่องโลโก้คุมระยะบน-ล่างเองที่เดียว จะได้เท่ากันเป๊ะ */
    margin-bottom:0;
    text-align:center;
}

#loginScreen h1 {
    font-family:'Cinzel', Georgia, "Times New Roman", serif;
    font-size:27px;
    margin:0;
    font-weight:700;
    letter-spacing:.05em;
    text-align:center;
    position:relative;
    z-index:1;
    color:#c9a668;
    text-shadow:
        0 2px 2px rgba(43,27,8,.9),
        0 0 8px rgba(0,0,0,.65),
        0 0 20px rgba(201,160,74,.5);
}

#loginScreen input {
    width:100%;
    padding:12px 14px;
    margin-bottom:12px;
    border:1px solid var(--border);
    border-radius:9px;
    background:#090909;
    color:var(--text);
    font-size:14px;
    outline:none;
}

#loginScreen input:focus { border-color:var(--gold); }

#loginScreen button {
    width:100%;
    padding:12px;
    border:none;
    border-radius:9px;
    background:linear-gradient(180deg, #0ed766, var(--green));
    color:#06230f;
    font-weight:700;
    font-size:14px;
    cursor:pointer;
}

#loginScreen button:hover { filter:brightness(1.15); }

#loginError {
    color:#f87171;
    font-size:12.5px;
    min-height:18px;
    margin-top:10px;
    text-align:center;
}

#loginNote {
    color:var(--muted);
    font-size:12px;
    min-height:16px;
    margin-top:4px;
    text-align:center;
}

.authSwitch {
    text-align:center;
    margin-top:16px;
    font-size:12.5px;
    color:var(--muted);
}

.authSwitch a { color:var(--gold); cursor:pointer; }


/* ===================== REGISTER ===================== */

#registerModal, #registerMktModal, #changePwModal, #forgotPwModal {
    display:none;
    position:fixed;
    inset:0;
    z-index:50;
    background:rgba(0,0,0,.55);
    align-items:center;
    justify-content:center;
}

#registerModal .box, #registerMktModal .box, #changePwModal .box, #forgotPwModal .box {
    width:320px;
    padding:26px 24px;
    background:linear-gradient(180deg, var(--panel), #0a0a0a);
    border:1px solid var(--border);
    border-radius:14px;
}

#registerModal input, #registerMktModal input, #changePwModal input, #forgotPwModal input {
    width:100%;
    padding:11px 13px;
    margin-bottom:10px;
    border:1px solid var(--border);
    border-radius:9px;
    background:#090909;
    color:var(--text);
}

#registerModal button, #registerMktModal button, #changePwModal button, #forgotPwModal button {
    padding:11px;
    border-radius:9px;
    border:none;
    cursor:pointer;
    font-weight:bold;
}

#registerModal .primary, #registerMktModal .primary, #changePwModal .primary, #forgotPwModal .primary { background:var(--gold); }
#registerModal .secondary, #registerMktModal .secondary, #changePwModal .secondary, #forgotPwModal .secondary { background:transparent; color:var(--muted); border:1px solid var(--border); }


/* ===================== DASHBOARD ===================== */

/* ===================== ปุ่มจัดกลุ่มรายการจากส่วนขยาย (แสดงในบอร์ดหลัก) ===================== */

.zen-folder-btn{
    background:transparent;
    border:none;
    cursor:pointer;
    font-size:13px;
    padding:2px 4px;
    border-radius:6px;
    opacity:.6;
    transition:.15s;
}
.zen-folder-btn:hover{
    opacity:1;
    background:var(--panel2);
}

/* ===================== LOADING SCREEN ===================== */

#loadingScreen {
    display:none;
    position:fixed;
    inset:0;
    z-index:5000;
    align-items:center;
    justify-content:center;
    background:var(--bg);
}

.loadBox {
    width:100%;
    max-width:320px;
    padding:0 28px;
    text-align:center;
}

.loadTitle {
    font-family:Georgia,"Times New Roman",serif;
    font-size:18px;
    color:var(--text);
    margin-bottom:22px;
    letter-spacing:.01em;
}

.loadBarTrack {
    width:100%;
    height:8px;
    border-radius:20px;
    background:var(--panel2);
    border:1px solid var(--border);
    overflow:hidden;
}

.loadBarFill {
    height:100%;
    width:0%;
    border-radius:20px;
    background:linear-gradient(90deg, var(--gold), var(--green));
    transition:width .15s ease-out;
}

.loadPercent {
    margin-top:12px;
    font-size:13px;
    font-weight:700;
    color:var(--muted);
    letter-spacing:.04em;
}

#dashboard {
    display:none;
    padding:20px 24px 60px;
    max-width:1400px;
    margin:auto;
}

header.top,
#dashboard .top {
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:16px;
    flex-wrap:wrap;
    margin-bottom:20px;
}


/* ---- ฝั่งซ้าย: ชื่อ + ยอดรวม + สถานะ (เรียงแนวตั้ง จัดกึ่งกลาง) ---- */
.titleWrap {
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:12px;
}

#dashboard h1 {
    font-family:'Cinzel', Georgia, "Times New Roman", serif;
    font-size:26px;
    margin:0;
    letter-spacing:.09em;
    text-transform:uppercase;
    text-align:center;
    font-weight:700;
    position:relative;
    z-index:1;
    display:inline-block;
    padding:6px 14px;
    color:#c9a668;
    text-shadow:
        0 2px 2px rgba(43,27,8,.9),
        0 0 8px rgba(0,0,0,.65),
        0 0 22px rgba(201,160,74,.5);
}

/* เส้นคาดบน-ล่างแบบป้ายวินเทจ */
#dashboard h1::before,
#dashboard h1::after {
    content:"";
    position:absolute;
    left:50%;
    transform:translateX(-50%);
    width:55%;
    height:1px;
    background:linear-gradient(90deg, transparent, var(--gold), transparent);
}
#dashboard h1::before { top:-2px; }
#dashboard h1::after  { bottom:-2px; }

/* ---- กรอบครอบชื่อแบรนด์ + รูปโลโก้วงกลม (Eastern Thailand) เป็นพื้นหลังอยู่ด้านหลังตัวอักษร ----
   ใช้ทั้งหน้าทางเข้า (login) และหน้าแดชบอร์ด สไตล์เดียวกัน ต่างกันแค่ขนาดให้เหมาะกับตัวอักษรแต่ละหน้า
   (ตัวอักษรทับอยู่บนโลโก้แบบเดิม แต่เพิ่มเส้นขอบ/เงาให้ตัวอักษรเด่นอ่านง่ายกว่าเดิม แม้จะซ้อนกับ
   โลโก้ด้านหลังก็ตาม — ดูที่ #dashboard h1 / #loginScreen h1) ---- */
.brandLockup {
    position:relative;
    display:flex;
    align-items:center;
    justify-content:center;
    width:100%;
    /* FIX (logo-space): ระยะบน-ล่างเท่ากันเป๊ะ (คุมจากที่เดียว ไม่พึ่ง margin ตัวอื่น) */
    margin:34px 0;
}

.brandBadgeBg {
    /* โลโก้ U1E CHAT — สี่เหลี่ยมมุมมน · แสดงเต็ม · ขนาดเท่าเดิม 110px (dashboard 140px)
       🐞 FIX (logo-fit): เดิม background-size:cover = ขยายเต็มกรอบแล้วครอบส่วนเกินทิ้ง
       ถ้าไฟล์โลโก้ไม่ใช่จัตุรัสเป๊ะ ขอบด้านยาวจะถูกตัดหาย -> ดูเยื้อง/ไม่ตรง
       contain = ย่อให้เห็นครบทั้งรูป ไม่ตัดอะไรทิ้ง */
    width:110px;
    height:110px;
    background-image:url("u1e-logo.png");
    background-size:contain;
    background-repeat:no-repeat;
    background-position:center center;
    border-radius:18px;
    opacity:1;
    pointer-events:none;
    flex:0 0 auto;
}

/* ============================================================
   FIX (2026-08): โลโก้ = ปุ่มเข้า U1E CHAT
   - เอาเมาส์วาง: เรืองแสงเขียว + ลอยขึ้นเบา ๆ + ป้าย "เข้า U1E CHAT" โผล่
   - กด: ยุบตัว + คลื่นแสงกระเพื่อมออก
   ============================================================ */
a.brand-chat{ cursor:pointer; text-decoration:none; flex-direction:column; gap:10px; }
a.brand-chat .brandBadgeBg{
    transition:transform .28s cubic-bezier(.34,1.56,.64,1), box-shadow .28s ease, filter .28s ease;
    box-shadow:0 8px 26px -10px rgba(0,0,0,.55);
}
/* สีเรืองแสง = โทนเดียวกับโลโก้จริง — JS อ่านสีเด่นจาก u1e-logo.png แล้วตั้ง
   --brand-r/g/b ให้ (ดูสคริปต์ใน หน้าหลัก.html) · อ่านไม่ได้ = ใช้เขียวเดิม */
:root{ --brand-r:6; --brand-g:199; --brand-b:85; }
a.brand-chat:hover .brandBadgeBg{
    transform:translateY(-6px) scale(1.05);
    filter:brightness(1.08);
    box-shadow:
        0 0 0 3px rgba(var(--brand-r),var(--brand-g),var(--brand-b),.35),
        0 0 28px 6px rgba(var(--brand-r),var(--brand-g),var(--brand-b),.45),
        0 0 70px 14px rgba(var(--brand-r),var(--brand-g),var(--brand-b),.22),
        0 18px 40px -12px rgba(0,0,0,.6);
    animation:brandGlow 1.8s ease-in-out infinite;
}
@keyframes brandGlow{
    0%,100%{ box-shadow:0 0 0 3px rgba(var(--brand-r),var(--brand-g),var(--brand-b),.35), 0 0 28px 6px rgba(var(--brand-r),var(--brand-g),var(--brand-b),.45),
             0 0 70px 14px rgba(var(--brand-r),var(--brand-g),var(--brand-b),.22), 0 18px 40px -12px rgba(0,0,0,.6); }
    50%    { box-shadow:0 0 0 3px rgba(var(--brand-r),var(--brand-g),var(--brand-b),.55), 0 0 40px 10px rgba(var(--brand-r),var(--brand-g),var(--brand-b),.6),
             0 0 90px 20px rgba(var(--brand-r),var(--brand-g),var(--brand-b),.3),  0 18px 40px -12px rgba(0,0,0,.6); }
}
a.brand-chat:active .brandBadgeBg{
    transform:translateY(-2px) scale(.94);
    transition-duration:.1s;
}
/* คลื่นแสงกระเพื่อมตอนกด */
a.brand-chat::after{
    content:""; position:absolute; top:50%; left:50%; width:140px; height:140px;
    margin:-70px 0 0 -70px; border-radius:24px; pointer-events:none;
    box-shadow:0 0 0 0 rgba(var(--brand-r),var(--brand-g),var(--brand-b),.5); opacity:0;
}
a.brand-chat:active::after{ animation:brandRipple .5s ease-out; }
@keyframes brandRipple{
    0%  { opacity:1; box-shadow:0 0 0 0 rgba(var(--brand-r),var(--brand-g),var(--brand-b),.5); }
    100%{ opacity:0; box-shadow:0 0 0 34px rgba(var(--brand-r),var(--brand-g),var(--brand-b),0); }
}
/* ป้ายบอกใต้โลโก้ — โผล่ตอน hover
   FIX (2026-08): ข้อความเคยดึงสีจากโลโก้ (--brand-*) พอโลโก้เป็น "แดง" ตัวอักษร
   เลยเป็นแดงเข้ม อ่านยากบนพื้นมืด · เปลี่ยนเป็นสีขาวนวลอ่านชัดเสมอทุกสีโลโก้
   คงเอกลักษณ์ไว้ที่ "แสงเรือง" (text-shadow) ที่ยังใช้สีโลโก้ได้ */
.brand-chat-hint{
    font-size:13px; font-weight:800; letter-spacing:.3px;
    color:#f4f6fb;
    opacity:0; transform:translateY(-4px);
    transition:opacity .25s ease, transform .25s ease;
    text-shadow:0 0 14px rgba(var(--brand-r),var(--brand-g),var(--brand-b),.55),
                0 1px 3px rgba(0,0,0,.6);
    pointer-events:none;
}
a.brand-chat:hover .brand-chat-hint{ opacity:1; transform:translateY(0); }
@media (prefers-reduced-motion:reduce){
    a.brand-chat .brandBadgeBg, a.brand-chat::after{ animation:none !important; transition:none !important; }
}

/* บนแดชบอร์ด ตัวอักษรใหญ่กว่า -> ขยายวงกลมโลโก้ตามสัดส่วน + ลด margin ให้เข้ากับ gap ของ titleWrap ที่มีอยู่แล้ว */
#dashboard .brandLockup {
    margin:26px 0 40px;
}
#dashboard .brandBadgeBg {
    width:140px;
    height:140px;
}


/* ---- ยอดรวมทั้งหมด (ใต้ชื่อ จัดกึ่งกลาง) ---- */
.totalCard {
    display:flex;
    flex-direction:column;
    align-items:center;
    text-align:center;
    gap:3px;
    padding:16px 30px;
    border:1px solid var(--border);
    border-radius:16px;
    background:linear-gradient(180deg, #161616, #0a0a0a);
    box-shadow:0 10px 30px rgba(0,0,0,.35);
    position:relative;
    min-width:200px;
    transition:.25s;
}

.totalCard::before {
    content:"";
    position:absolute;
    inset:0 0 auto 0;
    height:2px;
    border-radius:16px 16px 0 0;
    background:linear-gradient(90deg, transparent, var(--gold), transparent);
}

.totalLabel {
    font-size:14px;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--muted);
    font-weight:700;
}

.totalNumber {
    font-family:Georgia,"Times New Roman",serif;
    font-size:60px;
    line-height:1;
    font-weight:700;
    color:var(--gold);
    text-shadow:0 0 22px var(--gold-soft);
}

.totalMeta {
    display:flex;
    gap:14px;
    margin-top:6px;
    font-size:14px;
    font-weight:700;
}

.metaWarn { color:var(--amber); }
.metaCrit { color:var(--orange); }

.updated {
    font-size:13.5px;
    color:var(--muted);
    margin-top:3px;
}

.totalCard.has-warn {
    border-color:var(--amber);
    box-shadow:0 10px 30px rgba(245,196,81,.18);
}
.totalCard.has-warn .totalNumber {
    color:var(--amber);
    text-shadow:0 0 22px rgba(245,196,81,.35);
}

.totalCard.has-crit {
    border-color:var(--orange);
    box-shadow:0 10px 34px rgba(255,122,26,.28);
    animation:cardPulse 1.4s ease-in-out infinite;
}
.totalCard.has-crit .totalNumber {
    color:var(--orange);
    text-shadow:0 0 26px rgba(255,122,26,.45);
}

@keyframes cardPulse {
    0%,100% { box-shadow:0 10px 34px rgba(255,122,26,.22); }
    50%     { box-shadow:0 10px 40px rgba(255,122,26,.5); }
}


/* ---- สถานะการเชื่อมต่อเซิร์ฟเวอร์ ---- */
.connStatus {
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:6px 12px;
    border:1px solid var(--border);
    border-radius:999px;
    background:#181a24;
    font-size:12.5px;
    font-weight:600;
}

.dot {
    width:10px;
    height:10px;
    border-radius:50%;
    background:var(--muted);
    flex-shrink:0;
}

.dot.online     { background:var(--green); box-shadow:0 0 10px var(--green); }
.dot.offline    { background:var(--red);   box-shadow:0 0 10px var(--red); }
.dot.connecting { background:var(--amber); animation:blinkWarn 1s ease-in-out infinite; }

.connText.online     { color:var(--green); }
.connText.offline    { color:var(--red); }
.connText.connecting { color:var(--muted); }


/* ---- ฝั่งขวา: ปุ่มออปชัน ---- */
.right {
    display:flex;
    align-items:center;
    gap:10px;
    flex-wrap:wrap;
}

.toggle {
    display:inline-flex;
    align-items:center;
    gap:6px;
    padding:9px 14px;
    border:1px solid var(--border);
    border-radius:999px;
    background:#181a24;
    color:var(--muted);
    font-size:13px;
    font-weight:600;
    cursor:pointer;
    user-select:none;
    white-space:nowrap;
    transition:.15s;
}

.toggle:hover { border-color:var(--gold); color:var(--text); }

.toggle.active {
    background:var(--gold-soft);
    border-color:var(--gold);
    color:var(--gold);
}

.toggle.danger { color:var(--muted); }
.toggle.danger:hover { border-color:var(--red); color:var(--red); }

/* ปุ่มไปหน้าแชทรวม LINE OA */
.toggle.lineoa {
    text-decoration:none;
    color:var(--green);
    border-color:var(--green);
    background:#06c75514;
    font-weight:700;
}
.toggle.lineoa:hover {
    background:var(--green);
    color:#06230f;
}


/* ===================== BOARD ===================== */
/* บอร์ดจัดเรียงเอง: เติมคอลัมน์ให้พอดีกว้างจอ แล้วขึ้นแถวใหม่อัตโนมัติ
   จอกว้าง = หลายคอลัมน์, มือถือ = คอลัมน์เดียว */

#board {
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
    gap:14px;
    align-items:start;
    padding-bottom:8px;
}

.folder {
    background:var(--panel);
    border:1px solid var(--border);
    border-top:3px solid var(--folder-accent, var(--border));
    border-radius:12px;
    overflow:hidden;
    transition:border-color .2s;
    min-width:0;

    /* หมายเหตุ: เคยใช้ content-visibility:auto ที่นี่เพื่อลดงานวาดตอนโหลดครั้งแรก
       แต่เพราะบอร์ดนี้ล้างแล้วสร้างการ์ดใหม่ทั้งหมดทุกครั้งที่มีการแก้ไข/อัปเดต
       (ดู render() ใน app.js) การ์ดที่สร้างใหม่จะถูกมองว่า "ยังไม่เคยเห็น" เสมอ
       เบราว์เซอร์เลยใช้ความสูงหลอก (320px) ชั่วคราวแทนความสูงจริง ทำให้ความสูง
       ทั้งหน้าคำนวณผิดชั่วขณะ แล้วสกอลถูกดันขึ้นบนสุด (เด้ง) — เอาออกเพื่อความ
       ถูกต้องของตำแหน่งสกอล (ตัดออกไปเลยเพื่อกันปัญหาถาวร ไม่ใช่แค่ปิดชั่วคราว) */
}

.folder-header .name {
    font-size:17px;
    font-weight:800;
    color:var(--folder-accent, var(--text));
}

#board.editing .folder {
    box-shadow:0 0 0 1px var(--folder-accent, var(--gold)) inset;
}

.folder-header {
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:12px 14px;
    background:var(--col-head);
    border-bottom:1px solid var(--border);
    font-weight:600;
}

.folder-header .folder-count {
    font-size:20px;
    font-weight:800;
    color:var(--folder-accent, var(--gold));
    background:#00000030;
    border-radius:999px;
    padding:3px 13px;
    font-variant-numeric:tabular-nums;
}


/* ---- แถบเครื่องมือจัดรูปแบบโฟลเดอร์ ---- */
.folder-edit {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    padding:9px 12px;
    background:#0a0a0a;
    border-bottom:1px dashed var(--border);
    flex-wrap:wrap;
}

.fe-move { display:flex; gap:6px; }

.fe-btn {
    width:28px;
    height:28px;
    border-radius:8px;
    border:1px solid var(--border);
    background:#161616;
    color:var(--text);
    cursor:pointer;
    font-size:11px;
    line-height:1;
}

.fe-btn:hover:not([disabled]) { border-color:var(--gold); }
.fe-btn[disabled] { opacity:.3; cursor:default; }

.fe-colors { display:flex; gap:6px; align-items:center; flex-wrap:wrap; }

.sw {
    width:18px;
    height:18px;
    border-radius:50%;
    border:2px solid rgba(0,0,0,.35);
    cursor:pointer;
    padding:0;
    transition:transform .1s;
}

.sw:hover { transform:scale(1.2); }
.sw.sel  { outline:2px solid #fff; outline-offset:1px; }

.sw-clear {
    background:transparent !important;
    border:1px solid var(--border);
    color:var(--muted);
    font-size:10px;
    line-height:1;
    display:flex;
    align-items:center;
    justify-content:center;
}


.oa-item {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:14px 15px;
    border-top:1px solid var(--border);

    /* เอา content-visibility:auto ออก — เหตุผลเดียวกับ .folder ด้านบน:
       ชนกับการ rebuild ทั้งบอร์ดทุกครั้ง ทำให้สกอลเด้งขึ้นบนสุด */
}

.oa-item .name {
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:16.5px;
    font-weight:600;
}

.oa-right {
    display:flex;
    align-items:center;
    gap:8px;
    flex-shrink:0;
}

.item-edit {
    width:26px;
    height:26px;
    border-radius:7px;
    border:1px solid var(--border);
    background:#161616;
    color:var(--muted);
    cursor:pointer;
    font-size:12px;
    line-height:1;
}
.item-edit:hover { border-color:var(--gold); color:var(--text); }

.item-color {
    width:26px;
    height:26px;
    border-radius:7px;
    border:1px solid var(--border);
    background:#161616;
    cursor:pointer;
    font-size:14px;
    font-weight:900;
    line-height:1;
}
.item-color:hover { border-color:var(--gold); }

.badge {
    flex-shrink:0;
    background:var(--folder-accent, var(--green));
    color:#0d0f16;
    border-radius:999px;
    padding:4px 13px;
    font-weight:800;
    font-size:15.5px;
    font-variant-numeric:tabular-nums;
}


/* ---- เตือนเหลือง 10-20 (กระพริบ) ---- */
.oa-item.warn {
    border-left:3px solid var(--amber);
    background:rgba(245,196,81,.05);
}
.oa-item.warn .name {
    color:var(--amber);
    font-weight:700;
    animation:blinkWarn 1.1s ease-in-out infinite;
}
.oa-item.warn .badge {
    background:var(--amber);
    color:var(--amber-ink);
    box-shadow:0 0 10px rgba(245,196,81,.55);
    animation:blinkWarn 1.1s ease-in-out infinite;
}


/* ---- เตือนส้มเข้ม > 20 (กระพริบ) ---- */
.oa-item.crit {
    border-left:3px solid var(--orange);
    background:rgba(255,122,26,.08);
}
.oa-item.crit .name {
    color:var(--orange);
    font-weight:800;
    animation:blinkCrit 0.7s ease-in-out infinite;
}
.oa-item.crit .badge {
    background:var(--orange);
    color:var(--orange-ink);
    box-shadow:0 0 12px rgba(255,122,26,.7);
    animation:blinkCrit 0.7s ease-in-out infinite;
}

@keyframes blinkWarn { 0%,100%{opacity:1;} 50%{opacity:.35;} }
@keyframes blinkCrit { 0%,100%{opacity:1;} 50%{opacity:.25;} }


/* ปิดการกระพริบให้ผู้ที่ตั้งค่าลดการเคลื่อนไหว แต่ยังคงสี */
@media (prefers-reduced-motion: reduce) {
    .oa-item.warn .name, .oa-item.warn .badge,
    .oa-item.crit .name, .oa-item.crit .badge,
    .dot.connecting, .totalCard.has-crit {
        animation:none;
    }
}


::-webkit-scrollbar { height:8px; }
::-webkit-scrollbar-thumb { background:var(--border); border-radius:4px; }


/* ---- แท็บเล็ต ---- */
@media (max-width:900px){
    #dashboard { padding:16px 16px 50px; }
    #board { grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); }
}

/* ---- มือถือ ---- */
@media (max-width:640px){
    #dashboard { padding:14px 12px 44px; }
    #dashboard .top { flex-direction:column; align-items:stretch; }
    .titleWrap { align-items:stretch; }
    .right { width:100%; }
    .right .toggle { flex:1 1 auto; justify-content:center; }
    .totalCard { width:100%; align-items:center; }
    .totalNumber { font-size:46px; }
    #board { grid-template-columns:1fr; }   /* คอลัมน์เดียว เต็มจอ */
    #dashboard h1 { font-size:19px; letter-spacing:.04em; padding:5px 8px; }
    .oa-item .name { font-size:17px; }       /* อ่านง่ายบนมือถือ */
    .badge { font-size:16px; padding:5px 14px; }
}

/* ---- จอใหญ่มาก ---- */
@media (min-width:1500px){
    #dashboard { max-width:1800px; }
}


/* ---- โฟลเดอร์ที่ซ่อน (โชว์แบบจาง ๆ เฉพาะโหมดแก้ไข) ---- */
.folder.hidden-folder {
    opacity:.5;
    filter:grayscale(.4);
}
.folder.hidden-folder .folder-header .name::after {
    content:" (ซ่อนอยู่)";
    color:var(--muted);
    font-weight:400;
    font-size:11px;
}

/* ปุ่มกว้าง (ซ่อน/แสดง) ในแถบเครื่องมือ */
.fe-btn.wide {
    width:auto;
    padding:0 10px;
    font-size:11px;
    white-space:nowrap;
}
.fe-btn.wide.on {
    border-color:var(--gold);
    color:var(--gold);
}
.fe-btn.wide.danger {
    color:var(--red);
    border-color:#ff5a6755;
}
.fe-btn.wide.danger:hover {
    background:var(--red);
    color:#380006;
}


/* ===================== ADMIN: จัดการสมาชิก ===================== */

.toggle.admin.active,
.toggle.admin { color:var(--gold); border-color:var(--gold); background:var(--gold-soft); }
.toggle.admin:hover { filter:brightness(1.1); }

#adminModal {
    display:none;
    position:fixed;
    inset:0;
    z-index:60;
    background:rgba(0,0,0,.6);
    align-items:flex-start;
    justify-content:center;
    padding:40px 16px;
    overflow-y:auto;
}

.admin-box {
    width:100%;
    max-width:640px;
    background:linear-gradient(180deg, var(--panel), #0a0a0a);
    border:1px solid var(--border);
    border-radius:16px;
    box-shadow:0 30px 70px rgba(0,0,0,.55);
    overflow:hidden;
}

.admin-head {
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:18px 22px;
    border-bottom:1px solid var(--border);
    background:var(--col-head);
}
.admin-head h2 { margin:0; font-size:19px; }
.admin-head-actions { display:flex; gap:8px; }

.admin-sub {
    padding:12px 22px;
    color:var(--muted);
    font-size:12.5px;
    border-bottom:1px solid var(--border);
}

.admin-search-input {
    display:block;
    width:calc(100% - 44px);
    margin:14px 22px 0;
    padding:10px 14px;
    border:1px solid var(--border);
    border-radius:9px;
    background:#090909;
    color:var(--text);
    font-size:13.5px;
    font:inherit;
}
.admin-search-input:focus {
    outline:2px solid var(--gold);
    outline-offset:-1px;
}

/* ---- แท็บ สมาชิก / ตำแหน่งงาน ในแผงจัดการสมาชิก ---- */
.admin-tabs {
    display:flex;
    gap:6px;
    padding:12px 22px 0;
    border-bottom:1px solid var(--border);
}
.admin-tab {
    padding:9px 16px;
    border:1px solid var(--border);
    border-bottom:none;
    border-radius:8px 8px 0 0;
    background:transparent;
    color:var(--muted);
    font-size:13px;
    font-weight:600;
    cursor:pointer;
}
.admin-tab:hover { color:var(--text); }
.admin-tab.active { background:#181a24; color:var(--gold); border-color:var(--border); }

/* ---- ฟอร์มสร้างตำแหน่งงานใหม่ ---- */
.position-form {
    margin:14px 22px 0;
    padding:14px 16px;
    border:1px dashed var(--border);
    border-radius:12px;
    background:#181a24;
}
.position-form .admin-search-input { margin:0; width:100%; }

/* ---- ตัวนับจำนวนคนออนไลน์ (หัวแผงจัดการสมาชิก) ---- */
.online-count-badge {
    font-size:12px;
    font-weight:700;
    padding:5px 12px;
    border-radius:999px;
    background:#06c75518;
    color:var(--green);
    white-space:nowrap;
}

/* ---- ฟอร์มตั้งช่วงเวลาเข้าใช้งาน ---- */
.sched-toggle {
    display:flex;
    align-items:center;
    gap:8px;
    font-size:13.5px;
    font-weight:600;
    cursor:pointer;
    user-select:none;
}
.sched-toggle input { width:16px; height:16px; accent-color:var(--gold); cursor:pointer; }
.sched-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:12px 16px;
    margin-top:14px;
}
.sched-input { color-scheme:dark; }

.admin-list { padding:14px 18px 22px; }

.admin-empty {
    padding:24px;
    text-align:center;
    color:var(--muted);
    font-size:13px;
}

.m-section {
    margin:16px 4px 8px;
    font-size:11px;
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--gold);
    font-weight:700;
}
.m-section:first-child { margin-top:4px; }


/* การ์ดสมาชิก */
.m-card {
    border:1px solid var(--border);
    border-radius:12px;
    padding:14px 16px;
    margin-bottom:10px;
    background:#181a24;
}
.m-card.pending {
    border-color:var(--amber);
    background:rgba(245,196,81,.05);
}

.m-top {
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:10px;
}
.m-name { font-weight:700; font-size:15px; }

.m-edit-name {
    background:transparent;
    border:none;
    color:var(--muted);
    cursor:pointer;
    font-size:12.5px;
    padding:2px 4px;
    margin-left:2px;
    border-radius:6px;
}
.m-edit-name:hover { color:var(--gold); background:#c9a04a14; }
.m-nick { color:var(--muted); font-weight:400; font-size:13px; }
.m-user { color:var(--muted); font-size:12px; margin-top:1px; }

.role-badge {
    font-size:11px;
    font-weight:700;
    padding:3px 10px;
    border-radius:999px;
    background:var(--badge);
    color:var(--muted);
    white-space:nowrap;
}
.role-badge.admin { background:var(--gold-soft); color:var(--gold); }

.status {
    font-size:12px;
    font-weight:700;
    padding:3px 10px;
    border-radius:999px;
    margin-right:auto;
}
.status.ok   { color:var(--green); background:#06c75518; }
.status.wait { color:var(--amber); background:#f5c45118; }

.m-actions {
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
    margin-top:12px;
}

.m-btn {
    padding:7px 13px;
    border-radius:8px;
    border:1px solid var(--border);
    background:#161616;
    color:var(--text);
    font-size:12.5px;
    font-weight:600;
    cursor:pointer;
    transition:.15s;
}
.m-btn:hover { border-color:var(--gold); }
.m-btn.approve { background:var(--green); color:#06230f; border-color:transparent; }
.m-btn.approve:hover { filter:brightness(1.12); border-color:transparent; }
.m-btn.ghost { background:transparent; color:var(--muted); }
.m-btn.ghost:hover { color:var(--text); }

/* เลือกโฟลเดอร์ที่ user เห็นได้ */
.m-folders {
    margin-top:14px;
    padding-top:12px;
    border-top:1px dashed var(--border);
}
.m-folders-label {
    font-size:12px;
    color:var(--muted);
    margin-bottom:8px;
}
.chip-row { display:flex; flex-wrap:wrap; gap:7px; }

/* ---- เลือกตำแหน่งงานในการ์ดสมาชิก ---- */
.m-position {
    margin-top:14px;
    padding-top:12px;
    border-top:1px dashed var(--border);
}
.pos-select {
    width:100%;
    padding:9px 12px;
    border-radius:9px;
    border:1px solid var(--border);
    background:#090909;
    color:var(--text);
    font-size:13px;
    font:inherit;
}
.pos-select:focus { outline:2px solid var(--gold); outline-offset:-1px; }

/* เปิด/ปิดสิทธิ์ฟังก์ชันย่อยให้พนักงานทั่วไป (รายงาน / ผูก LINE OA) — ใช้ chip แบบเดียวกับโฟลเดอร์ */
.m-perms {
    margin-top:14px;
    padding-top:12px;
    border-top:1px dashed var(--border);
}

.chip {
    padding:6px 12px;
    border-radius:999px;
    border:1px solid var(--border);
    background:#090909;
    color:var(--muted);
    font-size:12.5px;
    font-weight:600;
    cursor:pointer;
    transition:.12s;
}
.chip:hover:not([disabled]) { border-color:var(--gold); color:var(--text); }
.chip.on { background:var(--gold-soft); border-color:var(--gold); color:var(--gold); }
.chip.all.on { background:var(--gold); color:#06230f; border-color:transparent; }
.chip[disabled] { opacity:.4; cursor:default; }

.m-hint { margin-top:8px; font-size:11.5px; color:var(--muted); }

.m-btn[disabled] { opacity:.35; cursor:default; pointer-events:none; }

/* แถวปุ่มบันทึกสิทธิ์ + ตัวบอกว่ามีการเปลี่ยนแปลงที่ยังไม่บันทึก */
.perm-save-row {
    display:flex;
    align-items:center;
    gap:10px;
    margin-top:10px;
}
.perm-dirty {
    font-size:11.5px;
    color:var(--gold);
    font-weight:600;
}

/* ป้ายแจ้งคำขอรีเซ็ตรหัสผ่าน — ให้เด่นสะดุดตากว่าปกติเพราะรออนุมัติอยู่ */
.m-pwreset {
    margin-top:12px;
    padding:10px 12px;
    border-radius:10px;
    background:#c9a04a14;
    border:1px solid #c9a04a55;
    font-size:12.5px;
    color:var(--text);
}

@media (max-width:640px){
    #adminModal { padding:16px 8px; }
    .m-top { flex-direction:column; }
}


/* ปุ่มบังคับออก (ในการ์ดสมาชิก) */
.m-btn.warn { color:var(--amber); border-color:var(--amber); background:transparent; }
.m-btn.warn:hover { background:var(--amber); color:var(--amber-ink); }


/* ===================== ไซเรนฉุกเฉิน (unread >= 50) ===================== */

.metaSiren { color:#ff3b47; font-weight:800; }

.siren-icon {
    display:inline-block;
    animation:sirenShake 0.5s linear infinite;
}

.oa-item.siren {
    border-left:4px solid #ff3b47;
    animation:sirenRow 0.7s steps(1,end) infinite;
}
.oa-item.siren .name {
    font-weight:900;
    animation:sirenText 0.7s steps(1,end) infinite;
}
.oa-item.siren .badge {
    color:#fff;
    animation:sirenBadge 0.7s steps(1,end) infinite;
}

/* สลับแดง <-> น้ำเงิน เหมือนไฟไซเรน */
@keyframes sirenRow {
    0%,49%   { background:rgba(255,59,71,.16);  border-left-color:#ff3b47; }
    50%,100% { background:rgba(56,120,255,.16);  border-left-color:#3878ff; }
}
@keyframes sirenText {
    0%,49%   { color:#ff5a63; text-shadow:0 0 10px rgba(255,59,71,.7); }
    50%,100% { color:#5a9bff; text-shadow:0 0 10px rgba(56,120,255,.7); }
}
@keyframes sirenBadge {
    0%,49%   { background:#ff3b47; box-shadow:0 0 14px rgba(255,59,71,.9); }
    50%,100% { background:#3878ff; box-shadow:0 0 14px rgba(56,120,255,.9); }
}
@keyframes sirenShake {
    0%,100% { transform:rotate(-12deg); }
    50%     { transform:rotate(12deg); }
}

/* การ์ดยอดรวมตอนมีไซเรน */
.totalCard.has-siren {
    border-color:#ff3b47;
    animation:sirenCard 0.7s steps(1,end) infinite;
}
.totalCard.has-siren .totalNumber {
    animation:sirenText 0.7s steps(1,end) infinite;
}
@keyframes sirenCard {
    0%,49%   { box-shadow:0 10px 34px rgba(255,59,71,.45);  border-color:#ff3b47; }
    50%,100% { box-shadow:0 10px 34px rgba(56,120,255,.45); border-color:#3878ff; }
}

@media (prefers-reduced-motion: reduce) {
    .oa-item.siren, .oa-item.siren .name, .oa-item.siren .badge,
    .siren-icon, .totalCard.has-siren, .totalCard.has-siren .totalNumber {
        animation:none;
    }
    .oa-item.siren { background:rgba(255,59,71,.14); }
    .oa-item.siren .badge { background:#ff3b47; }
}


/* ===================== POPUP แจ้งเตือน ===================== */

.popup-overlay {
    position:fixed;
    inset:0;
    z-index:9000;   /* FIX (2026-08): ป๊อปยืนยัน/แจ้งเตือนต้องอยู่บนสุดเหนือทุกหน้าต่าง
                       (เดิม 80 — ต่ำกว่าหน้าต่างตั้งสิทธิ์/ตั้งค่า ทำให้เด้งจมอยู่ข้างหลัง) */
    background:rgba(0,0,0,.6);
    display:flex;
    align-items:center;
    justify-content:center;
    padding:20px;
    animation:popupFade .15s ease;
}

@keyframes popupFade { from{opacity:0;} to{opacity:1;} }

.popup-box {
    width:100%;
    max-width:380px;
    background:linear-gradient(180deg, var(--panel), #0a0a0a);
    border:1px solid var(--border);
    border-radius:16px;
    padding:28px 26px 24px;
    text-align:center;
    box-shadow:0 30px 70px rgba(0,0,0,.55);
    position:relative;
}
.popup-box::before {
    content:"";
    position:absolute;
    top:0; left:26px; right:26px;
    height:2px;
    border-radius:16px 16px 0 0;
    background:linear-gradient(90deg, transparent, var(--gold), transparent);
}

.popup-title {
    font-size:20px;
    font-weight:800;
    margin-bottom:12px;
    color:var(--text);
}
.popup-msg {
    font-size:14.5px;
    line-height:1.6;
    color:var(--muted);
    margin-bottom:22px;
}
.popup-ok {
    width:100%;
    padding:12px;
    border:none;
    border-radius:10px;
    background:linear-gradient(180deg, #0ed766, var(--green));
    color:#06230f;
    font-weight:800;
    font-size:15px;
    cursor:pointer;
}
.popup-ok:hover { filter:brightness(1.1); }


/* ================= ชื่อผู้ใช้ที่ล็อกอินอยู่ (แถบบน) ================= */
.whoami{
    display:inline-flex;align-items:center;gap:10px;
    padding:9px 14px;border-radius:16px;
    border:1px solid rgba(255,255,255,.1);
    background:linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.02));
    -webkit-backdrop-filter:blur(14px) saturate(1.2); backdrop-filter:blur(14px) saturate(1.2);
    box-shadow:0 12px 32px -14px rgba(0,0,0,.55), 0 1px 0 rgba(255,255,255,.06) inset;
    font-size:12.5px;
}
.whoami-dot{
    width:8px;height:8px;border-radius:50%;
    background:var(--green);
    box-shadow:0 0 8px var(--green);
    flex:none;
}
.whoami-body{ display:flex; flex-direction:column; gap:4px; min-width:0; }
.whoami-l1{ display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.whoami-name{ font-weight:800; color:var(--text); font-size:13.5px; }
.whoami-nick{
    display:inline-block; background:rgba(201,160,74,.14); color:var(--gold);
    border:1px solid rgba(201,160,74,.28); border-radius:999px;
    padding:1px 9px; font-size:11.5px; font-weight:600;
}
.whoami-l2{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.whoami-user{color:#9aa2b4;font-size:11px}
.whoami-time{ color:#d8c089; font-size:11px; font-variant-numeric:tabular-nums; }
.whoami-role{
    background:var(--gold-soft);color:var(--gold);
    padding:1px 8px;border-radius:999px;
    font-size:10.5px;font-weight:800;
}
.whoami-edit{ background:none;border:none;cursor:pointer;color:inherit;opacity:.55;font-size:12px;padding:0 2px; transition:opacity .15s, color .15s; }
.whoami-edit:hover{ opacity:1; color:var(--gold); }

/* ---- FIX (2026-08): ปุ่ม "⚙ ตั้งค่า" ในกรอบ whoami + เมนูย่อย
   (รวมปุ่ม เปลี่ยนรหัสผ่าน / 2FA / พื้นหลัง ที่ย้ายมาจากแถบเครื่องมือ) ---- */
.whoami-settings-btn{
    all:unset; cursor:pointer; flex:none;
    width:30px; height:30px;
    display:inline-flex; align-items:center; justify-content:center;
    border-radius:10px; font-size:16px; line-height:1; color:#c9d1e3;
    border:1px solid rgba(255,255,255,.14);
    background:rgba(255,255,255,.05);
    transition:background .18s, color .18s, transform .25s, border-color .18s;
}
.whoami-settings-btn:hover{ background:rgba(255,255,255,.12); color:#fff; transform:rotate(40deg); }
.whoami-settings-btn.active{
    background:var(--gold-soft, rgba(255,215,106,.14));
    color:var(--gold, #ffd76a);
    border-color:rgba(255,215,106,.45);
    transform:rotate(90deg);
}
.whoami-settings-menu{
    display:none;
    position:absolute; top:calc(100% + 8px); right:0;
    flex-direction:column; gap:6px;
    padding:8px; min-width:200px;
    border-radius:14px; z-index:500;
    border:1px solid rgba(255,255,255,.16);
    background:linear-gradient(180deg, rgba(34,37,48,.96), rgba(18,20,27,.97));
    -webkit-backdrop-filter:blur(24px) saturate(1.4); backdrop-filter:blur(24px) saturate(1.4);
    box-shadow:0 22px 50px -14px rgba(0,0,0,.8), 0 1px 0 rgba(255,255,255,.08) inset;
    animation:whoamiMenuIn .18s cubic-bezier(.2,.8,.2,1) both;
}
.whoami-settings-menu.open{ display:flex; }
@keyframes whoamiMenuIn{
    from{ opacity:0; transform:translateY(-6px); }
    to{ opacity:1; transform:translateY(0); }
}
/* ปุ่มเดิม (.toggle) พอเข้ามาอยู่ในเมนู ให้เรียงเป็นแถวเต็มความกว้าง กดง่าย */
.whoami-settings-menu .whoami-menu-item{
    display:block; width:auto; margin:0 !important;
    text-align:left; padding:8px 12px;
    border-radius:10px; box-sizing:border-box;
}

/* ---- FIX (2026-08): popup "สร้างสิทธิ์ใหม่" (แท็บจัดการสิทธิ์) ----
   คุมการเปิด-ปิดด้วยคลาส .open (ไม่ใช้ attribute hidden เพราะ display:flex จะชนะ) */
.pos-create-overlay{
    position:fixed; inset:0; z-index:100000;
    display:none; align-items:center; justify-content:center; padding:20px;
    background:rgba(5,6,10,.72);
    -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
}
.pos-create-overlay.open{ display:flex; }
.pos-create-card{
    width:min(720px,96vw); max-height:88vh; overflow:auto;
    background:linear-gradient(180deg, #191b26, #12141c);
    border:1px solid rgba(255,255,255,.14); border-radius:16px;
    padding:20px 22px; box-sizing:border-box;
    box-shadow:0 30px 80px -20px rgba(0,0,0,.85), 0 1px 0 rgba(255,255,255,.07) inset;
    animation:posCreateIn .22s cubic-bezier(.2,.8,.2,1) both;
}
@keyframes posCreateIn{
    from{ opacity:0; transform:translateY(10px) scale(.98); }
    to{ opacity:1; transform:none; }
}
.pos-create-head{ display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.pos-create-title{ font-weight:800; font-size:16.5px; color:var(--text,#eef0f6); }
.pos-create-x{
    all:unset; cursor:pointer; margin-left:auto;
    width:32px; height:32px; display:inline-flex; align-items:center; justify-content:center;
    border-radius:9px; font-size:14px; color:#aab0c0;
    border:1px solid rgba(255,255,255,.14);
    transition:background .15s, color .15s, border-color .15s;
}
.pos-create-x:hover{ background:rgba(255,90,103,.15); color:#ff8a90; border-color:rgba(255,90,103,.5); }

/* ---- FIX (2026-08): แถวช่วงเวลาเข้าระบบ (หลายช่วง/กะข้ามคืน) ในแท็บทีมพนักงาน ---- */
.sched-range-row{
    display:flex; align-items:center; gap:8px; flex-wrap:wrap;
    padding:6px 0;
}
.sched-range-row .sched-input{ width:130px; margin:0; flex:none; }
.sched-range-row .sr-arrow{ color:#8d92a8; font-weight:800; }
.sched-range-row .sr-ovn{
    font-size:12px; font-weight:700; color:#c9b6ff;
    border:1px solid rgba(201,182,255,.4); background:rgba(201,182,255,.08);
    padding:2px 9px; border-radius:999px;
}
.sched-range-row .sr-ovn:empty{ display:none; }
.sched-range-row .sr-del{ flex:none; padding:6px 10px; }
.sched-range-row .sr-del:disabled{ opacity:.35; cursor:default; }

/* =========================================================
   FIX (2026-08 v4): แถบเครื่องมือ "โชว์ถาวร ขนาดพอดีปุ่ม" ในแถวโลโก้
   — .right ถูกย้ายเข้ามาเป็นลูกของ .totalRow แล้ว (index.html)
   จึงอยู่แถวเดียวกับโลโก้+ยอดรวมเสมอ สูงเท่าปุ่ม 1 แถว (ห่อบรรทัดได้ถ้าปุ่มเยอะ)
   ไม่โดนกฎ column ของ header ทำให้กลายเป็นกล่องยักษ์อีก
   ========================================================= */
.tools-burger, .tools-backdrop{ display:none !important; }

.totalRow{
    flex:1 1 100% !important;
    justify-content:flex-start !important;
    margin-bottom:0 !important;
    flex-wrap:wrap;                     /* จอแคบ: แถบตกบรรทัดใหม่ในแถวเดียวกันนี้ สวยเป็นระเบียบ */
}

/* FIX (2026-08 v7): แถบเครื่องมือ "แถวของตัวเอง" ใต้แถวโลโก้ — ยาวเต็มความกว้าง
   ปุ่มทั้งหมดเรียงบรรทัดเดียว (จอแคบจริง ๆ ค่อยห่อบรรทัด)
   ระดับนี้ต่ำกว่ากรอบชื่อแอคเคาท์ (whoami สูง ~130px < แถวโลโก้ ~200px) เสมอ
   -> ยาวเต็มจอได้โดยไม่ชนอะไรในทุกขนาดจอ ไม่ต้องเว้นเขตขวาอีก */
header.top .totalRow .right{
    position:static !important;
    flex:1 1 100% !important; min-width:0; max-width:100%;
    order:99;                            /* ไปอยู่ท้ายแถว = ขึ้นบรรทัดใหม่ใต้โลโก้+การ์ดเสมอ */
    align-self:flex-start !important;
    margin:12px 8px 0 8px !important;
    height:auto !important; max-height:none !important;
    padding:9px 12px !important;         /* กรอบบางพอดีปุ่ม ~ ขนาดกรอบแดงของลูกค้า */
    border-width:1px !important;
    display:flex !important; flex-wrap:wrap; align-items:center; gap:8px;
    justify-content:flex-start !important;
    opacity:1 !important; transform:none !important; visibility:visible !important;
    pointer-events:auto !important; overflow:visible !important;
}


/* ================= จุดสถานะออนไลน์ (แผงจัดการสมาชิก) ================= */
.onl-dot{
    display:inline-block;
    width:9px;height:9px;border-radius:50%;
    margin-right:6px;
    flex:none;
    vertical-align:middle;
}
.onl-dot.on{
    background:var(--green);             /* 🟢 กำลังเข้าเว็บอยู่ */
    box-shadow:0 0 8px var(--green);
    animation:onlPulse 2s ease-in-out infinite;
}
.onl-dot.off{
    background:var(--red);               /* 🔴 ไม่ได้เข้าเว็บ */
    box-shadow:0 0 6px #ff5a6755;
    opacity:.85;
}
@keyframes onlPulse{
    0%,100% { opacity:1 }
    50%     { opacity:.55 }
}
.onl-txt{
    margin-left:6px;
    color:var(--green);
    font-size:10.5px;font-weight:700;
}

/* ============================================================
   ✦ UI POLISH v3 — CLEAN ELEGANT 2026
   หน้า login + หน้าหลัก + popups · ต่อท้าย = ทับด้วย cascade
   ปรับเฉพาะการตกแต่ง (สี/เงา/ไล่เฉด/ความมน/ตัวอักษร/อนิเมชัน)
   ไม่แตะ layout / ID / class / JS — ฟังก์ชัน+ความเสถียรครบเหมือนเดิม
   ============================================================ */

/* ---------- scrollbar เพรียว ---------- */
* { scrollbar-width:thin; scrollbar-color:#2c2c2c transparent; }
::-webkit-scrollbar { width:10px; height:10px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:#2a2a2a; border-radius:999px; border:2px solid transparent; background-clip:padding-box; }
::-webkit-scrollbar-thumb:hover { background:#3d3d3d; background-clip:padding-box; }

/* ========== หน้า LOGIN — การ์ด glass + ออโรร่า ========== */
#loginScreen {
    padding:42px 34px 34px;
    background:linear-gradient(180deg, rgba(26,26,29,.84), rgba(9,9,11,.93));
    border:1px solid rgba(255,255,255,.07);
    border-radius:24px;
    box-shadow:0 44px 100px -22px rgba(0,0,0,.78), 0 1px 0 rgba(255,255,255,.06) inset, 0 0 0 1px rgba(201,160,74,.09);
    -webkit-backdrop-filter:blur(20px) saturate(1.18); backdrop-filter:blur(20px) saturate(1.18);
    animation:u1eLoginIn .65s cubic-bezier(.2,.75,.2,1) both; isolation:isolate;
}
@keyframes u1eLoginIn { from{opacity:0;transform:translateY(18px) scale(.98)} to{opacity:1;transform:none} }
#loginScreen::after {
    content:""; position:absolute; inset:-46% -34% auto -34%; height:250px; z-index:-1;
    background:radial-gradient(58% 100% at 28% 0%, rgba(6,199,85,.22), transparent 70%),
              radial-gradient(58% 100% at 82% 8%, rgba(201,160,74,.20), transparent 70%);
    filter:blur(42px); opacity:.85; pointer-events:none; animation:u1eAurora 10s ease-in-out infinite alternate;
}
@keyframes u1eAurora { from{transform:translateX(-6%) scale(1);opacity:.7} to{transform:translateX(6%) translateY(-4%) scale(1.07);opacity:1} }
#loginScreen::before { left:34px; right:34px; height:2px; opacity:.8; background:linear-gradient(90deg, transparent, var(--gold), transparent); }
/* FIX (logo-overlap): กฎนี้อยู่หลังกฎแรก จึงเป็นตัวที่มีผลจริง
   margin-bottom ต้องเป็น 0 ให้กล่องโลโก้คุมระยะบน-ล่างเองที่เดียว (ไม่งั้นยุบรวมกัน
   แล้วช่องไฟบนโลโก้ไม่เท่ากับล่าง) */
#loginScreen .eyebrow { text-align:center; letter-spacing:.34em; font-size:10px; opacity:.75; font-weight:600; margin-bottom:0; }
#loginScreen h1 { font-size:31px; letter-spacing:.1em; color:#e2c384; animation:u1eBrandGlow 4.5s ease-in-out infinite alternate; }
@keyframes u1eBrandGlow {
    from { text-shadow:0 1px 1px rgba(43,27,8,.9), 0 0 12px rgba(0,0,0,.55), 0 0 22px rgba(201,160,74,.32); }
    to   { text-shadow:0 1px 1px rgba(43,27,8,.9), 0 0 14px rgba(0,0,0,.5),  0 0 42px rgba(201,160,74,.58); }
}
#loginScreen input {
    padding:14px 16px; margin-bottom:14px; border-radius:14px;
    border:1px solid rgba(255,255,255,.08); background:rgba(255,255,255,.03);
    transition:border-color .2s, box-shadow .2s, background .2s;
}
#loginScreen input::placeholder { color:#63666f; }
#loginScreen input:focus { border-color:rgba(201,160,74,.7); background:rgba(255,255,255,.05); box-shadow:0 0 0 3px rgba(201,160,74,.16); }
#loginScreen button {
    position:relative; overflow:hidden; padding:14px; border-radius:14px; letter-spacing:.03em; margin-top:4px;
    background:linear-gradient(135deg,#16e277,var(--green) 55%,#04a446);
    box-shadow:0 12px 28px -8px rgba(6,199,85,.5), 0 1px 0 rgba(255,255,255,.28) inset;
    transition:transform .14s, box-shadow .22s, filter .2s;
}
#loginScreen button::before {
    content:""; position:absolute; top:0; left:-130%; width:55%; height:100%;
    background:linear-gradient(100deg, transparent, rgba(255,255,255,.4), transparent);
    transform:skewX(-18deg); pointer-events:none;
}
#loginScreen button:hover { transform:translateY(-2px); filter:brightness(1.05); box-shadow:0 18px 40px -10px rgba(6,199,85,.62), 0 1px 0 rgba(255,255,255,.32) inset; }
#loginScreen button:hover::before { animation:u1eShine .85s ease; }
#loginScreen button:active { transform:translateY(0); }
@keyframes u1eShine { from{left:-130%} to{left:135%} }
.authSwitch { margin-top:20px; }
.authSwitch a { transition:color .15s; }
.authSwitch a:hover { color:#e8cd90; text-decoration:underline; }

/* ========== หน้าหลัก — ปุ่มหัวเว็บ + อนิเมชันเข้า ========== */
.toggle { border-radius:999px; background:rgba(255,255,255,.02);
    transition:border-color .16s, color .16s, background .16s, transform .12s, box-shadow .16s; }
.toggle:hover  { transform:translateY(-1.5px); background:rgba(255,255,255,.05); box-shadow:0 6px 18px -4px rgba(0,0,0,.5); }
.toggle:active { transform:translateY(0); }
.toggle.admin  { box-shadow:0 0 0 1px rgba(201,160,74,.2) inset; }
.toggle.danger:hover { box-shadow:0 6px 18px -4px rgba(255,90,103,.35); }

#dashboard .top { animation:u1eFadeDown .6s cubic-bezier(.2,.75,.2,1) both; }
@keyframes u1eFadeDown { from{opacity:0;transform:translateY(-12px)} to{opacity:1;transform:none} }
#board { gap:18px; animation:u1eBoardIn .55s ease both; }
@keyframes u1eBoardIn { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:none} }

/* ========== การ์ดโฟลเดอร์ — โมเดิร์น โล่ง + หมวดสี ========== */
.folder { border-radius:18px; background:linear-gradient(180deg, #101012, #0b0b0d);
    transition:border-color .2s, transform .2s, box-shadow .24s; }
.folder:hover { transform:translateY(-4px); border-color:var(--folder-accent, var(--gold));
    box-shadow:0 24px 48px -14px rgba(0,0,0,.72), 0 0 0 1px var(--folder-accent, var(--gold)) inset, 0 0 34px -10px var(--folder-accent, rgba(201,160,74,.5)); }
.folder-header { padding:15px 17px; background:linear-gradient(180deg, #161616, #0f0f0f); transition:background .2s; }
.folder-header .folder-count { transition:transform .18s, box-shadow .2s; }
.folder:hover .folder-header .folder-count { transform:scale(1.08); box-shadow:0 0 18px -2px var(--folder-accent, rgba(201,160,74,.55)); }
.oa-item { padding:12px 16px; transition:background .15s; }
.oa-item:hover { background:rgba(255,255,255,.05); }
.badge { border-radius:999px; transition:transform .15s; }
.oa-item:hover .badge { transform:scale(1.12); }
.oa-item.warn .badge { animation:u1ePulse 2.4s ease-in-out infinite; }
@keyframes u1ePulse { 0%,100%{box-shadow:0 0 0 0 rgba(255,90,103,0)} 50%{box-shadow:0 0 0 5px rgba(255,90,103,.16)} }

/* ========== POPUPS — อนิเมชันเปิด (scale+fade) + glass สม่ำเสมอ ========== */
/* backdrop เบลอนุ่ม */
#registerModal, #registerMktModal, #changePwModal, #forgotPwModal, #adminModal, #oaConnectModal, #twofaSetupModal, #permSettingsModal {
    -webkit-backdrop-filter:blur(5px); backdrop-filter:blur(5px);
}
/* กล่อง popup: มน + เงาลึก + เด้งเข้าตอนเปิด */
#registerModal .box, #registerMktModal .box, #changePwModal .box, #forgotPwModal .box
.admin-box, #oaConnectModal .oc-box, #twofaSetupModal .box {
    border-radius:20px !important;
    box-shadow:0 40px 90px -20px rgba(0,0,0,.75), 0 1px 0 rgba(255,255,255,.05) inset;
    animation:u1eModalPop .3s cubic-bezier(.2,.8,.2,1) both;
}
@keyframes u1eModalPop { from{opacity:0;transform:translateY(14px) scale(.96)} to{opacity:1;transform:none} }
/* popup แจ้งเตือน (showPopup) */
.popup-box { border-radius:20px !important; animation:u1eModalPop .28s cubic-bezier(.2,.8,.2,1) both; }
.popup-ok { transition:transform .12s, filter .18s !important; }
.popup-ok:hover { transform:translateY(-1px); }
.popup-ok:active { transform:translateY(0); }
/* input ใน popup auth: gold focus ring เข้าชุด login */
#registerModal input:focus, #registerMktModal input:focus, #changePwModal input:focus, #forgotPwModal input:focus {
    box-shadow:0 0 0 3px rgba(201,160,74,.16);
}
/* ปุ่มใน popup: hover ยกตัวเบา ๆ */
#registerModal button, #registerMktModal button, #changePwModal button, #forgotPwModal button {
    transition:transform .12s, filter .18s, box-shadow .18s;
}
#registerModal button:hover, #registerMktModal button:hover, #changePwModal button:hover, #forgotPwModal button:hover { transform:translateY(-1px); filter:brightness(1.06); }

/* ========== accessibility — ปิดอนิเมชันถ้าตั้งค่าลดการเคลื่อนไหว ========== */
@media (prefers-reduced-motion: reduce) {
    #loginScreen, #loginScreen::after, #loginScreen h1, #dashboard .top, #board,
    .oa-item.warn .badge, #loginScreen button:hover::before,
#registerModal .box, #registerMktModal .box, #changePwModal .box, #forgotPwModal .box
    .admin-box, #oaConnectModal .oc-box, #twofaSetupModal .box, .popup-box { animation:none !important; }
    .folder, .oa-item, .badge, .toggle, #loginScreen input, #loginScreen button,
    .folder-header, .folder-header .folder-count { transition:none !important; }
}

/* ---------- แถว "เข้าใช้ล่าสุด" ในการ์ดสมาชิก (จัดระเบียบ ไม่ทับกัน) ---------- */
.m-lastlogin { color:#7a8194; font-size:11.5px; margin-top:5px; display:flex; align-items:center; gap:5px; line-height:1.4; }
.m-lastlogin span { color:var(--gold); font-weight:600; font-variant-numeric:tabular-nums; }


/* ============================================================
   ✦ UI POLISH — แผงจัดการสมาชิก (เข้าชุด glass/modern)
   ต่อท้าย = ทับด้วย cascade · ตกแต่งล้วน ไม่แตะ HTML/JS/ฟังก์ชัน
   ============================================================ */
/* กล่องแผง — glass */
.admin-box {
    background:linear-gradient(180deg, rgba(24,24,28,.86), rgba(10,10,12,.92));
    border:1px solid rgba(255,255,255,.08);
    -webkit-backdrop-filter:blur(24px) saturate(1.3); backdrop-filter:blur(24px) saturate(1.3);
}
.admin-head { background:linear-gradient(180deg, rgba(255,255,255,.03), transparent); border-bottom:1px solid rgba(255,255,255,.07); }

/* แท็บ — pill โมเดิร์น */
.admin-tabs { border-bottom:1px solid rgba(255,255,255,.07); }
.admin-tab {
    border:1px solid transparent; border-radius:11px 11px 0 0; background:transparent;
    transition:color .16s, background .16s, box-shadow .16s, border-color .16s;
}
.admin-tab:hover { background:rgba(255,255,255,.04); color:var(--text); }
.admin-tab.active {
    background:rgba(201,160,74,.10); color:var(--gold);
    border-color:rgba(201,160,74,.28); box-shadow:0 -2px 12px -4px rgba(201,160,74,.4);
}

/* ช่องค้นหา — glass + gold focus */
.admin-search-input {
    background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.1); border-radius:12px;
    transition:border-color .18s, box-shadow .18s, background .18s;
}
.admin-search-input:focus { outline:none; border-color:rgba(201,160,74,.6); background:rgba(255,255,255,.08); box-shadow:0 0 0 3px rgba(201,160,74,.15); }

/* การ์ดสมาชิก — glass + hover ยกตัว */
.m-card {
    background:linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.02));
    border:1px solid rgba(255,255,255,.09);
    border-radius:15px; padding:15px 17px;
    transition:transform .18s, box-shadow .22s, border-color .18s;
}
.m-card:hover {
    transform:translateY(-2px); border-color:rgba(201,160,74,.3);
    box-shadow:0 16px 34px -14px rgba(0,0,0,.6), 0 0 0 1px rgba(201,160,74,.12) inset;
}
.m-card.pending {
    border-color:rgba(245,196,81,.35);
    background:linear-gradient(180deg, rgba(245,196,81,.07), rgba(245,196,81,.02));
}
/* การ์ดผู้ใช้ที่ถูกระงับการเข้าใช้งาน (ยังไม่ลบบัญชี) — โทนแดง มีแถบเตือนซ้าย */
.m-card.suspended {
    border-color:rgba(198,84,84,.42);
    background:linear-gradient(180deg, rgba(198,84,84,.09), rgba(198,84,84,.02));
    position:relative;
}
.m-card.suspended::before{
    content:""; position:absolute; left:0; top:14px; bottom:14px; width:3px;
    border-radius:0 3px 3px 0; background:linear-gradient(180deg,#e0654f,#c6413d);
}
.m-card.suspended:hover{
    border-color:rgba(198,84,84,.6);
    box-shadow:0 16px 34px -14px rgba(0,0,0,.6), 0 0 0 1px rgba(198,84,84,.14) inset;
}
.status.wait[data-suspended]{ color:#ff8a7a; }

/* badge / status — ขอบบางเข้าชุด */
.role-badge { border:1px solid rgba(255,255,255,.08); }
.role-badge.admin { border-color:rgba(201,160,74,.3); }
.status.ok   { border:1px solid rgba(6,199,85,.25); }
.status.wait { border:1px solid rgba(245,196,81,.25); }

/* ปุ่ม — โมเดิร์น hover ยกตัว */
.m-btn {
    border-radius:10px; border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.04);
    transition:transform .12s, border-color .16s, background .16s, box-shadow .16s, color .16s, filter .16s;
}
.m-btn:hover { transform:translateY(-1px); border-color:rgba(201,160,74,.5); box-shadow:0 4px 12px -4px rgba(0,0,0,.45); }
.m-btn:active { transform:translateY(0); }
.m-btn.approve { background:linear-gradient(135deg,#12e070,#04a446); color:#052312; border-color:transparent; box-shadow:0 6px 16px -6px rgba(6,199,85,.5); }
.m-btn.approve:hover { filter:brightness(1.06); border-color:transparent; }
.m-btn.ghost { background:rgba(255,255,255,.03); }
.m-btn.ghost:hover { color:var(--text); }
.m-edit-name { border-radius:8px; transition:color .15s, background .15s; }

/* ---------- จัดรูปแบบโฟลเดอร์ (แถบเครื่องมือบนการ์ดโฟลเดอร์) เข้าชุด glass ---------- */
.folder-edit { background:rgba(255,255,255,.02); border-bottom:1px dashed rgba(255,255,255,.1); }
.fe-btn { border-radius:9px; border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.04);
    transition:transform .12s, border-color .15s, background .15s; }
.fe-btn:hover:not([disabled]) { transform:translateY(-1px); border-color:rgba(201,160,74,.5); }
.fe-btn.wide.on { border-color:rgba(6,199,85,.5); background:rgba(6,199,85,.12); }
.fe-btn.wide.danger { border-color:rgba(255,90,103,.4); background:rgba(255,90,103,.06); }
.fe-btn.wide.danger:hover { background:rgba(255,90,103,.15); }

/* ---------- ข้อมูลผู้ใช้ในการ์ดสมาชิก — จัดใหม่ โมเดิร์น เรียบร้อย ---------- */
.m-nick {
    display:inline-block; background:rgba(201,160,74,.14); color:var(--gold);
    border:1px solid rgba(201,160,74,.28); border-radius:999px;
    padding:1px 10px; font-size:12px; font-weight:600; margin-left:5px; vertical-align:middle;
}
.m-meta { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.m-meta-i {
    display:inline-flex; align-items:center; gap:4px; font-size:11.5px;
    padding:3px 10px; border-radius:999px;
    background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.09);
    color:#9aa2b4; font-variant-numeric:tabular-nums; line-height:1.5;
}
.m-meta-i.on   { color:#06c755; background:rgba(6,199,85,.1); border-color:rgba(6,199,85,.28); font-weight:700; }
.m-meta-i.time { color:#d8c089; border-color:rgba(201,160,74,.22); background:rgba(201,160,74,.06); }


/* ============================================================
   ✦ หัวเว็บ v2 — กรอบปุ่ม glass ขุ่น + อนิเมชัน + whoami มุมขวาบน
   ============================================================ */

/* ---------- (4) รายละเอียดพนักงาน (whoami) -> มุมขวาบนของหน้า ---------- */
/* FIX (2026-08): เปลี่ยน fixed -> absolute · กล่องอยู่มุมขวาบน "ของหน้า"
   เลื่อนหน้าลงแล้วกล่องเลื่อนขึ้นไปพร้อมเนื้อหา ไม่ลอยติดจอตามการ scroll */
.whoami{
    position:absolute !important; top:14px; right:18px; z-index:400;
    /* กระจกขุ่นขึ้น (ทึบ+เบลอมากขึ้น เห็นชัด) */
    background:linear-gradient(180deg, rgba(34,37,48,.82), rgba(18,20,27,.86)) !important;
    border:1px solid rgba(255,255,255,.16) !important;
    -webkit-backdrop-filter:blur(30px) saturate(1.5) !important; backdrop-filter:blur(30px) saturate(1.5) !important;
    box-shadow:0 20px 50px -16px rgba(0,0,0,.72), 0 1px 0 rgba(255,255,255,.1) inset !important;
    animation:u1eWhoIn .55s cubic-bezier(.2,.8,.2,1) both;
}
@keyframes u1eWhoIn { from{opacity:0; transform:translateY(-14px) scale(.94)} to{opacity:1; transform:none} }
/* เว้นที่ด้านบนให้ whoami ไม่ทับหัวเว็บ (แยกเป็นคนละชุด) */
#dashboard{ padding-top:92px; }

/* ---------- (1)(3) กรอบปุ่มหัวเว็บ — glass ขุ่น ---------- */
header.top .right{
    padding:11px 13px; border-radius:20px;
    background:linear-gradient(180deg, rgba(30,33,43,.78), rgba(16,17,23,.84)) !important;
    border:1px solid rgba(255,255,255,.13);
    -webkit-backdrop-filter:blur(28px) saturate(1.45); backdrop-filter:blur(28px) saturate(1.45);
    box-shadow:0 20px 50px -18px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.08) inset;
    animation:u1eFrameIn .6s cubic-bezier(.2,.75,.2,1) both;
}
@keyframes u1eFrameIn { from{opacity:0; transform:translateY(-12px)} to{opacity:1; transform:none} }

/* ---------- (2) อนิเมชัน — ปุ่มเข้าทีละใบ (stagger) ---------- */
header.top .right .toggle{ animation:u1eBtnIn .5s cubic-bezier(.2,.8,.2,1) both; }
@keyframes u1eBtnIn { from{opacity:0; transform:translateY(-7px) scale(.95)} to{opacity:1; transform:none} }
header.top .right .toggle:nth-child(1){ animation-delay:.06s }
header.top .right .toggle:nth-child(2){ animation-delay:.12s }
header.top .right .toggle:nth-child(3){ animation-delay:.18s }
header.top .right .toggle:nth-child(4){ animation-delay:.24s }
header.top .right .toggle:nth-child(5){ animation-delay:.30s }
header.top .right .toggle:nth-child(6){ animation-delay:.36s }
header.top .right .toggle:nth-child(7){ animation-delay:.42s }
header.top .right .toggle:nth-child(8){ animation-delay:.48s }
header.top .right .toggle:nth-child(9){ animation-delay:.54s }
header.top .right .toggle:nth-child(10){ animation-delay:.60s }
/* hover ปุ่ม — ยกตัว + เรืองแสงนุ่ม */
header.top .right .toggle{ transition:transform .14s, box-shadow .18s, border-color .16s, color .16s, background .16s; }
header.top .right .toggle:hover{ transform:translateY(-2px); box-shadow:0 8px 20px -6px rgba(0,0,0,.5); }
header.top .right .toggle:active{ transform:translateY(0); }

/* ---------- มือถือ: whoami เล็กลง กันล้นจอ ---------- */
@media (max-width:640px){
    .whoami{ top:8px; right:8px; padding:7px 11px !important; transform:scale(.92); transform-origin:top right; }
    #dashboard{ padding-top:70px; }
}
@media (prefers-reduced-motion: reduce){
    .whoami, header.top .right, header.top .right .toggle{ animation:none !important; }
}

/* ---------- ตำแหน่งงาน — สิทธิ์แบบ toggle rows (เหมือนจัดการสิทธิ์) ---------- */
.pos-perm-row {
    width:100%; box-sizing:border-box;
    display:flex; align-items:center; justify-content:space-between; gap:12px;
    padding:11px 13px; border-radius:12px;
    background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.07);
    transition:background .14s, border-color .14s;
}
.pos-perm-row:hover { background:rgba(6,199,85,.08); border-color:rgba(6,199,85,.2); }
.pos-perm-txt { display:flex; flex-direction:column; gap:2px; min-width:0; }
.pos-perm-name { font-size:13.5px; font-weight:700; color:var(--text); }
.pos-perm-desc { font-size:11.5px; color:#9aa4ad; line-height:1.4; }
.pos-toggle {
    flex:none; width:46px; height:26px; border-radius:999px; border:none; cursor:pointer;
    background:rgba(255,255,255,.18); position:relative; transition:background .22s;
}
.pos-toggle::after {
    content:""; position:absolute; top:3px; left:3px; width:20px; height:20px;
    border-radius:50%; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,.4); transition:transform .22s;
}
.pos-toggle.on { background:linear-gradient(135deg,#12e070,#04a446); }
.pos-toggle.on::after { transform:translateX(20px); }
/* ให้ toggle rows เรียงลงเป็นชั้น (ในกล่อง chip-row เดิม) */
.m-perms .chip-row, #posPermPicker { display:flex; flex-direction:column; gap:6px; }

/* ---------- FIX (2026-08): สิทธิ์ย่อยในหน้าตำแหน่งงาน ----------
   เดิมบล็อกสิทธิ์ย่อย (รายงานรายแท็บ + จัดการตำแหน่งย่อย) ที่ต่อท้ายใต้ปุ่มหลัก
   ไม่มี CSS ในไฟล์นี้เลย (มีแต่ในหน้าแชท) เลยแสดงเป็นก้อนไม่มีสไตล์ กดปุ่มยาก
   -> เพิ่มให้ครบ + เข้าชุดกับ toggle เดิม + ใส่ animation เผยตัวตอนเปิดสิทธิ์หลัก */
.pos-perm-row + .rpt-perm,
.pos-perm-row + .rpt-perm { margin-top:2px; }

.rpt-perm{
    margin:2px 0 8px; padding:12px 14px 9px; border-radius:14px;
    background:rgba(6,199,85,.05);
    border:1px solid rgba(6,199,85,.16);
    animation:posSubReveal .28s cubic-bezier(.16,.84,.44,1) both;
}
/* FIX (2026-08): เอา max-height ออกจากอนิเมชันเผยตัว — เดิมค้างที่ 600px
   (fill-mode both) ถ้าบล็อกย่อยสูงกว่านั้นจะถูกตัด · เผยด้วย fade+slide พอ ไม่ตัดเนื้อหา */
@keyframes posSubReveal{
    from{ opacity:0; transform:translateY(-6px); }
    to  { opacity:1; transform:translateY(0); }
}
.rpt-perm-head{ display:flex; align-items:center; justify-content:space-between;
    gap:8px; margin-bottom:8px; flex-wrap:wrap; }
.rpt-perm-title{ font-size:12px; font-weight:800; color:#7fe0a6; letter-spacing:.2px; }
.rpt-perm-legend{ font-size:10.5px; color:var(--muted); display:inline-flex; align-items:center; gap:2px; }
.rpt-perm-legend .dot{ width:8px; height:8px; border-radius:50%; display:inline-block; margin:0 3px 0 8px; }
.rpt-perm-legend .dot.off{ background:#c65454; }
.rpt-perm-legend .dot.view{ background:#3d8bfd; }
.rpt-perm-legend .dot.dl{ background:#06c755; }

.rpt-perm .pos-perm-row{ background:transparent; border:none; padding:8px 2px;
    border-top:1px solid rgba(255,255,255,.06); border-radius:0; }
.rpt-perm .pos-perm-row:first-of-type{ border-top:none; }
.rpt-perm .pos-perm-row:hover{ background:rgba(255,255,255,.03); }

/* segmented control ปิด / ดู / โหลด */
.rpt-perm-row{ display:flex; align-items:center; justify-content:space-between;
    gap:10px; padding:8px 2px; border-top:1px solid rgba(255,255,255,.06); }
.rpt-perm-row:first-of-type{ border-top:none; }
.rpt-perm-name{ font-size:13px; font-weight:600; color:var(--text); }
.rpt-seg{ display:inline-flex; background:rgba(0,0,0,.28); border:1px solid rgba(255,255,255,.1);
    border-radius:11px; padding:2px; gap:2px; flex:none; }
.rpt-seg-btn{ border:none; background:transparent; color:var(--muted); font:inherit;
    font-size:11.5px; font-weight:700; padding:5px 11px; border-radius:9px; cursor:pointer;
    transition:background .16s, color .16s, box-shadow .16s, transform .12s; }
.rpt-seg-btn:hover{ color:var(--text); background:rgba(255,255,255,.06); }
.rpt-seg-btn:active{ transform:scale(.94); }
.rpt-seg-btn.on-off{ background:linear-gradient(135deg,#c65454,#9e3d3d); color:#fff; box-shadow:0 3px 10px rgba(198,84,84,.35); }
.rpt-seg-btn.on-view{ background:linear-gradient(135deg,#3d8bfd,#2f6fd0); color:#fff; box-shadow:0 3px 10px rgba(61,139,253,.35); }
.rpt-seg-btn.on-dl{ background:linear-gradient(135deg,#06c755,#05a648); color:#fff; box-shadow:0 3px 10px rgba(6,199,85,.4); }
.rpt-seg-na{ font-size:12px; color:#5a636d; padding:5px 11px; }

/* ปุ่ม toggle เด้งนิดตอนกด — ให้รู้สึกตอบสนอง */
.pos-toggle:active{ transform:scale(.93); }
.pos-toggle{ transition:background .22s, transform .12s; }

@media (prefers-reduced-motion: reduce){
    .rpt-perm{ animation:none; }
}


/* ============================================================
   ✦ หัวเว็บ v3 (จอคอม) — โลโก้ซ้าย · ยอดรวมกลาง · ปุ่มขวา · ข้อมูลขวาบน
   ============================================================ */
/* จอคอม: 3 โซน (โลโก้ | ยอดรวม | ปุ่ม) */
@media (min-width:980px){
    header.top{
        display:grid;
        grid-template-columns:1fr auto 1fr;
        align-items:start;
        gap:18px;
    }
    header.top .titleWrap{ justify-self:start; align-items:flex-start; }
    header.top #totalCard{ justify-self:center; }
    header.top .right{ justify-self:end; }
}

/* ยอดรวมทั้งหมด — glass ตรงกลาง */
#totalCard{
    background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.02)) !important;
    border:1px solid rgba(255,255,255,.13) !important;
    border-radius:20px !important;
    -webkit-backdrop-filter:blur(26px) saturate(1.35); backdrop-filter:blur(26px) saturate(1.35);
    box-shadow:0 20px 48px -18px rgba(0,0,0,.62), 0 1px 0 rgba(255,255,255,.08) inset !important;
    animation:u1eTotalIn .6s cubic-bezier(.2,.75,.2,1) both;
}
@keyframes u1eTotalIn{ from{opacity:0;transform:translateY(-8px) scale(.97)} to{opacity:1;transform:none} }

/* กรอบโฟลเดอร์แดชบอร์ด — glass ฝ้า */
.folder{
    background:linear-gradient(180deg, rgba(32,34,42,.58), rgba(16,17,22,.64)) !important;
    border:1px solid rgba(255,255,255,.1) !important;
    -webkit-backdrop-filter:blur(22px) saturate(1.25); backdrop-filter:blur(22px) saturate(1.25);
}
.folder-header{ background:linear-gradient(180deg, rgba(255,255,255,.045), transparent) !important; }
.folder:hover{ border-color:var(--folder-accent, var(--gold)) !important; }


/* ============================================================
   ✦ แดชบอร์ด layout — โลโก้ซ้าย · ยอดรวมกลาง(glass) · การ์ด glass
   ============================================================ */

/* ---------- (5) กรอบโฟลเดอร์แดชบอร์ด — glass ---------- */
.folder{
    background:linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.018)) !important;
    border:1px solid rgba(255,255,255,.1) !important;
    -webkit-backdrop-filter:blur(16px) saturate(1.2); backdrop-filter:blur(16px) saturate(1.2);
}
.folder-header{
    background:linear-gradient(180deg, rgba(255,255,255,.045), transparent) !important;
    border-bottom:1px solid rgba(255,255,255,.08);
}
.oa-item{ border-bottom-color:rgba(255,255,255,.06) !important; }

/* ---------- (1) ยอดรวมทั้งหมด — glass (ทึบพอให้ตัวอักษรตัดชัดทุกพื้นหลัง) ---------- */
.totalCard{
    background:linear-gradient(180deg, rgba(26,28,38,.93), rgba(11,12,17,.96)) !important;
    border:1px solid rgba(255,255,255,.16) !important;
    border-radius:18px !important;
    -webkit-backdrop-filter:blur(30px) saturate(1.3) !important; backdrop-filter:blur(30px) saturate(1.3) !important;
    box-shadow:0 20px 50px -18px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1) inset !important;
    animation:u1eTotalIn .6s cubic-bezier(.2,.8,.2,1) both;
}
@keyframes u1eTotalIn{ from{opacity:0;transform:translateY(-8px) scale(.97)} to{opacity:1;transform:none} }
/* ตัวอักษรในการ์ด — สว่างขึ้น + เงา ให้อ่านชัดเสมอ */
.totalCard .totalLabel{ color:#d3d8e4 !important; text-shadow:0 1px 3px rgba(0,0,0,.55); }
.totalCard .updated,
.totalCard #updatedAt{ color:#aab0c0 !important; text-shadow:0 1px 3px rgba(0,0,0,.55); }
.totalCard .totalNumber{ text-shadow:0 2px 10px rgba(0,0,0,.6), 0 0 22px var(--gold-soft) !important; }
.totalCard .totalMeta{ text-shadow:0 1px 3px rgba(0,0,0,.5); }

/* ---------- (2)(4) Desktop: โลโก้ซ้าย · ยอดรวมกลางจอ · whoami ขวาบน ---------- */
@media (min-width:1080px){
    header.top{ position:relative; align-items:flex-start; }
    .titleWrap{ align-items:flex-start; }                 /* (2) โลโก้ชิดซ้าย */
    .titleWrap .totalCard{                                /* (1) ยอดรวมกลางจอ */
        position:absolute; left:50%; top:0; transform:translateX(-50%);
        margin:0; z-index:6;
    }
    header.top .right{ margin-left:auto; }               /* (3) กรอบปุ่มชิดขวา */
}


/* ============================================================
   ✦ whoami v3 — ตัวใหญ่ขึ้น + ปุ่มออกจากระบบในกรอบ · ยอดรวมข้างโลโก้
   ============================================================ */
/* ---------- ตัวหนังสือใหญ่ขึ้น ---------- */
.whoami{ font-size:14px !important; gap:12px !important; padding:11px 16px !important; }
.whoami-dot{ width:9px !important; height:9px !important; }
.whoami-name{ font-size:16px !important; }
.whoami-nick{ font-size:13px !important; padding:2px 11px !important; }
.whoami-user{ font-size:13px !important; }
.whoami-time{ font-size:13px !important; }
.whoami-role{ font-size:12px !important; padding:2px 10px !important; }
.whoami-edit{ font-size:14px !important; }

/* ---------- ปุ่ม "ออกจากระบบ" ในกรอบข้อมูล (ชุดเดียวกัน) ---------- */
.whoami-logout{
    margin-left:8px !important; padding:8px 13px !important; border-radius:12px !important;
    font-size:12.5px !important; font-weight:700 !important; line-height:1 !important;
    background:rgba(255,90,103,.12) !important; color:#ff8791 !important;
    border:1px solid rgba(255,90,103,.38) !important; cursor:pointer;
    display:inline-flex !important; align-items:center; gap:5px; white-space:nowrap;
    transition:background .15s, transform .12s, color .15s !important;
}
.whoami-logout:hover{ background:#ff5a67 !important; color:#2a0004 !important; transform:translateY(-1px); }

/* ---------- ยอดรวมทั้งหมด -> ไว้ "ข้างโลโก้" (desktop) แทนกลางจอ ---------- */
@media (min-width:1080px){
    .titleWrap{ flex-direction:row !important; align-items:center !important; gap:18px !important; }
    .titleWrap .totalCard{ position:static !important; transform:none !important; left:auto !important; top:auto !important; }
}

/* ---------- สถานะเชื่อมต่อเซิร์ฟเวอร์ — ในกรอบข้อมูล (บรรทัดที่ 3) ---------- */
.whoami .connStatus{ margin-top:6px !important; font-size:12px !important; display:inline-flex; align-items:center; gap:6px; }
.whoami .connStatus .connText{ font-size:12px !important; }
.whoami .connStatus .dot{ width:8px !important; height:8px !important; }

/* ============================================================
   ✦ Desktop: กรอบปุ่ม -> ใต้โลโก้ ชิดซ้าย (แถวใหม่)
   ============================================================ */
@media (min-width:1080px){
    #dashboard{ padding-top:30px; }                        /* ปุ่มอยู่ล่างแล้ว ไม่ต้องเว้นเยอะ */
    header.top{ flex-direction:column !important; align-items:flex-start !important; }
    .titleWrap{ flex-direction:row !important; align-items:center !important; gap:18px !important; }
    header.top .right{
        margin:16px 0 0 0 !important;         /* ใต้โลโก้ · ชิดซ้าย (ไม่ดันขวา) */
        justify-content:flex-start !important;
        align-self:flex-start !important;
    }
}

/* ============================================================
   ✦ ปุ่ม U1E CHAT เรืองแสง + ตำแหน่งงาน accordion
   ============================================================ */
/* ---------- ปุ่ม U1E CHAT — กรอบเรืองแสง ---------- */
#lineOaBtn, .toggle.lineoa{
    border-color:rgba(6,199,85,.6) !important; color:#8fe9b4 !important;
    animation:u1eChatGlow 2.4s ease-in-out infinite alternate;
}
@keyframes u1eChatGlow{
    from{ box-shadow:0 0 12px -3px rgba(6,199,85,.4), 0 0 0 1px rgba(6,199,85,.25) inset; }
    to{ box-shadow:0 0 24px 0 rgba(6,199,85,.75), 0 0 0 1px rgba(6,199,85,.5) inset; }
}
#lineOaBtn:hover, .toggle.lineoa:hover{ color:#fff !important; border-color:rgba(6,199,85,.9) !important; }

/* ---------- ตำแหน่งงาน — accordion (คลิกหัวการ์ด = สไลด์กางสิทธิ์) ---------- */
.pos-acc-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; cursor:pointer; user-select:none; }
.pos-acc-head:hover .m-name{ color:var(--gold); }
.pos-acc-actions{ display:flex; align-items:center; gap:8px; flex:none; }
.pos-acc-caret{ color:var(--muted); font-size:13px; transition:transform .32s, color .2s; }
.pos-acc.open .pos-acc-caret{ transform:rotate(180deg); color:var(--gold); }
.pos-acc-dot{ color:var(--amber); font-size:13px; }
.pos-del-btn{ padding:6px 10px !important; }
/* FIX (2026-08): "สิทธิ์หน้าตำแหน่งงานโชว์ไม่ครบ"
   สาเหตุ: accordion กางด้วย max-height:1000px + overflow:hidden — รายการสิทธิ์
   เต็ม ๆ (13 สิทธิ์ + บล็อกย่อยรายงาน 6 แท็บ) สูงเกิน 1000px ทำให้ 4 สิทธิ์ท้าย
   (ตั้งค่าเวลาเข้าใช้งาน / เคลียร์เคส QA / ระบบรันคิว / ล็อกอินมือถือ) ถูกตัดหาย
   แก้: ใช้เทคนิค grid-template-rows 0fr -> 1fr = สไลด์กางถึง "ความสูงจริง" เสมอ
   ไม่ว่ารายการจะยาวแค่ไหน ไม่มีการตัดอีก (อนิเมชันสไลด์ยังนุ่มเหมือนเดิม) */
.pos-acc-body{
    display:grid;
    grid-template-rows:0fr;
    transition:grid-template-rows .4s cubic-bezier(.2,.8,.2,1);
}
.pos-acc-body > *{ overflow:hidden; min-height:0; }
.pos-acc.open .pos-acc-body{ grid-template-rows:1fr; }
.pos-acc{ transition:border-color .18s; }
.pos-acc.open{ border-color:rgba(201,160,74,.3) !important; }

/* ============================================================
   ✦ โลโก้ยืนเดี่ยว (เอาข้อความ U1E CHAT ออก) -> จัดให้ "โลโก้อยู่บนยอดรวม แกนตรงกัน"
   ============================================================ */

/* ---- มือถือ/แท็บเล็ต (< 1080px): โลโก้บนยอดรวม จัดกึ่งกลางจอ ---- */
@media (max-width:1079px){
    header.top, #dashboard .top{
        flex-direction:column !important;
        align-items:center !important;
        justify-content:flex-start !important;
        flex-wrap:nowrap !important;
    }
    .titleWrap{ flex-direction:column !important; align-items:center !important; width:100% !important; }
    /* 🐞 FIX (logo-overlap): เดิมเขียน .brandLockup / .brandBadgeBg ลอย ๆ
       กฎนี้ตั้งใจจัดโลโก้ "หน้าหลัก" (ในการ์ดยอดรวม) แต่ไปทับโลโก้หน้าล็อกอินด้วย
       -> margin ของกล่องโลโก้หน้าล็อกอินถูกล้าง โลโก้เลยเลื่อนลงไปทับช่อง "ชื่อผู้ใช้"
       เติม .titleWrap นำหน้า = จำกัดขอบเขตให้แตะเฉพาะหน้าหลักตามที่ตั้งใจ */
    .titleWrap .brandLockup{ justify-content:center !important; width:100% !important; margin-left:0 !important; margin-right:0 !important; }
    .titleWrap .brandBadgeBg{ margin-left:auto !important; margin-right:auto !important; }
    #dashboard .totalCard, .totalCard{
        margin:0 auto !important;
        position:static !important; left:auto !important; top:auto !important; transform:none !important;
    }
    header.top .right{ justify-content:center !important; align-self:center !important; }
}

/* ---- จอคอม (≥ 1080px): กลับดีไซน์เดิม (โลโก้+ยอดรวมมุมซ้ายบน · ปุ่มเต็มแถวล่าง)
        แต่จัดให้ "โลโก้ตรงแกนเดียวกับยอดรวม" — โลโก้กับการ์ดกว้างเท่ากัน จัดกลางในกล่อง ---- */
@media (min-width:1080px){
    header.top, #dashboard .top{
        flex-direction:column !important;
        align-items:flex-start !important;   /* ชิดซ้าย (ดีไซน์เดิม) */
        flex-wrap:nowrap !important;
    }
    /* โลโก้ + ยอดรวม กว้าง 250px เท่ากัน จัดชิดซ้ายทั้งคู่ -> แกนกลางตรงกันเป๊ะ */
    .titleWrap{
        flex-direction:column !important; align-items:center !important;
        width:250px !important; margin:0 !important; gap:10px !important;
    }
    /* FIX (logo-overlap): จำกัดขอบเขตเช่นกัน — margin:0 !important ตัวนี้คือตัวหลัก
       ที่ทำให้โลโก้หน้าล็อกอินไม่มีช่องไฟเลย จนทับช่องกรอกด้านล่าง */
    .titleWrap .brandLockup{ justify-content:center !important; width:100% !important; margin:0 !important; }
    .titleWrap .brandBadgeBg{ margin:0 auto !important; }
    #dashboard .totalCard, .totalCard{
        position:static !important; left:auto !important; top:auto !important; transform:none !important;
        width:250px !important; margin:14px 0 0 0 !important;
    }
    /* กรอบปุ่ม -> เต็มแถวด้านล่าง ชิดซ้าย (ดีไซน์เดิม) */
    header.top .right{
        align-self:stretch !important; width:100% !important;
        justify-content:flex-start !important; margin:18px 0 0 0 !important;
    }
}




/* ========================================================================
   FIX (2026-08): "สิทธิ์มาไม่ครบ" ในป็อปอัปตั้งสิทธิ์รายคน
   สาเหตุ: กล่อง popup สูงเกินจอ -> รายการสิทธิ์ท้าย ๆ (ตั้งค่าเวลาเข้าใช้งาน,
   เคลียร์เคส QA, ระบบรันคิว, ล็อกอินผ่านมือถือ, MKT) ถูกตัดหายใต้ขอบจอ
   แก้: บังคับให้ตัวกล่องไม่เกินความสูงจอ และให้ "เฉพาะรายการสิทธิ์" เลื่อนได้
   (หัว/ปุ่มบันทึกยังตรึงอยู่) — เห็นครบทุกสิทธิ์เสมอบนทุกขนาดจอ
   ======================================================================== */
#permSettingsModal .box,
#permSettingsModal .admin-box {
    max-height: 92vh;
    display: flex;
    flex-direction: column;
}
#permSettingsBody {
    flex: 1 1 auto;
    min-height: 0;                 /* ให้ flex child หดได้ = scroll ทำงานจริง */
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding-right: 4px;            /* เผื่อ scrollbar ไม่ทับเนื้อหา */
}

/* ========================================================================
   FIX (2026-08): ขยายฟอนต์/ขนาดหน้าหลักเพิ่ม 10% — เฉพาะจอใหญ่ (เดสก์ท็อป)
   ทั้งเว็บใช้ px ตายตัวเป็นส่วนใหญ่ ถ้าเพิ่มเฉพาะ font-size ตัวหนังสือจะล้น
   กล่องที่กำหนด px ไว้ -> ใช้ zoom:1.1 เพื่อสเกลทั้งตัวอักษร+ระยะห่างพร้อมกัน 10%

   ⚠️ มือถือ: ไม่ขยาย (zoom:1.1 จะทำให้ล้นจอแคบ) — ให้พอดีกับหน้าจออัตโนมัติแทน
   จึงจำกัด zoom ไว้เฉพาะจอกว้าง >900px · จอเล็กใช้ media query จัด layout ให้พอดีเอง
   ======================================================================== */
@media (min-width:901px){
    #dashboard {
        zoom: 1.1;                     /* +10% เฉพาะเดสก์ท็อป */
        max-width: 1273px;             /* 1400 / 1.1 = คงความกว้างจริงเดิม (~1400px) */
    }
    /* เผื่อเบราว์เซอร์ที่ไม่รองรับ zoom (Firefox เก่า) — สเกลด้วย transform แทน */
    @supports not (zoom: 1) {
        #dashboard {
            zoom: normal;
            transform: scale(1.1);
            transform-origin: top center;
        }
    }
}


/* ========================================================================
   FIX (2026-08): มือถือให้ "พอดีจออัตโนมัติ" (ทั้งหน้าหลัก + หน้าแชท ใช้ไฟล์นี้ร่วมกัน)
   หลักการ: ไม่ zoom บนจอเล็ก · แตะง่าย (เป้าแตะ ≥44px) · ไม่ล้นแนวนอน · อ่านชัด
   จัดเป็นชั้น ๆ: แท็บเล็ต (≤900) · มือถือ (≤640) · มือถือเล็ก (≤400)
   + อนิเมชันเนียน ๆ (subtle) ตอนเข้าหน้า/แตะ
   ======================================================================== */

/* ---- กันล้นแนวนอนทั้งหน้า (เผื่อมีตาราง/องค์ประกอบกว้างเกิน) ---- */
html, body { max-width:100%; overflow-x:hidden; }

/* ---- เป้าแตะบนอุปกรณ์สัมผัส: ปุ่มเล็ก ๆ ขยายพื้นที่กดให้ครบ 44px ---- */
@media (pointer:coarse){
    .toggle, .btn, .m-btn, .quick button,
    .folder-edit button, .item-edit, .item-color,
    .whoami-edit, .whoami-logout {
        min-height:44px;
    }
    .item-edit, .item-color { width:40px; height:40px; }
    /* เอฟเฟกต์ hover ที่ยกตัวลอย ไม่เหมาะกับสัมผัส -> ใช้ "กดแล้วยุบ" แทน */
    .toggle:active, .btn:active, .oa-item:active, .m-card:active { transform:scale(.98); }
}

/* ================= แท็บเล็ต (≤900px) ================= */
@media (max-width:900px){
    /* board ปรับคอลัมน์ให้พอดีจอแคบลง (เดิม 280 -> 240 อยู่แล้ว คงไว้) */
    .whoami{ font-size:12px; }
}

/* ================= มือถือ (≤640px) ================= */
@media (max-width:640px){

    /* ---- แถบหัว: whoami ยืดเต็มบรรทัด อ่านง่าย ไม่ต้องบีบ ---- */
    .whoami{
        display:flex; width:100%;
        border-radius:14px; padding:11px 14px; font-size:13px;
        box-sizing:border-box;
    }
    .whoami-body{ flex:1 1 auto; }
    .whoami-name{ font-size:15px; }
    .whoami-l2{ gap:8px; }
    .whoami-user, .whoami-time{ font-size:12px; }
    /* ปุ่มออกจากระบบ: เต็มความกว้าง แตะง่าย */
    .whoami-logout{ margin-left:auto; }

    /* ---- แถวปุ่มสลับ (.right): ให้ปุ่มยืดเต็ม แตะง่าย ไม่กระจุก ---- */
    .right{ gap:8px; }
    .right .toggle{ flex:1 1 auto; justify-content:center; font-size:14px; padding:11px 12px; }
    .toggle.lineoa{ flex-basis:100%; }   /* ปุ่มไปหน้าแชท เด่นเต็มบรรทัด */

    /* ---- board คอลัมน์เดียวเต็มจอ (มีอยู่แล้วในบล็อกเดิม คงไว้เพื่อความชัด) ---- */
    #board{ grid-template-columns:1fr; gap:12px; }

    /* ---- รายการไลน์ในโฟลเดอร์: เพิ่มพื้นที่กด + ตัวเลขเด่น ---- */
    .oa-item{ padding:15px 15px; }
    .oa-item .name{ font-size:16px; }
    .badge{ font-size:16px; padding:5px 14px; }
    .folder-header{ padding:13px 15px; }
    .folder-header .name{ font-size:17px; }

    /* ---- การ์ดยอดรวม: จัดกึ่งกลาง อ่านชัดเต็มจอ ---- */
    .totalCard{ width:100%; align-items:center; }

    /* ---- ป๊อปอัพ/โมดัล: ชิดขอบจอพอดี ไม่ล้น ---- */
    .popup-box{ max-width:100%; }
    .admin-box{ border-radius:16px; }

    /* ---- การ์ดสมาชิก (แผงจัดการสมาชิก): ปุ่ม/เมตายืดเต็ม แตะง่าย ---- */
    .m-card{ padding:14px; }
    .m-top{ flex-direction:column; align-items:stretch; gap:8px; }
    .m-name{ font-size:16px; }
    .m-actions, .m-perms .chip-row{ width:100%; }
    .m-btn{ flex:1 1 auto; justify-content:center; }

    /* ---- ป๊อปอัพตั้งสิทธิ์: เต็มจอเกือบสุด เลื่อนสบาย ---- */
    #permSettingsModal .box,
    #permSettingsModal .admin-box{ max-height:94vh; border-radius:16px; }
    .ps-row{ padding:12px 6px; }               /* แถวสิทธิ์แตะง่ายขึ้น */

    /* ---- ตารางกว้าง: เลื่อนแนวนอนภายในกล่องแทนการดันทั้งหน้า ---- */
    .box{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
}

/* ================= มือถือเล็ก (≤400px) ================= */
@media (max-width:400px){
    #dashboard{ padding:12px 10px 40px; }
    .whoami-nick{ display:none; }               /* ประหยัดพื้นที่บรรทัดชื่อ */
    .totalNumber{ font-size:42px; }
    .oa-item .name{ font-size:15.5px; }
    .right .toggle{ font-size:13.5px; padding:10px 10px; }
}

/* ========================================================================
   อนิเมชันเนียน ๆ (subtle) — เข้าหน้าแบบนุ่ม + ฟีดแบ็กตอนแตะ
   คุมโทนให้ "นิ่ง มีระดับ" ไม่เด้งเยอะ (ตามที่เลือกไว้: minimal)
   ======================================================================== */

/* board โผล่ขึ้นนุ่ม ๆ ตอนเข้าหน้า (เล่นครั้งเดียวบน #board ที่คงอยู่ ไม่รบกวน re-render การ์ดข้างใน) */
@keyframes boardRise{ from{ opacity:0; transform:translateY(8px); } to{ opacity:1; transform:none; } }
#board{ animation:boardRise .45s cubic-bezier(.22,.7,.3,1) both; }

/* การ์ดยอดรวม + whoami ค่อย ๆ ปรากฏ */
@keyframes softIn{ from{ opacity:0; transform:translateY(-6px);} to{ opacity:1; transform:none;} }
.totalCard{ animation:softIn .5s cubic-bezier(.22,.7,.3,1) both; }
.whoami{ animation:softIn .5s .05s cubic-bezier(.22,.7,.3,1) both; }

/* toggle/badge: ทรานสิชันนุ่มขึ้นเล็กน้อย (ไม่เพิ่มการเคลื่อนไหวถาวร) */
.badge{ transition:background .2s, box-shadow .2s, transform .12s; }

/* เคารพ prefers-reduced-motion: ปิดอนิเมชันเข้าหน้าทั้งหมด */
@media (prefers-reduced-motion:reduce){
    #board, .totalCard, .whoami{ animation:none !important; }
}

/* ========================================================================
   FIX (2026-08): แผงตั้งสิทธิ์พนักงาน — UI สวิตช์เปิด/ปิด + ป๊อปอัพยืนยัน
   1) เช็คบ็อกซ์เดิมในแถวสิทธิ์ (.ps-row) แปลงเป็นสวิตช์แบบ iOS ทั้งหมด
      (CSS ล้วน — ไม่ต้องแก้ HTML เพราะยังเป็น <input type=checkbox> ตัวเดิม)
   2) ป๊อปอัพยืนยัน 2 ปุ่ม (showConfirmPopup ใน app.js) เข้าชุด popup เดิม
   ======================================================================== */

/* ---- แถวสิทธิ์: จัดวางสวย ชื่อซ้าย สวิตช์ขวา ---- */
.ps-row{
    display:flex; align-items:center; justify-content:space-between;
    gap:12px; cursor:pointer;
    border-radius:12px; padding:12px 10px;
    transition:background .15s;
}
.ps-row:hover{ background:rgba(255,255,255,.035); }
.ps-row .ps-row-txt{ order:0; flex:1 1 auto; min-width:0; }

/* ---- เช็คบ็อกซ์ -> สวิตช์ iOS (แอนิเมชันลูกกลมไหล + สีเปลี่ยนนุ่ม) ---- */
.ps-row input[type="checkbox"]{
    order:1; flex:none;
    -webkit-appearance:none; appearance:none;
    width:48px; height:28px; margin:0;
    border-radius:999px;
    background:#3a3a44;
    border:1px solid rgba(255,255,255,.08);
    position:relative; cursor:pointer; outline:none;
    transition:background .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s;
}
.ps-row input[type="checkbox"]::after{
    content:"";
    position:absolute; top:3px; left:3px;
    width:20px; height:20px; border-radius:50%;
    background:#fff;
    box-shadow:0 2px 6px rgba(0,0,0,.35);
    transition:left .25s cubic-bezier(.34,1.4,.5,1), transform .15s;
}
.ps-row input[type="checkbox"]:checked{
    background:linear-gradient(135deg,#06c755,#05a648);
    box-shadow:0 0 12px rgba(6,199,85,.35);
}
.ps-row input[type="checkbox"]:checked::after{ left:23px; }
.ps-row input[type="checkbox"]:active::after{ transform:scale(.88); }
.ps-row input[type="checkbox"]:focus-visible{
    box-shadow:0 0 0 3px rgba(201,160,74,.35);
}

/* ---- ป๊อปอัพยืนยัน (2 ปุ่ม) ---- */
.confirm-overlay{ animation:popupFade .2s ease both; }
.confirm-overlay.closing{ animation:confirmFadeOut .16s ease both; }
@keyframes confirmFadeOut{ from{opacity:1} to{opacity:0} }

.confirm-box{
    animation:confirmPop .34s cubic-bezier(.34,1.5,.6,1) both;
}
.confirm-overlay.closing .confirm-box{ animation:confirmPopOut .16s ease both; }
@keyframes confirmPop{ from{ opacity:0; transform:translateY(16px) scale(.94); } to{ opacity:1; transform:none; } }
@keyframes confirmPopOut{ from{ opacity:1; transform:none; } to{ opacity:0; transform:translateY(8px) scale(.97); } }

.confirm-ic{
    width:62px; height:62px; margin:0 auto 14px;
    border-radius:50%; display:flex; align-items:center; justify-content:center;
    font-size:30px;
    background:radial-gradient(circle, rgba(6,199,85,.22), rgba(6,199,85,.05));
    box-shadow:0 0 0 1px rgba(6,199,85,.3) inset;
    animation:confirmIcPop .45s cubic-bezier(.34,1.56,.64,1) .06s both;
}
.confirm-box.danger .confirm-ic{
    background:radial-gradient(circle, rgba(255,90,103,.22), rgba(255,90,103,.05));
    box-shadow:0 0 0 1px rgba(255,90,103,.35) inset;
}
@keyframes confirmIcPop{ from{ opacity:0; transform:scale(.3); } to{ opacity:1; transform:scale(1); } }

.confirm-btns{ display:flex; gap:10px; }
.confirm-cancel, .confirm-ok{
    flex:1; padding:12px 14px;
    border-radius:11px; font:inherit; font-size:14.5px; font-weight:800; cursor:pointer;
    transition:transform .12s, filter .16s, background .16s, border-color .16s;
}
.confirm-cancel{
    border:1px solid var(--border); background:rgba(255,255,255,.05); color:var(--text);
}
.confirm-cancel:hover{ transform:translateY(-1px); border-color:#4a4a58; }
.confirm-ok{
    border:none; color:#06230f;
    background:linear-gradient(135deg,#0ed766,var(--green));
}
.confirm-ok.danger{
    color:#fff;
    background:linear-gradient(135deg,#ff5a67,#d83f4b);
}
.confirm-ok:hover{ filter:brightness(1.08); transform:translateY(-1px); }
.confirm-ok:active, .confirm-cancel:active{ transform:scale(.97); }

@media (prefers-reduced-motion:reduce){
    .confirm-overlay, .confirm-box, .confirm-ic{ animation:none !important; }
    .ps-row input[type="checkbox"], .ps-row input[type="checkbox"]::after{ transition:none !important; }
}

/* ========================================================================
   FIX (2026-08): สวิตช์เปิด/ปิดการใช้งานพนักงาน — หน้าชื่อในการ์ดสมาชิก
   เขียว = ใช้งานได้ · แดง = ถูกระงับ · กด -> ป๊อปอัพยืนยัน -> มีผลทันที
   ======================================================================== */
.access-switch{
    flex:none; vertical-align:middle;
    width:42px; height:24px; margin-right:2px;
    border-radius:999px; border:1px solid rgba(255,255,255,.1);
    background:#3a3a44; cursor:pointer; position:relative; outline:none; padding:0;
    transition:background .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s;
}
.access-switch::after{
    content:""; position:absolute; top:2px; left:2px;
    width:18px; height:18px; border-radius:50%;
    background:#fff; box-shadow:0 2px 5px rgba(0,0,0,.4);
    transition:left .25s cubic-bezier(.34,1.4,.5,1), transform .15s;
}
.access-switch.on{
    background:linear-gradient(135deg,#06c755,#05a648);
    box-shadow:0 0 10px rgba(6,199,85,.35);
}
.access-switch.on::after{ left:20px; }
.access-switch.off{
    background:linear-gradient(135deg,#5a2a30,#48232a);
    box-shadow:0 0 8px rgba(255,90,103,.25);
    border-color:rgba(255,90,103,.35);
}
.access-switch:hover{ filter:brightness(1.12); }
.access-switch:active::after{ transform:scale(.85); }
.access-switch:focus-visible{ box-shadow:0 0 0 3px rgba(201,160,74,.35); }

/* การ์ดที่ถูกระงับ: สวิตช์แดงเด่นขึ้นนิดเพื่อกวาดตาเจอไว */
.m-card.suspended .access-switch.off{ animation:accessOffPulse 2.4s ease-in-out infinite; }
@keyframes accessOffPulse{ 0%,100%{ box-shadow:0 0 8px rgba(255,90,103,.25); } 50%{ box-shadow:0 0 14px rgba(255,90,103,.5); } }

@media (pointer:coarse){
    .access-switch{ width:48px; height:28px; }
    .access-switch::after{ width:22px; height:22px; }
    .access-switch.on::after{ left:22px; }
}
@media (prefers-reduced-motion:reduce){
    .access-switch, .access-switch::after{ transition:none !important; }
    .m-card.suspended .access-switch.off{ animation:none !important; }
}

/* ========================================================================
   FIX (2026-08): ป๊อปอัพรีเซ็ตรหัสผ่านพนักงาน (สิทธิ์ resetPassword)
   ======================================================================== */
.pwr-row{ display:flex; gap:8px; }
.pwr-input{
    flex:1; min-width:0;
    background:rgba(255,255,255,.05);
    border:1px solid var(--border); border-radius:11px;
    padding:12px 14px; font:inherit; font-size:15px; color:var(--text);
    letter-spacing:.5px; outline:none;
    transition:border-color .18s, box-shadow .18s;
}
.pwr-input:focus{ border-color:var(--gold); box-shadow:0 0 0 3px rgba(201,160,74,.18); }
.pwr-input.shake{ animation:pwrShake .4s ease; border-color:#ff5a67; }
@keyframes pwrShake{ 0%,100%{transform:none} 20%,60%{transform:translateX(-6px)} 40%,80%{transform:translateX(6px)} }
.pwr-gen{
    flex:none; padding:0 14px;
    border:1px solid var(--border); border-radius:11px;
    background:rgba(255,255,255,.05); color:var(--text);
    font:inherit; font-size:13px; font-weight:700; cursor:pointer;
    transition:transform .12s, border-color .16s, filter .16s;
}
.pwr-gen:hover{ transform:translateY(-1px); border-color:var(--gold); filter:brightness(1.1); }
.pwr-gen:active{ transform:scale(.96); }
.pwr-err{ color:#ff8a93; font-size:12.5px; font-weight:700; min-height:16px; margin-top:8px; }

/* กล่องโชว์รหัสใหม่ + ปุ่มคัดลอก (ป๊อปสำเร็จ) */
.pwr-show{
    display:flex; align-items:center; justify-content:center; gap:10px;
    margin-top:14px; padding:14px;
    background:rgba(6,199,85,.07); border:1px dashed rgba(6,199,85,.35);
    border-radius:12px;
    animation:pwrShowIn .4s cubic-bezier(.34,1.4,.5,1) .1s both;
}
@keyframes pwrShowIn{ from{ opacity:0; transform:scale(.94); } to{ opacity:1; transform:scale(1); } }
.pwr-show code{
    font-size:19px; font-weight:800; letter-spacing:2px; color:#3ddc84;
    font-family:ui-monospace, SFMono-Regular, Menlo, monospace;
    user-select:all;
}
.pwr-copy{
    flex:none; padding:7px 12px;
    border:1px solid rgba(6,199,85,.4); border-radius:9px;
    background:rgba(6,199,85,.12); color:#3ddc84;
    font:inherit; font-size:12px; font-weight:800; cursor:pointer;
    transition:transform .12s, filter .16s;
}
.pwr-copy:hover{ transform:translateY(-1px); filter:brightness(1.15); }

@media (prefers-reduced-motion:reduce){
    .pwr-input.shake, .pwr-show{ animation:none !important; }
}

/* ========================================================================
   FIX (2026-08): หน้าโหลด 0-100% แบบ "ทองตกใส่ถัง"
   ก้อนทองร่วงจากฟ้าลงถัง · ระดับทองในถังสูงขึ้นตาม % จริง · เต็ม 100% = เรืองแสง
   ======================================================================== */
#goldLoader{
    position:relative;
    width:190px; height:200px;
    margin:6px auto 18px;
    user-select:none;
}

/* ---- ท้องฟ้า: ก้อนทองร่วงวนซ้ำ (สลับจังหวะ/ตำแหน่ง/ขนาด) ---- */
.gl-sky{ position:absolute; inset:0; overflow:hidden; z-index:3; pointer-events:none; }
.gl-coin{
    position:absolute; top:-18px;
    width:16px; height:16px; border-radius:50%;
    background:radial-gradient(circle at 32% 30%, #ffe9a8, #f5c451 45%, #c9902e 80%, #a06f1d);
    box-shadow:0 0 8px rgba(245,196,81,.55), inset 0 -2px 3px rgba(120,80,10,.5);
    animation:glDrop 1.5s cubic-bezier(.55,.06,.68,.19) infinite;
}
.gl-coin::after{        /* แสงเงาบนก้อนทอง */
    content:""; position:absolute; top:3px; left:4px;
    width:5px; height:3px; border-radius:50%;
    background:rgba(255,255,255,.85); transform:rotate(-25deg);
}
.gl-coin.c0{ left:58px;  animation-delay:0s;    }
.gl-coin.c1{ left:88px;  animation-delay:.55s;  width:13px; height:13px; }
.gl-coin.c2{ left:112px; animation-delay:.25s;  width:11px; height:11px; }
.gl-coin.c3{ left:74px;  animation-delay:.95s;  width:14px; height:14px; }
.gl-coin.c4{ left:100px; animation-delay:1.2s;  }
.gl-coin.c5{ left:126px; animation-delay:.75s;  width:12px; height:12px; }
@keyframes glDrop{
    0%  { transform:translateY(0) rotate(0deg);      opacity:0; }
    8%  { opacity:1; }
    78% { opacity:1; }
    92% { transform:translateY(128px) rotate(180deg); opacity:0; }  /* จมหายที่ปากถัง */
    100%{ transform:translateY(128px) rotate(180deg); opacity:0; }
}

/* ---- ประกายวิบวับที่ปากถัง (จังหวะทองตกถึง) ---- */
.gl-spark{
    position:absolute; color:#ffe9a8; font-size:11px; opacity:0;
    text-shadow:0 0 6px rgba(245,196,81,.9);
    animation:glSpark 1.5s ease-in-out infinite;
}
.gl-spark.s0{ left:44px;  top:112px; animation-delay:.3s; }
.gl-spark.s1{ left:138px; top:106px; animation-delay:.9s; font-size:9px; }
.gl-spark.s2{ left:92px;  top:100px; animation-delay:1.25s; }
@keyframes glSpark{
    0%, 70%, 100%{ opacity:0; transform:scale(.5); }
    80%          { opacity:1; transform:scale(1.15); }
    90%          { opacity:0; transform:scale(.6) translateY(-6px); }
}

/* ---- ถัง (ทรงคางหมู ปากกว้างก้นแคบ) ---- */
.gl-bucket{
    position:absolute; left:50%; bottom:12px; transform:translateX(-50%);
    width:120px; height:86px; z-index:2;
}
.gl-fill-clip{        /* ตัวถัง + ที่กันทองล้นตามทรงถัง */
    position:absolute; inset:0;
    clip-path:polygon(6% 0, 94% 0, 82% 100%, 18% 100%);
    background:linear-gradient(180deg, #23242c, #17181e);
    border-radius:4px;
    overflow:hidden;
    box-shadow:inset 0 0 18px rgba(0,0,0,.55);
}
.gl-fill{             /* ระดับทองในถัง — height คุมด้วย JS ตาม % */
    position:absolute; left:0; right:0; bottom:0;
    height:0%;
    background:linear-gradient(180deg, #ffe9a8 0%, #f5c451 30%, #d9a339 70%, #b98428 100%);
    box-shadow:0 -2px 10px rgba(245,196,81,.65);
    transition:height .18s ease-out;
}
.gl-fill::before{     /* ผิวทองระยิบระยับ */
    content:""; position:absolute; top:0; left:-40%; width:60%; height:8px;
    background:linear-gradient(90deg, transparent, rgba(255,255,255,.55), transparent);
    animation:glShimmer 1.8s ease-in-out infinite;
}
@keyframes glShimmer{ 0%{ left:-40%; } 100%{ left:110%; } }
.gl-rim{              /* ขอบปากถังสีทอง */
    position:absolute; top:-4px; left:0; right:0; height:9px;
    border-radius:5px;
    background:linear-gradient(180deg, #e8c56a, #b98428);
    box-shadow:0 2px 5px rgba(0,0,0,.45), inset 0 1px 1px rgba(255,255,255,.5);
}
.gl-handle{           /* หูหิ้ว */
    position:absolute; top:-26px; left:50%; transform:translateX(-50%);
    width:88px; height:44px;
    border:3px solid #8d6a24; border-bottom:none;
    border-radius:60px 60px 0 0;
    opacity:.55;
}
.gl-shadow{
    position:absolute; bottom:2px; left:50%; transform:translateX(-50%);
    width:110px; height:10px; border-radius:50%;
    background:radial-gradient(ellipse, rgba(0,0,0,.45), transparent 70%);
    z-index:1;
}

/* ---- ครบ 100%: ถังเรืองแสงทอง + ทองล้นวิบ ---- */
#goldLoader.full .gl-fill{ box-shadow:0 -4px 22px rgba(245,196,81,.95); }
#goldLoader.full .gl-rim{  box-shadow:0 0 16px rgba(245,196,81,.8), inset 0 1px 1px rgba(255,255,255,.6); }
#goldLoader.full .gl-bucket{ animation:glFullPop .4s cubic-bezier(.34,1.56,.64,1); }
@keyframes glFullPop{ 0%{ transform:translateX(-50%) scale(1); } 50%{ transform:translateX(-50%) scale(1.06); } 100%{ transform:translateX(-50%) scale(1); } }
#goldLoader.full .gl-coin{ animation-play-state:paused; opacity:0; }

/* % ใต้ถังเปลี่ยนเป็นโทนทองให้เข้าชุด */
#loadingScreen .loadPercent{ color:var(--gold); font-size:15px; letter-spacing:.08em; }

@media (prefers-reduced-motion:reduce){
    .gl-coin, .gl-spark, .gl-fill::before,
    #goldLoader.full .gl-bucket{ animation:none !important; }
    .gl-coin{ opacity:0; }
}


/* ========================================================================
   FIX (2026-08 v2): หน้าโหลดเว็บ 0-100% "นักสู้ชาร์จพลังคลื่นสีฟ้า"
   (แทนถังทองเดิม — CSS ถังทองยังอยู่เฉย ๆ ไม่ถูกเรียกใช้ ไม่กระทบอะไร)
   ฉากชุดเดียวกับหน้าต่างดาวน์โหลดของหน้าแชท แต่ rename prefix เป็น ld- ทั้งชุด
   เพื่อไม่ให้ชนกับสไตล์ฉากดาวน์โหลดของหน้าแชท (หน้าแชทใช้ไฟล์นี้ร่วมด้วย)
   ======================================================================== */
#ldFighter{ margin:2px auto 14px; }
.ld-scene{
    position:relative; width:320px; height:220px; max-width:100%;
    margin:0 auto;
    display:flex; align-items:center; justify-content:center;
    perspective:700px;
}
/* ========================================================================
   FIX (2026-08 v3): หน้าต่างดาวน์โหลด "นักสู้ชาร์จพลังคลื่นสีฟ้า" ฉบับ 3D
   แสงเงารอบทิศ: ตัวละครโดนแสงฟ้าจากลูกพลังด้านขวา + เงาตกพื้น + ประกายลอย
   ======================================================================== */






/* ออร่าฟ้ารอบตัว */
.ld-aura{
    position:absolute; left:54px; top:32px; width:130px; height:176px;
    border-radius:50% 50% 42% 42%;
    background:radial-gradient(ellipse at 50% 65%, rgba(127,212,255,.4), rgba(79,155,255,.1) 58%, transparent 75%);
    filter:blur(6px);
    animation:ldAura .5s ease-in-out infinite alternate;
}
.ld-scene.hi .ld-aura{
    background:radial-gradient(ellipse at 50% 65%, rgba(210,242,255,.75), rgba(79,155,255,.22) 58%, transparent 78%);
    animation-duration:.24s;
}
@keyframes ldAura{ from{ transform:scaleY(1) } to{ transform:scaleY(1.1) scaleX(1.07) } }

/* ---- นักสู้ 3D: ทุกชิ้นมี gradient ทรงกระบอก/ทรงกลม + ขอบขวารับแสงฟ้าจากลูกพลัง ---- */
.ld-man{
    position:absolute; left:64px; top:44px; width:104px; height:150px;
    transform:rotateY(-8deg);                   /* เอียงเข้าหาลูกพลังนิด ๆ = มีมิติ */
    transform-style:preserve-3d;
    filter:drop-shadow(6px 10px 10px rgba(0,0,0,.5));   /* เงาตัวละครทั้งตัว */
}
.ld-man > div{ position:absolute; }
.ld-hair{
    left:12px; top:-18px; width:52px; height:31px; z-index:3;
    background:linear-gradient(115deg, #05070c 40%, #1d2636 72%, #35507a 100%); /* ปลายผมรับแสงฟ้า */
    clip-path:polygon(0 100%, 6% 35%, 16% 70%, 24% 8%, 34% 62%, 44% 0, 55% 58%, 66% 6%, 76% 66%, 88% 22%, 100% 100%);
}
/* FIX (2026-08 v2.1): "ร่างแปลงพลังทอง" — ชาร์จเกิน 60%
   ผมเปลี่ยนเป็นทองเรืองแสงลุกโชน (ฉากแปลงร่างสไตล์อนิเมะต่อสู้ บนตัวละคร
   ออริจินัลของเรา) + ออร่า/พื้นอาบแสงทองผสมฟ้า · 100% ยังปล่อยคลื่นฟ้าเหมือนเดิม */
.ld-scene.hi .ld-hair{
    background:linear-gradient(115deg, #b8860b 6%, #f5c451 42%, #ffe9a8 74%, #fff6d8 96%) !important;
    filter:drop-shadow(0 0 8px rgba(245,196,81,.95)) drop-shadow(0 0 16px rgba(255,214,110,.55));
    animation:ldHairFlare .34s ease-in-out infinite alternate;
}
@keyframes ldHairFlare{
    from{ transform:scaleY(1); }
    to  { transform:scaleY(1.12) translateY(-1px); }
}
.ld-scene.hi .ld-aura{
    background:
        radial-gradient(ellipse at 58% 62%, rgba(255,240,200,.7), transparent 58%),
        radial-gradient(ellipse at 50% 65%, rgba(245,196,81,.55), rgba(245,170,60,.18) 62%, transparent 80%) !important;
}
.ld-scene.hi .ld-head{
    box-shadow:inset -3px -3px 5px rgba(60,30,10,.35), inset 2px 1px 3px rgba(255,255,255,.5),
               0 0 10px rgba(245,196,81,.45) !important;
}
.ld-scene.hi .ld-ground{
    background:
        radial-gradient(ellipse at 68% 50%, rgba(127,212,255,.5), transparent 58%),
        radial-gradient(ellipse at 45% 50%, rgba(245,196,81,.35), transparent 62%),
        radial-gradient(ellipse at 32% 50%, rgba(0,0,0,.6), transparent 68%) !important;
}
@media (prefers-reduced-motion:reduce){ .ld-scene.hi .ld-hair{ animation:none !important; } }
.ld-head{
    left:23px; top:4px; width:27px; height:25px; z-index:2;
    border-radius:46% 54% 50% 50%;
    /* ทรงกลม: สว่างขวาบน (ฝั่งลูกพลัง) มืดซ้ายล่าง + ขอบสะท้อนแสงฟ้า */
    background:radial-gradient(circle at 68% 32%, #ffe3bd, #f2c79a 45%, #c99668 82%, #96683f);
    box-shadow:inset -3px -3px 5px rgba(60,30,10,.35), inset 2px 1px 3px rgba(255,255,255,.4),
               1px 0 4px rgba(127,212,255,.0);
}
.ld-scene.hi .ld-head{ box-shadow:inset -3px -3px 5px rgba(60,30,10,.35), inset 2px 1px 3px rgba(255,255,255,.4), 3px 0 8px rgba(127,212,255,.45); }
.ld-head::before{
    content:""; position:absolute; top:8px; left:5px; width:15px; height:2px;
    background:#12141c; transform:rotate(8deg); border-radius:2px;
}
.ld-torso{
    left:15px; top:26px; width:44px; height:46px; z-index:2;
    border-radius:13px 15px 8px 8px;
    /* เสื้อฝึก: ไล่เฉดทรงกระบอก + rim light ฟ้าฝั่งขวา */
    background:linear-gradient(100deg, #16294e 8%, #274a86 45%, #3665b3 78%, #6fa8e8 97%);
    box-shadow:inset -4px 0 7px rgba(0,0,10,.45), inset 3px 2px 5px rgba(140,190,255,.25);
}
.ld-belt{
    left:15px; top:63px; width:44px; height:8px; z-index:3;
    border-radius:3px;
    background:linear-gradient(180deg, #ffffff, #cfd8e6 60%, #9aa7ba);
    box-shadow:0 1px 2px rgba(0,0,0,.4);
}
.ld-arm{
    width:44px; height:13px; z-index:1;
    border-radius:8px;
    /* แขน: โคนเป็นแขนเสื้อ ปลายเป็นมือ (ผิว) — ไล่เฉดกระบอก */
    background:linear-gradient(90deg, #1c3663 0%, #2f5697 52%, #f2c79a 56%, #e0af7d 86%, #c08a55 100%);
    box-shadow:inset 0 -3px 4px rgba(0,0,20,.35), inset 0 2px 3px rgba(255,255,255,.22);
}
.ld-arm.a1{ left:50px; top:33px; transform:rotate(13deg); }
.ld-arm.a2{ left:50px; top:50px; transform:rotate(-9deg); }
.ld-leg{
    width:16px; height:48px; z-index:1;
    border-radius:8px 8px 6px 6px;
    background:linear-gradient(90deg, #14171f 20%, #2a3040 55%, #4a5468 90%);
    box-shadow:inset -3px 0 4px rgba(0,0,0,.5), inset 2px 0 3px rgba(255,255,255,.1);
}
.ld-leg::after{                                  /* รองเท้า */
    content:""; position:absolute; bottom:-4px; left:-2px; width:20px; height:9px;
    border-radius:5px 8px 4px 4px;
    background:linear-gradient(180deg, #3a72c4, #1f3f74);
    box-shadow:0 2px 3px rgba(0,0,0,.5);
}
.ld-leg.l1{ left:15px; top:72px; transform:rotate(16deg); }
.ld-leg.l2{ left:44px; top:72px; transform:rotate(-18deg); }
.ld-scene.hi .ld-man{ animation:ldShake .12s linear infinite; }
@keyframes ldShake{ 0%,100%{ transform:rotateY(-8deg) translate(0,0) } 25%{ transform:rotateY(-8deg) translate(-1px,1px) } 75%{ transform:rotateY(-8deg) translate(1px,-1px) } }

/* ลูกพลัง 3D: แกนขาวร้อน + เปลือกฟ้า + ไฮไลต์กระจก + วงแหวนพลังหมุน */
.ld-orb{
    position:absolute; left:216px; top:106px;
    width:78px; height:78px; border-radius:50%;
    transform:translate(-50%,-50%) scale(.25);
    background:radial-gradient(circle at 40% 35%, #ffffff 0%, #eaf8ff 22%, #9fe0ff 45%, #4fb2ff 68%, #1d6fd6 88%, rgba(29,111,214,.3));
    box-shadow:
        inset -8px -10px 18px rgba(10,60,140,.55),      /* เงาในทรงกลม */
        inset 5px 6px 10px rgba(255,255,255,.75),        /* แสงสะท้อนบน */
        0 0 30px rgba(79,195,255,.95), 0 0 74px rgba(47,155,255,.5);
    transition:transform .16s ease-out;
    animation:ldOrbPulse .45s ease-in-out infinite alternate;
}
.ld-orb::before{                                 /* ไฮไลต์กระจก (specular) */
    content:""; position:absolute; top:12%; left:18%;
    width:30%; height:20%; border-radius:50%;
    background:radial-gradient(ellipse, rgba(255,255,255,.95), transparent 70%);
    transform:rotate(-24deg);
}
.ld-orb::after{                                  /* วงแหวนพลังหมุนรอบ */
    content:""; position:absolute; inset:-9px;
    border-radius:50%;
    border:2px solid transparent;
    border-top-color:rgba(190,235,255,.85);
    border-bottom-color:rgba(79,195,255,.4);
    animation:ldRing 1s linear infinite;
}
@keyframes ldRing{ to{ transform:rotate(360deg) } }
@keyframes ldOrbPulse{ from{ filter:brightness(1) } to{ filter:brightness(1.28) } }

/* ประกายพลังลอยขึ้นรอบลูกพลัง (โผล่ตอนพลังแรง) */
.ld-scene.hi::after{
    content:"✦    ✧      ✦"; position:absolute; left:190px; top:60px; width:80px;
    color:#bfe9ff; font-size:10px; letter-spacing:4px;
    text-shadow:0 0 8px rgba(127,212,255,.9);
    animation:ewRise 1.1s ease-out infinite;
}
@keyframes ewRise{ from{ transform:translateY(26px); opacity:0 } 30%{ opacity:1 } to{ transform:translateY(-18px); opacity:0 } }

/* คลื่นลำแสง 3D: แกนขาว + เปลือกฟ้าสองชั้น + ริ้วพลังวิ่งในลำ */
.ld-beam{
    position:absolute; left:220px; top:106px; height:42px; width:0;
    transform:translateY(-50%);
    border-radius:21px;
    background:
        repeating-linear-gradient(90deg, rgba(255,255,255,0) 0 26px, rgba(210,240,255,.5) 26px 34px),
        linear-gradient(180deg, rgba(79,178,255,.5), #d8f2ff 22%, #ffffff 50%, #d8f2ff 78%, rgba(79,178,255,.5));
    box-shadow:0 0 20px rgba(127,212,255,1), 0 0 64px rgba(47,155,255,.85), inset 0 3px 6px rgba(255,255,255,.9);
    opacity:0;
}
.ld-scene.fire .ld-beam{ animation:ldBeam .55s cubic-bezier(.2,.9,.3,1) both; }
@keyframes ldBeam{
    0%  { width:0;     opacity:0; }
    12% { opacity:1; }
    100%{ width:620px; opacity:1; }
}
.ld-scene.fire .ld-orb{ animation:ldOrbFire .5s ease both; }
@keyframes ldOrbFire{ 40%{ transform:translate(-50%,-50%) scale(1.75); } 100%{ transform:translate(-50%,-50%) scale(.92); filter:brightness(1.75); } }
.ld-scene.fire .ld-aura{ opacity:.2; }
.ld-scene.fire .ld-man{ animation:ldRecoil .5s ease both; }
@keyframes ldRecoil{ 30%{ transform:rotateY(-8deg) translateX(-8px) } 100%{ transform:rotateY(-8deg) translateX(-3px) } }

/* พื้น: เงา + แสงฟ้าสะท้อนจากลูกพลัง */
.ld-ground{
    position:absolute; left:52px; bottom:22px; width:220px; height:16px;
    border-radius:50%;
    transform:rotateX(56deg);   /* FIX (2026-08 v3.1): เอียงพื้นตามเปอร์สเปกทีฟ = ลึกขึ้น */
    background:
        radial-gradient(ellipse at 30% 50%, rgba(0,0,0,.55), transparent 60%),
        radial-gradient(ellipse at 76% 50%, rgba(79,178,255,.35), transparent 65%);
    filter:blur(1px);
}


@media (prefers-reduced-motion:reduce){
    .ld-aura, .ld-orb, .ld-orb::after, .ld-scene.hi::after,
    .ld-scene.hi .ld-man, .ld-scene.fire .ld-man{ animation:none !important; }
}

/* FIX (2026-08): แถวโฟลเดอร์ในช่องค้นหาบัญชี OA (เลือกทั้งโฟลเดอร์ได้) */
.oa-folder-opt{
    display:flex; align-items:center; gap:7px;
    padding:8px 10px; cursor:pointer; user-select:none;
    background:rgba(61,139,253,.06);
    border-top:1px solid rgba(61,139,253,.18);
    font-size:12.5px; font-weight:800; color:#2568d6;
}
html[data-theme="dark"] .oa-folder-opt{ background:#3d8bfd14; color:#7db3ff; border-top-color:#3d8bfd33; }
.oa-folder-opt:hover{ filter:brightness(1.1); }
.oa-fmark{
    width:16px; height:16px; flex:none;
    border:1.5px solid currentColor; border-radius:4px;
    display:flex; align-items:center; justify-content:center;
    font-size:10px; line-height:1;
}
.oa-folder-opt.on   .oa-fmark{ background:currentColor; color:#fff; }
html[data-theme="dark"] .oa-folder-opt.on .oa-fmark{ color:#10131c; }
.oa-folder-opt.some .oa-fmark{ opacity:.85; }
.oa-fico{ flex:none; }
.oa-fname{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.oa-fcount{ flex:none; font-size:11px; opacity:.75; font-weight:700; }
.oa-opt.in-folder{ padding-left:26px; }

/* FIX (2026-08): ป้ายไฟล์แนบในคลังตอบกลับ */
.qk-badge{
    display:inline-flex; align-items:center; gap:4px;
    background:rgba(61,139,253,.12); border:1px solid rgba(61,139,253,.3);
    color:#7db3ff; border-radius:999px; padding:2px 9px;
    font-size:11px; font-weight:700; margin-right:6px; max-width:160px;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.rp-atts{ display:flex; gap:6px; flex-wrap:wrap; margin-top:5px; }
.rp-att{
    display:inline-flex; align-items:center; gap:5px;
    background:rgba(255,255,255,.06); border:1px solid var(--border);
    border-radius:999px; padding:2px 8px; font-size:11px; font-weight:700;
}
.rp-att-thumb{ width:20px; height:20px; border-radius:5px; object-fit:cover; }
.rp-att-x{ cursor:pointer; color:#ff8a93; font-weight:900; padding:0 2px; }
.rp-att-x:hover{ filter:brightness(1.3); }

/* FIX (2026-08 v3.1): เติมมิติ 3D — พลังหมุนวนในลูกพลัง + สะท้อนแสง + เกลียวพลังในลำแสง */
.ld-orb{ overflow:hidden; }
.ld-orb::before{
    content:""; position:absolute; inset:-25%;
    background:conic-gradient(from 0deg,
        transparent 0 40deg, rgba(255,255,255,.5) 60deg, transparent 90deg,
        transparent 180deg, rgba(200,240,255,.45) 220deg, transparent 260deg);
    border-radius:50%;
    animation:ewSwirl 1.1s linear infinite;
}
.ld-orb::after{
    content:""; position:absolute; top:13%; left:19%;
    width:27%; height:18%; border-radius:50%;
    background:radial-gradient(ellipse, rgba(255,255,255,.95), transparent 70%);
    transform:rotate(-24deg);
}
@keyframes ewSwirl{ to{ transform:rotate(360deg); } }
.ld-beam{
    background:
        repeating-linear-gradient(115deg, transparent 0 22px, rgba(255,255,255,.3) 22px 30px),
        linear-gradient(180deg, rgba(120,205,255,.5), #ffffff 26%, #ffffff 74%, rgba(90,170,255,.55)) !important;
    background-size:60px 100%, 100% 100% !important;
    box-shadow:0 0 20px rgba(150,220,255,.95), 0 0 60px rgba(47,130,255,.85),
               inset 0 5px 8px rgba(255,255,255,.8), inset 0 -6px 9px rgba(60,130,255,.6) !important;
}
.ld-scene.fire .ld-beam{ animation:ldBeam .55s cubic-bezier(.2,.9,.3,1) both, ldFlow .3s linear infinite !important; }
@keyframes ldFlow{ to{ background-position:60px 0, 0 0; } }
/* FIX (2026-08 v3.1): ประกายพลังลอยขึ้นรอบตัว (เม็ดหน้า-หลัง = มิติลึก) */
.ld-scene::before, .ld-scene::after{
    content:""; position:absolute; border-radius:50%;
    background:radial-gradient(circle, #d8f4ff, rgba(79,195,255,0) 70%);
    pointer-events:none; opacity:0; z-index:1;
}
.ld-scene::before{ left:86px;  bottom:54px; width:9px; height:9px; animation:ldSpark 1.6s ease-in infinite .2s; }
.ld-scene::after { left:150px; bottom:46px; width:6px; height:6px; filter:blur(1px); animation:ldSpark 1.9s ease-in infinite .8s; }
@keyframes ldSpark{
    0%  { transform:translateY(0) scale(.6);   opacity:0; }
    15% { opacity:.9; }
    100%{ transform:translateY(-90px) scale(1.15); opacity:0; }
}
@media (prefers-reduced-motion:reduce){ .ld-scene::before, .ld-scene::after{ animation:none !important; } }
@media (prefers-reduced-motion:reduce){ .ld-orb::before, .ld-scene.fire .ld-beam{ animation:none !important; } }

/* เลข % ใต้ฉากโทนฟ้าเข้าชุด (ทับโทนทองของเวอร์ชันถังเดิม) */
#loadingScreen .loadPercent{ color:#d8f4ff; font-size:15px; letter-spacing:.08em;
    text-shadow:0 0 14px rgba(79,195,255,.8); }

/* FIX (2026-08 v3): ตัวละครวาดใหม่เป็น SVG (สวยจริง เส้นโค้ง มีหน้า มีรอยพับผ้า)
   div figure เดิม (.ld-man ฯลฯ) ไม่ถูกใช้แล้ว — CSS เก่าปล่อยไว้เฉย ๆ ไม่กระทบ */
.ld-svg{
    position:absolute; left:26px; top:12px; width:206px; height:216px;
    filter:drop-shadow(-4px 6px 7px rgba(0,0,0,.55));
    z-index:2;
}
.ld-scene.hi .ld-svg{
    animation:ldShake .12s linear infinite;
    filter:drop-shadow(-4px 6px 7px rgba(0,0,0,.55)) drop-shadow(0 0 12px rgba(245,196,81,.65));
}
.ld-svg .ldover{ transition:opacity .35s ease; }
.ld-scene.hi .ld-svg .ldover{ opacity:1 !important; }
.ld-scene.fire .ld-svg{ animation:ldRecoil .5s ease both; }
@media (prefers-reduced-motion:reduce){ .ld-scene.hi .ld-svg{ animation:none !important; } }

/* FIX (2026-08 v4): ยานอวกาศ — เปลวไอพ่นกระพือ + โหมดโอเวอร์ชาร์จ */
.ld-svg .ldflame{
    transform-origin:44px 100px;
    animation:ldFlick .16s ease-in-out infinite alternate;
}
@keyframes ldFlick{ from{ transform:scaleX(.75) } to{ transform:scaleX(1.15) } }
.ld-scene.hi .ld-svg .ldflame{ animation-duration:.09s; transform-origin:44px 100px; }
.ld-svg .ldstrip{ filter:drop-shadow(0 0 4px rgba(79,195,255,.8)); }
@media (prefers-reduced-motion:reduce){ .ld-svg .ldflame{ animation:none !important; } }

/* ========================================================================
   FIX (2026-08): popup "⚙ ตั้งค่า" รายพนักงาน + แถบบันทึกการจัดหน้า
   ======================================================================== */
.m-btn.msett-open{ border-color:var(--gold); }
.m-btn.msett-open:hover{ background:rgba(201,160,74,.12); }

.msett-overlay{ z-index:6600; }
.msett-box{
    max-width:460px; width:100%; text-align:left;
    max-height:88vh; overflow:auto; padding:20px 22px 18px;
}
.msett-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:6px; }
.msett-title{ display:flex; align-items:center; gap:8px; font-size:17px; font-weight:800; flex-wrap:wrap; }
.msett-ic{ font-size:18px; }
.msett-user{ color:var(--muted); font-size:12.5px; font-weight:700; }
.msett-x{
    flex:none; width:32px; height:32px; border-radius:9px;
    border:1px solid var(--border); background:rgba(255,255,255,.05);
    color:var(--text); font-size:14px; font-weight:800; cursor:pointer;
    transition:transform .12s, border-color .15s;
}
.msett-x:hover{ transform:scale(1.05); border-color:#ff5a67; color:#ff8a93; }

.msett-sec{
    margin-top:12px; padding:12px 14px;
    background:rgba(255,255,255,.03);
    border:1px solid var(--border); border-radius:12px;
}
.msett-sec.danger{ border-color:rgba(255,90,103,.35); background:rgba(255,90,103,.05); }
.msett-sec-t{
    font-size:12px; font-weight:800; letter-spacing:.04em;
    color:var(--muted); margin-bottom:9px; text-transform:none;
}
.msett-sec.danger .msett-sec-t{ color:#ff8a93; }
.msett-sec-t small{ font-weight:600; }
.msett-btns{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.msett-hint{ font-size:12px; color:var(--muted); }
.msett-box .ps-row{ margin:0; }
.msett-box .ps-row + .msett-btns{ margin-top:9px; }
.m-btn.danger{ border-color:rgba(255,90,103,.45); color:#ff8a93; }
.m-btn.danger:hover{ background:rgba(255,90,103,.12); }

/* ---- แถบบันทึกการจัดหน้า ---- */
#layoutSaveBar{
    position:fixed; left:50%; bottom:-70px; transform:translateX(-50%);
    z-index:6900;
    display:flex; align-items:center; gap:12px;
    background:linear-gradient(180deg,#1c1e26,#12141b);
    border:1px solid var(--border); border-radius:14px;
    padding:11px 16px;
    box-shadow:0 8px 26px rgba(0,0,0,.5);
    transition:bottom .3s cubic-bezier(.34,1.3,.5,1);
}
#layoutSaveBar.show{ bottom:22px; }
#layoutSaveBar .lsb-txt{ font-size:13.5px; font-weight:700; }
#layoutSaveBar.saved .lsb-txt{ color:#3ddc84; }
#layoutSaveBar.error .lsb-txt{ color:#ff8a93; }
#layoutSaveBar .lsb-btn{
    border:none; border-radius:10px; padding:9px 15px;
    background:linear-gradient(135deg,#0ed766,var(--green,#06c755)); color:#06230f;
    font:inherit; font-size:13px; font-weight:800; cursor:pointer;
    transition:transform .12s, filter .15s;
}
#layoutSaveBar .lsb-btn:hover{ transform:translateY(-1px); filter:brightness(1.07); }



/* ═══════════════════════════════════════════════════════════════
   KI LOADER — หน้าโหลดอนิเมะชาร์จพลัง 1-100%  (เพิ่ม 2026-08)
   ทำงานคู่กับ ki-loader.js — แสดงทุกครั้งที่โหลด/รีเฟรชหน้า
   ปรับสีลูกพลังได้ที่ --ki / --ki-deep ด้านล่าง
   ═══════════════════════════════════════════════════════════════ */

:root{
    --ki:#ff5af0;        /* แกนสีชมพูของลูกพลัง */
    --ki-deep:#b31fd4;   /* ขอบม่วง */
}

body.ki-loading{ overflow:hidden !important; }

#kiLoader{
    position:fixed; inset:0; z-index:99999;
    display:flex; flex-direction:column;
    align-items:center; justify-content:center;
    gap:34px;
    background:
      radial-gradient(1200px 560px at 50% -12%, rgba(201,160,74,.12) 0%, transparent 62%),
      var(--bg, #000);
    transition:opacity .6s ease, visibility .6s;
}
#kiLoader.ki-hidden{ opacity:0; visibility:hidden; pointer-events:none; }

/* เวที: ตัวละคร + ลูกพลัง */
#kiLoader .ki-stage{
    position:relative;
    width:min(720px, 92vw);
    height:min(400px, 60vh);
}
#kiLoader .ki-stage.ki-shake{ animation:kiShake .09s linear infinite; }
@keyframes kiShake{
    0%{transform:translate(0,0)}
    25%{transform:translate(2px,-2px)}
    50%{transform:translate(-2px,1px)}
    75%{transform:translate(1px,2px)}
}

/* ตัวการ์ตูน (ภาพฝังใน CSS — ไม่ต้องมีไฟล์รูปแยก) */
#kiLoader .ki-fighter{
    position:absolute; left:2%; bottom:0;
    height:88%; aspect-ratio:373/520;
    background:url("data:image/png;base64,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") no-repeat center/contain;
    filter:drop-shadow(0 14px 22px rgba(0,0,0,.6));
    animation:kiCharge 1s ease-in-out infinite;
    transform-origin:50% 100%;
}
@keyframes kiCharge{
    0%,100%{transform:translateY(0) scale(1)}
    50%{transform:translateY(2px) scale(1.006)}
}

/* ออร่าทองใต้เท้า */
#kiLoader .ki-aura{
    position:absolute; left:4%; bottom:-4%;
    width:46%; height:16%;
    background:radial-gradient(50% 50% at 50% 50%, rgba(201,160,74,.35), transparent 70%);
    filter:blur(6px);
    animation:kiAuraPulse 1.2s ease-in-out infinite;
}
@keyframes kiAuraPulse{ 0%,100%{opacity:.55} 50%{opacity:1} }

/* ลูกพลัง — โตตาม % ผ่านตัวแปร --p */
#kiLoader .ki-ball{
    position:absolute;
    left:66%; top:44%;
    width:300px; height:300px;
    transform:translate(-50%,-50%) scale(var(--p, 0.06));
    transition:transform .18s ease-out;
    will-change:transform;
}
#kiLoader .ki-core{
    position:absolute; inset:18%;
    border-radius:50%;
    background:radial-gradient(circle at 46% 44%,
        #ffffff 0%, #ffffff 52%,
        #ffd9fb 66%,
        var(--ki) 82%,
        var(--ki-deep) 100%);
    box-shadow:
        0 0 40px 10px rgba(255,90,240,.85),
        0 0 120px 40px rgba(255,90,240,.45),
        0 0 240px 90px rgba(179,31,212,.25);
    animation:kiCorePulse .5s ease-in-out infinite;
}
@keyframes kiCorePulse{ 0%,100%{filter:brightness(1)} 50%{filter:brightness(1.18)} }

/* สายฟ้าโค้งหมุนรอบลูก 2 ชั้นสวนทางกัน */
#kiLoader .ki-arc{ position:absolute; inset:0; animation:kiSpin 1.6s linear infinite; }
#kiLoader .ki-arc.ki-rev{ animation:kiSpinRev 2.3s linear infinite; }
@keyframes kiSpin{ to{transform:rotate(360deg)} }
@keyframes kiSpinRev{ from{transform:scale(1.06) rotate(0)} to{transform:scale(1.06) rotate(-360deg)} }
#kiLoader .ki-arc svg{ width:100%; height:100%; overflow:visible; }
#kiLoader .ki-arc path{
    fill:none; stroke-linecap:round;
    stroke:var(--ki);
    filter:drop-shadow(0 0 6px var(--ki));
}
#kiLoader .ki-arc.ki-rev path{ stroke:#ffffff; opacity:.9; }

/* อนุภาคพลังถูกดูดเข้าหาลูก */
#kiLoader .ki-p{
    position:absolute; left:66%; top:44%;
    width:5px; height:5px; border-radius:50%;
    background:var(--ki);
    box-shadow:0 0 8px var(--ki);
    opacity:0;
    animation:kiSuck 1.4s linear infinite;
}
#kiLoader .ki-p:nth-child(2n){ background:#fff; box-shadow:0 0 8px #fff; }
#kiLoader .ki-p:nth-child(3n){ background:var(--gold, #c9a04a); box-shadow:0 0 8px var(--gold, #c9a04a); }
@keyframes kiSuck{
    0%{transform:translate(calc(var(--dx)*1px), calc(var(--dy)*1px)) scale(1); opacity:0}
    15%{opacity:.95}
    100%{transform:translate(0,0) scale(.2); opacity:0}
}

/* ลำแสงตอนยิงที่ 100% */
#kiLoader .ki-beam{
    position:absolute; left:66%; top:44%;
    height:0; width:120vw;
    transform:translateY(-50%);
    border-radius:999px;
    background:linear-gradient(90deg, #ffffff 0%, #ffffff 30%, var(--ki) 70%, transparent 100%);
    box-shadow:0 0 60px 20px rgba(255,90,240,.8);
    opacity:0;
}
#kiLoader .ki-stage.ki-fire .ki-beam{ animation:kiFireBeam .75s ease-out forwards; }
@keyframes kiFireBeam{
    0%{opacity:1; height:6px}
    28%{height:150px}
    60%{height:120px; opacity:1}
    100%{height:0; opacity:0}
}
#kiLoader .ki-stage.ki-fire .ki-ball{ animation:kiBallFire .5s ease-in forwards; }
@keyframes kiBallFire{
    to{transform:translate(120vw,-50%) scale(var(--p)); opacity:0}
}

/* แฟลชเต็มจอตอนยิง */
#kiFlash{ position:fixed; inset:0; z-index:100000; background:#fff; opacity:0; pointer-events:none; }
#kiFlash.ki-go{ animation:kiFlashGo .55s ease-out forwards; }
@keyframes kiFlashGo{ 0%{opacity:.95} 100%{opacity:0} }

/* ตัวเลข % + แถบพลัง */
#kiLoader .ki-hud{
    display:flex; flex-direction:column; align-items:center; gap:14px;
    width:min(460px, 86vw);
}
#kiLoader .ki-pct{
    font-family:'Cinzel', Georgia, "Times New Roman", serif;
    font-size:clamp(40px, 7vw, 58px);
    font-weight:700;
    letter-spacing:.04em;
    color:var(--gold, #c9a04a);
    text-shadow:0 0 24px rgba(201,160,74,.35);
    font-variant-numeric:tabular-nums;
    line-height:1;
}
#kiLoader .ki-pct small{ font-size:.45em; color:var(--muted, #8d92a8); font-family:inherit; }
#kiLoader .ki-bar{
    width:100%; height:10px;
    background:var(--panel, #0e0e0e);
    border:1px solid var(--border, #2a2a2a);
    border-radius:999px;
    overflow:hidden;
}
#kiLoader .ki-bar-fill{
    height:100%; width:0%;
    border-radius:999px;
    background:linear-gradient(90deg, var(--gold, #c9a04a), #f2d491 55%, var(--ki));
    box-shadow:0 0 14px rgba(201,160,74,.55);
    transition:width .18s ease-out;
}
#kiLoader .ki-tip{
    font-size:13.5px; color:var(--muted, #8d92a8);
    letter-spacing:.06em;
    min-height:1.4em;
    text-align:center;
}
#kiLoader .ki-tip b{ color:var(--text, #eef0f6); font-weight:500; }

@media (max-width:640px){
    #kiLoader .ki-stage{ height:46vh; }
    #kiLoader .ki-fighter{ height:76%; }
    #kiLoader .ki-ball{ width:210px; height:210px; left:70%; }
    #kiLoader .ki-beam{ left:70%; }
    #kiLoader .ki-p{ left:70%; }
}
@media (prefers-reduced-motion:reduce){
    #kiLoader .ki-stage.ki-shake,
    #kiLoader .ki-fighter,
    #kiLoader .ki-core,
    #kiLoader .ki-arc,
    #kiLoader .ki-aura,
    #kiLoader .ki-p{ animation:none !important; }
    #kiLoader .ki-ball{ transition:none; }
}
/* ═══════════════════════ จบส่วน KI LOADER ═══════════════════════ */


/* ===== ✨ สมัครสมาชิก MKT =====
   หัวข้อ/คำอธิบาย/ช่องกรอก/ปุ่ม ใช้ชุด Glassmorphism เดียวกับฟอร์มสมัครปกติ
   (ประกาศไว้ใน public/index.html บล็อก "✦ Glassmorphism") -> หน้าตาเหมือนกันเป๊ะ
   ตรงนี้เหลือเฉพาะส่วนที่ฟอร์มปกติไม่มี = ช่อง "สังกัด" ที่ล็อกคำว่า MKT ไว้ */

#registerMktModal .mkt-dept{
    display:flex; align-items:stretch;
    margin:8px 0;
}
#registerMktModal .mkt-dept-lock{
    display:flex; align-items:center; justify-content:center;
    flex:0 0 auto; padding:0 16px;
    font-weight:800; font-size:13px; letter-spacing:.09em;
    color:#052312;
    background:linear-gradient(135deg,#12e070,#04a446);   /* โทนเดียวกับปุ่มยืนยัน */
    border:1px solid rgba(255,255,255,.12); border-right:0;
    border-radius:13px 0 0 13px;
    user-select:none;                                     /* ล็อกไว้ — แก้/คัดลอกไม่ได้ */
}
#registerMktModal .mkt-dept input{
    margin:0 !important;
    border-radius:0 13px 13px 0 !important;
    border-left:0 !important;
    flex:1 1 auto; min-width:0;
}
/* โฟกัสช่องชื่อทีม -> ป้าย MKT เรืองตามให้ดูเป็นชิ้นเดียวกัน */
#registerMktModal .mkt-dept:focus-within .mkt-dept-lock{
    box-shadow:0 0 0 3px rgba(6,199,85,.16);
    border-color:rgba(6,199,85,.65);
}

/* ลิงก์สมัคร MKT บนหน้าล็อกอิน — สีทองแยกจากลิงก์ปกติ */
#loginScreen .link-mkt{ color:var(--gold,#c9a668); font-weight:700; }


/* ===== 🐞 FIX (logo-overlap): ตรึงระยะโลโก้หน้าล็อกอิน =====
   เคยเจอปัญหา: กฎจัดโลโก้ "หน้าหลัก" ใน @media เขียน .brandLockup ลอย ๆ
   พร้อม !important -> ล้าง margin ของโลโก้หน้าล็อกอิน จนโลโก้ทับช่อง "ชื่อผู้ใช้"
   ประกาศเจาะจง #loginScreen ไว้ท้ายสุด = ชนะทุกกฎ ไม่ว่าจอขนาดไหน */
#loginScreen .brandLockup{
    margin:26px 0 !important;      /* ช่องไฟบน-ล่างเท่ากันเป๊ะ */
    width:100% !important;
    justify-content:center !important;
}
#loginScreen .brandBadgeBg{
    margin:0 auto !important;
    width:104px !important;
    height:104px !important;
}


/* ---- 🐞 FIX (2026-08): "✎ จัดการกะ" เลื่อนไม่สุด ----
   เดิมการ์ดสูงเกินจอแล้วท้ายถูกตัด (กะท้าย ๆ / ปุ่มบันทึก มองไม่เห็น)
   แก้เฉพาะ modal นี้: ให้ชั้น overlay เป็นตัวเลื่อนทั้งแผ่น การ์ดยาวเท่าไหร่
   ก็ไถลงไปได้ถึงปุ่มบันทึกเสมอ (มือถือ/จอเตี้ยก็รอด) */
#shiftManageModal.pos-create-overlay{
    align-items:flex-start;
    overflow-y:auto;
    padding:28px 14px 40px;
    -webkit-overflow-scrolling:touch;
}
#shiftManageModal .pos-create-card{
    margin:auto;
    max-height:none;      /* ยกเลิกเพดานเดิม — overlay เลื่อนแทนแล้ว */
    overflow:visible;
}

/* =========================================================
   ✨ FIX (2026-08): กลุ่มโฟลเดอร์ใหญ่ (sf-section) — หน้าแรกสไตล์ตามแบบลูกค้า
   กรอบใหญ่ครอบการ์ดโฟลเดอร์ หัวกลุ่มมีชื่อ+เส้นเน้นแดง+ปุ่ม ▲▼✎
   ========================================================= */
#board .sf-section{
    grid-column:1 / -1;                     /* กลุ่มกินเต็มแถวของบอร์ดเสมอ */
    border:1px solid rgba(255,80,90,.16);
    background:linear-gradient(180deg, rgba(120,18,28,.10), rgba(10,8,10,.55));
    border-radius:18px;
    padding:14px 16px 16px;
    box-shadow:0 18px 44px -22px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.05) inset;
}
#board .sf-section.sf-rest{
    border-color:rgba(255,255,255,.10);
    background:linear-gradient(180deg, rgba(255,255,255,.025), rgba(10,8,10,.5));
}
.sf-head{
    display:flex; align-items:center; gap:10px; flex-wrap:wrap;
    margin-bottom:12px;
}
.sf-title{
    font-size:17px; font-weight:800; letter-spacing:.3px; color:#f2e9e6;
    padding-bottom:5px; position:relative;
}
.sf-section:not(.sf-rest) .sf-title::after{
    content:""; position:absolute; left:0; right:0; bottom:0; height:2.5px;
    border-radius:2px;
    background:linear-gradient(90deg, #e5484d, rgba(229,72,77,.15));
}
.sf-count{ font-size:12px; color:var(--muted,#8d92a8); font-weight:700; }
.sf-tools{ margin-left:auto; display:flex; gap:6px; }
.sf-btn{
    all:unset; cursor:pointer; box-sizing:border-box;
    min-width:30px; height:28px; padding:0 8px;
    display:inline-flex; align-items:center; justify-content:center;
    border-radius:9px; font-size:12.5px; color:#c9d1e3;
    border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.04);
    transition:background .15s, color .15s, border-color .15s;
}
.sf-btn:hover{ background:rgba(255,255,255,.1); color:#fff; }
.sf-btn:disabled{ opacity:.3; cursor:default; }
.sf-btn.sf-danger:hover{ background:rgba(255,90,103,.15); color:#ff8a90; border-color:rgba(255,90,103,.5); }
.sf-body{
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
    gap:14px; align-items:start;
}
.sf-empty{
    color:var(--muted,#8d92a8); font-size:13px; padding:16px 6px;
    border:1px dashed rgba(255,255,255,.14); border-radius:12px; text-align:center;
    grid-column:1 / -1;
}
/* ใน popup จัดการกลุ่ม */
.sf-m-group{
    border:1px solid rgba(255,255,255,.12); border-radius:14px;
    padding:12px 14px; margin-bottom:10px; background:rgba(255,255,255,.025);
}
.sf-m-head{ display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.sf-m-chips{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.sf-m-chips .chip{ cursor:pointer; }
.sf-m-add{ width:auto !important; min-width:220px; margin:0 !important; flex:none; padding:7px 10px !important; }

/* FIX (2026-08 v3): dropdown เพิ่มโฟลเดอร์ในกลุ่มใหญ่ — ตัวหนังสือเข้มอ่านชัด พื้นยังโปร่งแสง */
.sf-m-add{
    color:#f2f4fa !important; font-weight:700;
    background:rgba(255,255,255,.07) !important;
    border-color:rgba(255,255,255,.22) !important;
}
.sf-m-add:hover{ background:rgba(255,255,255,.11) !important; }
.sf-m-add option{
    background:#191b26;          /* รายการที่กางออก: พื้นเข้ม ตัวหนังสือสว่าง (แก้ตัวจางบนพื้นขาว) */
    color:#eef0f6;
    font-weight:600;
}
.sf-m-add option:first-child{ color:#9aa1b5; }

/* ปุ่มจัดการบนหัวกลุ่ม (▲▼✎) โผล่เฉพาะโหมดจัดรูปแบบ — หน้าปกติสะอาดตาเหมือนภาพตัวอย่าง */
#board:not(.editing) .sf-tools{ display:none; }

/* =========================================================
   ✨ FIX (2026-08): Dashboard โฉมใหม่ตามแบบ — ธีมแดง + Sidebar ซ้าย
   ทำผ่านคลาส .u1e-red บน #dashboard (CSS ล้วน ไม่แตะลอจิกเดิม)
   ========================================================= */
/* ธีมแดง: แสงพื้นหลัง + การ์ดยอดรวม */
body:has(#dashboard.u1e-red[style*="block"]){
    background:
        radial-gradient(1100px 520px at 18% -10%, rgba(190,30,45,.16) 0%, transparent 60%),
        radial-gradient(900px 500px at 95% 0%, rgba(120,10,20,.12) 0%, transparent 55%),
        var(--bg);
}
.u1e-red .totalCard{
    border-color:rgba(229,72,77,.35) !important;
    box-shadow:0 20px 50px -22px rgba(160,20,35,.55), 0 1px 0 rgba(255,255,255,.06) inset !important;
    background:linear-gradient(160deg, rgba(120,16,26,.28), rgba(12,8,10,.85)) !important;
}

/* ---- Sidebar ---- */
.u1e-sidebar{
    position:fixed; left:14px; top:14px; bottom:14px; width:172px; z-index:500;
    display:flex; flex-direction:column; gap:6px;
    padding:16px 12px;
    border-radius:20px;
    background:linear-gradient(180deg, rgba(24,12,14,.92), rgba(10,7,8,.94));
    border:1px solid rgba(229,72,77,.18);
    box-shadow:0 24px 60px -24px rgba(0,0,0,.8), 0 1px 0 rgba(255,255,255,.05) inset;
    -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px);
}
.sb-brand{
    font-weight:900; font-size:19px; letter-spacing:1px; color:#e5484d;
    padding:6px 10px 14px; border-bottom:1px solid rgba(255,255,255,.08); margin-bottom:8px;
}
.sb-brand span{ color:#f2e9e6; font-size:12px; letter-spacing:3px; }
.sb-item{
    all:unset; cursor:pointer; box-sizing:border-box; position:relative;
    display:block; padding:11px 12px; border-radius:12px;
    font-size:13.5px; font-weight:700; color:#cfd3de;
    border:1px solid transparent;
    transition:background .15s, color .15s, border-color .15s, transform .12s;
}
.sb-item:hover{ background:rgba(229,72,77,.10); color:#fff; transform:translateX(2px); }
.sb-item.active{
    background:linear-gradient(90deg, rgba(190,30,45,.32), rgba(190,30,45,.08));
    border-color:rgba(229,72,77,.45); color:#ffd9db;
}
.sb-item.sb-danger:hover{ background:rgba(255,90,103,.14); color:#ff8a90; }
.sb-gap{ flex:1; }
.sb-dot{
    position:absolute; top:8px; right:10px; width:9px; height:9px; border-radius:50%;
    background:#ff5a67; box-shadow:0 0 0 3px rgba(255,90,103,.25);
    animation:sbDotBlink 1.1s ease-in-out infinite;
}
@keyframes sbDotBlink{ 50%{ opacity:.35; } }

/* ดันเนื้อหาหลบ sidebar เฉพาะจอกว้าง · จอแคบซ่อน sidebar กลับ layout เดิมทุกอย่าง */
@media (min-width:1200px){
    #dashboard.u1e-red{ margin-left:206px; max-width:none; padding-right:26px; }
}
@media (max-width:1199px){
    .u1e-sidebar{ display:none; }
}
body.monitor-mode .u1e-sidebar{ display:none; }   /* โหมด Monitor จอสะอาดตามเดิม */

/* =========================================================
   ✨ FIX (2026-08 v2): จัดระเบียบแบบมืออาชีพ — ไม่มีปุ่มซ้ำสองที่
   จอกว้าง (≥1200px มี sidebar): ปุ่มที่ซ้ำกับ sidebar ถูกซ่อนจากแถบเครื่องมือกลาง
   -> "จัดการสมาชิก" และ "รายงาน" เหลือที่ sidebar ฝั่งซ้ายที่เดียว
   (ปุ่มจริงยังอยู่ใน DOM ให้ sidebar เรียกผ่าน .click() — สิทธิ์/จุดแจ้งเตือนเดิมครบ)
   จอแคบ (<1200px ไม่มี sidebar): ปุ่มกลับมาโชว์ในแถบตามเดิมอัตโนมัติ
   ========================================================= */
@media (min-width:1200px){
    #dashboard.u1e-red #adminBtn,
    #dashboard.u1e-red #reportBtn{ display:none !important; }
}

/* โซนล่างของ sidebar: เส้นคั่นบาง ๆ เหนือ "ตั้งค่า/ออกจากระบบ" — ปักมุมล่างซ้ายชัดเจน */
.u1e-sidebar .sb-gap{
    flex:1;
    border-bottom:1px solid rgba(255,255,255,.07);
    margin-bottom:8px;
}

/* แถบเครื่องมือกลาง: เก็บให้เนียนขึ้นหลังปุ่มน้อยลง */
header.top .totalRow .right{ gap:9px !important; }

/* FIX (2026-08 v2): popup ตั้งค่ากลางจอ + เอาปุ่ม ⚙ ขวาบนออกบนจอที่มี sidebar */
.settings-modal-body{ display:flex; flex-direction:column; gap:8px; }
.settings-modal-body .toggle{
    display:block; width:auto; text-align:left; margin:0 !important;
    padding:13px 15px !important; border-radius:12px !important; font-size:14px !important;
    box-sizing:border-box;
}
@media (min-width:1200px){
    /* จอกว้างใช้ sidebar มุมล่างซ้ายที่เดียว: ตั้งค่า + ออกจากระบบ (ขวาบนเอาออกตามสั่ง)
       ปุ่มจริงยังอยู่ใน DOM — sidebar สั่งงานผ่าน .click() ได้ตามปกติ · จอแคบไม่มี sidebar ปุ่มกลับมาเอง */
    #whoAmISettingsBtn,
    #logoutBtn{ display:none !important; }
}

/* FIX (2026-08): เอาปุ่ม "📁+ สร้างโฟลเดอร์" ออกจากแถบเครื่องมือ (เลิกใช้แล้ว —
   การสร้างโฟลเดอร์ทำผ่านแผง "ผูก LINE OA" อยู่แล้ว) · element ยังอยู่ใน DOM
   ลอจิกเดิมไม่ถูกแตะ อยากคืนเมื่อไหร่ลบกฎนี้บรรทัดเดียว */
#newFolderBtn{ display:none !important; }

/* FIX (2026-08 v3): หน้า "ข้อมูลของฉัน" ใน popup ตั้งค่า */
.sm-profile{
    display:flex; flex-direction:column; gap:2px;
    border:1px solid rgba(255,255,255,.1); border-radius:14px;
    padding:6px 4px; margin-bottom:12px; background:rgba(255,255,255,.02);
}
.sm-row{
    display:flex; align-items:center; gap:10px;
    padding:9px 12px; border-radius:10px;
}
.sm-row + .sm-row{ border-top:1px solid rgba(255,255,255,.05); }
.sm-k{ flex:0 0 108px; font-size:12px; color:var(--muted,#8d92a8); font-weight:700; }
.sm-v{ flex:1; min-width:0; font-size:14px; font-weight:700; color:#eef0f6;
       overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sm-edit{
    all:unset; cursor:pointer; box-sizing:border-box;
    width:28px; height:28px; display:inline-flex; align-items:center; justify-content:center;
    border-radius:8px; font-size:13px; color:#c9d1e3;
    border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.04);
}
.sm-edit:hover{ background:rgba(201,160,74,.16); color:var(--gold,#c9a04a); border-color:rgba(201,160,74,.5); }

/* =========================================================
   ✨ FIX (2026-08): หน้า "📊 ภาพรวมระบบ" — สไตล์ตามแบบ (ธีมแดง-ดำ)
   ========================================================= */
#overviewPage{ display:flex; flex-direction:column; gap:16px; }
/* 🐞 FIX (2026-08): บัคสลับหน้าไม่ได้ — กฎ id ด้านบนชนะ [hidden] ของเบราว์เซอร์
   ทำให้หน้า ภาพรวม โชว์ค้างซ้อนหน้าหลักตลอด -> บังคับซ่อนเมื่อ hidden ให้ชนะเสมอ */
#overviewPage[hidden]{ display:none !important; }
.ov-cards{ display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:12px; }
.ov-card{
    border:1px solid rgba(255,255,255,.1); border-radius:16px; padding:14px 16px;
    background:linear-gradient(160deg, rgba(255,255,255,.03), rgba(10,8,10,.6));
    box-shadow:0 14px 34px -18px rgba(0,0,0,.6);
}
.ov-card.hot{  border-color:rgba(255,90,103,.45); background:linear-gradient(160deg, rgba(160,20,35,.18), rgba(10,8,10,.7)); }
.ov-card.warm{ border-color:rgba(255,178,125,.4); }
.ov-l{ font-size:12.5px; color:var(--muted,#8d92a8); font-weight:700; }
.ov-v{ font-size:30px; font-weight:900; margin:4px 0 2px; color:#f2f4fa; }
.ov-s{ font-size:11.5px; color:var(--muted,#8d92a8); }
.ov-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(340px, 1fr)); gap:14px; align-items:start; }
.ov-box{
    border:1px solid rgba(255,255,255,.1); border-radius:16px; padding:14px 16px;
    background:linear-gradient(180deg, rgba(255,255,255,.025), rgba(10,8,10,.55));
}
.ov-box h3{ margin:0 0 10px; font-size:14.5px; color:#f2e9e6; }
.ov-table{ width:100%; border-collapse:collapse; font-size:13px; }
.ov-table th{ text-align:left; font-size:11.5px; color:var(--muted,#8d92a8); padding:6px 8px; border-bottom:1px solid rgba(255,255,255,.08); }
.ov-table td{ padding:8px; border-bottom:1px solid rgba(255,255,255,.05); }
.ov-table th.ov-num, .ov-table td.ov-num{ text-align:right; font-variant-numeric:tabular-nums; }
.ov-on{  color:#5ff09b; font-weight:800; }
.ov-on2{ color:#5ff09b; }
.ov-off{ color:#ff8a90; font-weight:800; }
.ov-red{ color:#ff8a90; font-weight:800; }
.ov-warn{ color:#ffd27d; font-weight:800; }
.ov-muted{ color:var(--muted,#8d92a8); font-size:12px; }
.ov-badge{
    display:inline-block; padding:2px 10px; border-radius:999px; font-size:11.5px; font-weight:800;
    border:1px solid rgba(229,72,77,.4); color:#ffb3b7; background:rgba(190,30,45,.12);
}
.ov-hrow{
    display:flex; justify-content:space-between; gap:10px; padding:8px 4px;
    border-bottom:1px solid rgba(255,255,255,.05); font-size:13px;
}
.ov-hrow i{ font-style:normal; color:var(--muted,#8d92a8); font-size:11.5px; margin-left:6px; }
.ov-act{ display:flex; gap:10px; padding:9px 4px; border-bottom:1px solid rgba(255,255,255,.05); font-size:13px; align-items:flex-start; }
.ov-act-ic{ font-size:16px; flex:none; }

/* ✨ FIX (2026-08 v2): กล่อง "บริษัทที่มีปัญหาสูงสุด" */
.ov-prob{
    display:flex; align-items:center; gap:12px; padding:9px 4px;
    border-bottom:1px solid rgba(255,255,255,.05);
}
.ov-prob-l{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; font-size:13px; }
.ov-prob-r{ flex:0 0 150px; display:flex; align-items:center; gap:8px; }
.ov-prob-bar{ flex:1; }
.ov-prob .rank-bar{ height:8px; background:rgba(255,255,255,.07); border-radius:99px; overflow:hidden; }
.ov-prob .rank-bar i{ display:block; height:100%; background:#5ff09b; border-radius:99px; }
.ov-prob .rank-bar i.warn{ background:#ffb84d; }
.ov-prob .rank-bar i.danger{ background:#ff5a67; }

/* 🐞 FIX (2026-08 v2): หน้า ภาพรวมระบบ — ซ่อนแถบเครื่องมือ/แบนเนอร์ของหน้าแรก
   (คุมด้วยคลาสที่ body — ชนะ display:flex !important ของแถบแน่นอนเพราะอยู่ท้ายไฟล์) */
body.ov-mode header.top .totalRow .right{ display:none !important; }
body.ov-mode #lineHealthBanner{ display:none !important; }

/* ✨ ไอคอนหัวข้อแบบ badge — เด่น อ่านง่าย แยกหมวดด้วยสี */
.ov-ic{
    display:inline-flex; align-items:center; justify-content:center;
    width:26px; height:26px; border-radius:8px; font-size:14px;
    margin-right:8px; vertical-align:middle; flex:none;
    border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.06);
}
.ov-ic.ic-r{ background:rgba(229,72,77,.16);  border-color:rgba(229,72,77,.4); }
.ov-ic.ic-g{ background:rgba(95,240,155,.12); border-color:rgba(95,240,155,.35); }
.ov-ic.ic-o{ background:rgba(255,178,77,.13); border-color:rgba(255,178,77,.4); }
.ov-ic.ic-b{ background:rgba(124,199,255,.13);border-color:rgba(124,199,255,.4); }
.ov-box h3{ display:flex; align-items:center; }
.ov-l{ display:flex; align-items:center; }

/* =========================================================================
   ✨ FIX (2026-08 v12): ปุ่ม "📌 ตรึงแถบบน" — ตรึงหัวเว็บทั้งก้อนไว้บนจอ
   -------------------------------------------------------------------------
   · ปุ่มโผล่เฉพาะตอนกด "✎ จัดรูปแบบโฟลเดอร์" (ตามที่สั่ง)
   · แต่ "สถานะตรึง" เป็นอิสระจากโหมด — ปิดโหมดจัดรูปแบบแล้วยังตรึงอยู่เหมือนเดิม
     (จะเลิกตรึงต้องกดปุ่มเองเท่านั้น · ค่าถูกจำไว้ รีเฟรชแล้วยังตรึงอยู่)
   · หัวเว็บใช้ position:fixed ยึดกับจอตรง ๆ = ไถเมาส์ขึ้นลงไม่ขยับสักพิกเซล
     (ของเดิมใช้ sticky ซึ่งชนกับ zoom:1.1 ของ #dashboard แล้วสั่น 1px)
   ========================================================================= */

/* กล่องยืนแทนที่หัวเว็บในผัง — กันหน้ากระโดดตอนหัวเว็บลอยออกไป */
#pinTopSpacer{ display:none; }
body.pin-top #pinTopSpacer{ display:block; }

#pinTopBtn{ cursor:pointer; }

/* ---- หัวเว็บทั้งก้อนตรึงนิ่งบนจอ ---- */
body.pin-top #dashboard header.top{
    position:fixed !important;
    top:0;
    margin:0 !important;                 /* ระยะห่างด้านล่างย้ายไปอยู่ที่ spacer แทน */
    z-index:450;                         /* เหนือบอร์ด · ต่ำกว่า sidebar(500) และทุก popup */
    background:linear-gradient(180deg, rgba(12,9,11,.95) 0%, rgba(12,9,11,.9) 72%, rgba(12,9,11,0) 100%);
    -webkit-backdrop-filter:blur(22px) saturate(1.3);
    backdrop-filter:blur(22px) saturate(1.3);
    animation:none !important;           /* ไม่ให้อนิเมชันขยับตำแหน่งซ้ำอีก */
}

/* ---- กรอบข้อมูลผู้ใช้ (whoami) มุมขวาบน — ตรึงตามไปด้วย ---- */
body.pin-top #dashboard #whoAmI.whoami{
    position:fixed !important;
    z-index:460;                         /* อยู่เหนือหัวเว็บที่ตรึง ไม่โดนบัง */
    animation:none !important;
}

/* =========================================================================
   ✨ FIX (2026-08 v13.1): MOTION หน้าหลัก + ถอดฟังก์ชันเปลี่ยนพื้นหลังออก
   -------------------------------------------------------------------------
   🐞 ทำไมรอบก่อน "โมชั่นไม่เปลี่ยน":
   ของเดิมมีอนิเมชันระดับ "กล่องใหญ่" ครอบอยู่แล้ว —
       #dashboard .top { animation:u1eFadeDown }   (หัวเว็บทั้งก้อนเลื่อนลงพร้อมกัน)
       #board        { animation:u1eBoardIn  }     (บอร์ดทั้งแผงจางเข้าพร้อมกัน)
   สองตัวนี้เล่นทับจังหวะไล่ทีละชิ้นที่เพิ่มเข้าไป -> ตาเห็นเป็นก้อนเดียวเหมือนเดิม
   รอบนี้ปิดอนิเมชันกล่องใหญ่ทั้งสองตัวระหว่างเล่น เหลือเฉพาะจังหวะไล่ทีละชิ้น
   และเพิ่มมิติให้ต่างชัด: rise + scale + blur คลายออก (แบบ Framer Motion จริง ๆ)
   ========================================================================= */

@keyframes u1eRiseSm{
    from{ opacity:0; transform:translate3d(0,14px,0) scale(.985); filter:blur(4px) }
    to  { opacity:1; transform:none;                              filter:blur(0) }
}
@keyframes u1eRiseMd{
    from{ opacity:0; transform:translate3d(0,22px,0) scale(.975); filter:blur(6px) }
    to  { opacity:1; transform:none;                              filter:blur(0) }
}
@keyframes u1eRiseLg{
    from{ opacity:0; transform:translate3d(0,38px,0) scale(.965); filter:blur(7px) }
    to  { opacity:1; transform:none;                              filter:blur(0) }
}

/* ---------- ปิดอนิเมชัน "กล่องใหญ่" ของเดิม เพื่อให้เห็นจังหวะไล่ทีละชิ้นจริง ๆ ---------- */
body.u1e-intro #dashboard header.top,
body.u1e-intro .u1e-sidebar,
body.u1e-intro #board,
#board.u1e-intro-board{ animation:none !important; }

/* ---------- 1) Sidebar ซ้าย — ไล่ทีละเมนู ---------- */
body.u1e-intro .u1e-sidebar .sb-brand{ animation:u1eRiseSm .55s cubic-bezier(.16,1,.3,1) .02s both !important; }
body.u1e-intro .u1e-sidebar .sb-item { animation:u1eRiseSm .55s cubic-bezier(.16,1,.3,1) both !important; }
body.u1e-intro .u1e-sidebar .sb-item:nth-of-type(1){ animation-delay:.08s !important }
body.u1e-intro .u1e-sidebar .sb-item:nth-of-type(2){ animation-delay:.14s !important }
body.u1e-intro .u1e-sidebar .sb-item:nth-of-type(3){ animation-delay:.20s !important }
body.u1e-intro .u1e-sidebar .sb-item:nth-of-type(4){ animation-delay:.26s !important }
body.u1e-intro .u1e-sidebar .sb-item:nth-of-type(5){ animation-delay:.32s !important }
body.u1e-intro .u1e-sidebar .sb-item:nth-of-type(6){ animation-delay:.38s !important }
body.u1e-intro .u1e-sidebar .sb-item:nth-of-type(n+7){ animation-delay:.44s !important }

/* ---------- 2) โลโก้ + การ์ดยอดรวม (เทียบ "Headline") ---------- */
body.u1e-intro #dashboard header.top .totalRow #brandChatBtn{
    animation:u1eRiseMd .7s cubic-bezier(.16,1,.3,1) .12s both !important;
}
body.u1e-intro #dashboard header.top .totalRow .totalCard{
    animation:u1eRiseMd .7s cubic-bezier(.16,1,.3,1) .20s both !important;
}

/* ---------- 3) กรอบข้อมูลผู้ใช้ + กรอบแถบเมนู (เทียบ "Subheadline") ---------- */
body.u1e-intro #dashboard #whoAmI.whoami{
    animation:u1eRiseSm .65s cubic-bezier(.16,1,.3,1) .28s both !important;
}
body.u1e-intro #dashboard header.top .totalRow .right{
    animation:u1eRiseMd .7s cubic-bezier(.16,1,.3,1) .30s both !important;
}

/* ---------- 4) ปุ่มในแถบเมนู — ไล่ทีละใบ (เทียบ "CTA") ---------- */
body.u1e-intro #dashboard header.top .totalRow .right > *{
    animation:u1eRiseSm .5s cubic-bezier(.16,1,.3,1) .42s both !important;
}
body.u1e-intro #dashboard header.top .totalRow .right > *:nth-child(2){ animation-delay:.48s !important }
body.u1e-intro #dashboard header.top .totalRow .right > *:nth-child(3){ animation-delay:.54s !important }
body.u1e-intro #dashboard header.top .totalRow .right > *:nth-child(4){ animation-delay:.60s !important }
body.u1e-intro #dashboard header.top .totalRow .right > *:nth-child(5){ animation-delay:.66s !important }
body.u1e-intro #dashboard header.top .totalRow .right > *:nth-child(6){ animation-delay:.72s !important }
body.u1e-intro #dashboard header.top .totalRow .right > *:nth-child(n+7){ animation-delay:.78s !important }

/* ---------- 5) บอร์ดโฟลเดอร์ (เทียบ "Dashboard Preview") ----------
   คลาสอยู่ที่ #board เอง เพราะข้อมูลจริงมาถึงหลังหน้าโหลดเสร็จ
   JS สั่งเล่นตอนบอร์ดมีการ์ดใบแรก แล้วถอดคลาสทิ้งเมื่อจบ
   (บอร์ดถูกวาดใหม่ทุกครั้งที่ข้อมูลสดเข้ามา ถ้าไม่ถอด การ์ดจะกระพริบรัวไม่หยุด) */
#board.u1e-intro-board > .folder,
#board.u1e-intro-board .sf-section,
#board.u1e-intro-board .sf-body > .folder{
    animation:u1eRiseLg .72s cubic-bezier(.16,1,.3,1) both !important;
}
#board.u1e-intro-board .sf-section:nth-of-type(1){ animation-delay:.02s !important }
#board.u1e-intro-board .sf-section:nth-of-type(2){ animation-delay:.14s !important }
#board.u1e-intro-board .sf-section:nth-of-type(3){ animation-delay:.26s !important }
#board.u1e-intro-board .sf-section:nth-of-type(n+4){ animation-delay:.34s !important }

#board.u1e-intro-board > .folder:nth-of-type(1),
#board.u1e-intro-board .sf-body > .folder:nth-of-type(1){ animation-delay:.10s !important }
#board.u1e-intro-board > .folder:nth-of-type(2),
#board.u1e-intro-board .sf-body > .folder:nth-of-type(2){ animation-delay:.17s !important }
#board.u1e-intro-board > .folder:nth-of-type(3),
#board.u1e-intro-board .sf-body > .folder:nth-of-type(3){ animation-delay:.24s !important }
#board.u1e-intro-board > .folder:nth-of-type(4),
#board.u1e-intro-board .sf-body > .folder:nth-of-type(4){ animation-delay:.31s !important }
#board.u1e-intro-board > .folder:nth-of-type(5),
#board.u1e-intro-board .sf-body > .folder:nth-of-type(5){ animation-delay:.38s !important }
#board.u1e-intro-board > .folder:nth-of-type(6),
#board.u1e-intro-board .sf-body > .folder:nth-of-type(6){ animation-delay:.45s !important }
#board.u1e-intro-board > .folder:nth-of-type(7),
#board.u1e-intro-board .sf-body > .folder:nth-of-type(7){ animation-delay:.52s !important }
#board.u1e-intro-board > .folder:nth-of-type(n+8),
#board.u1e-intro-board .sf-body > .folder:nth-of-type(n+8){ animation-delay:.58s !important }

/* ---------- เคารพการตั้งค่า "ลดการเคลื่อนไหว" ของเครื่องผู้ใช้ ---------- */
@media (prefers-reduced-motion: reduce){
    body.u1e-intro .u1e-sidebar *,
    body.u1e-intro #dashboard header.top .totalRow *,
    body.u1e-intro #dashboard #whoAmI.whoami,
    #board.u1e-intro-board > .folder,
    #board.u1e-intro-board .sf-section,
    #board.u1e-intro-board .sf-body > .folder{ animation:none !important; }
}

/* =========================================================================
   🗑 ถอดฟังก์ชัน "เปลี่ยนพื้นหลัง" ออกตามที่สั่ง
   (ตัว element ถูกถอดออกจาก DOM ด้วย JS อีกชั้น — กฎนี้กันไว้เผื่อสคริปต์เดิม
    สร้าง/โชว์กลับมาเอง · ไม่ได้ลบโค้ดเดิมทิ้ง ยกเลิกได้ด้วยการลบบล็อกนี้)
   ========================================================================= */
#dashBgBtn,
#dashBgFile{ display:none !important; }
/* หมายเหตุ: ชั้น .u1e-dashbg (ภาพพื้นหลังที่ตั้งไว้แล้ว) ไม่ถูกแตะ — ยังโชว์เหมือนเดิม */


/* =========================================================================
   ✨ FIX (2026-08 v17): Dashboard = Control Center
   -------------------------------------------------------------------------
   หน้า "ภาพรวมระบบ" ถูกจัดใหม่ทั้งหน้าตามผังที่ลูกค้าวาดมา
   ข้อมูลทุกตัวมาจาก /api/dashboard (ของจริง 100% — ไม่มีข้อมูลก็โชว์ "—")
   ========================================================================= */

#ccPage{ display:flex; flex-direction:column; gap:14px; }

/* ---------- หัวหน้า + ตัวกรอง ---------- */
.cc-top{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.cc-title{ font-size:19px; font-weight:900; color:#f2e9e6; display:flex; align-items:center; gap:9px; }
.cc-top .cc-sp{ flex:1; }
.cc-sel{
    appearance:none; cursor:pointer; font:inherit; font-size:13px; font-weight:700;
    color:#e7e9f0; background:rgba(255,255,255,.05); padding:8px 30px 8px 13px;
    border:1px solid rgba(255,255,255,.14); border-radius:999px;
    background-image:linear-gradient(45deg,transparent 50%,#9aa2b4 50%),linear-gradient(135deg,#9aa2b4 50%,transparent 50%);
    background-position:calc(100% - 16px) 52%, calc(100% - 11px) 52%;
    background-size:5px 5px, 5px 5px; background-repeat:no-repeat;
}
.cc-sel:hover{ border-color:rgba(201,160,74,.55); }
.cc-sel option{ background:#15161d; color:#e7e9f0; }
.cc-live{ font-size:11.5px; color:var(--muted,#8d92a8); font-weight:700; display:flex; align-items:center; gap:6px; }
.cc-live i{ width:7px; height:7px; border-radius:50%; background:#3ddc84; box-shadow:0 0 8px rgba(61,220,132,.9); font-style:normal; }
.cc-live.stale i{ background:#ffb84d; box-shadow:0 0 8px rgba(255,184,77,.9); }

/* ---------- แถวสรุปบนสุด ---------- */
.cc-strip{
    display:grid; grid-template-columns:repeat(6, 1fr); gap:1px;
    border:1px solid rgba(255,255,255,.1); border-radius:16px; overflow:hidden;
    background:rgba(255,255,255,.07);
}
.cc-cell{
    background:linear-gradient(165deg, rgba(255,255,255,.035), rgba(10,8,10,.72));
    padding:14px 16px; display:flex; flex-direction:column; gap:3px; min-width:0;
}
.cc-cell .k{ font-size:11.5px; font-weight:700; color:var(--muted,#8d92a8); display:flex; align-items:center; gap:6px; white-space:nowrap; }
.cc-cell .v{ font-size:27px; font-weight:900; color:#f2f4fa; line-height:1.05; font-variant-numeric:tabular-nums; }
.cc-cell .s{ font-size:11px; color:#6f7488; font-weight:600; }
.cc-cell .v.g{ color:#3ddc84 } .cc-cell .v.r{ color:#ff4d5a } .cc-cell .v.o{ color:#ffb84d } .cc-cell .v.b{ color:#7cc7ff }
.cc-dot{ width:7px; height:7px; border-radius:50%; display:inline-block; flex:none; }
.cc-dot.g{ background:#3ddc84; box-shadow:0 0 7px rgba(61,220,132,.85) }
.cc-dot.r{ background:#ff4d5a; box-shadow:0 0 7px rgba(255,77,90,.85) }
.cc-dot.o{ background:#ffb84d; box-shadow:0 0 7px rgba(255,184,77,.85) }
@media (max-width:1100px){ .cc-strip{ grid-template-columns:repeat(3, 1fr); } }
@media (max-width:640px){  .cc-strip{ grid-template-columns:repeat(2, 1fr); } }

/* ---------- กล่องมาตรฐาน ---------- */
.cc-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; align-items:start; }
@media (max-width:1000px){ .cc-grid{ grid-template-columns:1fr; } }
.cc-box{
    border:1px solid rgba(255,255,255,.1); border-radius:16px; padding:14px 16px;
    background:linear-gradient(180deg, rgba(255,255,255,.025), rgba(10,8,10,.55));
    min-width:0;
}
.cc-box h3{
    margin:0 0 11px; font-size:14.5px; color:#f2e9e6; display:flex; align-items:center; gap:8px;
}
.cc-box h3 .cc-n{ margin-left:auto; font-size:11.5px; color:var(--muted,#8d92a8); font-weight:700; }
.cc-empty{ color:#6f7488; font-size:12.5px; padding:14px 2px; text-align:center; }

/* ---------- Aging bucket ---------- */
.cc-age{ display:grid; grid-template-columns:repeat(5,1fr); gap:9px; }
@media (max-width:640px){ .cc-age{ grid-template-columns:repeat(2,1fr); } }
.cc-age-i{
    border:1px solid rgba(255,255,255,.09); border-radius:13px; padding:10px 12px;
    background:rgba(255,255,255,.02); display:flex; flex-direction:column; gap:5px;
}
.cc-age-i .k{ font-size:11.5px; color:var(--muted,#8d92a8); font-weight:700; }
.cc-age-i .v{ font-size:22px; font-weight:900; line-height:1; font-variant-numeric:tabular-nums; }
.cc-age-i .bar{ height:5px; border-radius:99px; background:rgba(255,255,255,.07); overflow:hidden; }
.cc-age-i .bar i{ display:block; height:100%; border-radius:99px; transition:width .35s cubic-bezier(.16,1,.3,1); }
.cc-age-i.lv0 .v{ color:#3ddc84 } .cc-age-i.lv0 .bar i{ background:#3ddc84 }
.cc-age-i.lv1 .v{ color:#9fe08a } .cc-age-i.lv1 .bar i{ background:#9fe08a }
.cc-age-i.lv2 .v{ color:#ffd27d } .cc-age-i.lv2 .bar i{ background:#ffd27d }
.cc-age-i.lv3 .v{ color:#ffb84d } .cc-age-i.lv3 .bar i{ background:#ffb84d }
.cc-age-i.lv4 .v{ color:#ff4d5a } .cc-age-i.lv4 .bar i{ background:#ff4d5a }

/* ---------- ตารางแถวข้อมูล ---------- */
.cc-row{
    display:flex; align-items:center; gap:10px; padding:8px 4px; font-size:13px;
    border-bottom:1px solid rgba(255,255,255,.05);
}
.cc-row:last-child{ border-bottom:0; }
.cc-row .nm{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#eef0f6; font-weight:700; }
.cc-row .sub{ font-size:11px; color:#6f7488; font-weight:600; }
.cc-row .num{ font-variant-numeric:tabular-nums; font-weight:900; flex:none; }
.cc-tag{
    flex:none; font-size:10.5px; font-weight:800; padding:2px 8px; border-radius:999px;
    border:1px solid rgba(229,72,77,.4); color:#ffb3b7; background:rgba(190,30,45,.12);
}
.cc-tag.b{ border-color:rgba(124,199,255,.4); color:#a7d8ff; background:rgba(124,199,255,.1); }
.cc-tag.g{ border-color:rgba(61,220,132,.4); color:#8ff0b8; background:rgba(61,220,132,.1); }
.cc-tag.o{ border-color:rgba(255,184,77,.45); color:#ffd8a1; background:rgba(255,184,77,.1); }
.cc-mini{ height:6px; border-radius:99px; background:rgba(255,255,255,.07); overflow:hidden; flex:0 0 78px; }
.cc-mini i{ display:block; height:100%; border-radius:99px; background:#ff4d5a; }
.cc-mini i.o{ background:#ffb84d } .cc-mini i.g{ background:#3ddc84 }

/* ---------- กราฟ Incoming / Outgoing ---------- */
.cc-chart{ display:flex; align-items:flex-end; gap:3px; height:132px; padding:6px 0 0; }
.cc-chart .col{ flex:1; min-width:0; display:flex; flex-direction:column; justify-content:flex-end; gap:2px; height:100%; position:relative; }
.cc-chart .col .bi, .cc-chart .col .bo{ border-radius:3px 3px 0 0; transition:height .4s cubic-bezier(.16,1,.3,1); min-height:1px; }
.cc-chart .col .bi{ background:linear-gradient(180deg,#7cc7ff,#3d7fb8); }
.cc-chart .col .bo{ background:linear-gradient(180deg,#3ddc84,#1c8a4e); }
.cc-chart .col:hover .bi{ filter:brightness(1.25) } .cc-chart .col:hover .bo{ filter:brightness(1.25) }
.cc-xaxis{ display:flex; gap:3px; margin-top:5px; }
.cc-xaxis span{ flex:1; text-align:center; font-size:9px; color:#5d6274; font-variant-numeric:tabular-nums; }
.cc-legend{ display:flex; gap:14px; margin-top:9px; font-size:11.5px; color:var(--muted,#8d92a8); font-weight:700; }
.cc-legend i{ width:9px; height:9px; border-radius:3px; display:inline-block; margin-right:5px; }
.cc-legend .li{ background:#7cc7ff } .cc-legend .lo{ background:#3ddc84 }

/* ---------- Response Time / ตัวเลขใหญ่ ---------- */
.cc-figs{ display:grid; grid-template-columns:repeat(auto-fit,minmax(96px,1fr)); gap:10px; }
.cc-fig{ display:flex; flex-direction:column; gap:3px; }
.cc-fig .k{ font-size:11.5px; color:var(--muted,#8d92a8); font-weight:700; white-space:nowrap; }
.cc-fig .v{ font-size:24px; font-weight:900; color:#f2f4fa; line-height:1.05; font-variant-numeric:tabular-nums; }
.cc-fig .v.g{ color:#3ddc84 } .cc-fig .v.o{ color:#ffb84d } .cc-fig .v.r{ color:#ff4d5a } .cc-fig .v.n{ color:#6f7488; font-size:21px }
.cc-fig .s{ font-size:10.5px; color:#6f7488; font-weight:600; }

/* ---------- Trend ---------- */
.cc-tr{ display:flex; align-items:baseline; gap:8px; font-size:12px; }
.cc-tr .up{ color:#ff4d5a; font-weight:800 } .cc-tr .dn{ color:#3ddc84; font-weight:800 } .cc-tr .fl{ color:#6f7488; font-weight:800 }
.cc-tr .ys{ color:#6f7488; }

/* ---------- ต้องดำเนินการ ---------- */
.cc-act{ display:flex; align-items:center; gap:10px; padding:9px 4px; border-bottom:1px solid rgba(255,255,255,.05); font-size:13px; }
.cc-act:last-child{ border-bottom:0 }
.cc-act .nm{ flex:1; color:#eef0f6; font-weight:700 }
.cc-act .num{ font-weight:900; font-variant-numeric:tabular-nums }
.cc-act.red .num{ color:#ff4d5a } .cc-act.yellow .num{ color:#ffb84d }
.cc-act.ok{ color:#6f7488; justify-content:center; padding:16px 0 }

/* ---------- System Health ---------- */
.cc-h{ display:flex; align-items:center; gap:10px; padding:9px 4px; border-bottom:1px solid rgba(255,255,255,.05); font-size:13px; }
.cc-h:last-child{ border-bottom:0 }
.cc-h .nm{ flex:1; color:#dfe3ec; font-weight:700 }
.cc-h .st{ font-size:12px; font-weight:800 }
.cc-h .st.ok{ color:#3ddc84 } .cc-h .st.warn{ color:#ffb84d } .cc-h .st.bad{ color:#ff4d5a }
.cc-h .dt{ font-size:11px; color:#6f7488; font-weight:600; font-variant-numeric:tabular-nums }

/* ---------- แถบหมายเหตุแหล่งข้อมูล ---------- */
.cc-note{ font-size:11px; color:#5d6274; text-align:center; padding:2px 0 6px; }

/* =========================================================================
   ✨ FIX (2026-08 v17.1): ปรับตามที่ลูกค้าแจ้ง
   · เอาไอคอน + บรรทัดรายละเอียดกลับมาที่การ์ดสรุปบนสุด
   · "ลูกค้าที่กำลังรอ" ทำให้กะทัดรัดลง อ่านสแกนได้เร็ว
   · ย้าย "ต้องดำเนินการ" ขึ้นมาแถวบน (ของสำคัญต้องเห็นก่อน ไม่ต้องเลื่อนหา)
   ========================================================================= */

/* ---- การ์ดสรุป: ไอคอนกลับมา + รองรับบรรทัดรายละเอียดยาวขึ้น ---- */
.cc-cell .k .ov-ic{
    width:19px; height:19px; font-size:11px; border-radius:6px; margin-right:2px;
}
.cc-cell{ padding:12px 14px; }
.cc-cell .k{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cc-cell .s{ line-height:1.35; white-space:normal; }

/* ---- แถว 2 คอลัมน์แบบ 1:2 (ต้องดำเนินการแคบ · ลูกค้าที่รอกว้าง) ---- */
.cc-grid.cc-grid-31{ grid-template-columns:minmax(230px, 1fr) 2fr; }
@media (max-width:1000px){ .cc-grid.cc-grid-31{ grid-template-columns:1fr; } }
.cc-box.cc-box-tight{ padding:12px 14px; }

/* ---- ลูกค้าที่กำลังรอ: กะทัดรัดลง (เดิมสูงเกินไป กินพื้นที่) ---- */
#ccPage .cc-age{ grid-template-columns:repeat(5, 1fr); gap:7px; }
@media (max-width:760px){ #ccPage .cc-age{ grid-template-columns:repeat(3, 1fr); } }
@media (max-width:460px){ #ccPage .cc-age{ grid-template-columns:repeat(2, 1fr); } }
#ccPage .cc-age-i{
    padding:7px 9px; gap:3px; border-radius:10px;
    background:rgba(255,255,255,.025);
}
#ccPage .cc-age-i .k{ font-size:10.5px; display:flex; align-items:baseline; gap:4px; }
#ccPage .cc-age-i .k em{ font-style:normal; font-size:9px; color:#5d6274; font-weight:600; }
#ccPage .cc-age-i .v{ font-size:17px; }
#ccPage .cc-age-i .bar{ height:3px; }
/* ช่วงที่ไม่มีใครรอ -> จางลง ให้สายตาพุ่งไปที่ช่วงที่มีปัญหาจริง */
#ccPage .cc-age-i.zero{ opacity:.42; }
#ccPage .cc-age-i.zero .v{ color:#6f7488; }

/* =========================================================================
   ✨ FIX (2026-08 v17.2): จัดหน้าเป็น "คู่ ๆ" + ไอคอนการ์ดสรุปแบบรูปตัวอย่าง
   ========================================================================= */

/* ---- กล่องทั้งหมดจัดเป็นคู่ · เศษที่เหลือให้อยู่กลาง ไม่ขยายเต็มหน้า ---- */
.cc-pairs{
    display:grid; grid-template-columns:1fr 1fr; gap:14px; align-items:start;
}
/* จำนวนกล่องเป็นเลขคี่ -> ใบสุดท้ายไปอยู่กึ่งกลาง แต่ยังกว้างเท่าเดิม (ครึ่งหนึ่ง) */
.cc-pairs > .cc-box:last-child:nth-child(odd){
    grid-column:1 / -1;
    justify-self:center;
    width:calc(50% - 7px);
}
@media (max-width:1000px){
    .cc-pairs{ grid-template-columns:1fr; }
    .cc-pairs > .cc-box:last-child:nth-child(odd){ width:100%; }
}

/* ---- การ์ดสรุป: ไอคอนใหญ่คู่กับตัวเลข (ตามรูปตัวอย่าง) ---- */
.cc-cell{ padding:13px 15px; gap:5px; }
.cc-cell .k{
    font-size:12px; display:flex; align-items:center; gap:6px;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.cc-mid{ display:flex; align-items:center; gap:11px; min-width:0; }
.cc-bigic{
    flex:none; width:38px; height:38px; border-radius:11px;
    display:inline-flex; align-items:center; justify-content:center;
    font-size:21px; line-height:1;
    border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.05);
}
.cc-bigic.ic-r{ background:rgba(229,72,77,.16);  border-color:rgba(229,72,77,.45);  box-shadow:0 0 16px -6px rgba(255,77,90,.85); }
.cc-bigic.ic-g{ background:rgba(61,220,132,.14); border-color:rgba(61,220,132,.42); box-shadow:0 0 16px -6px rgba(61,220,132,.85); }
.cc-bigic.ic-o{ background:rgba(255,184,77,.15); border-color:rgba(255,184,77,.45); box-shadow:0 0 16px -6px rgba(255,184,77,.85); }
.cc-bigic.ic-b{ background:rgba(124,199,255,.14);border-color:rgba(124,199,255,.42);box-shadow:0 0 16px -6px rgba(124,199,255,.85); }
.cc-cell .cc-mid .v{ font-size:31px; letter-spacing:-.01em; }
.cc-cell .s{ font-size:11px; line-height:1.35; white-space:normal; }

/* จอแคบ: ไอคอนเล็กลงหน่อยกันล้น */
@media (max-width:1100px){
    .cc-bigic{ width:32px; height:32px; font-size:18px; border-radius:9px; }
    .cc-cell .cc-mid .v{ font-size:26px; }
}

/* ---- พนักงาน: แยกออนไลน์/ออฟไลน์ให้เห็นชัดด้วยตาเปล่า ---- */
#ccPage .cc-row.on .nm{ color:#ffffff; }
#ccPage .cc-row.off{ opacity:.55; }
#ccPage .cc-row.off .cc-dot.r{ box-shadow:none; background:#7a3b40; }
#ccPage .cc-row.on .cc-dot.g{
    animation:ccOnPulse 2s ease-in-out infinite;
}
@keyframes ccOnPulse{ 50%{ box-shadow:0 0 12px rgba(61,220,132,1); } }
#ccPage .cc-row .cc-tag.g{ font-size:9.5px; padding:1px 7px; margin-left:6px; }

/* ---- Response Time: ตัวเลขมีหน่วยกำกับแล้ว ปรับขนาดให้ยังพอดีช่อง ---- */
#ccPage .cc-fig .v{ font-size:21px; white-space:nowrap; }
@media (max-width:1200px){ #ccPage .cc-fig .v{ font-size:19px; } }

/* =========================================================================
   🐞 FIX (2026-08 v17.3): กลับมาหน้าหลักทีไร จอกระพริบ 2-3 รอบ
   -------------------------------------------------------------------------
   สาเหตุ (มี 3 ชั้นซ้อนกัน — จึงกระพริบหลายรอบ):

   setOverview(false) สั่ง 2 อย่างพร้อมกัน
       bd.style.display = ""                  // #board  จาก none -> โชว์
       body.classList.remove("ov-mode")       // .right  จาก none -> โชว์

   ⚠️ CSS animation จะ "เริ่มเล่นใหม่ตั้งแต่ต้น" ทุกครั้งที่ element เปลี่ยนจาก
   display:none กลับมาโชว์ — ไม่ใช่เล่นครั้งเดียวจบอย่างที่ตั้งใจไว้ตอนเขียน
   จึงเกิดการเล่นซ้ำพร้อมกัน 3 ชุด:
       1) #board                  -> u1eBoardIn  (บอร์ดทั้งแผงจางเข้าใหม่)
       2) header .right + .toggle -> u1eFrameIn + u1eBtnIn ไล่ทีละปุ่มถึง 1.1 วิ
       3) ชุด motion เข้าหน้า (v13) ที่เคยสั่งให้เล่นซ้ำตอนกดเมนู "หน้าหลัก"

   แก้: พอเล่นอนิเมชัน "เข้าหน้า" จบรอบแรกแล้ว ติดธง body.u1e-ready
   แล้วปิดอนิเมชันชุดเข้าหน้าทั้งหมด -> สลับหน้าไปกลับกี่รอบก็นิ่งสนิท
   (อนิเมชันตกแต่งที่วนตลอด เช่น ปุ่มเรืองแสง / จุดแจ้งเตือน ไม่ถูกแตะ)
   ========================================================================= */
body.u1e-ready #dashboard .top,
body.u1e-ready #board,
body.u1e-ready header.top .right,
body.u1e-ready header.top .right .toggle,
body.u1e-ready #dashboard .totalCard,
body.u1e-ready #dashboard .brandBadgeBg,
body.u1e-ready #whoAmI.whoami,
body.u1e-ready .u1e-sidebar,
body.u1e-ready .u1e-sidebar .sb-item,
body.u1e-ready .u1e-sidebar .sb-brand{
    animation:none !important;
}


/* =========================================================================
   ✨ FIX (2026-08 v18.1): แถบเมนูซ้าย — แบ่งหมวด + การ์ดโปรไฟล์ท้ายเมนู
   (ชื่อเมนูทุกอันคงเดิม ตามที่ลูกค้าสั่ง — เปลี่ยนแค่การจัดเรียง)
   ========================================================================= */

/* ---- ซ่อนกล่องโปรไฟล์มุมขวาบน (ย้ายข้อมูลมาไว้ในเมนูซ้ายแล้ว) ----
   ⚠️ ใช้ display:none ไม่ใช่ลบทิ้ง — ปุ่มออกจากระบบ/ตั้งค่าตัวจริงอยู่ข้างใน
   ระบบเดิมยังสั่ง .click() ได้ตามปกติ */
body.u1e-sb-v2 #whoAmI.whoami{ display:none !important; }
body.u1e-sb-v2 #dashboard{ padding-top:26px; }   /* ไม่ต้องเว้นที่ให้กล่องขวาบนอีก */

/* ---- หัวข้อหมวด ---- */
.u1e-sidebar .sb-head{
    font-size:10px; font-weight:800; letter-spacing:.12em; text-transform:uppercase;
    color:#6b5458; padding:0 12px; margin:13px 0 5px; user-select:none;
}
.u1e-sidebar .sb-brand{
    padding-bottom:12px; margin-bottom:2px;
    border-bottom:1px solid rgba(255,255,255,.08);
}

/* ---- ป้ายจำนวนบนเมนู ---- */
.u1e-sidebar .sb-item{ position:relative; }
.u1e-sidebar .sb-badge{
    margin-left:auto; flex:none;
    min-width:20px; height:18px; padding:0 6px; border-radius:999px;
    display:inline-flex; align-items:center; justify-content:center;
    font-size:10.5px; font-weight:800; font-variant-numeric:tabular-nums;
    background:rgba(229,72,77,.22); color:#ff9aa1; border:1px solid rgba(229,72,77,.45);
}

/* ---- การ์ดโปรไฟล์ท้ายเมนู (มีปุ่มออกจากระบบอยู่ข้างใน) ---- */
.u1e-sidebar .sb-user{
    display:flex; flex-direction:column; gap:2px;
    margin:6px 0 4px; padding:7px 7px 6px; border-radius:14px;
    border:1px solid rgba(255,255,255,.09); background:rgba(255,255,255,.03);
}
.u1e-sidebar .sb-u-main{
    all:unset; box-sizing:border-box; cursor:pointer;
    display:flex; align-items:center; gap:9px;
    padding:6px 7px; border-radius:10px; transition:background .15s;
}
.u1e-sidebar .sb-u-main:hover{ background:rgba(229,72,77,.10); }
.u1e-sidebar .sb-u-dot{
    width:8px; height:8px; border-radius:50%; flex:none; background:#7a3b40;
}
.u1e-sidebar .sb-u-dot.ok,
.u1e-sidebar .sb-u-dot.online{ background:#3ddc84; box-shadow:0 0 8px rgba(61,220,132,.9); }
.u1e-sidebar .sb-u-dot.connecting{ background:#ffb84d; box-shadow:0 0 8px rgba(255,184,77,.9); }
.u1e-sidebar .sb-u-dot.off,
.u1e-sidebar .sb-u-dot.error{ background:#ff4d5a; box-shadow:0 0 8px rgba(255,77,90,.9); }
.u1e-sidebar .sb-u-txt{ display:flex; flex-direction:column; gap:1px; min-width:0; flex:1; }
.u1e-sidebar .sb-u-txt b{
    font-size:12.5px; font-weight:800; color:#eef0f6;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.u1e-sidebar .sb-u-txt i{ font-style:normal; font-size:10.5px; color:#8d92a8; font-weight:600; }
.u1e-sidebar .sb-u-go{ color:#6b5458; font-size:15px; flex:none; }

/* บรรทัดสถานะเชื่อมต่อ (ย้ายมาจากกล่องขวาบน) */
.u1e-sidebar .sb-u-conn{
    font-size:10px; font-weight:600; color:#8d92a8;
    padding:0 8px 4px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.u1e-sidebar .sb-u-conn.ok{ color:#6fd39a; }
.u1e-sidebar .sb-u-conn.connecting{ color:#ffc879; }
.u1e-sidebar .sb-u-conn.off, .u1e-sidebar .sb-u-conn.error{ color:#ff8a90; }

/* ปุ่มออกจากระบบเมื่ออยู่ในการ์ดโปรไฟล์ */
.u1e-sidebar .sb-user > #sbLogout{
    margin-top:3px; padding:7px 9px !important; font-size:12px !important;
    border-top:1px solid rgba(255,255,255,.07); border-radius:0 0 9px 9px;
}
.u1e-sidebar .sb-gap{ margin-bottom:6px; }

/* =========================================================================
   ✨ FIX (2026-08 v19.1): หน้า "ตั้งค่า" — จัดหมวดให้อ่านง่าย ไม่รก
   ========================================================================= */

/* ซ่อนแถบเครื่องมือบนหน้าหลัก (ปุ่มตัวจริงย้ายเข้า popup ตั้งค่าแล้ว) */
body.u1e-tools-in-settings #dashboard header.top .totalRow .right{ display:none !important; }
body.u1e-tools-in-settings #dashboard header.top{ margin-bottom:12px; }

/* หัวข้อหมวดในหน้าตั้งค่า */
#settingsModalBody .sm-head{
    font-size:10px; font-weight:800; letter-spacing:.12em; text-transform:uppercase;
    color:#7b6165; padding:0 4px; margin:14px 0 6px; user-select:none;
}
#settingsModalBody .sm-head:first-child{ margin-top:2px; }

/* ปุ่มในหน้าตั้งค่า: แถวเต็มความกว้าง กดง่ายทั้งเมาส์และมือถือ */
#settingsModalBody .toggle{
    display:flex !important; width:100% !important; margin:0 !important;
    align-items:center; justify-content:flex-start; gap:9px;
    padding:12px 15px !important; border-radius:12px !important;
    font-size:13.5px !important; box-sizing:border-box; white-space:nowrap;
}
#settingsModalBody .toggle + .toggle{ margin-top:6px !important; }
#settingsModalBody .toggle.active{
    background:var(--gold-soft) !important; border-color:var(--gold) !important; color:var(--gold) !important;
}

/* 🐞 กันข้อมูลซ้ำ: "เมนูลัด" โผล่เฉพาะจอแคบที่ไม่มีเมนูซ้าย
   จอกว้าง (มี sidebar) -> ซ่อน เพราะเมนูซ้ายมีให้อยู่แล้ว */
@media (min-width:1200px){
    #settingsModalBody .sm-narrow{ display:none !important; }
}

/* ---- การ์ดโปรไฟล์: ปุ่มแก้ชื่อเล่น ---- */
.u1e-sidebar .sb-u-edit{
    all:unset; cursor:pointer; flex:none;
    width:24px; height:24px; border-radius:7px;
    display:inline-flex; align-items:center; justify-content:center;
    font-size:12px; color:#8d92a8;
    border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.04);
}
.u1e-sidebar .sb-u-edit:hover{
    color:var(--gold,#c9a04a); border-color:rgba(201,160,74,.5); background:rgba(201,160,74,.14);
}
.u1e-sidebar .sb-u-main{ cursor:default; }
.u1e-sidebar .sb-u-main:hover{ background:transparent; }

/* =========================================================================
   ✨ FIX (2026-08 v20): popup "ข้อมูลของฉัน"
   ========================================================================= */
#myProfileModal .settings-modal-body{ padding-top:4px; }
#myProfileModal #smProfile{ margin-bottom:0; }
.u1e-sidebar .sb-u-main{ cursor:pointer; }
.u1e-sidebar .sb-u-main:hover{ background:rgba(229,72,77,.10); }

/* =========================================================================
   ✨ FIX (2026-08 v21.1): "ตั้งค่า" = แผงสไลด์ลงในแถบเมนู (ไม่มี popup)
   ========================================================================= */

/* ปิด popup เดิมสนิท — ปุ่มตัวจริงถูกย้ายมาไว้ในแผงแล้ว */
body.u1e-settings-drawer #settingsModal{ display:none !important; }

/* แถบเมนูต้องเลื่อนได้ เผื่อกางแผงแล้วยาวเกินจอ */
body.u1e-settings-drawer .u1e-sidebar{ overflow-y:auto; overflow-x:hidden; }
body.u1e-settings-drawer .u1e-sidebar::-webkit-scrollbar{ width:6px; }
body.u1e-settings-drawer .u1e-sidebar::-webkit-scrollbar-thumb{
    background:rgba(255,255,255,.12); border-radius:99px;
}

/* กางลงมาถึงความสูงจริงเสมอ (ไม่โดนตัดเหมือน max-height ตายตัว) */
.u1e-sidebar .sb-panel{
    display:grid; grid-template-rows:0fr;
    transition:grid-template-rows .28s cubic-bezier(.16,1,.3,1);
}
.u1e-sidebar .sb-panel.open{ grid-template-rows:1fr; }
.u1e-sidebar .sb-panel-in{ overflow:hidden; min-height:0; }
.u1e-sidebar .sb-panel .settings-modal-body{
    padding:6px 4px 4px; display:flex; flex-direction:column; gap:0;
}

/* ปุ่มตั้งค่าตอนกางอยู่ */
.u1e-sidebar .sb-item.sb-open{
    background:rgba(229,72,77,.14); color:#ffd9db;
    border-color:rgba(229,72,77,.35);
}
.u1e-sidebar .sb-item.sb-open::after{
    content:"⌃"; margin-left:auto; font-size:12px; opacity:.7;
    transform:rotate(180deg); transition:transform .25s;
}

/* ปุ่มในแผง: เล็กลงหน่อยให้พอดีความกว้างแถบเมนู */
.u1e-sidebar .sb-panel .toggle{
    display:flex !important; width:100% !important; margin:0 0 5px !important;
    align-items:center; justify-content:flex-start; gap:8px;
    padding:9px 11px !important; border-radius:10px !important;
    font-size:12px !important; box-sizing:border-box;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.u1e-sidebar .sb-panel .toggle.active{
    background:var(--gold-soft) !important; border-color:var(--gold) !important; color:var(--gold) !important;
}
.u1e-sidebar .sb-panel .sm-head{
    font-size:9.5px; font-weight:800; letter-spacing:.1em; text-transform:uppercase;
    color:#6b5458; padding:0 4px; margin:8px 0 4px;
}
.u1e-sidebar .sb-panel .sm-head:first-child{ margin-top:2px; }
/* จอกว้างมีเมนูซ้ายอยู่แล้ว -> ไม่ต้องมีเมนูลัดซ้ำในแผง */
@media (min-width:1200px){
    .u1e-sidebar .sb-panel .sm-narrow{ display:none !important; }
}

/* =========================================================================
   ✨ FIX (2026-08 v22): แผงย่อยใต้ "จัดรูปแบบโฟลเดอร์" + ขยายแถบเมนู 7%
   ========================================================================= */

/* ---- ขยายแถบเมนูกว้างขึ้น 7% (172 -> 184px) ตัวหนังสือขนาดเท่าเดิม ---- */
.u1e-sidebar{ width:184px !important; }
@media (min-width:1200px){
    #dashboard.u1e-red{ margin-left:218px !important; }   /* 14 + 184 + 20 */
}

/* ---- แผงย่อย: กางลงมาอีกชั้นใต้ "จัดรูปแบบโฟลเดอร์" ---- */
.u1e-sidebar .sb-sub{
    display:grid; grid-template-rows:0fr;
    transition:grid-template-rows .26s cubic-bezier(.16,1,.3,1);
}
.u1e-sidebar .sb-sub.open{ grid-template-rows:1fr; }
.u1e-sidebar .sb-sub-in{ overflow:hidden; min-height:0; }

/* ปุ่มลูก: ย่อหน้าเข้ามา + มีเส้นบอกลำดับชั้น */
.u1e-sidebar .sb-sub-in{
    margin:4px 0 6px 8px; padding-left:9px;
    border-left:2px solid rgba(229,72,77,.28);
}
.u1e-sidebar .sb-sub-in .toggle{
    display:flex !important; width:100% !important; margin:0 0 4px !important;
    align-items:center; justify-content:flex-start; gap:7px;
    padding:8px 10px !important; border-radius:9px !important;
    font-size:12px !important; box-sizing:border-box;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.u1e-sidebar .sb-sub-in .toggle:last-child{ margin-bottom:0 !important; }

/* ปุ่ม "จัดรูปแบบโฟลเดอร์" ตอนกางอยู่ */
.u1e-sidebar .sb-panel .toggle.sb-open{
    background:rgba(229,72,77,.14) !important;
    border-color:rgba(229,72,77,.4) !important;
    color:#ffd9db !important;
}
.u1e-sidebar .sb-panel .toggle.sb-open::after{
    content:"⌃"; margin-left:auto; font-size:11px; opacity:.75;
    transform:rotate(180deg); transition:transform .25s;
}

/* =========================================================================
   ✨ FIX (2026-08 v23): แถบเมนูกว้างขึ้น อ่านครบไม่ตัดคำ + บัญชีไปอยู่ในโปรไฟล์
   ========================================================================= */

/* ---- ขยายแถบเมนูออกไปทางขวาอีก ให้ชื่อปุ่มยาว ๆ อ่านครบ ---- */
.u1e-sidebar{ width:236px !important; }
@media (min-width:1200px){
    #dashboard.u1e-red{ margin-left:270px !important; }   /* 14 + 236 + 20 */
}

/* ---- ห้ามตัดคำ: ยาวเกินให้ขึ้นบรรทัดใหม่แทน (ขนาดตัวอักษรเท่าเดิม) ---- */
.u1e-sidebar .sb-item,
.u1e-sidebar .sb-panel .toggle,
.u1e-sidebar .sb-sub-in .toggle{
    white-space:normal !important;
    overflow:visible !important;
    text-overflow:clip !important;
    line-height:1.3;
    text-align:left;
    height:auto;
}
.u1e-sidebar .sb-panel .toggle{ padding:10px 12px !important; }
.u1e-sidebar .sb-sub-in .toggle{ padding:9px 11px !important; }

/* ---- หมวดความปลอดภัยบัญชีใน popup โปรไฟล์ ---- */
#myProfileModal .mp-acct{ margin-top:12px; }
#myProfileModal .mp-acct .sm-head{
    font-size:10px; font-weight:800; letter-spacing:.12em; text-transform:uppercase;
    color:#7b6165; padding:0 4px; margin:0 0 7px;
}
#myProfileModal .mp-acct .toggle{
    display:flex !important; width:100% !important; margin:0 0 7px !important;
    align-items:center; justify-content:flex-start; gap:9px;
    padding:12px 15px !important; border-radius:12px !important;
    font-size:13.5px !important; box-sizing:border-box; white-space:normal;
}
#myProfileModal .mp-acct .toggle:last-child{ margin-bottom:0 !important; }

/* =========================================================================
   🐞 FIX (2026-08 v24): หน้าต่างที่เปิดจาก "ข้อมูลของฉัน" ไปจมอยู่ด้านหลัง
   -------------------------------------------------------------------------
   สาเหตุ: ลำดับชั้นการซ้อน (z-index) ของระบบไม่เคยถูกจัดให้ตรงกัน
       #myProfileModal (.pos-create-overlay) = 100000   ← ตัวที่เปิดอยู่
       #twofaSetupModal                      =  10000   ← ต่ำกว่า -> จมอยู่หลัง
       .popup-overlay (ยืนยัน/กรอกข้อมูล)     =   9000   ← ต่ำกว่า -> จมอยู่หลัง
       #changePwModal / #forgotPwModal        =      50   ← ต่ำกว่ามาก -> ไม่เห็นเลย
   กดปุ่มแล้วหน้าต่างเปิดจริง แต่เปิดอยู่ "ใต้" popup โปรไฟล์ = เหมือนกดไม่ติด

   แก้: วางลำดับชั้นให้ชัดเจนทั้งระบบ (ยิ่งเปิดทีหลัง ยิ่งอยู่บน)
       100000  หน้าต่างหลัก (โปรไฟล์ / การ์ดต่าง ๆ)
       100020  หน้าต่างที่เปิดต่อจากหน้าต่างหลัก (รหัสผ่าน / 2FA / สมัคร)
       100100  กล่องยืนยัน-กรอกข้อมูล (apPrompt/confirm) — ต้องอยู่บนสุดเสมอ
   ========================================================================= */
#registerModal,
#registerMktModal,
#changePwModal,
#forgotPwModal,
#twofaSetupModal{
    z-index:100020 !important;
}

/* กล่องยืนยัน/กรอกข้อมูล — เปิดซ้อนบนอะไรก็ได้ ต้องอยู่บนสุดเสมอ */
.popup-overlay{
    z-index:100100 !important;
}

/* ---- ไล่ลำดับชั้นให้ครบทุกหน้าต่างของระบบ (กันจมหลัง sidebar/หน้าต่างอื่น) ----
   sidebar = 500 · หน้าต่างหลัก = 100000 · หน้าต่างซ้อน = 100010–100020 · กล่องยืนยัน = 100100
   ⚠️ #adminModal เดิม z-index:60 ซึ่ง "ต่ำกว่าแถบเมนูซ้าย (500)" อยู่แล้ว
      พอแถบเมนูกว้างขึ้น ยิ่งบังชัด — ยกขึ้นมาให้ถูกชั้นไปพร้อมกัน */
#adminModal{        z-index:100010 !important; }
#oaConnectModal{    z-index:100010 !important; }
#superFolderModal{  z-index:100010 !important; }
#permSettingsModal{ z-index:100015 !important; }
.msett-overlay{     z-index:100015 !important; }
#twofaVerifyModal{  z-index:100020 !important; }

/* ---- รายละเอียด "ไลน์ที่มีปัญหา" ใต้รายการต้องดำเนินการ ---- */
#ccPage .cc-act-lines{
    margin:2px 0 8px 26px; padding-left:9px;
    border-left:2px solid rgba(255,255,255,.08);
}
#ccPage .cc-act-l{
    display:flex; align-items:center; gap:8px;
    padding:5px 2px; font-size:12px;
    border-bottom:1px solid rgba(255,255,255,.04);
}
#ccPage .cc-act-l:last-child{ border-bottom:0; }
#ccPage .cc-act-l .nm{
    flex:1; min-width:0; color:#dfe3ec; font-weight:700;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
#ccPage .cc-act-l .nm i{ font-style:normal; font-size:10.5px; color:#6f7488; font-weight:600; }
#ccPage .cc-act-l .n{ flex:none; color:#ff6b76; font-weight:900; font-variant-numeric:tabular-nums; }
#ccPage .cc-act-l .w{
    flex:none; font-size:10.5px; color:#8d92a8; font-weight:600;
    max-width:46%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
#ccPage .cc-act-more{ font-size:10.5px; color:#6f7488; font-weight:700; padding:5px 2px 0; }

/* =========================================================================
   🐞 FIX (2026-08 v28): ตาข่ายกันจอกระพริบชั้นสุดท้าย
   -------------------------------------------------------------------------
   ต่อให้จังหวะเวลาเพี้ยนยังไง พออนิเมชันเข้าหน้าเล่นจบแล้ว (body.u1e-ready)
   ห้ามมีอะไรในบอร์ดเล่นอนิเมชัน "เข้าหน้า" ได้อีกเด็ดขาด
   -> บอร์ดถูกวาดใหม่กี่รอบก็ตาม การ์ดจะโผล่มาเฉย ๆ ไม่จางเข้า/ไม่ขยับ = ไม่กระพริบ
   (อนิเมชันที่วนตลอด เช่น badge เตือนยอดค้าง ไม่ถูกแตะ — คนละคลาสกัน)
   ========================================================================= */
body.u1e-ready #board.u1e-intro-board > .folder,
body.u1e-ready #board.u1e-intro-board .sf-section,
body.u1e-ready #board.u1e-intro-board .sf-body > .folder{
    animation:none !important;
}

/* =========================================================================
   ✨ เฟส 4 (2026-08) — ฟอนต์ iPhone · สีตัวอักษรตามกรอบ · ขนาดตัวอักษรหน้าหลัก

   ⚠️ ต่อท้ายไฟล์เดิมเท่านั้น ไม่ได้แก้/ลบของเดิมแม้แต่บรรทัดเดียว
      ทุกกฎในบล็อกนี้เขียนทับของเดิมด้วยลำดับความสำคัญ (มาทีหลังชนะ)
      ถ้าไม่ชอบ -> ลบบล็อกนี้ทิ้งทั้งก้อน กลับเป็นเหมือนเดิม 100%
   ========================================================================= */


/* =========================================================================
   1) ฟอนต์ iPhone ทุกตัวอักษร ทั้งไทยและอังกฤษ

   ของเดิมตั้งไว้ที่ body แล้ว แต่มี 6 จุดที่ประกาศทับเป็น Georgia / Cinzel (serif)
   ทำให้หัวข้อใหญ่ ๆ ยังเป็นฟอนต์มีเชิง ไม่ตรงกับที่ต้องการ:
     h1,h2,.serif · #loginScreen h1 · .loadTitle · #dashboard h1
     .totalNumber · #kiLoader .ki-pct

   👉 ตัวแปร --font-ios ประกาศไว้ให้แก้ที่เดียวได้ทั้งระบบ
      ลำดับฟอนต์:
        -apple-system / BlinkMacSystemFont  = ฟอนต์ระบบของ Apple (San Francisco)
        SF Pro Text / SF Pro Display        = ชื่อตรง เผื่อเครื่องที่ลงไว้เอง
        Sukhumvit Set / Thonburi            = ไทยบน iOS/macOS (คู่ทางการของ SF)
        Noto Sans Thai                      = ไทยบน Windows/Android (ต้องโหลดจาก Google Fonts)
        Segoe UI / Roboto                   = สำรองสุดท้าย

   ⚠️ ไม่ได้ฝัง SF Pro เป็นไฟล์ เพราะมี license ของ Apple
      บนเครื่อง Apple จะได้ SF ของจริงผ่าน -apple-system อยู่แล้ว
   ========================================================================= */
:root{
    --font-ios: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display",
                "Sukhumvit Set", "Thonburi", "Noto Sans Thai", "Segoe UI", Roboto, sans-serif;
    --font-ios-num: -apple-system, BlinkMacSystemFont, "SF Pro Display",
                    "Sukhumvit Set", "Noto Sans Thai", "Segoe UI", sans-serif;
}

/* ครอบทุก element รวมถึงที่ยังไม่ได้ประกาศฟอนต์ */
html, body,
button, input, select, textarea, optgroup,
h1, h2, h3, h4, h5, h6,
.loadTitle,
#loginScreen h1, #dashboard h1, #kiLoader .ki-pct, #kiLoader .ki-hud{
    font-family: var(--font-ios);
}

/* .serif ของเดิมตั้งไว้ที่ "h1,h2,.serif" ซึ่ง specificity สูงกว่า h1 เดี่ยว ๆ
   ต้องเขียนให้เท่ากันหรือสูงกว่าถึงจะทับได้ (ไม่ใช้ !important เพื่อให้แก้ทับต่อได้) */
h1, h2, .serif,
body .serif{
    font-family: var(--font-ios);
}

/* ตัวเลขใหญ่ — ใช้ตัวเลขความกว้างเท่ากัน ไม่ให้เลขกระตุกตอนนับขึ้นลง */
.totalNumber, .folder-count, .badge, .grand-num, #grandTotal{
    font-family: var(--font-ios-num);
    font-variant-numeric: tabular-nums;
    font-feature-settings:"tnum" 1;
}

/* เลขที่เปลี่ยนบ่อยบนบอร์ด — กันความกว้างขยับตามตัวเลข */
.totalNumber{ letter-spacing:-.02em; }

/* ยกเว้น: โค้ด/ไอดี ยังเป็น monospace ตามเดิม (อ่านตัวเลขผิดยาก) */
code, kbd, samp, pre, .mono{
    font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;
}


/* =========================================================================
   2) ธีม "จัดโดย AI" — สีตัวอักษรเปลี่ยนตามกรอบ

   ปุ่ม ✨ จัดโดย AI ตั้งค่า CSS variable --folder-accent ให้แต่ละโฟลเดอร์อยู่แล้ว
   (app.js: box.style.setProperty("--folder-accent", color))

   ของเดิมสีนี้ใช้กับ "กรอบ + ชื่อโฟลเดอร์ + ตัวเลขนับ" เท่านั้น
   ส่วน "ชื่อไลน์ข้างในโฟลเดอร์" ยังเป็นสีขาวเหมือนกันหมดทุกโฟลเดอร์
   -> ทำให้สีธีมเปลี่ยนแล้วรู้สึกไม่สุด

   👉 ให้ชื่อไลน์ใช้สีเดียวกับกรอบด้วย แต่จางลงหน่อย (ผสมกับสีข้อความปกติ)
      ชื่อโฟลเดอร์ = สีเต็ม · ชื่อไลน์ = สีอ่อนกว่า -> ยังแยกลำดับชั้นออก อ่านง่าย

   ⚠️ ข้อยกเว้นที่ห้ามแตะ: ไลน์ที่มีสถานะเตือน (warn/crit/siren)
      ต้องคงสีเหลือง/ส้ม/แดงไว้เสมอ เพราะเป็นสัญญาณงานด่วน
      ถ้าปล่อยให้สีธีมทับ พนักงานจะมองไม่เห็นว่าไลน์ไหนเร่งด่วน
   ========================================================================= */
.folder .oa-item .name{
    /* color-mix รองรับเบราว์เซอร์ยุคใหม่ทั้งหมด (Safari 16.4+ / Chrome 111+)
       เครื่องเก่ากว่านั้นจะตกไปใช้บรรทัด fallback ด้านบนโดยอัตโนมัติ */
    color: var(--text);
    color: color-mix(in srgb, var(--folder-accent, var(--text)) 55%, var(--text) 45%);
    transition: color .18s ease;
}

/* สถานะเตือน — สีเดิมต้องชนะเสมอ */
.folder .oa-item.warn  .name{ color: var(--amber)  !important; }
.folder .oa-item.crit  .name{ color: var(--orange) !important; }
.folder .oa-item.siren .name{ color: var(--red)    !important; }

/* ชี้เมาส์ที่ไลน์ -> สีเข้มขึ้นเต็มโทนธีม (ตอบสนองว่ากำลังชี้อยู่) */
.folder .oa-item:hover .name{
    color: color-mix(in srgb, var(--folder-accent, var(--text)) 80%, var(--text) 20%);
}

/* เส้นคั่นระหว่างไลน์ก็ให้ติดโทนธีมจาง ๆ — กรอบกับข้างในเป็นชุดเดียวกัน */
.folder .oa-item{
    border-top-color: color-mix(in srgb, var(--folder-accent, var(--border)) 18%, var(--border) 82%);
}

/* หัวโฟลเดอร์: เพิ่มเส้นใต้บาง ๆ สีธีม ให้แยกหัวกับเนื้อชัดขึ้น */
.folder .folder-header{
    border-bottom: 1px solid color-mix(in srgb, var(--folder-accent, var(--border)) 30%, transparent);
}


/* =========================================================================
   3) ขนาดตัวอักษรหน้าหลัก — จัดใหม่ให้เป็นระบบ

   ของเดิมขนาดถูกตั้งกระจัดกระจาย (17 / 16.5 / 20 / 60 / 14) ไม่มีสเกลที่แน่นอน
   บนจอเล็กบางตัวใหญ่เกิน บนจอใหญ่บางตัวเล็กเกิน

   👉 ใช้ clamp(เล็กสุด, ยืดตามจอ, ใหญ่สุด) — ขนาดปรับตามความกว้างจอเอง
      ไม่ต้องเขียน @media หลายชั้น และไม่มีจุดที่ตัวอักษร "กระโดด" ตอนหมุนจอ

   สเกลที่ใช้ (อัตราส่วนราว 1.25 เท่าต่อขั้น — อ่านสบายตา):
      ชื่อไลน์      15 → 16.5 px
      ชื่อโฟลเดอร์  16 → 18 px
      ตัวเลขนับ     18 → 21 px
      ยอดรวมใหญ่    38 → 60 px
   ========================================================================= */
.oa-item .name{
    font-size: clamp(15px, 1.15vw + 11px, 16.5px);
    line-height: 1.45;
    letter-spacing: .002em;
}

.folder-header .name{
    font-size: clamp(16px, 1.2vw + 12px, 18px);
    line-height: 1.4;
    letter-spacing: .004em;
}

.folder-header .folder-count{
    font-size: clamp(18px, 1.3vw + 13px, 21px);
    line-height: 1.15;
}

.totalNumber{
    font-size: clamp(38px, 6.2vw + 8px, 60px);
    line-height: 1.02;
}

.totalLabel, .totalMeta{
    font-size: clamp(12.5px, .5vw + 11px, 14px);
    line-height: 1.5;
}

.badge{
    font-size: clamp(13.5px, .6vw + 11.5px, 15.5px);
    line-height: 1.2;
}

#dashboard h1{
    font-size: clamp(18px, 1.9vw + 12px, 26px);
    line-height: 1.25;
    letter-spacing: .03em;
}


/* =========================================================================
   4) มือถือ — ปรับให้กดง่าย อ่านง่าย

   หลักที่ยึด:
     · พื้นที่กดต้องสูงอย่างน้อย 44px (มาตรฐาน Apple — นิ้วโป้งกดไม่พลาด)
     · ตัวอักษรในช่องกรอกต้องไม่ต่ำกว่า 16px ไม่งั้น iOS จะซูมหน้าจอเองตอนแตะ
     · ชื่อไลน์ยาว ๆ ให้ตัดด้วย ... ไม่ดันจนล้นจอ
   ========================================================================= */
@media (max-width: 640px){
    .oa-item{
        padding: 13px 14px;
        min-height: 44px;                 /* พื้นที่กดตามมาตรฐาน Apple */
    }
    .oa-item .name{
        font-size: 16px;
        max-width: calc(100% - 96px);     /* เว้นที่ให้ badge ด้านขวาเสมอ */
    }
    .folder-header{ padding: 13px 14px; }
    .folder-header .name{ font-size: 17px; }
    .folder-header .folder-count{ font-size: 19px; }

    .totalLabel, .totalMeta{ font-size: 13px; }

    /* iOS ซูมหน้าจอเองถ้าช่องกรอกตัวอักษรเล็กกว่า 16px */
    input, select, textarea{ font-size: 16px; }

    /* ปุ่มเล็ก ๆ บนแถบเครื่องมือ — เพิ่มพื้นที่กดโดยไม่ทำให้ปุ่มดูใหญ่ขึ้น */
    .toggle, .fe-btn{ min-height: 38px; }
}

/* จอแคบมาก (iPhone SE / มือถือรุ่นเล็ก) */
@media (max-width: 380px){
    .oa-item .name{ font-size: 15px; max-width: calc(100% - 84px); }
    .folder-header .name{ font-size: 16px; }
    .badge{ font-size: 13.5px; padding: 4px 11px; }
}

/* จอใหญ่ — ไม่ให้ตัวอักษรลอยเล็กเกินไปเมื่อการ์ดกว้างขึ้น */
@media (min-width: 1500px){
    .oa-item .name{ font-size: 16.5px; }
    .folder-header .name{ font-size: 18px; }
}


/* =========================================================================
   5) รายละเอียดที่ทำให้อ่านสบายขึ้น (ไม่เปลี่ยนโครงหน้า)
   ========================================================================= */

/* ตัวอักษรคมขึ้นบนจอ Retina — ให้หน้าตาเหมือนแอปบน iPhone */
body{
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

/* ชื่อไลน์ยาวเกิน -> ตัดด้วย ... แทนการดันหน้าจอ (ของเดิมมีแล้ว ย้ำอีกชั้นกันโดนทับ) */
.oa-item .name, .folder-header .name{
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ตัวเลขบน badge ไม่ให้ตัวอักษรเบียดขอบ */
.badge{ padding-inline: .72em; }

/* คนที่ตั้งเครื่องให้ลดการเคลื่อนไหว -> ปิด transition สีที่เพิ่งเพิ่ม */
@media (prefers-reduced-motion: reduce){
    .folder .oa-item .name{ transition: none; }
}

/* =========================================================================
   ✨ (2026-08) เมนูข้างบนจอแคบ — เลื่อนออกได้ แทนที่จะหายไปเฉย ๆ

   ปัญหาเดิม: CSS เดิมซ่อน .u1e-sidebar ทั้งดุ้นเมื่อจอ < 1200px
       @media (max-width:1199px){ .u1e-sidebar{ display:none; } }
   -> ย่อจอปุ๊บ เมนู หน้าหลัก/ภาพรวมระบบ/ข้อความแชท/รายงาน/จัดการสมาชิก หายหมด
      ไม่มีทางเข้าถึงได้เลย (ตรงกับภาพที่หน้างานส่งมา)

   แก้: จอแคบ -> ซ่อนไว้นอกจอ + มีปุ่ม ☰ ให้เลื่อนเข้ามา
        จอกว้าง (≥1200px) -> เหมือนเดิมทุกอย่าง ไม่แตะ

   ⚠️ ต่อท้ายไฟล์เท่านั้น ไม่ได้แก้ของเดิม — ลบบล็อกนี้ = กลับเป็นเดิม 100%
   ========================================================================= */
@media (max-width:1199px){
    /* ทับกฎเดิมที่ซ่อนทิ้ง — เปลี่ยนเป็นเลื่อนออกนอกจอแทน */
    .u1e-sidebar{
        display:flex !important;
        left:0; top:0; bottom:0; width:250px; max-width:82vw;
        border-radius:0 20px 20px 0;
        transform:translateX(-104%);
        transition:transform .28s cubic-bezier(.2,.8,.2,1);
        will-change:transform;
        overflow-y:auto;
    }
    body.u1e-side-open .u1e-sidebar{ transform:none; }

    /* ปุ่ม ☰ — สร้างจาก JS (#u1eSideBtn) วางมุมซ้ายบน */
    #u1eSideBtn{
        position:fixed; left:12px; top:12px; z-index:501;
        width:42px; height:42px; border-radius:12px; cursor:pointer;
        display:flex; align-items:center; justify-content:center;
        font-size:19px; line-height:1; color:#e8ecf7;
        background:rgba(24,12,14,.92); border:1px solid rgba(229,72,77,.28);
        -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
        box-shadow:0 10px 26px -12px rgba(0,0,0,.8);
        transition:background .16s, transform .12s;
    }
    #u1eSideBtn:hover{ background:rgba(40,20,22,.95); }
    #u1eSideBtn:active{ transform:scale(.94); }

    /* ฉากหลังกดปิด */
    #u1eSideBackdrop{
        position:fixed; inset:0; z-index:499; background:rgba(0,0,0,.5);
        opacity:0; pointer-events:none; transition:opacity .24s ease;
        -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px);
    }
    body.u1e-side-open #u1eSideBackdrop{ opacity:1; pointer-events:auto; }

    /* เนื้อหาไม่ต้องเว้นที่ให้เมนู (เมนูลอยทับ) */
    #dashboard.u1e-red{ margin-left:0; }

    /* เว้นที่ให้ปุ่ม ☰ ไม่ให้ทับหัวเว็บ */
    #dashboard header.top{ padding-left:62px; }
}

/* จอกว้าง: ไม่มีปุ่ม ☰ และไม่มีฉากหลัง (sidebar อยู่ประจำที่เหมือนเดิม) */
@media (min-width:1200px){
    #u1eSideBtn, #u1eSideBackdrop{ display:none !important; }
}

/* โหมด Monitor / ยังไม่ได้รับสิทธิ์ดูหน้าหลัก -> ไม่ต้องมีปุ่มเมนู */
body.monitor-mode #u1eSideBtn,
body.u1e-no-mainview #u1eSideBtn{ display:none !important; }

@media (prefers-reduced-motion: reduce){
    .u1e-sidebar{ transition:none !important; }
    #u1eSideBackdrop{ transition:none !important; }
}

/* ---- (2026-08 v35) กล่องเตือน "สิทธิ์เปิดค้างใต้หมวดที่ปิด" ---- */
.pv2-note.pv2-warn{
    margin:0 12px 12px; padding:10px 12px; border-radius:10px;
    background:rgba(229,72,77,.12); border:1px solid rgba(229,72,77,.45);
    color:#ffc9cd !important; font-size:12px; line-height:1.6;
}
.pv2-note.pv2-warn b{ color:#ff8a90; }

/* ============================================================
   ✨ (2026-08) ภาพรวมลูกค้า (Customer Overview) — Section ใหม่บน Dashboard
   ใช้สไตล์การ์ดชุดเดิม (.cc-strip / .cc-cell) ทั้งหมด — เพิ่มเฉพาะ
   ตัวแปรผัง 5 คอลัมน์ กับหัวข้อคั่น section ไม่แตะกติกาเดิมแม้แต่บรรทัดเดียว
============================================================ */
.cc-strip.cc-strip5{ grid-template-columns:repeat(5, 1fr); margin-top:10px; }
@media (max-width:1100px){ .cc-strip.cc-strip5{ grid-template-columns:repeat(3, 1fr); } }
@media (max-width:640px){  .cc-strip.cc-strip5{ grid-template-columns:repeat(2, 1fr); } }
.cc-cust-h{
    margin:16px 0 0; font-size:14.5px;
    /* 🐞 FIX (2026-08 theme): ใช้ token เดิมของระบบ — #f2e9e6 ตายตัวจางเกิน
       บน Light Theme · var(--text) สลับตามธีมให้เอง ไม่ hard-code สีใหม่ */
    color:var(--text);
    display:flex; align-items:center; gap:8px;
}
.cc-cust-h .cc-n{ margin-left:auto; font-size:11.5px; color:var(--muted,#8d92a8); font-weight:700; }

/* ✨ (2026-08 Phase 4) แถบ "การจำแนกลูกค้า" ใช้ .cc-strip5/.cc-cell/.cc-cust-h เดิมทั้งหมด
   เพิ่มเฉพาะป้ายเตือนกรณียอดไม่ตรง invariant (ปกติจะไม่ถูกแสดงเลย) */
.cc-cust-h .cc-warn{ color:var(--red, #ff5a67); font-weight:800; }
