duuinh's picture
I want it to be a one-page application. It's designed for mobile first so we don't need a footer. I want is to be more visual, not only text.
ae84176 verified
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
:root {
--primary: #2563eb;
--secondary: #10b981;
--accent: #f59e0b;
--background: #f8fafc;
--text: #1e293b;
--card-bg: #ffffff;
--divider: #e2e8f0;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
line-height: 1.5;
color: var(--text);
margin: 0;
padding: 0;
overflow-x: hidden;
padding-bottom: 60px; /* Space for bottom nav */
}
.town-background {
background: linear-gradient(to bottom, #87CEEB 0%, #E0F7FA 100%);
position: relative;
width: 100%;
height: calc(100vh - 60px);
overflow: hidden;
}
.town-container {
max-width: 1200px;
margin: 0 auto;
}
.building {
transition: all 0.3s ease;
z-index: 5;
}
.building:hover {
filter: drop-shadow(0 0 8px rgba(255,255,255,0.8));
}
.roof {
position: relative;
}
.roof::after {
content: '';
position: absolute;
bottom: -8px;
left: 0;
width: 100%;
height: 8px;
background: rgba(0,0,0,0.1);
}
.view {
display: none;
}
.view.active {
display: block;
}
.story-panel {
position: absolute;
bottom: 60px;
left: 0;
right: 0;
z-index: 10;
backdrop-filter: blur(5px);
width: 100%;
}
.location-view {
height: calc(100vh - 60px);
overflow-y: auto;
}
.nav-btn {
display: flex;
flex-direction: column;
align-items: center;
padding: 8px;
color: #6b7280;
transition: all 0.3s;
}
.nav-btn.active {
color: var(--primary);
}
.nav-btn i {
width: 24px;
height: 24px;
margin-bottom: 4px;
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0.5rem 1rem;
border-radius: 0.5rem;
font-weight: 500;
transition: all 0.2s ease;
cursor: pointer;
border: none;
font-size: 0.875rem;
}
.btn-primary {
background-color: var(--primary);
color: white;
}
.btn-secondary {
background-color: var(--secondary);
color: white;
}
.btn-outline {
background: transparent;
border: 1px solid var(--primary);
color: var(--primary);
}
/* Snowflakes */
.snowflake {
position: absolute;
color: white;
pointer-events: none;
user-select: none;
z-index: 1;
animation: fall linear infinite, sway ease-in-out infinite alternate;
}
@keyframes fall {
to {
transform: translateY(100vh);
}
}
@keyframes sway {
from {
transform: translateX(-10px);
}
to {
transform: translateX(10px);
}
}
/* Mobile-first responsive grid */
.container {
width: 100%;
padding-left: 1rem;
padding-right: 1rem;
margin-left: auto;
margin-right: auto;
}
@media (min-width: 640px) {
.container {
max-width: 640px;
}
}
@media (min-width: 768px) {
.container {
max-width: 768px;
}
}
@media (min-width: 1024px) {
.container {
max-width: 1024px;
}
}
@media (min-width: 1280px) {
.container {
max-width: 1280px;
}
}
/* Typography */
h1, h2, h3, h4, h5, h6 {
font-weight: 600;
margin-bottom: 1rem;
color: var(--text);
}
h1 {
font-size: 2rem;
line-height: 1.2;
}
h2 {
font-size: 1.5rem;
}
p {
margin-bottom: 1rem;
}
/* Cards */
.card {
background: var(--card-bg);
border-radius: 0.5rem;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
padding: 1.5rem;
margin-bottom: 1.5rem;
}
/* Buttons */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0.5rem 1rem;
border-radius: 0.375rem;
font-weight: 500;
transition: all 0.2s ease;
cursor: pointer;
}
.btn-primary {
background-color: var(--primary);
color: white;
}
.btn-primary:hover {
background-color: #1d4ed8;
}
.btn-secondary {
background-color: var(--secondary);
color: white;
}
.btn-secondary:hover {
background-color: #0d9488;
}
/* Forms */
.input {
width: 100%;
padding: 0.5rem 0.75rem;
border: 1px solid var(--divider);
border-radius: 0.375rem;
transition: border-color 0.2s;
}
.input:focus {
outline: none;
border-color: var(--primary);
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}
/* Utility classes */
.mb-4 { margin-bottom: 1rem; }
.mb-6 { margin-bottom: 1.5rem; }
.mb-8 { margin-bottom: 2rem; }
.p-4 { padding: 1rem; }
.p-6 { padding: 1.5rem; }
.rounded-lg { border-radius: 0.5rem; }
/* Button animations */
.button-hover {
transition: all 0.3s ease;
transform: translateY(0);
}
.button-hover:hover {
transform: translateY(-3px);
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
/* Card hover effects */
.card-hover {
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.card-hover:hover {
transform: translateY(-5px);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
}
/* Input focus effects */
.input-focus:focus {
outline: none;
box-shadow: 0 0 0 3px rgba(198, 40, 40, 0.2);
}
/* Animation for alerts */
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.alert-animation {
animation: fadeIn 0.4s ease-out;
}
/* Floating action button */
.fab {
position: fixed;
bottom: 2rem;
right: 2rem;
z-index: 50;
}
/* Scrollbar styling */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #C62828;
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: #D32F2F;
}