feat: Add animations for video motion, branded layouts, and digital menu boards
This commit is contained in:
@@ -9049,3 +9049,721 @@ p:last-child { margin-bottom: 0; }
|
||||
@media (max-width: 640px) {
|
||||
.member-slide__title { font-size: 20px; }
|
||||
}
|
||||
|
||||
/* ═══════════════════════════════════════════════════════════════
|
||||
VIDEO & MOTION GRAPHICS ANIMATION (.platform-visual.has-video-motion)
|
||||
Looping reel with kinetic typography and motion preview
|
||||
═══════════════════════════════════════════════════════════════ */
|
||||
.platform-visual.has-video-motion {
|
||||
background: none !important;
|
||||
border: none !important;
|
||||
border-radius: 0;
|
||||
aspect-ratio: unset;
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.vidmo-stage {
|
||||
width: 100%;
|
||||
max-width: 520px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.vidmo-tv {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.vidmo-tv__body {
|
||||
width: 100%;
|
||||
background: #111;
|
||||
border: 5px solid #1a1a1a;
|
||||
border-radius: 8px 8px 4px 4px;
|
||||
outline: 2px solid #000;
|
||||
padding: 4px;
|
||||
box-shadow: 0 14px 48px rgba(0,0,0,0.6), inset 0 1px 0 rgba(255,255,255,0.06);
|
||||
}
|
||||
|
||||
.vidmo-tv__screen {
|
||||
width: 100%;
|
||||
aspect-ratio: 16/9;
|
||||
background: #0a0a0a;
|
||||
border-radius: 2px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.vidmo-tv__feet {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
width: 60%;
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.vidmo-tv__foot {
|
||||
width: 12px;
|
||||
height: 8px;
|
||||
background: #111;
|
||||
border: 1px solid #000;
|
||||
border-radius: 0 0 4px 4px;
|
||||
}
|
||||
|
||||
/* Slides */
|
||||
.vidmo-slides {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.vidmo-slide {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 24px;
|
||||
text-align: center;
|
||||
opacity: 0;
|
||||
animation: vidmo-cycle 12s infinite;
|
||||
}
|
||||
|
||||
.vidmo-slide--kinetic { animation-delay: 0s; }
|
||||
.vidmo-slide--promo { animation-delay: 4s; }
|
||||
.vidmo-slide--loop { animation-delay: 8s; }
|
||||
|
||||
/* Kinetic typography slide */
|
||||
.vidmo-kinetic {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.vidmo-kinetic__word {
|
||||
font-weight: 800;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
color: #fff;
|
||||
opacity: 0;
|
||||
animation: vidmo-word-in 12s infinite;
|
||||
}
|
||||
|
||||
.vidmo-kinetic__word--1 { font-size: 28px; animation-delay: 0.2s; }
|
||||
.vidmo-kinetic__word--2 { font-size: 20px; color: var(--color-primary); animation-delay: 0.5s; }
|
||||
.vidmo-kinetic__word--3 { font-size: 16px; color: rgba(255,255,255,0.5); animation-delay: 0.8s; }
|
||||
|
||||
/* Promo slide */
|
||||
.vidmo-promo {
|
||||
position: relative;
|
||||
width: 80%;
|
||||
max-width: 280px;
|
||||
}
|
||||
|
||||
.vidmo-promo__bg {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: linear-gradient(135deg, rgba(216,51,2,0.2), transparent);
|
||||
border-radius: 10px;
|
||||
animation: vidmo-bg-pulse 4s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.vidmo-promo__label {
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1.5px;
|
||||
color: var(--color-primary);
|
||||
margin-bottom: 6px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.vidmo-promo__title {
|
||||
font-size: 22px;
|
||||
font-weight: 800;
|
||||
color: #fff;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.vidmo-promo__sub {
|
||||
font-size: 12px;
|
||||
color: rgba(255,255,255,0.5);
|
||||
margin-top: 6px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Loop counter slide */
|
||||
.vidmo-loop {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.vidmo-loop__icon {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 50%;
|
||||
border: 2px solid var(--color-primary);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 16px;
|
||||
animation: vidmo-icon-spin 4s linear infinite;
|
||||
}
|
||||
|
||||
.vidmo-loop__text {
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
color: rgba(255,255,255,0.6);
|
||||
}
|
||||
|
||||
.vidmo-loop__formats {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.vidmo-loop__fmt {
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
padding: 3px 8px;
|
||||
border-radius: 4px;
|
||||
background: rgba(255,255,255,0.06);
|
||||
color: rgba(255,255,255,0.4);
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
/* Progress bar */
|
||||
.vidmo-progress {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 3px;
|
||||
background: rgba(255,255,255,0.06);
|
||||
}
|
||||
|
||||
.vidmo-progress__bar {
|
||||
height: 100%;
|
||||
background: var(--color-primary);
|
||||
animation: vidmo-progress-fill 12s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes vidmo-cycle {
|
||||
0%, 2% { opacity: 0; transform: translateY(10px); }
|
||||
5%, 30% { opacity: 1; transform: translateY(0); }
|
||||
33%, 100%{ opacity: 0; transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
@keyframes vidmo-word-in {
|
||||
0%, 2% { opacity: 0; transform: scale(0.8); }
|
||||
5%, 28% { opacity: 1; transform: scale(1); }
|
||||
33%, 100%{ opacity: 0; transform: scale(1.05); }
|
||||
}
|
||||
|
||||
@keyframes vidmo-bg-pulse {
|
||||
0%, 100% { opacity: 0.6; }
|
||||
50% { opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes vidmo-icon-spin {
|
||||
from { transform: rotate(0deg); }
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes vidmo-progress-fill {
|
||||
0% { width: 0%; }
|
||||
95% { width: 100%; }
|
||||
100% { width: 0%; }
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.vidmo-slide { animation: none; }
|
||||
.vidmo-slide--kinetic { opacity: 1; transform: none; }
|
||||
.vidmo-kinetic__word { animation: none; opacity: 1; transform: none; }
|
||||
.vidmo-loop__icon { animation: none; }
|
||||
.vidmo-progress__bar { animation: none; width: 60%; }
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.vidmo-kinetic__word--1 { font-size: 22px; }
|
||||
.vidmo-promo__title { font-size: 18px; }
|
||||
}
|
||||
|
||||
/* ═══════════════════════════════════════════════════════════════
|
||||
BRANDED LAYOUT DESIGN ANIMATION (.platform-visual.has-brand-layout)
|
||||
Template builder showing brand elements snapping into place
|
||||
═══════════════════════════════════════════════════════════════ */
|
||||
.platform-visual.has-brand-layout {
|
||||
background: none !important;
|
||||
border: none !important;
|
||||
border-radius: 0;
|
||||
aspect-ratio: unset;
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.blay-stage {
|
||||
width: 100%;
|
||||
max-width: 480px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.blay-editor {
|
||||
background: #0d1117;
|
||||
border: 1px solid #1e2435;
|
||||
border-radius: 10px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 20px 60px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.04);
|
||||
}
|
||||
|
||||
.blay-toolbar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 10px 16px;
|
||||
background: rgba(255,255,255,0.03);
|
||||
border-bottom: 1px solid rgba(255,255,255,0.06);
|
||||
}
|
||||
|
||||
.blay-toolbar__title {
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
color: rgba(255,255,255,0.5);
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.blay-toolbar__dots {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.blay-toolbar__dot {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.blay-toolbar__dot--r { background: #ff5f56; }
|
||||
.blay-toolbar__dot--y { background: #ffbd2e; }
|
||||
.blay-toolbar__dot--g { background: #27c93f; }
|
||||
|
||||
.blay-body {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 140px;
|
||||
}
|
||||
|
||||
/* Canvas area */
|
||||
.blay-canvas {
|
||||
padding: 16px;
|
||||
border-right: 1px solid rgba(255,255,255,0.06);
|
||||
}
|
||||
|
||||
.blay-preview {
|
||||
background: #0a0a0e;
|
||||
border-radius: 6px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
aspect-ratio: 16/10;
|
||||
}
|
||||
|
||||
/* Brand elements dropping in */
|
||||
.blay-el {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
animation: blay-drop 10s infinite;
|
||||
}
|
||||
|
||||
.blay-el--logo {
|
||||
top: 12px;
|
||||
left: 12px;
|
||||
width: 60px;
|
||||
height: 18px;
|
||||
background: var(--color-primary);
|
||||
border-radius: 3px;
|
||||
animation-delay: 0s;
|
||||
}
|
||||
|
||||
.blay-el--hero {
|
||||
top: 38px;
|
||||
left: 12px;
|
||||
right: 12px;
|
||||
height: 48%;
|
||||
background: linear-gradient(135deg, rgba(255,255,255,0.04), rgba(255,255,255,0.08));
|
||||
border-radius: 4px;
|
||||
animation-delay: 0.5s;
|
||||
}
|
||||
|
||||
.blay-el--headline {
|
||||
bottom: 38%;
|
||||
left: 12px;
|
||||
width: 65%;
|
||||
height: 12px;
|
||||
background: rgba(255,255,255,0.2);
|
||||
border-radius: 2px;
|
||||
animation-delay: 1s;
|
||||
}
|
||||
|
||||
.blay-el--body {
|
||||
bottom: 28%;
|
||||
left: 12px;
|
||||
width: 80%;
|
||||
height: 6px;
|
||||
background: rgba(255,255,255,0.08);
|
||||
border-radius: 2px;
|
||||
animation-delay: 1.3s;
|
||||
}
|
||||
|
||||
.blay-el--body2 {
|
||||
bottom: 22%;
|
||||
left: 12px;
|
||||
width: 70%;
|
||||
height: 6px;
|
||||
background: rgba(255,255,255,0.06);
|
||||
border-radius: 2px;
|
||||
animation-delay: 1.5s;
|
||||
}
|
||||
|
||||
.blay-el--cta {
|
||||
bottom: 10%;
|
||||
left: 12px;
|
||||
width: 80px;
|
||||
height: 24px;
|
||||
background: var(--color-primary);
|
||||
border-radius: 4px;
|
||||
animation-delay: 1.8s;
|
||||
}
|
||||
|
||||
.blay-el--accent {
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 4px;
|
||||
height: 100%;
|
||||
background: var(--color-primary);
|
||||
animation-delay: 2.1s;
|
||||
}
|
||||
|
||||
/* Brand guide panel */
|
||||
.blay-panel {
|
||||
padding: 14px 12px;
|
||||
}
|
||||
|
||||
.blay-panel__title {
|
||||
font-size: 9px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
color: rgba(255,255,255,0.35);
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.blay-colors {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.blay-color {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid rgba(255,255,255,0.1);
|
||||
}
|
||||
|
||||
.blay-color--1 { background: var(--color-primary); }
|
||||
.blay-color--2 { background: #1a1a2e; }
|
||||
.blay-color--3 { background: #fff; }
|
||||
.blay-color--4 { background: #6b7280; }
|
||||
|
||||
.blay-fonts {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.blay-font {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.blay-font__label {
|
||||
font-size: 8px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
color: rgba(255,255,255,0.25);
|
||||
}
|
||||
|
||||
.blay-font__sample {
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
color: rgba(255,255,255,0.6);
|
||||
}
|
||||
|
||||
.blay-font__sample--body {
|
||||
font-size: 11px;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.blay-spacing {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.blay-spacing__label {
|
||||
font-size: 8px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
color: rgba(255,255,255,0.25);
|
||||
}
|
||||
|
||||
.blay-spacing__bars {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
gap: 3px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.blay-spacing__bar {
|
||||
width: 12px;
|
||||
border-radius: 2px;
|
||||
background: rgba(255,255,255,0.1);
|
||||
}
|
||||
|
||||
.blay-spacing__bar--sm { height: 6px; }
|
||||
.blay-spacing__bar--md { height: 12px; }
|
||||
.blay-spacing__bar--lg { height: 18px; }
|
||||
.blay-spacing__bar--xl { height: 20px; }
|
||||
|
||||
@keyframes blay-drop {
|
||||
0%, 5% { opacity: 0; transform: translateY(-8px); }
|
||||
12%, 75% { opacity: 1; transform: translateY(0); }
|
||||
85%, 100%{ opacity: 0; }
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.blay-el { animation: none; opacity: 1; transform: none; }
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.blay-body { grid-template-columns: 1fr; }
|
||||
.blay-panel { display: none; }
|
||||
}
|
||||
|
||||
/* ═══════════════════════════════════════════════════════════════
|
||||
DIGITAL MENU BOARD ANIMATION (.platform-visual.has-menu-board)
|
||||
Rotating restaurant menu with categories and prices
|
||||
═══════════════════════════════════════════════════════════════ */
|
||||
.platform-visual.has-menu-board {
|
||||
background: none !important;
|
||||
border: none !important;
|
||||
border-radius: 0;
|
||||
aspect-ratio: unset;
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
box-shadow: none;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.menu-stage {
|
||||
width: 100%;
|
||||
max-width: 520px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.menu-tv {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.menu-tv__body {
|
||||
width: 100%;
|
||||
background: #111;
|
||||
border: 5px solid #1a1a1a;
|
||||
border-radius: 8px 8px 4px 4px;
|
||||
outline: 2px solid #000;
|
||||
padding: 4px;
|
||||
position: relative;
|
||||
box-shadow: 0 14px 48px rgba(0,0,0,0.6), inset 0 1px 0 rgba(255,255,255,0.06);
|
||||
}
|
||||
|
||||
.menu-tv__screen {
|
||||
width: 100%;
|
||||
aspect-ratio: 16/9;
|
||||
background: #0a0a0a;
|
||||
border-radius: 2px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.menu-tv__feet {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
width: 60%;
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.menu-tv__foot {
|
||||
width: 12px;
|
||||
height: 8px;
|
||||
background: #111;
|
||||
border: 1px solid #000;
|
||||
border-radius: 0 0 4px 4px;
|
||||
}
|
||||
|
||||
/* Live badge */
|
||||
.menu-live {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
background: rgba(0,0,0,0.5);
|
||||
padding: 3px 8px;
|
||||
border-radius: 20px;
|
||||
z-index: 10;
|
||||
border: 1px solid rgba(255,255,255,0.1);
|
||||
backdrop-filter: blur(4px);
|
||||
}
|
||||
|
||||
.menu-live__dot {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
background: #4ade80;
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 8px #4ade80;
|
||||
animation: menu-live-pulse 2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.menu-live__text {
|
||||
font-size: 9px;
|
||||
color: #fff;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.3px;
|
||||
}
|
||||
|
||||
/* Menu slides */
|
||||
.menu-slides {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.menu-slide {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
opacity: 0;
|
||||
animation: menu-slide-fade 9s infinite;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.menu-slide--mains { animation-delay: 0s; }
|
||||
.menu-slide--drinks { animation-delay: 3s; }
|
||||
.menu-slide--dessert { animation-delay: 6s; }
|
||||
|
||||
.menu-content {
|
||||
padding: 20px 28px;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: linear-gradient(135deg, rgba(15,15,20,1) 0%, rgba(25,25,35,1) 100%);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.menu-content__hd {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.menu-content__badge {
|
||||
font-size: 10px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
background: var(--color-primary);
|
||||
padding: 2px 8px;
|
||||
border-radius: 4px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.menu-content__time {
|
||||
font-size: 11px;
|
||||
color: rgba(255,255,255,0.5);
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.menu-content__title {
|
||||
font-size: 22px;
|
||||
font-weight: 800;
|
||||
margin-bottom: 16px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.menu-content__items {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.menu-content__item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
border-bottom: 1px solid rgba(255,255,255,0.05);
|
||||
padding-bottom: 6px;
|
||||
}
|
||||
|
||||
.menu-content__name {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.menu-content__desc {
|
||||
font-size: 11px;
|
||||
color: rgba(255,255,255,0.35);
|
||||
}
|
||||
|
||||
.menu-content__price {
|
||||
font-size: 15px;
|
||||
font-weight: 700;
|
||||
color: var(--color-primary);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@keyframes menu-live-pulse {
|
||||
0%, 100% { opacity: 1; transform: scale(1); }
|
||||
50% { opacity: 0.4; transform: scale(0.8); }
|
||||
}
|
||||
|
||||
@keyframes menu-slide-fade {
|
||||
0%, 2% { opacity: 0; transform: translateY(10px); }
|
||||
5%, 30% { opacity: 1; transform: translateY(0); }
|
||||
33%, 100%{ opacity: 0; transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.menu-slide { animation: none; }
|
||||
.menu-slide--mains { opacity: 1; transform: none; }
|
||||
.menu-live__dot { animation: none; }
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.menu-content { padding: 14px 18px; }
|
||||
.menu-content__title { font-size: 17px; margin-bottom: 10px; }
|
||||
.menu-content__name { font-size: 12px; }
|
||||
.menu-content__desc { display: none; }
|
||||
.menu-content__price { font-size: 13px; }
|
||||
}
|
||||
|
||||
@@ -605,6 +605,9 @@ add_action('init', function () {
|
||||
'waitingRoomAnim' => ['type' => 'boolean', 'default' => false],
|
||||
'multiZoneAnim' => ['type' => 'boolean', 'default' => false],
|
||||
'membershipAnim' => ['type' => 'boolean', 'default' => false],
|
||||
'videoMotionAnim' => ['type' => 'boolean', 'default' => false],
|
||||
'brandLayoutAnim' => ['type' => 'boolean', 'default' => false],
|
||||
'menuBoardAnim' => ['type' => 'boolean', 'default' => false],
|
||||
'galleryIds' => ['type' => 'array', 'default' => [], 'items' => ['type' => 'number']],
|
||||
],
|
||||
'supports' => $block_supports,
|
||||
@@ -2849,6 +2852,180 @@ function oribi_render_platform_row($a)
|
||||
$visual_html = $ha;
|
||||
$visual_cls = 'platform-visual has-hospitality';
|
||||
}
|
||||
elseif (!empty($a['videoMotionAnim'])) {
|
||||
/* ── Video & Motion Graphics: TV with kinetic text, promo, loop preview ── */
|
||||
$vm = '<div class="vidmo-stage" aria-hidden="true">';
|
||||
$vm .= '<div class="vidmo-tv">';
|
||||
$vm .= '<div class="vidmo-tv__body">';
|
||||
$vm .= '<div class="vidmo-tv__screen">';
|
||||
$vm .= '<div class="vidmo-slides">';
|
||||
|
||||
/* Slide 1: Kinetic typography */
|
||||
$vm .= '<div class="vidmo-slide vidmo-slide--kinetic">';
|
||||
$vm .= '<div class="vidmo-kinetic">';
|
||||
$vm .= '<span class="vidmo-kinetic__word vidmo-kinetic__word--1">Engage</span>';
|
||||
$vm .= '<span class="vidmo-kinetic__word vidmo-kinetic__word--2">Inform</span>';
|
||||
$vm .= '<span class="vidmo-kinetic__word vidmo-kinetic__word--3">Convert</span>';
|
||||
$vm .= '</div>';
|
||||
$vm .= '</div>';
|
||||
|
||||
/* Slide 2: Promo graphic */
|
||||
$vm .= '<div class="vidmo-slide vidmo-slide--promo">';
|
||||
$vm .= '<div class="vidmo-promo">';
|
||||
$vm .= '<div class="vidmo-promo__bg"></div>';
|
||||
$vm .= '<div class="vidmo-promo__label">Summer Campaign</div>';
|
||||
$vm .= '<div class="vidmo-promo__title">Your Brand, Animated</div>';
|
||||
$vm .= '<div class="vidmo-promo__sub">15s promotional loop</div>';
|
||||
$vm .= '</div>';
|
||||
$vm .= '</div>';
|
||||
|
||||
/* Slide 3: Loop format */
|
||||
$vm .= '<div class="vidmo-slide vidmo-slide--loop">';
|
||||
$vm .= '<div class="vidmo-loop">';
|
||||
$vm .= '<div class="vidmo-loop__icon">▶</div>';
|
||||
$vm .= '<div class="vidmo-loop__text">Screen-Ready Formats</div>';
|
||||
$vm .= '<div class="vidmo-loop__formats">';
|
||||
$vm .= '<span class="vidmo-loop__fmt">MP4</span>';
|
||||
$vm .= '<span class="vidmo-loop__fmt">WEBM</span>';
|
||||
$vm .= '<span class="vidmo-loop__fmt">GIF</span>';
|
||||
$vm .= '</div>';
|
||||
$vm .= '</div>';
|
||||
$vm .= '</div>';
|
||||
|
||||
$vm .= '</div>'; // vidmo-slides
|
||||
$vm .= '<div class="vidmo-progress"><div class="vidmo-progress__bar"></div></div>';
|
||||
$vm .= '</div>'; // vidmo-tv__screen
|
||||
$vm .= '</div>'; // vidmo-tv__body
|
||||
$vm .= '<div class="vidmo-tv__feet"><div class="vidmo-tv__foot"></div><div class="vidmo-tv__foot"></div></div>';
|
||||
$vm .= '</div>'; // vidmo-tv
|
||||
$vm .= '</div>'; // vidmo-stage
|
||||
|
||||
$visual_html = $vm;
|
||||
$visual_cls = 'platform-visual has-video-motion';
|
||||
}
|
||||
elseif (!empty($a['brandLayoutAnim'])) {
|
||||
/* ── Branded Layout Design: template builder with brand guide ── */
|
||||
$bl = '<div class="blay-stage" aria-hidden="true">';
|
||||
$bl .= '<div class="blay-editor">';
|
||||
|
||||
/* Toolbar */
|
||||
$bl .= '<div class="blay-toolbar">';
|
||||
$bl .= '<div class="blay-toolbar__dots">';
|
||||
$bl .= '<span class="blay-toolbar__dot blay-toolbar__dot--r"></span>';
|
||||
$bl .= '<span class="blay-toolbar__dot blay-toolbar__dot--y"></span>';
|
||||
$bl .= '<span class="blay-toolbar__dot blay-toolbar__dot--g"></span>';
|
||||
$bl .= '</div>';
|
||||
$bl .= '<div class="blay-toolbar__title">Layout Editor</div>';
|
||||
$bl .= '</div>';
|
||||
|
||||
/* Body: canvas + panel */
|
||||
$bl .= '<div class="blay-body">';
|
||||
|
||||
/* Canvas */
|
||||
$bl .= '<div class="blay-canvas">';
|
||||
$bl .= '<div class="blay-preview">';
|
||||
$bl .= '<div class="blay-el blay-el--logo"></div>';
|
||||
$bl .= '<div class="blay-el blay-el--hero"></div>';
|
||||
$bl .= '<div class="blay-el blay-el--headline"></div>';
|
||||
$bl .= '<div class="blay-el blay-el--body"></div>';
|
||||
$bl .= '<div class="blay-el blay-el--body2"></div>';
|
||||
$bl .= '<div class="blay-el blay-el--cta"></div>';
|
||||
$bl .= '<div class="blay-el blay-el--accent"></div>';
|
||||
$bl .= '</div>';
|
||||
$bl .= '</div>';
|
||||
|
||||
/* Brand guide panel */
|
||||
$bl .= '<div class="blay-panel">';
|
||||
$bl .= '<div class="blay-panel__title">Brand Guide</div>';
|
||||
$bl .= '<div class="blay-colors">';
|
||||
$bl .= '<div class="blay-color blay-color--1"></div>';
|
||||
$bl .= '<div class="blay-color blay-color--2"></div>';
|
||||
$bl .= '<div class="blay-color blay-color--3"></div>';
|
||||
$bl .= '<div class="blay-color blay-color--4"></div>';
|
||||
$bl .= '</div>';
|
||||
$bl .= '<div class="blay-fonts">';
|
||||
$bl .= '<div class="blay-font"><span class="blay-font__label">Heading</span><span class="blay-font__sample">Aa</span></div>';
|
||||
$bl .= '<div class="blay-font"><span class="blay-font__label">Body</span><span class="blay-font__sample blay-font__sample--body">Aa Bb Cc</span></div>';
|
||||
$bl .= '</div>';
|
||||
$bl .= '<div class="blay-spacing">';
|
||||
$bl .= '<div class="blay-spacing__label">Spacing</div>';
|
||||
$bl .= '<div class="blay-spacing__bars">';
|
||||
$bl .= '<div class="blay-spacing__bar blay-spacing__bar--sm"></div>';
|
||||
$bl .= '<div class="blay-spacing__bar blay-spacing__bar--md"></div>';
|
||||
$bl .= '<div class="blay-spacing__bar blay-spacing__bar--lg"></div>';
|
||||
$bl .= '<div class="blay-spacing__bar blay-spacing__bar--xl"></div>';
|
||||
$bl .= '</div>';
|
||||
$bl .= '</div>';
|
||||
$bl .= '</div>';
|
||||
|
||||
$bl .= '</div>'; // blay-body
|
||||
$bl .= '</div>'; // blay-editor
|
||||
$bl .= '</div>'; // blay-stage
|
||||
|
||||
$visual_html = $bl;
|
||||
$visual_cls = 'platform-visual has-brand-layout';
|
||||
}
|
||||
elseif (!empty($a['menuBoardAnim'])) {
|
||||
/* ── Digital Menu Board: TV with rotating menu categories ── */
|
||||
$mb = '<div class="menu-stage" aria-hidden="true">';
|
||||
$mb .= '<div class="menu-tv">';
|
||||
$mb .= '<div class="menu-tv__body">';
|
||||
$mb .= '<div class="menu-tv__screen">';
|
||||
|
||||
/* Live badge */
|
||||
$mb .= '<div class="menu-live"><span class="menu-live__dot"></span><span class="menu-live__text">LIVE</span></div>';
|
||||
|
||||
$mb .= '<div class="menu-slides">';
|
||||
|
||||
/* Slide 1: Mains */
|
||||
$mb .= '<div class="menu-slide menu-slide--mains">';
|
||||
$mb .= '<div class="menu-content">';
|
||||
$mb .= '<div class="menu-content__hd"><span class="menu-content__badge">Lunch</span><span class="menu-content__time">11:30 AM</span></div>';
|
||||
$mb .= '<div class="menu-content__title">Mains</div>';
|
||||
$mb .= '<div class="menu-content__items">';
|
||||
$mb .= '<div class="menu-content__item"><div><div class="menu-content__name">Grilled Chicken</div><div class="menu-content__desc">Herb-crusted, seasonal veg</div></div><div class="menu-content__price">$16.50</div></div>';
|
||||
$mb .= '<div class="menu-content__item"><div><div class="menu-content__name">Wild Salmon</div><div class="menu-content__desc">Pan-seared, lemon butter</div></div><div class="menu-content__price">$22.00</div></div>';
|
||||
$mb .= '<div class="menu-content__item"><div><div class="menu-content__name">Mushroom Risotto</div><div class="menu-content__desc">Truffle oil, parmesan</div></div><div class="menu-content__price">$14.00</div></div>';
|
||||
$mb .= '</div>';
|
||||
$mb .= '</div>';
|
||||
$mb .= '</div>';
|
||||
|
||||
/* Slide 2: Drinks */
|
||||
$mb .= '<div class="menu-slide menu-slide--drinks">';
|
||||
$mb .= '<div class="menu-content">';
|
||||
$mb .= '<div class="menu-content__hd"><span class="menu-content__badge">Drinks</span><span class="menu-content__time">11:30 AM</span></div>';
|
||||
$mb .= '<div class="menu-content__title">Beverages</div>';
|
||||
$mb .= '<div class="menu-content__items">';
|
||||
$mb .= '<div class="menu-content__item"><div><div class="menu-content__name">Flat White</div><div class="menu-content__desc">Double shot, oat option</div></div><div class="menu-content__price">$5.50</div></div>';
|
||||
$mb .= '<div class="menu-content__item"><div><div class="menu-content__name">Fresh Juice</div><div class="menu-content__desc">Orange, apple or green</div></div><div class="menu-content__price">$7.00</div></div>';
|
||||
$mb .= '<div class="menu-content__item"><div><div class="menu-content__name">Sparkling Water</div><div class="menu-content__desc">750ml bottle</div></div><div class="menu-content__price">$4.00</div></div>';
|
||||
$mb .= '</div>';
|
||||
$mb .= '</div>';
|
||||
$mb .= '</div>';
|
||||
|
||||
/* Slide 3: Desserts */
|
||||
$mb .= '<div class="menu-slide menu-slide--dessert">';
|
||||
$mb .= '<div class="menu-content">';
|
||||
$mb .= '<div class="menu-content__hd"><span class="menu-content__badge">Dessert</span><span class="menu-content__time">11:30 AM</span></div>';
|
||||
$mb .= '<div class="menu-content__title">Something Sweet</div>';
|
||||
$mb .= '<div class="menu-content__items">';
|
||||
$mb .= '<div class="menu-content__item"><div><div class="menu-content__name">Chocolate Fondant</div><div class="menu-content__desc">Molten centre, vanilla ice cream</div></div><div class="menu-content__price">$12.00</div></div>';
|
||||
$mb .= '<div class="menu-content__item"><div><div class="menu-content__name">Crème Brûlée</div><div class="menu-content__desc">Classic vanilla, caramelised top</div></div><div class="menu-content__price">$10.00</div></div>';
|
||||
$mb .= '<div class="menu-content__item"><div><div class="menu-content__name">Seasonal Fruit</div><div class="menu-content__desc">Fresh selection, honey drizzle</div></div><div class="menu-content__price">$8.00</div></div>';
|
||||
$mb .= '</div>';
|
||||
$mb .= '</div>';
|
||||
$mb .= '</div>';
|
||||
|
||||
$mb .= '</div>'; // menu-slides
|
||||
$mb .= '</div>'; // menu-tv__screen
|
||||
$mb .= '</div>'; // menu-tv__body
|
||||
$mb .= '<div class="menu-tv__feet"><div class="menu-tv__foot"></div><div class="menu-tv__foot"></div></div>';
|
||||
$mb .= '</div>'; // menu-tv
|
||||
$mb .= '</div>'; // menu-stage
|
||||
|
||||
$visual_html = $mb;
|
||||
$visual_cls = 'platform-visual has-menu-board';
|
||||
}
|
||||
elseif (!empty($a['cameraAnim'])) {
|
||||
$visual_html = oribi_render_camera_animation();
|
||||
$visual_cls = 'platform-visual has-video-editor';
|
||||
|
||||
Reference in New Issue
Block a user