chat-with-internet / app /page.module.css
matt HOFFNER
macos inspired css
9f52969
raw
history blame
8.92 kB
.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-color: #1E90FF; /* Solid color fallback */
background-image:
radial-gradient(circle at 20% 20%, rgba(255, 255, 255, 0.3), transparent 70%),
radial-gradient(circle at 80% 80%, rgba(255, 255, 255, 0.3), transparent 70%);
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-image: radial-gradient(closest-side, rgba(255, 255, 255, 0.2), transparent);
background-repeat: no-repeat;
background-position: 50%;
transform: rotate(45deg) scale(1.5);
backdrop-filter: blur(30px);
}
.background::after {
content: '';
position: absolute;
top: -50%; right: -50%; bottom: -50%; left: -50%;
background-image: radial-gradient(closest-side, rgba(255, 255, 255, 0.2), transparent);
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;
height: 100vh;
justify-content: space-between;
padding: 2rem;
}
.title {
color: #333;
text-align: center;
margin-bottom: 2rem;
}
.messages {
flex: 1;
border: 8px solid transparent;
border-radius: 10px;
padding: 25px;
}
.message {
background-color: #f9f9f9;
border-radius: 15px;
padding: 10px 15px;
margin: 8px 0;
max-width: 80%;
word-break: break-word; /* Ensures text breaks nicely */
}
/* Different background for messages from the 'user' role */
.message-user {
background-color: #dcf8c6 !important;
}
/* Avatar styles */
.avatar {
width: 40px;
height: 40px;
border-radius: 50%;
background-color: #ccc;
margin-right: 10px;
}
/* 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;
color: inherit;
}
.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 */
}