/* ==========================================
   ULTRAKIT ICON BOX — 12 skins
   ========================================== */
.ultrakit-ibx { --a: #6c5ce7; --b: #00cec9; --card: #fff; --cols: 3; --cols-t: 2; --cols-m: 1; --gap: 24px; --r: 22px; --pad: 32px; --isz: 28px; --ts: 21px; width: 100%; box-sizing: border-box; font-family: inherit; }
.ultrakit-ibx *, .ultrakit-ibx *::before, .ultrakit-ibx *::after { box-sizing: border-box; }
.ibx-grid { display: grid; grid-template-columns: repeat(var(--cols), minmax(0, 1fr)); gap: var(--gap); }

.ibx-item { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 20px; padding: var(--pad); border-radius: var(--r); background: var(--card); text-decoration: none !important; color: inherit; overflow: hidden; isolation: isolate; transition: transform .45s cubic-bezier(.22,.9,.3,1), box-shadow .45s ease, border-color .3s ease, background .35s ease, color .3s ease; }
.ibx-glow { position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: 0; transition: opacity .4s ease; }

/* icon */
.ibx-icon { position: relative; flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: calc(var(--isz) * 2.2); height: calc(var(--isz) * 2.2); color: var(--a); background: color-mix(in srgb, var(--a) 12%, transparent); border-radius: calc(var(--isz) * .7); transition: background .35s ease, color .35s ease, box-shadow .35s ease, transform .4s cubic-bezier(.34,1.56,.64,1); }
.ibx-icon .uk-ico { width: var(--isz); height: var(--isz); display: block; transition: transform .45s cubic-bezier(.34,1.56,.64,1); }
.ibx-icon img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; display: block; }
.ibx-glyph { font-size: calc(var(--isz) * 1.1); line-height: 1; font-weight: 800; }
.ibx-sh-circle .ibx-icon { border-radius: 50%; }
.ibx-sh-squircle .ibx-icon { border-radius: 34%; }
.ibx-sh-hex .ibx-icon { border-radius: 0; clip-path: polygon(25% 5%, 75% 5%, 100% 50%, 75% 95%, 25% 95%, 0 50%); }
.ibx-sh-diamond .ibx-icon { border-radius: 0; clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); }
.ibx-sh-none .ibx-icon { background: none !important; box-shadow: none !important; width: auto; height: auto; border-radius: 0; clip-path: none; }
.ibx-ia-pop .ibx-item:hover .uk-ico { transform: scale(1.18) rotate(-6deg); }
.ibx-ia-rotate .ibx-item:hover .uk-ico { transform: rotate(360deg) scale(1.08); transition-duration: .8s; }
.ibx-ia-bounce .ibx-item:hover .uk-ico { animation: ibxBounce .7s ease; }
@keyframes ibxBounce { 0%, 100% { transform: translateY(0); } 30% { transform: translateY(-8px); } 60% { transform: translateY(2px); } }

