/* ===== ฟอนต์ Prompt (โฮสต์ในเครื่อง) ===== */
@font-face{font-family:'Prompt';font-weight:300;font-display:swap;src:url(../vendor/fonts/prompt-thai-300-normal.woff2) format('woff2');unicode-range:U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:'Prompt';font-weight:300;font-display:swap;src:url(../vendor/fonts/prompt-latin-300-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Prompt';font-weight:400;font-display:swap;src:url(../vendor/fonts/prompt-thai-400-normal.woff2) format('woff2');unicode-range:U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:'Prompt';font-weight:400;font-display:swap;src:url(../vendor/fonts/prompt-latin-400-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Prompt';font-weight:500;font-display:swap;src:url(../vendor/fonts/prompt-thai-500-normal.woff2) format('woff2');unicode-range:U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:'Prompt';font-weight:500;font-display:swap;src:url(../vendor/fonts/prompt-latin-500-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Prompt';font-weight:600;font-display:swap;src:url(../vendor/fonts/prompt-thai-600-normal.woff2) format('woff2');unicode-range:U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:'Prompt';font-weight:600;font-display:swap;src:url(../vendor/fonts/prompt-latin-600-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  --pink:#F0668F; --purple:#E04A7F; --violet:#9F7AEA; --coral:#FF8E7F; --sky:#C655B0; --blue:#9F7AEA; --green:#22C55E; --orange:#F59E0B;
  --ink:#2d1b2a; --muted:#8a6a7d; --bg:#fff6f9; --card:#fff; --line:#f6dfe8;
  --grad:linear-gradient(135deg,#F2709C 0%,#E04A7F 42%,#C655B0 80%,#9F7AEA 100%);
  --soft:#fdecf2;--soft2:#fbe6ef;--topbar:rgba(255,255,255,.9);--chip-fg:#a02f60;--th-fg:#8a2b55;
  --sidebar-w:264px;
  --bs-body-font-family:'Prompt',system-ui,-apple-system,'Segoe UI',sans-serif;
}
html{scroll-behavior:smooth}
body{font-family:var(--bs-body-font-family);background:var(--bg);color:var(--ink);font-size:.95rem}
.text-gradient{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.btn-primary{--bs-btn-bg:var(--purple);--bs-btn-border-color:var(--purple);--bs-btn-hover-bg:#C93268;--bs-btn-hover-border-color:#C93268;--bs-btn-active-bg:#B52A5C;--bs-btn-active-border-color:#B52A5C;--bs-btn-disabled-bg:var(--purple);--bs-btn-disabled-border-color:var(--purple)}
.btn-pink{--bs-btn-color:#fff;--bs-btn-bg:var(--pink);--bs-btn-border-color:var(--pink);--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#c42f5c;--bs-btn-hover-border-color:#c42f5c}
.btn-grad{background:var(--grad);color:#fff;border:0}.btn-grad:hover{color:#fff;filter:brightness(1.07)}
.btn-outline-primary{--bs-btn-color:var(--purple);--bs-btn-border-color:var(--purple);--bs-btn-hover-bg:var(--purple);--bs-btn-hover-border-color:var(--purple);--bs-btn-active-bg:var(--purple)}
a{color:var(--purple)}a:hover{color:#B52A5C}
.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--purple);box-shadow:0 0 0 .22rem rgba(224,74,127,.2)}
.form-check-input:checked{background-color:var(--purple);border-color:var(--purple)}
.form-label{font-weight:500;font-size:.88rem;margin-bottom:.25rem}
.req::after{content:" *";color:#ef4444}

/* ===== Layout ===== */
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);background:linear-gradient(175deg,#5E1A42 0%,#A8325F 52%,#E2457E 135%);color:#fff;z-index:1040;display:flex;flex-direction:column;transition:transform .25s ease;overflow-y:auto}
.sidebar .brand{padding:1.2rem 1.1rem;display:flex;gap:.7rem;align-items:center;border-bottom:1px solid rgba(255,255,255,.15)}
.sidebar .brand .logo{width:46px;height:46px;border-radius:14px;background:#fff;display:grid;place-items:center;flex:none;overflow:hidden}
.sidebar .brand .logo img{max-width:100%;max-height:100%;object-fit:contain}
.sidebar .brand .logo i{font-size:1.6rem;color:var(--purple)}
.sidebar .brand .t1{font-weight:600;line-height:1.15;font-size:.98rem}
.sidebar .brand .t2{font-size:.72rem;opacity:.8;line-height:1.25}
.sidebar .nav-group{padding:.9rem 1.1rem .3rem;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;opacity:.65}
.sidebar .nav-link{color:rgba(255,255,255,.88);margin:.12rem .7rem;padding:.6rem .85rem;border-radius:12px;display:flex;align-items:center;gap:.7rem;font-weight:400}
.sidebar .nav-link i{font-size:1.1rem;width:1.3rem;text-align:center}
.sidebar .nav-link:hover{background:rgba(255,255,255,.14);color:#fff}
.sidebar .nav-link.active{background:#fff;color:var(--purple);font-weight:500;box-shadow:0 6px 18px rgba(0,0,0,.18)}
.sidebar .side-foot{margin-top:auto;padding:1rem 1.1rem;font-size:.72rem;opacity:.7}
.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(45,15,35,.5);z-index:1035}
.main{margin-left:var(--sidebar-w);min-height:100vh;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:1030;background:var(--topbar);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);padding:.65rem 1.4rem;display:flex;align-items:center;gap:1rem}
.topbar .sys{font-weight:600}
.topbar .sys small{display:block;font-weight:400;color:var(--muted);font-size:.74rem;line-height:1.1}
.topbar .org-logo{height:38px;max-width:120px;object-fit:contain}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--grad);color:#fff;display:grid;place-items:center;font-weight:600}
.content{padding:1.5rem;flex:1}
.page-head{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;align-items:center;margin-bottom:1.2rem}
.page-head h4{margin:0;font-weight:600}
.page-head .sub{color:var(--muted);font-size:.85rem}
.footer{padding:1rem 1.5rem;color:var(--muted);font-size:.8rem;text-align:center}
@media (max-width: 991.98px){
  .sidebar{transform:translateX(-100%)}
  body.sidebar-open .sidebar{transform:none}
  body.sidebar-open .sidebar-backdrop{display:block}
  .main{margin-left:0}
  .content{padding:1rem}
  .topbar{padding:.55rem 1rem}
}

/* ===== Cards ===== */
.card-soft{border:1px solid var(--line);border-radius:18px;box-shadow:0 6px 24px rgba(190,60,110,.07);background:var(--card)}
.card-soft .card-header{background:transparent;border-bottom:1px solid var(--line);font-weight:600;padding:.9rem 1.2rem}
.stat-card{border-radius:18px;padding:1.1rem 1.2rem;color:#fff;position:relative;overflow:hidden;box-shadow:0 10px 26px rgba(190,60,110,.16);height:100%}
.stat-card .num{font-size:2rem;font-weight:600;line-height:1.1}
.stat-card .lbl{font-size:.85rem;opacity:.95}
.stat-card .ico{position:absolute;right:-.2rem;bottom:-.6rem;font-size:4.6rem;opacity:.2}
.g-pink{background:linear-gradient(135deg,#E04A7F,#ff9ab8)}.g-purple{background:linear-gradient(135deg,#c2306b,#f0668f)}
.g-blue{background:linear-gradient(135deg,#6d4de0,#9a85f5)}.g-sky{background:linear-gradient(135deg,#c026d3,#e879f9)}
.g-orange{background:linear-gradient(135deg,#f59e0b,#fbbf55)}.g-green{background:linear-gradient(135deg,#16a34a,#4ade80)}
.g-red{background:linear-gradient(135deg,#dc2626,#f87171)}

.badge-status{font-weight:500;padding:.38em .65em;border-radius:999px}
.dept-dot{display:inline-block;width:.7rem;height:.7rem;border-radius:50%;margin-right:.35rem;vertical-align:baseline}
.legend-item{display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem;margin:.15rem .7rem .15rem 0;color:var(--muted)}

/* ===== Tables ===== */
.table{--bs-table-bg:transparent}
.table thead th{background:var(--soft);color:var(--th-fg);font-weight:500;white-space:nowrap;border-bottom:0;font-size:.85rem}
.table thead th:first-child{border-top-left-radius:12px}.table thead th:last-child{border-top-right-radius:12px}
.table td{vertical-align:middle}
.table th.sortable{cursor:pointer;user-select:none}
.table th.sortable::after{content:"\F282";font-family:'bootstrap-icons';font-size:.7rem;margin-left:.3rem;opacity:.35}
.table th.sorted-asc::after{content:"\F286";opacity:1;color:var(--purple)}
.table th.sorted-desc::after{content:"\F282";opacity:1;color:var(--purple)}
.tbl-tools{display:flex;gap:.6rem;flex-wrap:wrap;justify-content:space-between;align-items:center;margin-bottom:.7rem}
.tbl-tools .search{max-width:280px}
.tbl-foot{display:flex;gap:.6rem;flex-wrap:wrap;justify-content:space-between;align-items:center;font-size:.85rem;color:var(--muted)}
.page-link{color:var(--purple)}.page-item.active .page-link{background:var(--purple);border-color:var(--purple)}

/* ===== Room cards ===== */
.room-card{border-radius:18px;overflow:hidden;border:1px solid var(--line);background:var(--card);box-shadow:0 6px 24px rgba(190,60,110,.07);height:100%;display:flex;flex-direction:column}
.room-card .cover{height:130px;background:var(--grad);display:grid;place-items:center;color:rgba(255,255,255,.85);font-size:3rem;position:relative}
.room-card .cover img{width:100%;height:100%;object-fit:cover}
.room-card .state{position:absolute;top:.6rem;right:.6rem}
.room-card .body{padding:1rem;flex:1;display:flex;flex-direction:column;gap:.4rem}
.chip{display:inline-block;background:var(--soft2);color:var(--chip-fg);border-radius:999px;padding:.12rem .6rem;font-size:.75rem;margin:0 .2rem .25rem 0}

/* ===== FullCalendar ===== */
.fc{--fc-border-color:#f6dfe8;--fc-today-bg-color:rgba(224,74,127,.07);--fc-button-bg-color:#E04A7F;--fc-button-border-color:#E04A7F;--fc-button-hover-bg-color:#C93268;--fc-button-hover-border-color:#C93268;--fc-button-active-bg-color:#B52A5C;--fc-button-active-border-color:#B52A5C;--fc-non-business-color:rgba(148,163,184,.17);font-family:var(--bs-body-font-family)}
.fc .fc-toolbar-title{font-size:1.15rem;font-weight:600}
.fc .fc-button{border-radius:10px;font-size:.85rem;padding:.35rem .75rem}
.fc .fc-event{border-radius:7px;border-width:0;font-size:.78rem;cursor:pointer;padding:1px 3px}
.fc .ev-pending{opacity:.78;border:2px dashed rgba(0,0,0,.35)!important;background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.28) 0 6px,transparent 6px 12px)}
.fc .ev-rejected,.fc .ev-cancelled{opacity:.5;text-decoration:line-through;filter:grayscale(.6)}
.fc .ev-completed{opacity:.85}
.fc .fc-bg-event.holiday{background:rgba(239,68,68,.16);opacity:1}
.fc .fc-bg-event.holiday .fc-event-title{color:#b91c1c;font-style:normal;font-size:.72rem;padding:2px 4px}
.fc .fc-daygrid-day.fc-day-sat,.fc .fc-daygrid-day.fc-day-sun{background:var(--fc-non-business-color)}
.ev-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25}
@media (max-width:767.98px){.fc .fc-toolbar{flex-direction:column;gap:.5rem}.fc .fc-toolbar-title{font-size:1rem}}

/* ===== Login ===== */
.login-body{min-height:100vh;background:radial-gradient(1200px 600px at 10% -10%,rgba(240,102,143,.38),transparent 60%),radial-gradient(900px 600px at 100% 0%,rgba(255,142,127,.32),transparent 55%),radial-gradient(900px 700px at 50% 110%,rgba(198,85,176,.28),transparent 60%),#fff5f8}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:1.2rem}
.login-card{width:100%;max-width:430px;border-radius:26px;background:rgba(255,255,255,.95);box-shadow:0 24px 60px rgba(190,50,110,.22);padding:2rem 2rem 1.6rem;border:1px solid #fff}
.login-logo{width:86px;height:86px;border-radius:24px;background:#fff;display:grid;place-items:center;margin:0 auto .8rem;box-shadow:0 10px 26px rgba(224,74,127,.25);overflow:hidden}
.login-logo img{max-width:80%;max-height:80%;object-fit:contain}
.login-logo i{font-size:2.6rem}

/* ===== Misc ===== */
.loading-overlay{position:fixed;inset:0;background:rgba(255,255,255,.65);backdrop-filter:blur(2px);z-index:2000;display:none;place-items:center}
.loading-overlay.show{display:grid}
.spinner-grad{width:3rem;height:3rem;border-radius:50%;border:.34rem solid #f7d4e2;border-top-color:var(--pink);border-right-color:var(--purple);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.swal2-popup{font-family:var(--bs-body-font-family)!important;border-radius:20px!important}
.timeline{list-style:none;padding-left:1.1rem;border-left:2px solid #f7d4e2;margin:0}
.timeline li{position:relative;padding:0 0 .8rem .9rem;font-size:.85rem}
.timeline li::before{content:"";position:absolute;left:-1.5rem;top:.35rem;width:.7rem;height:.7rem;border-radius:50%;background:var(--purple);border:2px solid #fff;box-shadow:0 0 0 2px #f7d4e2}
.img-thumb{width:56px;height:56px;border-radius:12px;object-fit:cover;background:#fbe6ef}
.eq-row{border:1px solid var(--line);border-radius:12px;padding:.55rem .8rem}
.eq-row.disabled{opacity:.55}
.slot-bar{height:10px;border-radius:99px;background:#fbe6ef;overflow:hidden;position:relative}
.sticky-summary{position:sticky;top:84px}
@media print{
  .sidebar,.topbar,.footer,.no-print,.sidebar-backdrop,.tbl-tools,.tbl-foot{display:none!important}
  .main{margin:0}.content{padding:0}body{background:#fff}.card-soft{box-shadow:none;border:0}
  .print-only{display:block!important}
}
.print-only{display:none}

.fc a{text-decoration:none;color:inherit}.fc .fc-col-header-cell-cushion{color:var(--th-fg)}

/* ===== หน้าสาธารณะ / การ์ดห้อง / โลโก้ ===== */
.pub-body{background:var(--bg)}
.pub-nav{background:var(--topbar);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.pub-nav .nav-link{color:var(--ink);border-radius:10px;padding:.45rem .8rem}.pub-nav .nav-link:hover,.pub-nav .nav-link.active{background:var(--soft2);color:var(--purple)}
.brand-logo{width:44px;height:44px;border-radius:12px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;overflow:hidden;flex:none}
.brand-logo img{max-width:100%;max-height:100%;object-fit:contain}.brand-logo i{font-size:1.5rem;color:var(--purple)}
.pub-hero{background:var(--grad);color:#fff;padding:3rem 0 3.2rem;position:relative;overflow:hidden}
.pub-hero::after{pointer-events:none;content:"";position:absolute;right:-80px;top:-80px;width:320px;height:320px;border-radius:50%;background:rgba(255,255,255,.12)}
.pub-hero-sm{padding:1.8rem 0}
.room-card .cover{height:auto;aspect-ratio:16/10;background:linear-gradient(135deg,var(--rc,#E04A7F),#FF8E7F)}
.room-card .cover img{transition:transform .4s}.room-card:hover .cover img{transform:scale(1.04)}
.room-card-lg .body{gap:.65rem;padding:1.1rem 1.2rem 1.2rem}
.room-card-lg{transition:transform .2s,box-shadow .2s}.room-card-lg:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(190,60,110,.14)}
.room-facts li{margin:.15rem 0}.room-facts i{color:var(--purple);margin-right:.3rem}
.topbar .brand-logo{width:40px;height:40px}
.logo-edit{position:relative}
.room-card .cover .state{font-size:.85rem;line-height:1.2}


/* ===== ปุ่มบนหน้าหลัก (แถวเดียวกัน + แอนิเมชัน) ===== */
.hero-actions{display:flex;flex-wrap:wrap;gap:.5rem}
.hero-btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:.5rem;padding:.58rem .9rem;border-radius:14px;font-weight:500;font-size:.9rem;text-decoration:none;
  color:#fff;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.55);backdrop-filter:blur(4px);
  opacity:0;transform:translateY(14px);animation:heroIn .6s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:calc(var(--i,0) * 70ms + 120ms);
  transition:transform .25s,box-shadow .25s,background .25s}
.hero-btn i{font-size:1.1rem;transition:transform .35s}
.hero-btn::before{content:"";position:absolute;top:0;left:-70%;width:45%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-20deg);transition:left .6s}
.hero-btn:hover{color:#fff;transform:translateY(-4px) scale(1.03);box-shadow:0 12px 26px rgba(60,20,110,.35);background:rgba(255,255,255,.26)}
.hero-btn:hover::before{left:130%}
.hero-btn:hover i{transform:rotate(-12deg) scale(1.2)}
.hero-btn:active{transform:translateY(-1px) scale(.99)}
.hero-btn.prime{background:#fff;color:#a23fd0;border-color:#fff;box-shadow:0 8px 22px rgba(60,20,110,.28);animation:heroIn .6s cubic-bezier(.2,.8,.2,1) forwards,pulseGlow 2.6s ease-in-out 1.2s infinite}
.hero-btn.prime:hover{color:#8B2FC0;background:#fff}
.hero-btn.ext i{animation:floaty 3s ease-in-out infinite;animation-delay:calc(var(--i,0) * 200ms)}
.hero-actions .hero-btn:nth-child(1){--i:0}.hero-actions .hero-btn:nth-child(2){--i:1}.hero-actions .hero-btn:nth-child(3){--i:2}.hero-actions .hero-btn:nth-child(4){--i:3}.hero-actions .hero-btn:nth-child(5){--i:4}.hero-actions .hero-btn:nth-child(6){--i:5}.hero-actions .hero-btn:nth-child(n+7){--i:6}
@keyframes heroIn{to{opacity:1;transform:none}}
@keyframes pulseGlow{0%,100%{box-shadow:0 8px 22px rgba(60,20,110,.28)}50%{box-shadow:0 8px 30px rgba(255,255,255,.65)}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.hero-btn,.hero-btn.prime,.hero-btn.ext i{animation:none;opacity:1;transform:none}.hero-btn::before{display:none}}
@media (max-width:575.98px){.hero-actions{gap:.5rem}.hero-btn{flex:1 1 calc(50% - .5rem);justify-content:center;padding:.6rem .6rem;font-size:.88rem;text-align:center}.hero-btn.prime{flex-basis:100%}}

/* ===== ปุ่มสลับโหมด ===== */
.theme-btn{border-radius:12px;width:38px;height:36px;padding:0;display:inline-grid;place-items:center}
.theme-float{position:fixed;right:14px;bottom:14px;z-index:1500;width:44px;height:44px;border-radius:50%;background:var(--card);border:1px solid var(--line);box-shadow:0 6px 18px rgba(190,60,110,.25);color:var(--purple);display:grid;place-items:center;padding:0}

/* ===== เลือกห้องจากการ์ดตัวอย่าง ===== */
.room-pick{cursor:pointer;border:2px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card);height:100%;position:relative;transition:transform .2s,box-shadow .2s,border-color .2s}
.room-pick:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(224,74,127,.2)}
.room-pick .thumb{aspect-ratio:16/10;background:linear-gradient(135deg,var(--rc,#E04A7F),#FF8E7F);display:grid;place-items:center;color:rgba(255,255,255,.9);font-size:2rem;overflow:hidden}
.room-pick .thumb img{width:100%;height:100%;object-fit:cover}
.room-pick .info{padding:.45rem .6rem .55rem;line-height:1.25}
.room-pick .nm{font-weight:500;font-size:.88rem}
.room-pick .mt{font-size:.74rem;color:var(--muted)}
.room-pick.active{border-color:var(--purple);box-shadow:0 0 0 3px rgba(224,74,127,.25)}
.room-pick.active::after{content:"\F26A";font-family:'bootstrap-icons';position:absolute;top:.4rem;right:.4rem;width:1.7rem;height:1.7rem;border-radius:50%;background:var(--purple);color:#fff;display:grid;place-items:center;font-size:1rem}

/* ===== โหมดกลางคืน ===== */
[data-bs-theme=dark]{
  --ink:#fde8f0;--muted:#cfa7ba;--bg:#1a0f17;--card:#261520;--line:#4a2a3f;
  --soft:#33192a;--soft2:#3b1e31;--topbar:rgba(32,17,28,.9);--chip-fg:#ffd1e0;--th-fg:#ffd1e0;
  --bs-body-bg:#1a0f17;--bs-body-color:#fde8f0;--bs-border-color:#4a2a3f;--bs-secondary-color:#cfa7ba;
  color-scheme:dark;
}
[data-bs-theme=dark] a{color:#ff9fbd}[data-bs-theme=dark] a:hover{color:#ffc4d8}
[data-bs-theme=dark] .btn-primary,[data-bs-theme=dark] .btn-grad,[data-bs-theme=dark] .btn-pink,[data-bs-theme=dark] .hero-btn,[data-bs-theme=dark] .stat-card a{color:#fff}
[data-bs-theme=dark] .hero-btn.prime{color:#8B2FC0}
[data-bs-theme=dark] .btn-outline-primary{--bs-btn-color:#ff9fbd;--bs-btn-border-color:#E04A7F}
[data-bs-theme=dark] .bg-white{background:var(--card)!important}
[data-bs-theme=dark] .card,[data-bs-theme=dark] .list-group-item,[data-bs-theme=dark] .modal-content,[data-bs-theme=dark] .dropdown-menu{background:var(--card);color:var(--ink);border-color:var(--line)}
[data-bs-theme=dark] .form-control,[data-bs-theme=dark] .form-select,[data-bs-theme=dark] .input-group-text{background-color:#2d1824;border-color:#4d2b40;color:var(--ink)}
[data-bs-theme=dark] .form-control::placeholder{color:#b58aa0}
[data-bs-theme=dark] .form-control:focus,[data-bs-theme=dark] .form-select:focus{background-color:#35202c}
[data-bs-theme=dark] .btn-light{--bs-btn-bg:#3b1e31;--bs-btn-border-color:#4d2b40;--bs-btn-color:var(--ink);--bs-btn-hover-bg:#47263a;--bs-btn-hover-border-color:#5c334b;--bs-btn-hover-color:#fff}
[data-bs-theme=dark] .text-dark{color:var(--ink)!important}
[data-bs-theme=dark] .table{--bs-table-color:var(--ink);--bs-table-border-color:var(--line);--bs-table-hover-bg:rgba(240,102,143,.12)}
[data-bs-theme=dark] .login-body{background:radial-gradient(1200px 600px at 10% -10%,rgba(240,102,143,.25),transparent 60%),radial-gradient(900px 600px at 100% 0%,rgba(224,74,127,.3),transparent 55%),#1a0f17}
[data-bs-theme=dark] .login-card{background:rgba(38,21,32,.96);border-color:var(--line)}
[data-bs-theme=dark] .login-logo{background:#fff}
[data-bs-theme=dark] .loading-overlay{background:rgba(26,15,23,.72)}
[data-bs-theme=dark] .spinner-grad{border-color:#4d2b40;border-top-color:var(--pink);border-right-color:var(--purple)}
[data-bs-theme=dark] .timeline{border-left-color:#4d2b40}
[data-bs-theme=dark] .timeline li::before{border-color:var(--card);box-shadow:0 0 0 2px #4d2b40}
[data-bs-theme=dark] .img-thumb,[data-bs-theme=dark] .slot-bar{background:var(--soft2)}
[data-bs-theme=dark] .swal2-popup{background:var(--card)!important;color:var(--ink)!important}
[data-bs-theme=dark] .swal2-title,[data-bs-theme=dark] .swal2-html-container,[data-bs-theme=dark] .swal2-input-label{color:var(--ink)!important}
[data-bs-theme=dark] .swal2-textarea,[data-bs-theme=dark] .swal2-input{background:#2d1824!important;color:var(--ink)!important;border-color:#4d2b40!important}
[data-bs-theme=dark] .fc{--fc-page-bg-color:transparent;--fc-neutral-bg-color:#2d1824;--fc-border-color:#4a2a3f;--fc-today-bg-color:rgba(240,102,143,.16);--fc-non-business-color:rgba(14,6,12,.45);--fc-list-event-hover-bg-color:#33192a;color:var(--ink)}
[data-bs-theme=dark] .fc .fc-daygrid-day.fc-day-sat,[data-bs-theme=dark] .fc .fc-daygrid-day.fc-day-sun{background:rgba(14,6,12,.45)}
[data-bs-theme=dark] .fc .fc-bg-event.holiday{background:rgba(239,68,68,.22)}
[data-bs-theme=dark] .fc .fc-bg-event.holiday .fc-event-title{color:#fca5a5}
[data-bs-theme=dark] .fc-theme-standard .fc-scrollgrid,[data-bs-theme=dark] .fc-theme-standard td,[data-bs-theme=dark] .fc-theme-standard th{border-color:#4a2a3f}
[data-bs-theme=dark] .fc .fc-daygrid-day-number,[data-bs-theme=dark] .fc .fc-timegrid-slot-label-cushion{color:var(--ink)}
[data-bs-theme=dark] .fc .fc-day-other .fc-daygrid-day-number{opacity:.45}
[data-bs-theme=dark] .room-pick .thumb{color:#fff}
[data-bs-theme=dark] .alert-light{background:var(--soft);color:var(--ink);border-color:var(--line)!important}
[data-bs-theme=dark] .border,[data-bs-theme=dark] .border-top,[data-bs-theme=dark] .border-bottom{border-color:var(--line)!important}
[data-bs-theme=dark] .pub-hero{background:linear-gradient(135deg,#8e2352 0%,#b03a6c 45%,#8a3a9a 100%)}
[data-bs-theme=dark] .brand-logo{background:#fff}

/* ===== Responsive เสริม ===== */
.topbar .sys{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topbar .btn,.topbar .dropdown{flex:none}
@media (max-width:575.98px){
  .topbar{gap:.4rem;padding:.5rem .6rem}
  .topbar .brand-logo{display:none}
  .topbar .sys{font-size:.86rem}
  .topbar .dropdown .bi-chevron-down{display:none}
  .avatar{width:34px;height:34px}
  .content{padding:.8rem}
  .page-head h4{font-size:1.15rem}
  .pub-hero{padding:2rem 0 2.2rem}.pub-hero h1{font-size:1.5rem}.pub-hero .lead{font-size:1rem}
  .card-soft .card-header{padding:.75rem .9rem}
  .table td,.table th{font-size:.84rem}
  .pub-nav .navbar-nav{padding:.6rem 0;gap:.3rem}
  .pub-nav .btn{width:100%;margin:.15rem 0}
  .pub-nav .theme-btn{width:38px}
  .login-card{padding:1.5rem 1.2rem}
  .sticky-summary{position:static}
  .fc .fc-toolbar-chunk{display:flex;flex-wrap:wrap;justify-content:center;gap:.3rem}
}
@media (max-width:991.98px){.sticky-summary{position:static}}

/* กันองค์ประกอบตกแต่งบังปุ่มบนมือถือ */
.pub-hero>.container{position:relative;z-index:2}
.pub-hero::before,.pub-hero::after{pointer-events:none}


/* ===== ชมพูโอรส: ลวดลายหัวเฮดเดอร์ ===== */
.pub-hero{background:var(--grad);padding:3rem 0 4.2rem;isolation:isolate}
.pub-hero::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(520px 320px at 88% 8%,rgba(255,214,190,.5),transparent 65%),radial-gradient(420px 300px at 6% 100%,rgba(159,122,234,.45),transparent 65%)}
.pub-hero::before{-webkit-mask:none}
.pub-hero .container::before{content:"";position:absolute;inset:-3rem -2rem -4rem;z-index:-1;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 72 72'%3E%3Cg fill='none' stroke='white' stroke-width='1.3'%3E%3Ccircle cx='36' cy='36' r='6'/%3E%3Ccircle cx='36' cy='22' r='6'/%3E%3Ccircle cx='36' cy='50' r='6'/%3E%3Ccircle cx='22' cy='36' r='6'/%3E%3Ccircle cx='50' cy='36' r='6'/%3E%3C/g%3E%3Cg fill='white'%3E%3Ccircle cx='0' cy='0' r='2.2'/%3E%3Ccircle cx='72' cy='0' r='2.2'/%3E%3Ccircle cx='0' cy='72' r='2.2'/%3E%3Ccircle cx='72' cy='72' r='2.2'/%3E%3Ccircle cx='36' cy='36' r='1.8'/%3E%3C/g%3E%3C/svg%3E");background-size:72px 72px;opacity:.1;animation:drift 90s linear infinite}
.pub-hero::after{content:"";position:absolute;left:0;right:0;bottom:-1px;top:auto;width:auto;height:46px;border-radius:0;background:var(--bg);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 60' preserveAspectRatio='none'%3E%3Cpath d='M0 30 C 240 70 480 0 720 28 C 960 56 1200 6 1440 34 L1440 60 L0 60 Z' fill='black'/%3E%3C/svg%3E") bottom/100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 60' preserveAspectRatio='none'%3E%3Cpath d='M0 30 C 240 70 480 0 720 28 C 960 56 1200 6 1440 34 L1440 60 L0 60 Z' fill='black'/%3E%3C/svg%3E") bottom/100% 100% no-repeat;pointer-events:none}
.pub-hero-sm{padding:1.8rem 0 3rem}
@keyframes drift{from{background-position:0 0,0 0,0 0}to{background-position:0 0,0 0,720px 360px}}
.pub-hero .container::before{animation-name:drift2}
@keyframes drift2{from{background-position:0 0}to{background-position:720px 360px}}
.pub-hero h1{text-shadow:0 2px 14px rgba(110,20,60,.25)}
.pub-hero .bubbles{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.pub-hero .bubbles i{position:absolute;border-radius:50%;background:rgba(255,255,255,.16);animation:rise 14s ease-in infinite}
.pub-hero .bubbles i:nth-child(1){left:8%;width:26px;height:26px;animation-delay:0s}
.pub-hero .bubbles i:nth-child(2){left:30%;width:14px;height:14px;animation-delay:3s;animation-duration:11s}
.pub-hero .bubbles i:nth-child(3){left:62%;width:34px;height:34px;animation-delay:6s;animation-duration:17s}
.pub-hero .bubbles i:nth-child(4){left:80%;width:18px;height:18px;animation-delay:1.5s;animation-duration:12s}
.pub-hero .bubbles i:nth-child(5){left:92%;width:44px;height:44px;animation-delay:8s;animation-duration:19s}
@keyframes rise{0%{transform:translateY(110%) scale(.8);opacity:0}15%{opacity:1}100%{transform:translateY(-140%) scale(1.15);opacity:0}}
@media (prefers-reduced-motion:reduce){.pub-hero::before,.pub-hero .container::before,.pub-hero .bubbles i{animation:none}}

/* แถบและลวดลายบนหัวระบบหลังเข้าสู่ระบบ */
.topbar{position:sticky}
.topbar::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:linear-gradient(90deg,#F2709C,#E04A7F,#FF8E7F,#C655B0,#9F7AEA);background-size:200% 100%;animation:stripe 8s linear infinite}
@keyframes stripe{to{background-position:200% 0}}
.topbar::before{content:"";position:absolute;right:0;top:0;bottom:0;width:260px;pointer-events:none;opacity:.07;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 72 72'%3E%3Cg fill='none' stroke='%23E04A7F' stroke-width='1.3'%3E%3Ccircle cx='36' cy='36' r='6'/%3E%3Ccircle cx='36' cy='22' r='6'/%3E%3Ccircle cx='36' cy='50' r='6'/%3E%3Ccircle cx='22' cy='36' r='6'/%3E%3Ccircle cx='50' cy='36' r='6'/%3E%3C/g%3E%3Cg fill='%23E04A7F'%3E%3Ccircle cx='0' cy='0' r='2.2'/%3E%3Ccircle cx='72' cy='0' r='2.2'/%3E%3Ccircle cx='0' cy='72' r='2.2'/%3E%3Ccircle cx='72' cy='72' r='2.2'/%3E%3Ccircle cx='36' cy='36' r='1.8'/%3E%3C/g%3E%3C/svg%3E");background-size:56px 56px;-webkit-mask:linear-gradient(90deg,transparent,#000);mask:linear-gradient(90deg,transparent,#000)}
.sidebar .brand{position:relative;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 72 72'%3E%3Cg fill='none' stroke='white' stroke-width='1.3' opacity='.35'%3E%3Ccircle cx='36' cy='36' r='6'/%3E%3Ccircle cx='36' cy='22' r='6'/%3E%3Ccircle cx='36' cy='50' r='6'/%3E%3Ccircle cx='22' cy='36' r='6'/%3E%3Ccircle cx='50' cy='36' r='6'/%3E%3C/g%3E%3Cg fill='white'%3E%3Ccircle cx='0' cy='0' r='2.2'/%3E%3Ccircle cx='72' cy='0' r='2.2'/%3E%3Ccircle cx='0' cy='72' r='2.2'/%3E%3Ccircle cx='72' cy='72' r='2.2'/%3E%3Ccircle cx='36' cy='36' r='1.8'/%3E%3C/g%3E%3C/svg%3E");background-size:56px 56px}
.pub-nav{position:sticky;border-bottom:0;box-shadow:0 2px 14px rgba(190,60,110,.08)}
.pub-nav::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,#F2709C,#E04A7F,#FF8E7F,#C655B0,#9F7AEA);background-size:200% 100%;animation:stripe 8s linear infinite}
.page-head{position:relative}
.page-head h4{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;display:inline-block}
.login-body::before{content:"";position:fixed;inset:0;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 72 72'%3E%3Cg fill='none' stroke='%23E04A7F' stroke-width='1.3'%3E%3Ccircle cx='36' cy='36' r='6'/%3E%3Ccircle cx='36' cy='22' r='6'/%3E%3Ccircle cx='36' cy='50' r='6'/%3E%3Ccircle cx='22' cy='36' r='6'/%3E%3Ccircle cx='50' cy='36' r='6'/%3E%3C/g%3E%3Cg fill='%23E04A7F'%3E%3Ccircle cx='0' cy='0' r='2.2'/%3E%3Ccircle cx='72' cy='0' r='2.2'/%3E%3Ccircle cx='0' cy='72' r='2.2'/%3E%3Ccircle cx='72' cy='72' r='2.2'/%3E%3Ccircle cx='36' cy='36' r='1.8'/%3E%3C/g%3E%3C/svg%3E");background-size:72px 72px;opacity:.05}
[data-bs-theme=dark] .topbar::before{opacity:.12;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 72 72'%3E%3Cg fill='none' stroke='white' stroke-width='1.3'%3E%3Ccircle cx='36' cy='36' r='6'/%3E%3Ccircle cx='36' cy='22' r='6'/%3E%3Ccircle cx='36' cy='50' r='6'/%3E%3Ccircle cx='22' cy='36' r='6'/%3E%3Ccircle cx='50' cy='36' r='6'/%3E%3C/g%3E%3Cg fill='white'%3E%3Ccircle cx='0' cy='0' r='2.2'/%3E%3Ccircle cx='72' cy='0' r='2.2'/%3E%3Ccircle cx='0' cy='72' r='2.2'/%3E%3Ccircle cx='72' cy='72' r='2.2'/%3E%3Ccircle cx='36' cy='36' r='1.8'/%3E%3C/g%3E%3C/svg%3E")}
[data-bs-theme=dark] .page-head h4{background:linear-gradient(135deg,#ffb3cb,#ff8fb1 60%,#e2a6ff);-webkit-background-clip:text;background-clip:text}
[data-bs-theme=dark] .pub-hero::after{background:var(--bg)}

/* ===== ข่าวประชาสัมพันธ์ (pop up หน้าแรก) ===== */
.news-pill{display:inline-flex;align-items:center;gap:.4rem;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.55);color:#fff;border-radius:999px;padding:.25rem .85rem;font-size:.85rem;text-decoration:none;backdrop-filter:blur(4px)}
.news-pill:hover{background:rgba(255,255,255,.34);color:#fff}
.news-pill i{animation:ring 2.4s ease-in-out infinite;transform-origin:50% 10%}
@keyframes ring{0%,60%,100%{transform:rotate(0)}65%{transform:rotate(-14deg)}75%{transform:rotate(12deg)}85%{transform:rotate(-8deg)}92%{transform:rotate(5deg)}}
.news-modal{border-radius:22px;overflow:hidden;border:0;box-shadow:0 30px 80px rgba(110,20,60,.4)}
.news-head{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1.1rem;color:#fff;font-weight:600;background:var(--grad);position:relative}
.news-head::after{content:"";position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 72 72'%3E%3Cg fill='none' stroke='white' stroke-width='1.3'%3E%3Ccircle cx='36' cy='36' r='6'/%3E%3Ccircle cx='36' cy='22' r='6'/%3E%3Ccircle cx='36' cy='50' r='6'/%3E%3Ccircle cx='22' cy='36' r='6'/%3E%3Ccircle cx='50' cy='36' r='6'/%3E%3C/g%3E%3Cg fill='white'%3E%3Ccircle cx='0' cy='0' r='2.2'/%3E%3Ccircle cx='72' cy='0' r='2.2'/%3E%3Ccircle cx='0' cy='72' r='2.2'/%3E%3Ccircle cx='72' cy='72' r='2.2'/%3E%3Ccircle cx='36' cy='36' r='1.8'/%3E%3C/g%3E%3C/svg%3E");background-size:56px 56px;opacity:.14;pointer-events:none}
.news-head>*{position:relative;z-index:1}
.news-img-wrap{background:var(--soft);display:grid;place-items:center;max-height:62vh;overflow:hidden}
.news-img-wrap img{max-width:100%;max-height:62vh;object-fit:contain;display:block}
.news-body{padding:1.1rem 1.3rem 2.2rem}
.news-foot{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.7rem 1.1rem;border-top:1px solid var(--line);background:var(--card)}
.news-arrow{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.9);color:var(--purple);display:grid;place-items:center;box-shadow:0 4px 14px rgba(0,0,0,.25)}
.carousel-control-prev,.carousel-control-next{width:14%;opacity:1}
.news-dots{margin-bottom:.1rem}.news-dots button{background-color:var(--purple)!important;width:9px!important;height:9px!important;border-radius:50%;border:0!important}
.modal.fade .news-modal{transform:scale(.92) translateY(18px);transition:transform .35s cubic-bezier(.2,.9,.3,1.2),opacity .25s}
.modal.show .news-modal{transform:none}
@media (max-width:575.98px){.news-body{padding:1rem 1rem 2rem}.news-img-wrap,.news-img-wrap img{max-height:48vh}}

/* สีหลักให้เป็นโทนชมพูโอรสทั้งระบบ (แทนสีน้ำเงินของ Bootstrap) */
.text-primary{color:var(--purple)!important}
.bg-primary{background-color:var(--purple)!important}
.border-primary{border-color:var(--purple)!important}
.bg-primary-subtle{background-color:var(--soft2)!important}.text-primary-emphasis{color:var(--chip-fg)!important}.border-primary-subtle{border-color:var(--line)!important}
.btn-outline-primary:hover,.btn-outline-primary:active{color:#fff}
.nav-pills .nav-link.active{background:var(--purple)}
.progress-bar{background:var(--grad)}

/* แถบแนะนำเปลี่ยนรหัสผ่าน */
.pw-banner{background:linear-gradient(100deg,#fff0f5,#ffe3ec);border:1px solid #fbc7d9;border-left:5px solid var(--purple);border-radius:14px;padding:.6rem .9rem;color:#8a2b55;margin-bottom:1rem}
.btn-pw{background:var(--grad);color:#fff!important;border:0;font-weight:500;border-radius:10px;padding:.4rem .9rem;box-shadow:0 4px 12px rgba(224,74,127,.3)}
.btn-pw:hover{color:#fff!important;filter:brightness(1.08);transform:translateY(-1px)}
[data-bs-theme=dark] .pw-banner{background:linear-gradient(100deg,#34182a,#3d1c30);border-color:#6b2f4d;color:#ffd1e0}

/* ===== แอนิเมชันหน้าแรก ===== */
.rv{opacity:0;transform:translateY(28px) scale(.98);transition:opacity .7s cubic-bezier(.2,.8,.2,1),transform .7s cubic-bezier(.2,.8,.2,1);transition-delay:var(--d,0ms)}
.rv.in{opacity:1;transform:none}
.hero-title{background:linear-gradient(100deg,#fff 0%,#ffe3ec 35%,#fff 55%,#ffd5c8 80%,#fff 100%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent!important;text-shadow:none!important;
  animation:titleIn .9s cubic-bezier(.2,.8,.2,1) both,shine 7s ease-in-out 1s infinite;filter:drop-shadow(0 2px 10px rgba(110,20,60,.28))}
.hero-sub{animation:titleIn .9s cubic-bezier(.2,.8,.2,1) .15s both}
.pub-hero .news-pill,.pub-hero .small{animation:titleIn .8s cubic-bezier(.2,.8,.2,1) .7s both}
@keyframes titleIn{from{opacity:0;transform:translateY(22px);letter-spacing:.06em}to{opacity:1;transform:none;letter-spacing:normal}}
@keyframes shine{0%,100%{background-position:100% 0}50%{background-position:0 0}}
.pub-nav{animation:navIn .6s cubic-bezier(.2,.8,.2,1) both}
@keyframes navIn{from{transform:translateY(-100%);opacity:0}to{transform:none;opacity:1}}
.hero-floaters{position:absolute;inset:0;z-index:0;pointer-events:none}
.hero-floaters i{position:absolute;color:rgba(255,255,255,.28);filter:drop-shadow(0 6px 14px rgba(110,20,60,.25));animation:bob 6s ease-in-out infinite}
.hero-floaters i:nth-child(1){right:14%;top:18%;font-size:4.6rem;animation-delay:0s}
.hero-floaters i:nth-child(2){right:30%;top:46%;font-size:3rem;animation-delay:1.2s;color:rgba(255,255,255,.2)}
.hero-floaters i:nth-child(3){right:7%;top:56%;font-size:3.4rem;animation-delay:2.2s}
.hero-floaters i:nth-child(4){right:24%;top:12%;font-size:2.2rem;animation-delay:3s;color:rgba(255,255,255,.22)}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-16px) rotate(5deg)}}
.stat-strip{position:relative;z-index:3;margin-top:-2.4rem}
.mini-stat{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:.9rem 1rem;display:flex;flex-direction:column;align-items:center;text-align:center;box-shadow:0 12px 30px rgba(190,60,110,.14);position:relative;overflow:hidden;transition:transform .25s,box-shadow .25s}
.mini-stat:hover{transform:translateY(-5px);box-shadow:0 18px 38px rgba(190,60,110,.22)}
.mini-stat::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--grad)}
.mini-stat i{font-size:1.5rem;color:var(--purple);margin-bottom:.1rem;animation:bob 5s ease-in-out infinite}
.mini-stat b{font-size:1.9rem;font-weight:600;line-height:1.1;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.mini-stat span{font-size:.8rem;color:var(--muted)}
@media (max-width:575.98px){.stat-strip{margin-top:-1.8rem}.mini-stat{padding:.65rem .4rem}.mini-stat b{font-size:1.5rem}.mini-stat span{font-size:.7rem}.mini-stat i{font-size:1.2rem}}
/* แถวตารางทยอยปรากฏ */
.rv.in .table tbody tr{animation:rowIn .5s cubic-bezier(.2,.8,.2,1) both}
.rv.in .table tbody tr:nth-child(1){animation-delay:.1s}.rv.in .table tbody tr:nth-child(2){animation-delay:.18s}.rv.in .table tbody tr:nth-child(3){animation-delay:.26s}.rv.in .table tbody tr:nth-child(4){animation-delay:.34s}.rv.in .table tbody tr:nth-child(n+5){animation-delay:.42s}
@keyframes rowIn{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}
.table tbody tr{transition:background .2s}
/* ปฏิทิน: อีเวนต์เด้งเข้า */
.fc .fc-event{animation:evPop .45s cubic-bezier(.2,.9,.3,1.3) both}
@keyframes evPop{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}
.fc .fc-event:hover{transform:translateY(-1px) scale(1.02);box-shadow:0 4px 12px rgba(190,60,110,.3);transition:transform .15s,box-shadow .15s}
.fc .fc-day-today{animation:todayGlow 3s ease-in-out infinite}
@keyframes todayGlow{0%,100%{box-shadow:inset 0 0 0 1px rgba(224,74,127,.25)}50%{box-shadow:inset 0 0 0 2px rgba(224,74,127,.55)}}
/* สถานะกำลังใช้งาน กะพริบเบา ๆ */
.badge-status .bi-x-circle-fill,.badge-status .bi-hourglass-split{animation:pulseDot 2s ease-in-out infinite}
@keyframes pulseDot{0%,100%{opacity:1}50%{opacity:.45}}
/* การ์ดห้อง / ปุ่ม */
.btn{transition:transform .2s,box-shadow .2s,filter .2s}
.btn-grad:hover,.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(224,74,127,.32)}
.btn-grad:active,.btn-primary:active{transform:translateY(0)}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}.hero-title,.hero-sub,.pub-nav,.hero-floaters i,.mini-stat i,.fc .fc-event,.fc .fc-day-today,.rv.in .table tbody tr,.pub-hero .news-pill,.pub-hero .small{animation:none!important}.hero-title{color:#fff!important;-webkit-text-fill-color:#fff}}
.mini-stat{padding-top:1.3rem}
