/** * King Addons - Holographic Card Widget Styles */ /* CSS Variables */ .king-addons-holo-card-stage { --rx: 0deg; --ry: 0deg; --mx: 50%; --my: 50%; --p: 0; --shadow: 0 24px 80px rgba(0, 0, 0, 0.20); --rim-intensity: 0.35; --film-intensity: 0.55; --layer-scale: 1.03; } /* Stage container */ .king-addons-holo-card-stage { perspective: 1000px; transform-style: preserve-3d; user-select: none; touch-action: manipulation; } /* Main card */ .king-addons-holo-card { position: relative; display: block; border-radius: 26px; background: #ffffff; box-shadow: var(--shadow); transform-origin: 50% 50%; transform: rotateX(var(--rx)) rotateY(var(--ry)) translateZ(0); transform-style: preserve-3d; overflow: hidden; will-change: transform; transition: box-shadow 220ms ease; text-decoration: none; color: inherit; } .king-addons-holo-card:hover { cursor: pointer; } .king-addons-holo-card.is-active { box-shadow: 0 34px 110px rgba(0, 0, 0, 0.28); } /* Rim glow effect (::before) */ .king-addons-holo-card::before { content: ""; position: absolute; inset: -2px; border-radius: 28px; background: linear-gradient(120deg, rgba(255, 255, 255, 0.00) 0%, rgba(255, 255, 255, 0.25) 15%, rgba(255, 255, 255, 0.00) 30%, rgba(255, 255, 255, 0.22) 50%, rgba(255, 255, 255, 0.00) 70%, rgba(255, 255, 255, 0.18) 85%, rgba(255, 255, 255, 0.00) 100%); filter: blur(10px); opacity: calc(0.15 + var(--p) * var(--rim-intensity)); pointer-events: none; transform: translateZ(2px); mix-blend-mode: screen; } .king-addons-holo-card--no-rim::before { display: none; } /* Holographic film overlay */ .king-addons-holo-card__film { position: absolute; inset: 0; pointer-events: none; opacity: calc(0.10 + var(--p) * var(--film-intensity, 0.55)); transform: translateZ(3px); background: radial-gradient(900px 700px at var(--mx) var(--my), rgba(255, 255, 255, 0.55), rgba(255, 255, 255, 0.00) 60%), conic-gradient(from 180deg at var(--mx) var(--my), rgba(255, 0, 120, 0.22), rgba(0, 200, 255, 0.22), rgba(0, 255, 160, 0.20), rgba(255, 220, 0, 0.18), rgba(255, 0, 120, 0.22)); mix-blend-mode: overlay; filter: saturate(1.2) contrast(1.05); z-index: 10; } /* Content wrapper */ .king-addons-holo-card__content { padding: 18px 18px 16px 18px; display: grid; gap: 14px; transform: translateZ(20px); } /* Poster area */ .king-addons-holo-card__poster { position: relative; height: 260px; border-radius: 18px; overflow: hidden; background: radial-gradient(900px 600px at 15% 10%, rgba(255, 255, 255, 0.45), rgba(255, 255, 255, 0) 55%), linear-gradient(135deg, #7cc7ff, #f6a054 46%, #c59bff); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.55); transform: translateZ(26px); } /* Poster shine effect (::after) */ .king-addons-holo-card__poster::after { content: ""; position: absolute; inset: 0; background: radial-gradient(900px 650px at var(--mx) var(--my), rgba(255, 255, 255, 0.24), rgba(255, 255, 255, 0) 55%), linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.15) 15%, rgba(255, 255, 255, 0) 35%, rgba(255, 255, 255, 0.12) 60%, rgba(255, 255, 255, 0) 85%); mix-blend-mode: soft-light; opacity: 0.9; transform: translateZ(2px); pointer-events: none; } .king-addons-holo-card--no-shine .king-addons-holo-card__poster::after { display: none; } /* Pattern overlay */ .king-addons-holo-card__pattern { position: absolute; inset: 0; opacity: 0.22; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cg fill='none' stroke='white' stroke-opacity='.55' stroke-width='2'%3E%3Cpath d='M80 44c10 0 20 6 24 16-6 2-10 6-12 12-6-4-10-8-12-12-2 4-6 8-12 12-2-6-6-10-12-12 4-10 14-16 24-16z'/%3E%3C/g%3E%3C/svg%3E"); background-size: 62px 62px; mix-blend-mode: overlay; transform: translateZ(1px); pointer-events: none; } /* Topline */ .king-addons-holo-card__topline { position: absolute; left: 14px; right: 14px; top: 12px; display: flex; align-items: center; justify-content: space-between; gap: 12px; color: rgba(255, 255, 255, 0.92); font-weight: 600; font-size: 14px; letter-spacing: 0.2px; transform: translateZ(6px); z-index: 20; text-shadow: 0 2px 10px rgba(0, 0, 0, 0.15); } /* Badge */ .king-addons-holo-card__badge { display: inline-flex; align-items: center; gap: 8px; } /* Logo mark */ .king-addons-holo-card__logo { width: 18px; height: 18px; border-radius: 39%; flex-shrink: 0; /* Default gradient - can be overridden via inline styles */ background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0) 55%), conic-gradient(from 90deg, #00d4ff, #ff2bd6, #ffd600, #00ffa8, #00d4ff); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18); } /* Icon/SVG mode for logo */ .king-addons-holo-card__logo--icon { background: none !important; box-shadow: none !important; display: inline-grid; place-items: center; color: currentColor; } .king-addons-holo-card__logo--icon i, .king-addons-holo-card__logo--icon svg { width: 100%; height: 100%; } .king-addons-holo-card__logo--icon svg { fill: currentColor !important; stroke: currentColor; } /* Art container */ .king-addons-holo-card__art { position: absolute; inset: 0; display: grid; place-items: center; transform-style: preserve-3d; z-index: 5; } /* Parallax layer */ .king-addons-holo-card__layer { position: absolute; width: 78%; max-width: 320px; transform: translateX(calc((var(--mx) - 50%) * -0.18)) translateY(calc((var(--my) - 50%) * -0.12)) translateZ(10px) scale(var(--layer-scale, 1.03)); filter: drop-shadow(0 22px 34px rgba(0, 0, 0, 0.18)); will-change: transform; } /* Image layer variant */ img.king-addons-holo-card__layer { height: auto; object-fit: contain; } /* Divider */ .king-addons-holo-card__divider { height: 1px; background: rgba(0, 0, 0, 0.06); margin-top: 2px; } /* Title */ .king-addons-holo-card__title { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 22px; line-height: 1.15; } /* Title mark */ .king-addons-holo-card__mark { width: 18px; height: 18px; border-radius: 50%; flex-shrink: 0; /* Default gradient - can be overridden via inline styles */ background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.85), rgba(255, 255, 255, 0) 60%), conic-gradient(from 90deg, #00d4ff, #ff2bd6, #ffd600, #00ffa8, #00d4ff); } /* Icon/SVG mode for title mark */ .king-addons-holo-card__mark--icon { background: none !important; display: inline-grid; place-items: center; color: currentColor; } .king-addons-holo-card__mark--icon i, .king-addons-holo-card__mark--icon svg { width: 100%; height: 100%; } .king-addons-holo-card__mark--icon svg { fill: currentColor !important; stroke: currentColor; } /* Meta text */ .king-addons-holo-card__meta { color: #4b5563; font-size: 14px; line-height: 1.4; max-width: 28ch; } /* Reduced motion support */ @media (prefers-reduced-motion: reduce) { .king-addons-holo-card-stage[data-respect-reduced-motion="true"] .king-addons-holo-card { transform: none !important; } .king-addons-holo-card-stage[data-respect-reduced-motion="true"] .king-addons-holo-card__film, .king-addons-holo-card-stage[data-respect-reduced-motion="true"] .king-addons-holo-card::before, .king-addons-holo-card-stage[data-respect-reduced-motion="true"] .king-addons-holo-card__poster::after { opacity: 0.5; } .king-addons-holo-card-stage[data-respect-reduced-motion="true"] .king-addons-holo-card__layer { transform: translateZ(10px) scale(var(--layer-scale, 1.03)); } } /* Disabled motion state */ .king-addons-holo-card-stage[data-disable-motion="true"] .king-addons-holo-card { transform: none !important; } .king-addons-holo-card-stage[data-disable-motion="true"] .king-addons-holo-card__film, .king-addons-holo-card-stage[data-disable-motion="true"] .king-addons-holo-card::before { opacity: 0.5; } .king-addons-holo-card-stage[data-disable-motion="true"] .king-addons-holo-card__layer { transform: translateZ(10px) scale(var(--layer-scale, 1.03)); } /* Responsive */ @media (max-width: 420px) { .king-addons-holo-card__poster { height: 230px; } .king-addons-holo-card__title { font-size: 20px; } } /** * Narrow screens. * * Card Width defaults to a fixed 420px. A flex item does not shrink below its * content, so on a phone the widget pushed the whole page sideways. Let the * wrapper shrink and cap the card at the column it sits in; the px value still * applies wherever there is room for it. */ .elementor-widget-king-addons-holographic-card { min-width: 0; } .elementor-widget-king-addons-holographic-card > .elementor-widget-container { max-width: 100%; }