webstreamnew / pages /global.css
copilot-swe-agent[bot]
Add new UI components and update front page design
57c2af0
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
--primary: #10b981;
--primary-hover: #059669;
--accent: #3b82f6;
--accent-hover: #2563eb;
--dark-700: #1f2937;
--dark-800: #111827;
--dark-900: #0f172a;
--dark-1000: #020617;
}
html,
body {
margin: 0;
padding: 0;
min-height: 100vh;
color: white;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
@apply stroke-white fill-white bg-dark-1000;
}
.action {
@apply outline-none;
@apply hover:bg-dark-700 hover:drop-shadow-lg;
@apply active:bg-dark-600;
@apply transition-all duration-200 ease-in-out;
}
.action > * {
@apply outline-none;
}
.action:hover > * {
@apply bg-dark-700;
}
.action:active > * {
@apply bg-dark-600;
}
.hide-below-sm {
@apply hidden sm:inline-block;
}
/* Modern button styles */
button, .btn {
@apply transition-all duration-200 ease-in-out;
@apply font-medium;
}
button:focus-visible, .btn:focus-visible {
@apply ring-2 ring-primary-500 ring-offset-2 ring-offset-dark-1000;
}
/* Modern input styles */
input, textarea {
@apply transition-all duration-200 ease-in-out;
}
input:focus, textarea:focus {
@apply ring-2 ring-primary-500 ring-opacity-50;
}
/* Smooth scrolling */
html {
scroll-behavior: smooth;
}
/* Fullscreen video player styles for mobile */
.video-fullscreen {
height: 100dvh !important;
max-height: 100dvh !important;
width: 100vw !important;
}
/* Support for older browsers that don't support dvh */
@supports not (height: 100dvh) {
.video-fullscreen {
height: 100vh !important;
max-height: 100vh !important;
}
}
/* Safe area handling for iOS notches */
.video-fullscreen {
padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}
/* Non-fullscreen video styles */
.video-normal {
height: calc((9 / 16) * 100vw);
max-height: calc(100dvh - 210px);
}
@supports not (height: 100dvh) {
.video-normal {
max-height: calc(100vh - 210px);
}
}
/* Controls overlay improvements for fullscreen */
.controls-fullscreen {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 10;
padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}
/* Landscape orientation on mobile - make video fill screen better
max-height: 500px targets mobile devices in landscape (typical mobile heights are 320-480px) */
@media screen and (orientation: landscape) and (max-height: 500px) {
.video-normal {
height: 100dvh !important;
max-height: 100dvh !important;
width: 100vw !important;
}
@supports not (height: 100dvh) {
.video-normal {
height: 100vh !important;
max-height: 100vh !important;
}
}
}
/* Landscape orientation fullscreen - ensure video container fills screen */
@media screen and (orientation: landscape) {
.video-fullscreen {
height: 100dvh !important;
max-height: 100dvh !important;
width: 100vw !important;
object-fit: contain;
}
.video-fullscreen video,
.video-fullscreen iframe {
width: 100% !important;
height: 100% !important;
object-fit: contain;
}
}
/* New animations for front page */
@keyframes fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fade-up {
from {
opacity: 0;
transform: translateY(8px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes pulse-slow {
0%,
100% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0.7;
transform: scale(1.01);
}
}
@keyframes bounce-subtle {
0%,
100% {
transform: translateY(0);
}
50% {
transform: translateY(2px);
}
}
.animate-fade-in {
animation: fade-in 150ms ease-out forwards;
}
.animate-fade-up {
animation: fade-up 150ms ease-out both;
}
.animate-pulse-slow {
animation: pulse-slow 8s ease-in-out infinite;
}
.animate-bounce-subtle {
animation: bounce-subtle 2.5s ease-in-out infinite;
}