/* Kanban University "Pull" loader 1.0.0
   A "Loading" ticket sits in In progress and ages: one dot per tick (purple -> amber -> red), then starts over. */
  .ku-loader{--k:1;display:inline-flex;flex-direction:column;align-items:center;gap:.9rem;font-family:Inter,Arial,sans-serif}
  .ku-loader-board{position:relative;width:calc(252px*var(--k));height:calc(150px*var(--k));border-radius:calc(18px*var(--k));background:#ded9ed;padding:calc(10px*var(--k));box-shadow:0 14px 30px rgba(54,38,81,.10)}
  .ku-loader-cols{position:absolute;inset:calc(10px*var(--k));display:grid;grid-template-columns:repeat(3,1fr);gap:calc(6px*var(--k))}
  .ku-loader-cols>div{border-radius:calc(10px*var(--k));background:rgba(255,255,255,.55);padding-top:calc(8px*var(--k));text-align:center;color:#4e2d7a;font-size:calc(7.5px*var(--k));font-weight:800;letter-spacing:.08em;text-transform:uppercase;line-height:1}
  .ku-loader-cols>div:nth-child(2){background:rgba(255,255,255,.78);box-shadow:inset 0 0 0 1.5px rgba(113,81,165,.22)}
  .ku-loader-cols>div{position:relative}
  .ku-loader-note{position:absolute;left:calc(5px*var(--k));right:calc(5px*var(--k));height:calc(24px*var(--k));border-radius:calc(7px*var(--k));box-shadow:0 6px 14px rgba(78,45,122,.16),0 1px 3px rgba(78,45,122,.10)}
  .ku-loader-note:after{content:"";position:absolute;left:calc(9px*var(--k));top:calc(10px*var(--k));width:calc(30px*var(--k));height:calc(4px*var(--k));border-radius:2px;background:rgba(78,45,122,.22)}
  .ku-loader-todo1{top:calc(22px*var(--k));background:#cdbdea;transform:rotate(-2deg)}
  .ku-loader-todo2{top:calc(52px*var(--k));background:#fde68a;transform:rotate(1.5deg)}
  .ku-loader-done1{top:calc(86px*var(--k));background:#cdbdea;transform:rotate(2deg);opacity:.75}
  .ku-loader-ticket{position:absolute;z-index:2;left:calc(3px*var(--k));right:calc(3px*var(--k));top:calc(22px*var(--k));height:calc(46px*var(--k));border-radius:calc(9px*var(--k));background:#fff;padding:calc(10px*var(--k)) calc(8px*var(--k)) 0;overflow:hidden;text-align:left;text-transform:none;letter-spacing:0;box-shadow:0 8px 18px rgba(78,45,122,.18),0 1px 3px rgba(78,45,122,.12);transform:rotate(-1.5deg);transition:transform .7s cubic-bezier(.65,0,.35,1),opacity .35s ease}
  .ku-loader-ticket:before{content:"";position:absolute;left:0;right:0;top:0;height:calc(4px*var(--k));background:#ffc61a}
  .ku-loader-ticket b{display:block;color:#4e2d7a;font-size:calc(10px*var(--k));font-weight:800;letter-spacing:-.01em;line-height:1}
  .ku-loader-age{position:absolute;left:calc(8px*var(--k));bottom:calc(8px*var(--k));display:flex;gap:calc(3.5px*var(--k))}
  .ku-loader-age i{width:calc(7px*var(--k));height:calc(7px*var(--k));border-radius:50%;background:rgba(78,45,122,.12);transform:scale(.6);transition:transform .25s ease,background .25s ease}
  .ku-loader-age i.on{transform:scale(1)}
  .ku-loader-age i.on:nth-child(1),.ku-loader-age i.on:nth-child(2){background:#7151a5}
  .ku-loader-age i.on:nth-child(3),.ku-loader-age i.on:nth-child(4){background:#f0a01c}
  .ku-loader-age i.on:nth-child(5){background:#d9532b}
  .ku-loader-text{color:#4e2d7a;font-size:calc(11px*var(--k));font-weight:800;letter-spacing:.12em;text-transform:uppercase}
  @media (prefers-reduced-motion:reduce){.ku-loader-ticket,.ku-loader-age i{transition:none}}

/* Full-page overlay */
.ku-loader-overlay{position:fixed;inset:0;z-index:2147483000;display:grid;place-items:center;background:rgba(251,251,251,.86);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;transition:opacity .25s ease}
.ku-loader-overlay.is-on{opacity:1}
.ku-loader-overlay .ku-loader{font-family:Inter,"Plus Jakarta Sans",Arial,sans-serif}
