.bento-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;padding:0}@media (min-width:768px){.bento-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.bento-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width:1280px){.bento-grid{grid-template-columns:repeat(4,1fr);gap:24px}}.bento-item{border-radius:28px;overflow:hidden;border:1px solid rgba(15,18,24,.06);background:#fff;box-shadow:var(--brand-shadow-tight);transition:transform .4s cubic-bezier(.165, .84, .44, 1),box-shadow .4s ease,opacity .4s ease;will-change:transform;display:flex;flex-direction:column}.bento-item:hover{transform:translateY(-6px);box-shadow:var(--brand-shadow);border-color:rgba(var(--bs-primary-rgb),.15)}html[data-bs-theme=dark] .bento-item{background:var(--theme-bg-surface);border-color:var(--theme-border-subtle)}html[data-bs-theme=dark] .bento-item:hover{border-color:rgba(var(--bs-primary-rgb),.25)}.bento-item.size-large{grid-column:span 2;grid-row:span 2}@media (max-width:767px){.bento-item.size-large{grid-column:span 1;grid-row:span 1}}.bento-item.size-medium{grid-column:span 2}@media (max-width:767px){.bento-item.size-medium{grid-column:span 1}}.bento-item.size-small{grid-column:span 1;grid-row:span 1}.bento-item-media{position:relative;width:100%;aspect-ratio:4/3;overflow:hidden;background:linear-gradient(135deg,rgba(var(--bs-primary-rgb),.08),rgba(31,41,55,.06))}.bento-item.size-large .bento-item-media{aspect-ratio:1}.bento-item-media img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.165, .84, .44, 1)}.bento-item:hover .bento-item-media img{transform:scale(1.08)}.bento-item-content{padding:20px;display:flex;flex-direction:column;gap:12px;flex-grow:1}.bento-item.size-large .bento-item-content{padding:24px}.bento-item-title{font-family:"Playfair Display",Georgia,serif;font-size:1.125rem;font-weight:600;letter-spacing:-.015em;color:#0f1218;margin:0;line-height:1.3}html[data-bs-theme=dark] .bento-item-title{color:#e5e7eb}.bento-item-meta{display:flex;align-items:center;gap:12px;font-size:.875rem;color:rgba(15,18,24,.68);flex-wrap:wrap}html[data-bs-theme=dark] .bento-item-meta{color:rgba(229,231,235,.72)}.bento-item-meta-item{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.bento-item-meta-item i{font-size:.8em;opacity:.7}.bento-item-badge{position:absolute;top:12px;right:12px;background:rgba(var(--bs-primary-rgb),.95);color:#fff;padding:6px 12px;border-radius:999px;font-size:.75rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 4px 12px rgba(var(--bs-primary-rgb),.25)}.bento-item-badge.badge-discount{top:12px;left:12px;right:auto;background:rgba(220,53,69,.95);box-shadow:0 4px 12px rgba(220,53,69,.25)}.bento-item-badge.badge-access{background:rgba(25,135,84,.95);box-shadow:0 4px 12px rgba(25,135,84,.25)}.bento-item-price{font-family:"Playfair Display",Georgia,serif;font-size:1.35rem;font-weight:700;letter-spacing:-.02em;color:var(--brand-primary);margin-top:auto;padding-top:8px;border-top:1px solid rgba(15,18,24,.08)}html[data-bs-theme=dark] .bento-item-price{color:var(--brand-primary);border-top-color:rgba(255,255,255,.08)}.bento-item-price.is-access{color:#198754}html[data-bs-theme=dark] .bento-item-price.is-access{color:#75b798}.bento-item-actions{display:flex;gap:8px;margin-top:4px}.bento-item-actions .btn{flex:1;padding:9px 14px;border-radius:12px;font-weight:600;font-size:.875rem;transition:transform .25s ease,opacity .25s ease}.bento-item-actions .btn:hover{transform:translateY(-2px)}@media (max-width:767px){.bento-grid{gap:16px}.bento-item-content{padding:16px}}@media (max-width:575px){.bento-grid{grid-template-columns:1fr;gap:12px}.bento-item.size-large,.bento-item.size-medium{grid-column:span 1;grid-row:span 1}.bento-item-title{font-size:1rem}}.skeleton-wrapper{background:#fff;border-radius:28px;overflow:hidden;border:1px solid rgba(15,18,24,.06);box-shadow:var(--brand-shadow-tight)}html[data-bs-theme=dark] .skeleton-wrapper{background:var(--theme-bg-surface);border-color:var(--theme-border-subtle)}.skeleton-box{background:linear-gradient(90deg,rgba(15,18,24,.06) 0,rgba(15,18,24,.1) 50%,rgba(15,18,24,.06) 100%);background-size:200% 100%;animation:skeleton-shimmer 2s infinite;border-radius:8px}html[data-bs-theme=dark] .skeleton-box{background:linear-gradient(90deg,rgba(255,255,255,.08) 0,rgba(255,255,255,.12) 50%,rgba(255,255,255,.08) 100%)}@keyframes skeleton-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}.skeleton-image{width:100%;aspect-ratio:4/3;border-radius:20px 20px 0 0}.skeleton-content{padding:20px;display:flex;flex-direction:column;gap:12px}.skeleton-title{height:20px;width:70%;border-radius:6px}.skeleton-text{height:14px;width:100%;border-radius:4px}.skeleton-text:last-child{width:85%}.skeleton-badge{display:inline-block;height:24px;width:80px;border-radius:12px;margin-top:8px}.mobile-nav-glass{position:fixed;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:1102;display:flex;align-items:stretch;justify-content:space-around;gap:6px;padding:8px 12px;border:1px solid rgba(15,18,24,.06);border-radius:999px;box-shadow:0 16px 40px rgba(0,0,0,.12),0 4px 12px rgba(0,0,0,.06);background:rgba(255,255,255,.92);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);animation:float-up .6s cubic-bezier(.34,1.56,.64,1)}html[data-bs-theme=dark] .mobile-nav-glass{border-color:rgba(255,255,255,.15);background:rgba(15,18,24,.92);box-shadow:0 16px 40px rgba(0,0,0,.4),0 4px 12px rgba(0,0,0,.2)}.nav-glass-item{flex:1;min-width:0;text-decoration:none;color:rgba(15,18,24,.72);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:8px 6px;border-radius:16px;transition:transform .15s cubic-bezier(.4, 0, .2, 1),opacity .15s ease;position:relative}html[data-bs-theme=dark] .nav-glass-item{color:rgba(229,231,235,.8)}.nav-glass-item:active{transform:translateY(1px)}.nav-glass-item.active{background:rgba(var(--bs-primary-rgb),.12);color:#881840;font-weight:600}html[data-bs-theme=dark] .nav-glass-item.active{background:rgba(var(--bs-primary-rgb),.18);color:var(--brand-primary)}.nav-glass-icon{font-size:1.15rem;line-height:1;position:relative;display:inline-flex;align-items:center;justify-content:center}.nav-glass-badge{position:absolute;top:-7px;right:-10px;font-size:.64rem;line-height:1;padding:.25rem .35rem;border-radius:999px;border:2px solid rgba(255,255,255,.92);background:#dc3545;color:#fff;font-weight:700}html[data-bs-theme=dark] .nav-glass-badge{border-color:rgba(15,18,24,.92)}.nav-glass-label{font-size:.72rem;font-weight:700;letter-spacing:-.1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}@media (max-width:575px){.nav-glass-label{display:none}.mobile-nav-glass{padding:6px 8px}}.btn-add-cart{position:relative;overflow:hidden;transition:transform .25s cubic-bezier(.25, .8, .25, 1),opacity .25s ease,box-shadow .25s ease;border-radius:12px;font-weight:600}.btn-add-cart:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(var(--bs-primary-rgb),.25)}.btn-add-cart:active{transform:scale(.97)}.btn-add-cart .cart-icon{transition:transform .3s ease}.btn-add-cart:hover .cart-icon{animation:cart-shake .28s ease-in-out}.btn-wishlist{position:relative;width:44px;height:44px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;transition:transform .25s cubic-bezier(.25, .8, .25, 1),opacity .25s ease;border:1.5px solid rgba(15,18,24,.12);background:rgba(255,255,255,.92);color:rgba(15,18,24,.72)}html[data-bs-theme=dark] .btn-wishlist{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.18);color:rgba(229,231,235,.88)}.btn-wishlist:hover{background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.25);color:#dc2626;transform:scale(1.08)}.btn-wishlist.active{background:#dc2626;border-color:#dc2626;color:#fff;animation:scale-in .3s cubic-bezier(.34,1.56,.64,1)}.btn-wishlist i{transition:transform .3s ease;font-size:1.1rem}.btn-wishlist.active i,.btn-wishlist:hover i{animation:float-up .4s cubic-bezier(.34,1.56,.64,1)}.cart-fly-item{position:fixed;z-index:9999;border-radius:16px;box-shadow:0 8px 32px rgba(var(--bs-primary-rgb),.4),0 4px 16px rgba(0,0,0,.2);pointer-events:none;transform-origin:center center;will-change:transform,opacity;border:3px solid rgba(255,255,255,.9);background-color:var(--brand-primary)}html[data-bs-theme=dark] .cart-fly-item{box-shadow:0 8px 32px rgba(var(--bs-primary-rgb),.5),0 4px 16px rgba(0,0,0,.4);border-color:rgba(255,255,255,.95)}.badge-pulse{animation:badge-pulse .3s ease-out}@keyframes badge-pulse{0%{transform:scale(1) translate(-50%,-50%)}50%{transform:scale(1.3) translate(-38%,-38%)}100%{transform:scale(1) translate(-50%,-50%)}}.card-course{border-radius:28px;overflow:hidden;border:1px solid rgba(15,18,24,.06);background:#fff;box-shadow:var(--brand-shadow-tight);transition:transform .4s cubic-bezier(.165, .84, .44, 1),box-shadow .4s ease,opacity .4s ease;will-change:transform;display:flex;flex-direction:column;height:100%}html[data-bs-theme=dark] .card-course{background:var(--theme-bg-surface);border-color:var(--theme-border-subtle)}.card-course:hover{transform:translateY(-8px);box-shadow:var(--brand-shadow);border-color:rgba(var(--bs-primary-rgb),.15)}.card-course-media{position:relative;width:100%;aspect-ratio:4/3;overflow:hidden;background:linear-gradient(135deg,rgba(var(--bs-primary-rgb),.08),rgba(31,41,55,.06))}.card-course-media img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.165, .84, .44, 1)}.card-course:hover .card-course-media img{transform:scale(1.06)}.card-course-badge{position:absolute;top:12px;left:12px;right:12px;display:flex;gap:8px;flex-wrap:wrap}.badge-feature{background:rgba(var(--bs-primary-rgb),.95);color:#fff;padding:6px 12px;border-radius:999px;font-size:.75rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 4px 12px rgba(var(--bs-primary-rgb),.25)}.card-course-body{padding:20px;display:flex;flex-direction:column;gap:12px;flex-grow:1}.card-course-title{font-family:"Playfair Display",Georgia,serif;font-size:1.125rem;font-weight:600;letter-spacing:-.015em;color:#0f1218;margin:0;line-height:1.3}html[data-bs-theme=dark] .card-course-title{color:#e5e7eb}.card-course-stats{display:flex;align-items:center;gap:12px;font-size:.875rem;color:rgba(15,18,24,.68);flex-wrap:wrap}html[data-bs-theme=dark] .card-course-stats{color:rgba(229,231,235,.72)}.card-course-stat{display:inline-flex;align-items:center;gap:6px}.card-course-stat i{font-size:.8em;opacity:.7}.card-course-price{font-family:"Playfair Display",Georgia,serif;font-size:1.5rem;font-weight:700;letter-spacing:-.02em;color:var(--brand-primary);margin-top:auto;padding-top:12px;border-top:1px solid rgba(15,18,24,.08)}html[data-bs-theme=dark] .card-course-price{color:var(--brand-primary);border-top-color:rgba(255,255,255,.08)}.card-course-actions{display:flex;gap:8px;margin-top:12px}.card-course-actions .btn{flex:1;padding:10px 16px;border-radius:12px;font-weight:600;font-size:.9rem;transition:transform .25s ease,opacity .25s ease}@media (max-width:767px){.card-course-body{padding:16px}}@keyframes float-up{0%{opacity:0;transform:translateY(12px)}100%{opacity:1;transform:translateY(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}100%{opacity:1;transform:scale(1)}}@keyframes cart-pulse{0%{transform:scale(1)}30%{transform:scale(1.12)}55%{transform:scale(.96)}80%{transform:scale(1.06)}100%{transform:scale(1)}}@keyframes cart-shake{0%{transform:translateX(0)}20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-2px)}80%{transform:translateX(2px)}100%{transform:translateX(0)}}html[data-bs-theme=dark] .bento-item-content p{color:rgba(229,231,235,.75)}html[data-bs-theme=dark] .card-course-body p{color:rgba(229,231,235,.75)}html[data-bs-theme=dark] .mobile-nav-glass::before{background:linear-gradient(90deg,rgba(var(--bs-primary-rgb),.1),transparent)}html[data-bs-theme=dark] .btn-wishlist:focus{box-shadow:0 0 0 3px rgba(220,38,38,.25)}html[data-bs-theme=dark] .skeleton-content p{color:rgba(229,231,235,.5)}html[data-bs-theme=dark] .bento-item:hover{box-shadow:0 20px 40px -8px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2)}html[data-bs-theme=dark] .card-course:hover{box-shadow:0 20px 40px -8px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2)}