.main { padding: 2rem; display: flex; flex-direction: column; justify-content: space-between; min-height: 100vh; /* Full viewport height */ position: relative; /* Needed for absolute positioning of pseudo-elements */ overflow: hidden; /* Ensures pseudo-element doesn't overflow */ } .background { position: absolute; top: 0; right: 0; bottom: 0; left: 0; background-blend-mode: screen; background-size: cover; background-position: center; background-repeat: no-repeat; z-index: -1; /* Place it behind the content */ } .background::before { content: ''; position: absolute; top: -50%; right: -50%; bottom: -50%; left: -50%; background-repeat: no-repeat; background-position: 50%; transform: rotate(45deg) scale(1.5); } .background::after { content: ''; position: absolute; top: -50%; right: -50%; bottom: -50%; left: -50%; background-repeat: no-repeat; background-position: 50%; transform: rotate(-45deg) scale(1.5); backdrop-filter: blur(30px); pointer-events: none; /* Allows clicks to pass through to elements below */ } .card span { display: inline-block; transition: transform 200ms; } .card h2 { font-weight: 600; margin-bottom: 0.7rem; } .card p { margin: 0; opacity: 0.6; font-size: 0.9rem; line-height: 1.5; max-width: 30ch; } .center { display: flex; justify-content: center; align-items: center; position: relative; padding: 4rem 0; } .center::before { background: var(--secondary-glow); border-radius: 50%; width: 480px; height: 360px; margin-left: -400px; } .center::after { background: var(--primary-glow); width: 240px; height: 180px; z-index: -1; } .center::before, .center::after { content: ''; left: 50%; position: absolute; filter: blur(45px); transform: translateZ(0); } .logo { position: relative; } /* Enable hover only on non-touch devices */ @media (hover: hover) and (pointer: fine) { .card:hover { background: rgba(var(--card-rgb), 0.1); border: 1px solid rgba(var(--card-border-rgb), 0.15); } .card:hover span { transform: translateX(4px); } } @media (prefers-reduced-motion) { .card:hover span { transform: none; } } /* Mobile */ @media (max-width: 700px) { .content { padding: 4rem; } .grid { grid-template-columns: 1fr; margin-bottom: 120px; max-width: 320px; text-align: center; } .card { padding: 1rem 2.5rem; } .card h2 { margin-bottom: 0.5rem; } .center { padding: 8rem 0 6rem; } .center::before { transform: none; height: 300px; } .description { font-size: 0.8rem; } .description a { padding: 1rem; } .description p, .description div { display: flex; justify-content: center; position: fixed; width: 100%; } .description p { align-items: center; inset: 0 0 auto; padding: 2rem 1rem 1.4rem; border-radius: 0; border: none; border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25); background: linear-gradient( to bottom, rgba(var(--background-start-rgb), 1), rgba(var(--callout-rgb), 0.5) ); background-clip: padding-box; backdrop-filter: blur(24px); } .description div { align-items: flex-end; pointer-events: none; inset: auto 0 0; padding: 2rem; height: 200px; background: linear-gradient( to bottom, transparent 0%, rgb(var(--background-end-rgb)) 40% ); z-index: 1; } } /* Tablet and Smaller Desktop */ @media (min-width: 701px) and (max-width: 1120px) { .grid { grid-template-columns: repeat(2, 50%); } } @media (prefers-color-scheme: dark) { .vercelLogo { filter: invert(1); } .logo { filter: invert(1) drop-shadow(0 0 0.3rem #ffffff70); } } @keyframes rotate { from { transform: rotate(360deg); } to { transform: rotate(0deg); } } .response pre { white-space: pre-wrap; word-break: break-word; overflow-wrap: break-word; overflow-y: auto; max-height: 500px; /* Maximum height before scrolling */ } .input { padding: 0.5rem 1rem; /* Adjust the padding inside the input */ margin: 0.5rem 0; /* Adds margin around the input for spacing */ border: 1px solid #ccc; /* A light border for the input */ border-radius: 4px; /* Rounded corners */ font-size: 1rem; /* Base font size */ line-height: 1.5; /* Height of the input line */ color: #333; /* Text color */ background-color: #fff; /* Background color of the input */ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Optional: Adds a subtle shadow */ width: 100%; /* Make input full width of the parent container */ box-sizing: border-box; /* Include padding and border in the element's total width and height */ transition: border-color 0.3s, box-shadow 0.3s; /* Smooth transition for focus effect */ } .input:focus { border-color: #007bff; /* Highlight color when input is focused */ outline: none; /* Removes the default focus outline */ box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); /* Adds a glow effect on focus */ } .button { padding: 0.75rem 1.5rem; /* Adjust padding to increase the button's size */ margin-top: 1rem; /* Space above the button */ border: 1px solid #707070; /* Darker border for depth */ border-radius: 5px; /* Rounded corners */ font-size: 1rem; /* Font size */ font-weight: bold; /* Bold text */ color: #000; /* Black text for contrast */ background: linear-gradient(180deg, #a8a8a8 0%, #8b8b8b 50%, #a8a8a8 100%); /* Gradient to simulate brushed metal */ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); /* Shadow for a 3D effect */ text-align: center; /* Center the text */ cursor: pointer; /* Cursor change on hover */ transition: background-color 0.3s, box-shadow 0.2s; /* Smooth transitions for interactions */ } .button:hover { background: linear-gradient(180deg, #b0b0b0 0%, #9d9d9d 50%, #b0b0b0 100%); /* Lighter gradient on hover */ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); /* Less pronounced shadow on hover */ } .button:active { background: linear-gradient(180deg, #8b8b8b 0%, #a8a8a8 50%, #8b8b8b 100%); /* Inverted gradient for pressed effect */ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); /* Inner shadow for a pressed effect */ } .icon { height: 75px; width: 75px; } .button:active { transform: translateY(0); /* Button goes back down when clicked */ box-shadow: 0 3px 6px rgba(50, 50, 93, 0.16), 0 2px 4px rgba(0, 0, 0, 0.1); /* Smaller shadow when button is pressed */ } .button:disabled { background-image: linear-gradient(to right, #cbd5e1, #94a3b8); /* Less vibrant gradient for disabled state */ cursor: default; /* No pointer cursor since it's not clickable */ box-shadow: none; /* No shadow for a flat appearance */ } .main { display: flex; flex-direction: column; justify-content: space-between; padding: 2rem; } .title { color: #333; text-align: center; margin-bottom: 2rem; } .messages { display: flex; flex-direction: column; justify-content: flex-end; /* Aligns messages to the bottom */ max-height: 80vh; /* Adjust the percentage as needed */ overflow-y: auto; /* Allows scrolling if content exceeds container height */ padding: 25px; border-radius: 10px; margin-bottom: 10px; /* Space between chat container and input field */ } /* Responsive adjustments */ @media (max-width: 768px) { .messages { max-height: 70vh; /* More space for smaller screens */ } } /* Further adjustments can be made for smaller screens */ @media (max-width: 480px) { .messages { max-height: 60vh; } } .message { display: flex; align-items: center; padding: 10px; margin-bottom: 10px; border-radius: 5px; background: linear-gradient(180deg, #a8a8a8 0%, #8b8b8b 50%, #a8a8a8 100%); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); color: #333; overflow: hidden; /* Prevents text from overflowing */ } .message-content { flex: 1; margin-right: 10px; /* Adjust as needed */ overflow: hidden; /* Prevents text from overflowing */ text-overflow: ellipsis; /* Adds an ellipsis to text that overflows */ white-space: nowrap; /* Keeps the text on a single line */ } .avatar { margin-right: 10px; /* Ensure you have width, height, and other necessary styles here */ } /* Style for function call messages */ .function-call { color: #555; font-style: italic; } /* Input field styles */ .input { padding: 10px; margin: 10px 0; width: 100%; box-sizing: border-box; border: 1px solid #ddd; border-radius: 4px; background-color: transparent; } .input:focus { border-color: #111827 } /* Button styles */ .button { padding: 10px 20px; background-color: #5cb85c; color: white; border: none; border-radius: 4px; cursor: pointer; width: 100%; } .button:disabled { background-color: #ccc; } /* Form styles */ .form { width: 100%; } .flex { display: flex; align-items: flex-start; } .text-gray-500 { color: #737373; } .font-bold { font-weight: bold; } /* Additional media query for responsive design */ @media (max-width: 640px) { .message { max-width: 100%; } } /* In your CSS file */ .avatar-user { width: 20px; /* Based on Tailwind's width setting */ } .avatar { display: inline-block; vertical-align: middle; width: 40px; height: 40px; margin-right: 10px; } @keyframes moveClouds { 0% { background-position: 0 0; } 100% { background-position: 1000px 500px; } }