/* body */
.ibx-body { display: block; min-width: 0; }
.ibx-title { margin: 0 0 8px; font-size: var(--ts); font-weight: 800; line-height: 1.25; letter-spacing: -.02em; color: var(--ink, var(--skin-ink, #14142b)); transition: color .3s; }
.ibx-text { margin: 0; font-size: 15.5px; line-height: 1.72; color: var(--mut, var(--skin-mut, #5f5f7a)); transition: color .3s; }
.ibx-badge { display: inline-flex; align-items: center; margin-bottom: 10px; padding: 4px 12px; border-radius: 30px; background: linear-gradient(120deg, var(--a), var(--b)); color: #fff; font-size: 11.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.ibx-more { display: inline-flex; align-items: center; gap: 6px; margin-top: 18px; font-size: 14.5px; font-weight: 700; color: var(--a); transition: gap .3s, color .3s; }
.ibx-more svg { transition: transform .3s; }
.ibx-item:hover .ibx-more { gap: 10px; }

/* positions & alignment */
.ibx-pos-left .ibx-item { flex-direction: row; align-items: flex-start; }
.ibx-pos-right .ibx-item { flex-direction: row-reverse; align-items: flex-start; text-align: right; }
.ibx-pos-inline .ibx-item { display: grid; grid-template-columns: auto 1fr; column-gap: 16px; row-gap: 12px; align-items: center; }
.ibx-pos-inline .ibx-body { display: contents; }
.ibx-pos-inline .ibx-icon { grid-row: 1; grid-column: 1; }
.ibx-pos-inline .ibx-title { grid-row: 1; grid-column: 2; margin: 0; }
.ibx-pos-inline .ibx-text, .ibx-pos-inline .ibx-more { grid-column: 1 / -1; }
.ibx-pos-inline .ibx-badge { grid-column: 1 / -1; grid-row: 0; order: -1; justify-self: start; margin: 0; }
.ibx-pos-inline .ibx-more { margin-top: 4px; }
.ibx-al-center .ibx-item { text-align: center; }
.ibx-al-center.ibx-pos-top .ibx-item { align-items: center; }
.ibx-al-right .ibx-item { text-align: right; }
.ibx-al-right.ibx-pos-top .ibx-item { align-items: flex-end; }
.ibx-al-center.ibx-pos-inline .ibx-item { justify-items: center; }

/* hover lift */
.ibx-h-lift .ibx-item:hover { transform: translateY(-9px); }
.ibx-h-tilt .ibx-item { transform-style: preserve-3d; will-change: transform; }

/* reveal */
.ibx-reveal .ibx-item:not(.is-in) { opacity: 0; }
.ibx-reveal .ibx-item.is-in { animation: ibxIn .8s cubic-bezier(.22,.9,.3,1) backwards; animation-delay: calc(var(--i, 0) * 85ms); }
@keyframes ibxIn { from { opacity: 0; transform: translateY(34px); } }

/* ---------- 1 · classic ---------- */
.ibx-s-classic .ibx-item { border: 1px solid rgba(20,20,43,.05); box-shadow: 0 1px 2px rgba(20,20,43,.04), 0 16px 36px -16px rgba(20,20,43,.16); }
.ibx-s-classic .ibx-item:hover { box-shadow: 0 2px 4px rgba(20,20,43,.05), 0 34px 60px -22px color-mix(in srgb, var(--a) 40%, rgba(20,20,43,.3)); border-color: color-mix(in srgb, var(--a) 22%, transparent); }
.ibx-s-classic .ibx-item:hover .ibx-icon { background: linear-gradient(135deg, var(--a), var(--b)); color: #fff; box-shadow: 0 16px 30px -10px color-mix(in srgb, var(--a) 60%, transparent); }

/* ---------- 2 · gradient tile ---------- */
.ibx-s-gradient .ibx-item { border: 1px solid rgba(20,20,43,.05); box-shadow: 0 16px 36px -18px rgba(20,20,43,.16); }
.ibx-s-gradient .ibx-icon { background: linear-gradient(135deg, var(--a), var(--b)); color: #fff; box-shadow: 0 16px 30px -12px color-mix(in srgb, var(--a) 65%, transparent); }
.ibx-s-gradient .ibx-item:hover { box-shadow: 0 34px 60px -24px color-mix(in srgb, var(--a) 45%, rgba(20,20,43,.3)); }

/* ---------- 3 · outline ---------- */
.ibx-s-outline .ibx-item { background: transparent; border: 1.5px solid rgba(20,20,43,.14); }
.ibx-s-outline .ibx-icon { background: transparent; border: 1.5px solid color-mix(in srgb, var(--a) 45%, transparent); }
.ibx-s-outline .ibx-item:hover { border-color: var(--a); background: color-mix(in srgb, var(--a) 5%, transparent); }
.ibx-s-outline .ibx-item:hover .ibx-icon { background: var(--a); color: #fff; border-color: var(--a); }

/* ---------- 4 · filled ---------- */
.ibx-s-filled { --skin-ink: #fff; --skin-mut: rgba(255,255,255,.84); }
.ibx-s-filled .ibx-item { background: linear-gradient(135deg, var(--a), var(--b)); box-shadow: 0 26px 50px -24px color-mix(in srgb, var(--a) 70%, transparent); }
.ibx-s-filled .ibx-icon { background: rgba(255,255,255,.2); color: #fff; }
.ibx-s-filled .ibx-more { color: #fff; }
.ibx-s-filled .ibx-badge { background: rgba(255,255,255,.22); }
.ibx-s-filled .ibx-item:hover .ibx-icon { background: #fff; color: var(--a); }

/* ---------- 5 · glass ---------- */
.ibx-s-glass { --skin-ink: #fff; --skin-mut: rgba(255,255,255,.8); }
.ibx-s-glass .ibx-item { background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.3); -webkit-backdrop-filter: blur(18px) saturate(1.5); backdrop-filter: blur(18px) saturate(1.5); box-shadow: 0 24px 50px -24px rgba(0,0,0,.4); }
.ibx-s-glass .ibx-icon { background: rgba(255,255,255,.2); color: #fff; }
.ibx-s-glass .ibx-more { color: #fff; }
.ibx-s-glass .ibx-badge { background: rgba(255,255,255,.25); }
.ibx-s-glass .ibx-item:hover { background: rgba(255,255,255,.2); }

/* ---------- 6 · dark glow ---------- */
.ibx-s-dark { --skin-ink: #fff; --skin-mut: #b4b4d0; }
.ibx-s-dark .ibx-item { background: linear-gradient(160deg, #1c1c3b, #101026); border: 1px solid rgba(255,255,255,.08); box-shadow: 0 30px 60px -30px rgba(0,0,0,.6); }
.ibx-s-dark .ibx-icon { color: var(--b); background: color-mix(in srgb, var(--a) 18%, transparent); box-shadow: 0 0 34px -4px color-mix(in srgb, var(--a) 60%, transparent); }
.ibx-s-dark .ibx-item:hover { border-color: color-mix(in srgb, var(--a) 60%, transparent); box-shadow: 0 30px 70px -26px color-mix(in srgb, var(--a) 60%, transparent); }
.ibx-s-dark .ibx-item:hover .ibx-icon { background: linear-gradient(135deg, var(--a), var(--b)); color: #fff; }
.ibx-s-dark .ibx-more { color: var(--b); }

/* ---------- 7 · minimal ---------- */
.ibx-s-minimal .ibx-item { background: none; border-radius: 0; padding: calc(var(--pad) * .9) 0 0; border-top: 2px solid rgba(20,20,43,.1); box-shadow: none; overflow: visible; }
.ibx-s-minimal .ibx-item::before { content: ""; position: absolute; left: 0; top: -2px; width: 52px; height: 2px; background: linear-gradient(90deg, var(--a), var(--b)); transition: width .6s cubic-bezier(.22,.9,.3,1); }
.ibx-s-minimal .ibx-item:hover::before { width: 100%; }
.ibx-s-minimal .ibx-icon { background: none; width: auto; height: auto; border-radius: 0; }
.ibx-s-minimal.ibx-h-lift .ibx-item:hover { transform: translateY(-4px); }

/* ---------- 8 · numbered ---------- */
.ibx-s-numbered .ibx-item { border: 1px solid rgba(20,20,43,.05); box-shadow: 0 16px 36px -18px rgba(20,20,43,.16); }
.ibx-num { position: absolute; right: 22px; top: 12px; z-index: -1; font-size: 84px; line-height: 1; font-weight: 900; letter-spacing: -.06em; color: transparent; -webkit-text-stroke: 2px color-mix(in srgb, var(--a) 26%, transparent); transition: -webkit-text-stroke-color .4s, color .4s, transform .5s cubic-bezier(.22,.9,.3,1); }
.ibx-s-numbered .ibx-item:hover .ibx-num { color: color-mix(in srgb, var(--a) 12%, transparent); -webkit-text-stroke-color: var(--a); transform: translateY(6px) scale(1.06); }
.ibx-s-numbered .ibx-item:hover { box-shadow: 0 34px 60px -24px color-mix(in srgb, var(--a) 40%, rgba(20,20,43,.3)); }
.ibx-s-numbered .ibx-icon { background: linear-gradient(135deg, var(--a), var(--b)); color: #fff; }

/* ---------- 9 · spotlight ---------- */
.ibx-s-spotlight { --skin-ink: #fff; --skin-mut: #b4b4d0; }
.ibx-s-spotlight .ibx-item { background: #12122b; border: 1px solid rgba(255,255,255,.08); }
.ibx-s-spotlight .ibx-glow { opacity: 0; background: radial-gradient(360px circle at var(--mx, 50%) var(--my, 0%), color-mix(in srgb, var(--a) 45%, transparent), transparent 62%); }
.ibx-s-spotlight .ibx-item:hover .ibx-glow { opacity: 1; }
.ibx-s-spotlight .ibx-item::after { content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit; padding: 1px; background: radial-gradient(280px circle at var(--mx, 50%) var(--my, 0%), color-mix(in srgb, var(--b) 90%, #fff), transparent 60%); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; opacity: 0; transition: opacity .4s; }
.ibx-s-spotlight .ibx-item:hover::after { opacity: 1; }
.ibx-s-spotlight .ibx-icon { color: var(--b); background: rgba(255,255,255,.07); }
.ibx-s-spotlight .ibx-more { color: var(--b); }

/* ---------- 10 · hover wipe ---------- */
.ibx-s-wipe .ibx-item { border: 1px solid rgba(20,20,43,.06); box-shadow: 0 16px 36px -18px rgba(20,20,43,.14); }
.ibx-s-wipe .ibx-item::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(160deg, var(--a), var(--b)); transform: translateY(102%); transition: transform .55s cubic-bezier(.7,0,.2,1); }
.ibx-s-wipe .ibx-item:hover::before { transform: none; }
.ibx-s-wipe .ibx-item:hover .ibx-title, .ibx-s-wipe .ibx-item:hover .ibx-text, .ibx-s-wipe .ibx-item:hover .ibx-more { color: #fff; }
.ibx-s-wipe .ibx-item:hover .ibx-icon { background: rgba(255,255,255,.22); color: #fff; }

/* ---------- 11 · floating icon ---------- */
.ibx-s-float .ibx-grid { row-gap: calc(var(--gap) + var(--isz)); padding-top: var(--isz); }
.ibx-s-float .ibx-item { border: 1px solid rgba(20,20,43,.05); box-shadow: 0 16px 36px -18px rgba(20,20,43,.16); overflow: visible; padding-top: calc(var(--pad) + var(--isz) * 1.2); align-items: flex-start; flex-direction: column; }
.ibx-s-float .ibx-icon { position: absolute; top: calc(var(--isz) * -1.1); left: var(--pad); background: linear-gradient(135deg, var(--a), var(--b)); color: #fff; box-shadow: 0 18px 34px -12px color-mix(in srgb, var(--a) 65%, transparent); }
.ibx-s-float.ibx-al-center .ibx-icon { left: 50%; margin-left: calc(var(--isz) * -1.1); }
.ibx-s-float.ibx-al-right .ibx-icon { left: auto; right: var(--pad); }
.ibx-s-float .ibx-item:hover .ibx-icon { transform: translateY(-6px); }

/* ---------- 12 · top line ---------- */
.ibx-s-linetop .ibx-item { border: 1px solid rgba(20,20,43,.06); box-shadow: 0 16px 36px -18px rgba(20,20,43,.14); }
.ibx-s-linetop .ibx-item::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: linear-gradient(90deg, var(--a), var(--b)); transform: scaleX(.22); transform-origin: left; transition: transform .6s cubic-bezier(.22,.9,.3,1); }
.ibx-s-linetop .ibx-item:hover::after { transform: scaleX(1); }
.ibx-s-linetop .ibx-icon { background: none; width: auto; height: auto; border-radius: 0; }

@media (max-width: 1024px) { .ibx-grid { grid-template-columns: repeat(var(--cols-t), minmax(0, 1fr)); } }
@media (max-width: 767px) {
	.ibx-grid { grid-template-columns: repeat(var(--cols-m), minmax(0, 1fr)); }
	.ibx-item { padding: calc(var(--pad) * .8); }
	.ibx-num { font-size: 64px; }
}
@media (prefers-reduced-motion: reduce) { .ibx-reveal .ibx-item:not(.is-in) { opacity: 1; } .ibx-reveal .ibx-item.is-in { animation: none; } .ibx-item, .ibx-icon, .ibx-icon .uk-ico { transition: none !important; animation: none !important; } }
