← back to Dear Bubbe Nextjs
app/globals.css
158 lines
@import "tailwindcss";
* {
margin: 0;
padding: 0;
box-sizing: border-box;
-webkit-tap-highlight-color: transparent;
}
html, body {
width: 100%;
height: 100%;
overflow: hidden;
position: fixed;
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Prevent iOS zoom on input focus */
input, textarea, select, button {
font-size: 16px !important;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
/* Disable pull to refresh */
body {
overscroll-behavior: none;
overscroll-behavior-y: none;
}
/* Fix for iOS viewport height */
@supports (-webkit-touch-callout: none) {
body {
height: -webkit-fill-available;
}
}
/* Ensure proper viewport on all devices */
#__next {
width: 100%;
height: 100%;
}
/* Remove default button styles */
button {
background: none;
border: none;
padding: 0;
font: inherit;
cursor: pointer;
outline: inherit;
}
/* Smooth scrolling */
* {
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
}
/* Prevent text selection on buttons */
button, a {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* Loading animation */
@keyframes bounce {
0%, 60%, 100% {
transform: translateY(0);
}
30% {
transform: translateY(-10px);
}
}
/* Prevent flash of unstyled content */
body {
opacity: 0;
animation: fadeIn 0.3s ease-in forwards;
animation-delay: 0.1s;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* Skeleton loader styles */
.skeleton {
background: linear-gradient(
90deg,
#f0f0f0 25%,
#e0e0e0 50%,
#f0f0f0 75%
);
background-size: 200% 100%;
animation: loading 1.5s infinite;
}
@keyframes loading {
0% {
background-position: 200% 0;
}
100% {
background-position: -200% 0;
}
}
/* Smooth page transitions */
.page-transition-enter {
opacity: 0;
transform: translateY(10px);
}
.page-transition-enter-active {
opacity: 1;
transform: translateY(0);
transition: opacity 300ms, transform 300ms;
}
.page-transition-exit {
opacity: 1;
}
.page-transition-exit-active {
opacity: 0;
transition: opacity 300ms;
}
/* Smooth listening indicator transitions */
@keyframes pulse {
0%, 100% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0.7;
transform: scale(0.95);
}
}
/* Prevent audio button flashing */
.audio-button {
transition: background-color 300ms ease, transform 150ms ease;
}
.audio-button:active {
transform: scale(0.95);
}