Refactor code structure for improved readability and maintainability

This commit is contained in:
Matt Batchelder
2026-02-23 06:57:08 -05:00
parent 60e4934f86
commit 414e91b2cb
3 changed files with 1383 additions and 959 deletions

View File

@@ -5873,3 +5873,213 @@ p:last-child { margin-bottom: 0; }
display: block;
filter: drop-shadow(0 8px 28px rgba(0, 0, 0, 0.18));
}
/* ═══════════════════════════════════════════════════════════════
HOSPITALITY SIGN ANIMATION (.platform-visual.has-hospitality)
Rotating display: Breakfast -> Lunch -> Dinner (9s cycle)
═══════════════════════════════════════════════════════════════ */
.platform-visual.has-hospitality {
background: none !important;
border: none !important;
border-radius: 0;
aspect-ratio: unset;
padding: 0;
overflow: visible;
box-shadow: none;
font-size: inherit;
}
.hosp-stage {
width: 100%;
max-width: 520px;
margin: 0 auto;
}
.hosp-tv {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}
.hosp-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);
}
.hosp-tv__screen {
width: 100%;
aspect-ratio: 16/9;
background: #0a0a0a;
border-radius: 2px;
overflow: hidden;
position: relative;
}
.hosp-tv__feet {
display: flex;
justify-content: space-between;
width: 60%;
max-width: 300px;
}
.hosp-tv__foot {
width: 12px;
height: 8px;
background: #111;
border: 1px solid #000;
border-radius: 0 0 4px 4px;
}
/* POS Sync Indicator */
.hosp-pos {
position: absolute;
top: 12px;
right: 12px;
display: flex;
align-items: center;
gap: 6px;
background: rgba(0,0,0,0.5);
padding: 4px 8px;
border-radius: 40px;
z-index: 10;
border: 1px solid rgba(255,255,255,0.1);
backdrop-filter: blur(4px);
}
.hosp-pos__dot {
width: 6px;
height: 6px;
background: #4ade80;
border-radius: 50%;
box-shadow: 0 0 8px #4ade80;
animation: hosp-pos-pulse 2s ease-in-out infinite;
}
.hosp-pos__txt {
font-size: 9px;
color: #fff;
font-weight: 500;
letter-spacing: 0.3px;
}
/* Menu Slides */
.hosp-slides {
position: relative;
width: 100%;
height: 100%;
}
.hosp-slide {
position: absolute;
inset: 0;
opacity: 0;
animation: hosp-slide-fade 9s infinite;
display: flex;
flex-direction: column;
}
.hosp-slide--breakfast { animation-delay: 0s; }
.hosp-slide--lunch { animation-delay: 3s; }
.hosp-slide--dinner { animation-delay: 6s; }
.hosp-menu {
padding: 24px 32px;
height: 100%;
display: flex;
flex-direction: column;
background: linear-gradient(135deg, rgba(20,20,25,1) 0%, rgba(30,30,40,1) 100%);
color: #fff;
}
.hosp-menu__hd {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
.hosp-menu__badge {
font-size: 10px;
text-transform: uppercase;
letter-spacing: 1px;
background: var(--color-primary);
padding: 2px 8px;
border-radius: 4px;
font-weight: 700;
}
.hosp-menu__time {
font-size: 11px;
color: rgba(255,255,255,0.5);
font-family: monospace;
}
.hosp-menu__title {
font-size: 24px;
font-weight: 800;
margin-bottom: 20px;
color: #fff;
}
.hosp-menu__items {
display: flex;
flex-direction: column;
gap: 16px;
}
.hosp-menu__item {
display: flex;
justify-content: space-between;
align-items: flex-start;
border-bottom: 1px solid rgba(255,255,255,0.05);
padding-bottom: 8px;
}
.hosp-menu__name {
font-size: 15px;
font-weight: 600;
color: #fff;
margin-bottom: 2px;
}
.hosp-menu__desc {
font-size: 12px;
color: rgba(255,255,255,0.4);
}
.hosp-menu__price {
font-size: 16px;
font-weight: 700;
color: var(--color-primary);
}
/* Keyframes */
@keyframes hosp-pos-pulse {
0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: 0.4; transform: scale(0.8); }
}
@keyframes hosp-slide-fade {
0%, 2% { opacity: 0; transform: translateY(10px); }
5%, 30% { opacity: 1; transform: translateY(0); }
33%, 100% { opacity: 0; transform: translateY(-10px); }
}
@media (max-width: 640px) {
.hosp-menu { padding: 16px 20px; }
.hosp-menu__title { font-size: 18px; margin-bottom: 12px; }
.hosp-menu__item { gap: 12px; }
.hosp-menu__name { font-size: 13px; }
.hosp-menu__desc { display: none; }
.hosp-menu__price { font-size: 14px; }
}