Files
shahikitchen-prod/app/globals.css
T

496 lines
12 KiB
CSS

/**
* =============================================================================
* GLOBAL DESIGN SYSTEM — Shahi Kitchen
* =============================================================================
*
* Shahi cream + gold visual identity for Shahi Kitchen.
* Bright, warm, appetizing, and luxurious without being dark.
*/
@import "tailwindcss";
:root {
/* === Refined Shahi Light Palette - Warm Cream + Gold === */
/* Backgrounds */
--bg: #F8F5F0;
--bg-elevated: #F5F1E9;
--surface: #FFFFFF;
--surface-subtle: #F2EDE4;
/* Gold System */
--gold: #B38B4D;
--gold-dark: #8C6B3A;
--gold-light: #C9A46B;
--gold-muted: #d4a73d;
/* Emerald for contrast */
--emerald: #0f5a4a;
--emerald-deep: #0a4a3d;
/* Text */
--text: #2C2520;
--text-muted: #6B665F;
--text-light: #8A8478;
/* Borders */
--border: #EDE6D9;
/* Typography */
--font-display: var(--font-playfair);
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
--font-arabic: var(--font-arabic);
/* Motion */
--ease: cubic-bezier(0.25, 1, 0.5, 1);
/* Layout — synced by HeaderHeightSync (guest 116px, logged-in 140px) */
--header-height: 116px;
--page-top-gap: 1rem;
}
@media (max-width: 639px) {
input,
select,
textarea {
font-size: 16px;
}
}
/* Anchor links (/#menu, /#experience) land below the fixed header */
.scroll-mt-header {
scroll-margin-top: var(--header-height);
}
/* Prevent horizontal scroll from overflowing children */
html {
overflow-x: clip;
}
/* Base */
body,
.shahi-body {
font-family: var(--font-sans);
background-color: var(--bg);
color: var(--text);
background-image:
radial-gradient(ellipse 80% 50% at 50% -20%, rgba(201, 154, 46, 0.08), transparent),
radial-gradient(ellipse 60% 40% at 100% 100%, rgba(15, 90, 74, 0.04), transparent);
background-attachment: fixed;
}
/* RTL typography */
html[dir="rtl"] body {
font-family: var(--font-arabic), var(--font-sans);
}
html[dir="rtl"] h1,
html[dir="rtl"] h2,
html[dir="rtl"] h3,
html[dir="rtl"] h4 {
font-family: var(--font-arabic), var(--font-display);
letter-spacing: 0;
}
h1, h2, h3, h4 {
font-family: var(--font-display);
font-weight: 600;
letter-spacing: -0.025em;
color: var(--text);
}
/* Premium Buttons */
.btn-primary {
background: linear-gradient(135deg, var(--gold), var(--gold-muted));
color: #241806;
font-weight: 700;
transition: all 0.2s var(--ease);
}
.btn-primary:hover {
transform: translateY(-1px);
}
.btn-outline {
border: 1px solid var(--gold);
color: var(--gold-dark);
background: transparent;
font-weight: 600;
transition: all 0.2s var(--ease);
}
.btn-outline:hover {
background: var(--gold);
color: #241806;
}
/* Glass effect helper */
.glass {
background: rgba(255, 253, 248, 0.72);
backdrop-filter: blur(20px);
}
/* Luxury card style */
.luxury-card {
border-radius: 2rem;
transition: transform 0.4s var(--ease), box-shadow 0.4s var(--ease);
}
.luxury-card:hover {
transform: translateY(-4px);
box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.12);
}
/* Signature dish cards */
.signature-card {
box-shadow: 0 4px 24px -4px rgb(16 23 36 / 0.06);
transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease), border-color 0.35s var(--ease);
}
.signature-card:hover {
box-shadow: 0 20px 40px -12px rgb(179 139 77 / 0.18);
border-color: rgba(201, 154, 46, 0.45);
}
/* Section ornament */
.section-ornament {
position: relative;
}
.section-ornament::before {
content: '';
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
width: 80px;
height: 3px;
background: linear-gradient(90deg, transparent, var(--gold-muted), transparent);
border-radius: 2px;
}
/* Hero overlay text */
.hero-glass {
background: linear-gradient(
135deg,
rgba(255, 253, 248, 0.92) 0%,
rgba(255, 250, 240, 0.88) 50%,
rgba(248, 245, 240, 0.85) 100%
);
backdrop-filter: blur(20px);
border: 1px solid rgba(201, 154, 46, 0.2);
box-shadow:
0 25px 50px -12px rgba(16, 23, 36, 0.15),
inset 0 1px 0 rgba(255, 255, 255, 0.8);
}
/* =============================================================================
* FOOTER — Matches header cream + gold palette
* ============================================================================= */
.shahi-footer {
background: linear-gradient(
180deg,
#fffcf7 0%,
#fbf7ef 55%,
#f5f0e6 100%
);
color: #101724;
border-top: 1px solid rgba(201, 154, 46, 0.25);
box-shadow: 0 -4px 24px -4px rgba(16, 23, 36, 0.06);
}
.footer-top-rail {
height: 4px;
background: linear-gradient(
90deg,
transparent 0%,
#8a6a25 15%,
#c99a2e 35%,
#f4d47f 50%,
#c99a2e 65%,
#8a6a25 85%,
transparent 100%
);
}
.footer-main {
position: relative;
}
.footer-glow {
position: absolute;
border-radius: 50%;
pointer-events: none;
filter: blur(80px);
}
.footer-glow--gold {
top: -40px;
right: 10%;
width: 280px;
height: 280px;
background: rgba(201, 154, 46, 0.08);
}
.footer-glow--emerald {
bottom: 0;
left: -5%;
width: 320px;
height: 320px;
background: rgba(15, 90, 74, 0.05);
}
.footer-heading-line {
display: inline-block;
width: 20px;
height: 2px;
background: linear-gradient(90deg, #c99a2e, #f4d47f);
border-radius: 1px;
}
.footer-info-card {
border-radius: 1rem;
border: 1px solid rgba(201, 154, 46, 0.22);
background: rgba(255, 255, 255, 0.72);
padding: 1rem 1.125rem;
backdrop-filter: blur(8px);
transition: border-color 0.25s var(--ease), background 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.footer-info-card:hover {
border-color: rgba(201, 154, 46, 0.45);
background: #ffffff;
box-shadow: 0 4px 16px -6px rgba(16, 23, 36, 0.08);
}
.footer-link {
color: #3d4654;
transition: color 0.2s var(--ease), transform 0.2s var(--ease);
}
.footer-link:hover {
color: #0f5a4a;
}
html[dir="rtl"] .footer-link:hover {
transform: translateX(-2px);
}
html[dir="ltr"] .footer-link:hover {
transform: translateX(2px);
}
.footer-social-btn {
display: flex;
align-items: center;
justify-content: center;
width: 2.75rem;
height: 2.75rem;
border-radius: 0.875rem;
border: 1px solid rgba(201, 154, 46, 0.35);
background: rgba(255, 255, 255, 0.85);
color: #8a6a25;
transition: all 0.25s var(--ease);
}
.footer-social-btn:hover {
background: linear-gradient(135deg, #c99a2e, #e8c56a);
color: #241806;
border-color: #c99a2e;
transform: translateY(-2px);
box-shadow: 0 8px 24px -4px rgba(201, 154, 46, 0.35);
}
.footer-logo-ring {
border-color: rgba(201, 154, 46, 0.35);
background: #ffffff;
box-shadow: 0 4px 20px -6px rgba(16, 23, 36, 0.1);
}
.footer-bottom {
background: rgba(255, 255, 255, 0.55);
border-top: 1px solid rgba(201, 154, 46, 0.2);
}
.footer-cta {
backdrop-filter: blur(12px);
background: linear-gradient(
135deg,
rgba(255, 255, 255, 0.92) 0%,
rgba(255, 252, 247, 0.88) 100%
);
border-color: rgba(201, 154, 46, 0.35);
}
/* Language banner subtle shine */
.lang-banner {
position: relative;
overflow: hidden;
}
.lang-banner::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(
90deg,
transparent 0%,
rgba(255, 255, 255, 0.06) 50%,
transparent 100%
);
pointer-events: none;
}
/* Mesmerizing shimmer animation for premium buttons (used in Navbar) */
@keyframes shimmer {
0% { transform: translateX(-100%); }
100% { transform: translateX(200%); }
}
/* Continuous menu reel marquee for 43" displays - items move LEFT (enter from right, exit left), seamless loop with 2x duplication */
@keyframes menu-reel {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
.menu-reel-track {
will-change: transform;
animation: menu-reel linear infinite;
/* Force GPU layer for stable poster/video during transform */
transform: translateZ(0);
backface-visibility: hidden;
}
/* Homepage signature menu — dishes scroll left to right */
@keyframes signature-menu-reel-ltr {
0% { transform: translateX(-50%); }
100% { transform: translateX(0); }
}
.signature-menu-reel-track {
will-change: transform;
animation: signature-menu-reel-ltr linear infinite;
transform: translateZ(0);
backface-visibility: hidden;
}
.signature-menu-reel:hover .signature-menu-reel-track {
animation-play-state: paused;
}
@media (prefers-reduced-motion: reduce) {
.signature-menu-reel-track {
animation: none;
flex-wrap: wrap;
width: 100% !important;
justify-content: center;
}
}
/* =============================================================================
* KIOSK / FULLSCREEN DISPLAY PAGES (screen1 & screen2)
* Professional clean TV/window look: no scrollbars ever, even in browser
* fullscreen (F11) or kiosk mode. User zooms browser (in/out) to adjust
* visible reel density instead of scrolling. Content sized to fit 100vh.
* ============================================================================= */
html.screen-kiosk,
body.screen-kiosk {
overflow: hidden !important;
overscroll-behavior: none;
/* Hide scrollbars cross-browser */
scrollbar-width: none; /* Firefox */
-ms-overflow-style: none; /* IE/Edge */
}
html.screen-kiosk::-webkit-scrollbar,
body.screen-kiosk::-webkit-scrollbar {
display: none; /* Chrome/Safari/Opera */
}
.screen-root {
height: 100vh;
overflow: hidden;
display: flex;
flex-direction: column;
/* Extra insurance: hide any descendant scrollbars */
scrollbar-width: none;
-ms-overflow-style: none;
}
.screen-root::-webkit-scrollbar,
.screen-root *::-webkit-scrollbar {
display: none;
}
/* Subtle polish for pure display (no accidental text selection or pointer) */
.screen-root {
cursor: default;
}
/* =============================================================================
* VERTICAL REEL for screen3 order columns
* Orders move UP (from below to above) in a loop, like screen2 horizontal but vertical.
* Cards have fixed px height; viewport h-full of available column space (after header) =>
* fills entire screen height with no white space (max top to bottom).
* Zoom in browser: fewer items visible per column (larger cards relative).
* Zoom out: more items visible per column (smaller cards relative).
* When > visible count, the track loops seamlessly (duplicated list + 50% translateY).
* ============================================================================= */
@keyframes order-reel-up {
0% { transform: translateY(0); }
100% { transform: translateY(-50%); }
}
.order-reel-track {
display: flex;
flex-direction: column;
will-change: transform;
animation: order-reel-up linear infinite;
/* Force GPU layer for stable animation */
transform: translateZ(0);
backface-visibility: hidden;
}
.reel-viewport {
overflow: hidden;
/* Height 100% of available (flex h-full after section header) to fill screen.
Fixed card heights + zoom changes visible count dynamically. */
}
/* Menu page — smooth category filter scrolling */
.menu-category-scroll {
scroll-behavior: smooth;
scrollbar-width: none;
-ms-overflow-style: none;
}
.menu-category-scroll::-webkit-scrollbar {
display: none;
}
@media (min-width: 1024px) {
.menu-category-scroll {
scrollbar-width: thin;
scrollbar-color: #d4c9b8 transparent;
}
.menu-category-scroll::-webkit-scrollbar {
display: block;
width: 5px;
}
.menu-category-scroll::-webkit-scrollbar-track {
background: transparent;
}
.menu-category-scroll::-webkit-scrollbar-thumb {
background: #d4c9b8;
border-radius: 999px;
}
.menu-category-scroll::-webkit-scrollbar-thumb:hover {
background: #c99a2e;
}
}