.sk{position:relative;overflow:hidden;background:#E9EFF5;border-radius:8px}
.sk::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);animation:tsa-sk-shimmer 1.3s ease-in-out infinite}
@keyframes tsa-sk-shimmer{to{transform:translateX(100%)}}
.sk-line{display:block;height:12px;margin-top:10px}.sk-title{display:block;height:20px;margin-top:12px}.sk-chip{display:inline-block;width:110px;height:26px;border-radius:999px}.sk-btn{display:inline-block;width:120px;height:44px;border-radius:999px}.sk-img{display:block;border-radius:0}.sk-wrap{pointer-events:none}
.tsa-sk-layer{position:absolute;inset:0;z-index:4;overflow:hidden;background:var(--tsa-sk-paper,#fff);border-radius:inherit;pointer-events:none}
.tsa-sk-layer>.sk-wrap{height:100%;width:100%}.tsa-sk-shape{height:100%;min-height:100%;width:100%}
.tsa-sk-lines{display:grid;align-content:start;gap:12px;padding:20px}.tsa-sk-lines .sk{margin:0;min-height:12px}.tsa-sk-lines .sk:nth-child(3n){width:65%}
.tsa-sk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:16px;height:100%}
.tsa-sk-card{overflow:hidden;border:1px solid #E3EAF1;border-radius:20px;min-width:0}.tsa-sk-card>.sk-img{height:150px}.tsa-sk-card>.tsa-sk-lines{padding:16px}
.tsa-sk-course-feature{display:grid;grid-template-columns:1fr 1.15fr;height:100%;min-height:320px;border-radius:24px;overflow:hidden}.tsa-sk-course-feature>.sk-img{height:100%}
.sk-slow,.sk-error{padding:12px 16px;border-radius:14px;background:#FFF8E6;color:#5C4200;font:400 14px/1.7 "Noto Sans Thai",sans-serif}
.sk-slow{position:absolute;bottom:12px;left:12px;right:12px;z-index:6;margin:0}.sk-error{background:#FDECEC;color:#7A1C1C}
.sk-slow button,.sk-error button{min-height:36px;margin-left:8px;padding:0 4px;border:0;background:none;color:#0F5FD6;font:500 14px/1.5 "Noto Sans Thai",sans-serif;cursor:pointer}
.sk-row td{padding:12px 14px}.sk-row .sk{display:block;height:12px}
.tsa-sk-table{position:absolute;z-index:5;pointer-events:none;background:var(--tsa-sk-paper,#fff);overflow:hidden}.tsa-sk-table-row{display:grid;align-items:center;border-bottom:1px solid #E3EAF1;padding:0 14px;gap:24px}.tsa-sk-table-row>.sk{height:12px}
.tsa-load-progress{position:fixed;inset:0 auto auto 0;height:3px;width:70%;z-index:2147483000;background:#0F5FD6;transform-origin:left;animation:tsa-load-progress 12s ease-out forwards;pointer-events:none}
@keyframes tsa-load-progress{from{transform:scaleX(.08)}to{transform:scaleX(1.35)}}
.tsa-sk-sr,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
img.tsa-image-ready{animation:tsa-image-in .2s ease-out}@keyframes tsa-image-in{from{opacity:0}to{opacity:1}}
.tsa-image-fallback{position:absolute;inset:0;display:grid;place-items:center;background:#E9EFF5;color:#7190b0;font-size:32px}
[data-theme=dark] .tsa-sk-layer,.dark .tsa-sk-layer{--tsa-sk-paper:#111e30}[data-theme=dark] .sk,.dark .sk{background:#1C2A3D}[data-theme=dark] .sk::after,.dark .sk::after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent)}
@media(max-width:760px){.tsa-sk-course-feature{grid-template-columns:1fr;grid-template-rows:180px 1fr}.tsa-sk-course-feature>.sk-img{height:180px}}
@media(prefers-reduced-motion:reduce){.sk::after,.tsa-load-progress,img.tsa-image-ready{animation:none}}
/* Spinner ในปุ่มที่กดแล้วต้องรอ (ส่งฟอร์ม / โหลดข้อมูล) — ใช้ผ่าน TSA.busy() */
.tsa-spin{display:inline-block;flex:none;width:1em;height:1em;margin-inline-end:.45em;vertical-align:-.15em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:tsa-spin .7s linear infinite}
.tsa-spin.tsa-action-spinner,.tsa-spin.tsa-dlg-spin{box-sizing:border-box;width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;animation:tsa-spin .7s linear infinite}
@keyframes tsa-spin{to{transform:rotate(360deg)}}
[data-tsa-busy]{cursor:progress}a[data-tsa-busy]{pointer-events:none}
@media(prefers-reduced-motion:reduce){.tsa-spin,.tsa-spin.tsa-action-spinner,.tsa-spin.tsa-dlg-spin{animation:none;border-style:dotted}}
@media(prefers-reduced-motion:reduce){.tsa-ticker-active [data-ticker-copy]{display:none}}
