.f-offers { @apply my-6; } /* GRID FLEX — zawsze centrowany */ .f-offers-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 2rem; padding: 0 1rem; } /* MOBILE: każda karta prawie pełna szerokość */ .f-card { /* przewijanie uwzględnia sticky navbar */ scroll-margin-top: calc(var(--f-navbar-height, 64px) + 16px); flex: 1 1 100%; max-width: 26rem; @apply bg-[--f-bg] text-[--f-text] border border-[--f-offers-border] rounded-2xl shadow-md p-6 relative flex flex-col gap-4; transition: transform 220ms ease, box-shadow 220ms ease; } .f-card:hover { @apply shadow-lg; transform: translateY(-3px); } /* POPULARNY PLAN */ .f-card-popular { border: 2px solid var(--f-offers-popular); background: var(--f-offers-popular-bg); } .f-card-badge { @apply absolute top-3 right-3 bg-[--btn-background] text-[--btn-text] text-sm font-semibold px-3 py-1 rounded-full; } /* HEADER */ .f-card-header { @apply flex flex-col items-start gap-1; } .f-card-name { @apply text-xl font-semibold; } .f-card-price { @apply text-3xl font-extrabold text-[--f-offers-price]; } /* FEATURES */ .f-card-features { @apply list-none p-0 m-0; } .f-card-row { display: grid; grid-template-columns: 2fr 1fr; gap: 0.75rem; padding: 0.5rem 0; border-bottom: 1px solid var(--f-offers-border); align-items: center; } .f-card-row:last-child { border-bottom: none; } .f-card-label { @apply text-base font-medium opacity-80; } .f-card-value { @apply text-base font-semibold text-right; } .f-card-value.yes { @apply text-green-600; } .f-card-value.no { @apply text-red-600 opacity-60; } /* INTELIGENTNY UKŁAD – OD MD↑ */ @media (min-width: 768px) { .f-card { flex: 1 1 300px; max-width: 360px; } /* 4 karty → 2 + 2 */ .f-count-4 .f-card { flex: 0 1 calc(50% - 2rem); max-width: 420px; } /* 5 kart → 3 + 2 */ .f-count-5 .f-card { flex: 0 1 calc(33% - 2rem); } .f-count-5 .f-card:nth-child(n + 4) { flex: 0 1 calc(50% - 2rem); max-width: 420px; } /* 7 kart → 3 + 3 + 1 (środek) */ .f-count-7 .f-card { flex: 0 1 calc(33% - 2rem); } .f-count-7 .f-card:last-child { flex: 0 1 calc(33% - 2rem); margin-left: auto; margin-right: auto; } /* 8 kart → 3 + 3 + 2 */ .f-count-8 .f-card { flex: 0 1 calc(33% - 2rem); } .f-count-8 .f-card:nth-child(n + 7) { flex: 0 1 calc(50% - 2rem); max-width: 420px; } /* 10 kart → 3 + 3 + 3 + 1 */ .f-count-10 .f-card:last-child { flex: 0 1 calc(33% - 2rem); margin-left: auto; margin-right: auto; } } /* ========================================= TARGET — PODŚWIETLENIE PAKIETU PO KLIKNIĘCIU ========================================== */ .f-card.is-target { outline: none; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.45), 0 10px 25px rgba(15, 23, 42, 0.18); transform: translateY(-6px) scale(1.01); position: relative; background-color: var(--f-navbar-background); z-index: 2; } .f-card.is-target:hover { transform: translateY(-6px) scale(1.01); } /* JAMBOX — GRID KANAŁÓW (MODAL) */ .jmb-channels-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0.9rem; align-items: stretch; } .jmb-channel-card { position: relative; perspective: 1000px; background: var(--f-bg); color: var(--f-text); border-radius: 0.75rem; border: 1px solid rgba(148, 163, 184, 0.25); box-shadow: 0 1px 2px rgba(15, 23, 42, 0.15); min-height: 170px; height: 100%; padding: 0; overflow: hidden; -webkit-tap-highlight-color: transparent; touch-action: manipulation; cursor: pointer; } .jmb-channel-inner { position: relative; width: 100%; height: 100%; transform-style: preserve-3d; -webkit-transform-style: preserve-3d; transition: transform 0.6s ease; } /* DESKTOP: flip na hover */ @media (hover: hover) and (pointer: fine) { .jmb-channel-card:hover .jmb-channel-inner { transform: rotateY(180deg); } } /* MOBILE/TAP: flip po klasie */ .jmb-channel-card.is-flipped .jmb-channel-inner { transform: rotateY(180deg); } .jmb-channel-face { position: absolute; inset: 0; padding: 0.75rem 0.5rem; display: flex; flex-direction: column; justify-content: space-between; text-align: center; backface-visibility: hidden; -webkit-backface-visibility: hidden; } .jmb-channel-front { transform: rotateY(0deg); } .jmb-channel-back { transform: rotateY(180deg); text-align: left; justify-content: flex-start; gap: 0.5rem; } .jmb-channel-logo { max-width: 90px; max-height: 60px; margin: 0 auto 0.5rem auto; display: block; object-fit: contain; } .jmb-channel-name { font-size: 0.85rem; font-weight: 600; margin-bottom: 0.15rem; } .jmb-channel-number { font-size: 0.75rem; color: rgba(148, 163, 184, 0.95); } .jmb-channel-back-title { font-size: 0.9rem; font-weight: 700; } .jmb-channel-desc { font-size: 0.85rem; line-height: 1.35; opacity: 0.92; overflow: auto; scrollbar-width: thin; scrollbar-color: rgba(148, 163, 184, 0.55) transparent; } .jmb-channel-desc::-webkit-scrollbar { width: 10px; } .jmb-channel-desc::-webkit-scrollbar-thumb { background: rgba(148, 163, 184, 0.45); border-radius: 9999px; border: 3px solid transparent; background-clip: content-box; } .jmb-channel-desc::-webkit-scrollbar-track { background: transparent; }