@font-face {
    font-family: 'Satoshi';
    src: url('./fonts/Satoshi-Variable.woff2') format('woff2-variations'),
         url('./fonts/Satoshi-Variable.woff2') format('woff2');
    font-weight: 300 900;
    font-style: normal;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    font-family: 'Satoshi', sans-serif;
    color: #fff;
    background: linear-gradient(135deg, #1c9cf6, #15c3fb);
    transition: background 0.8s ease;
    overflow: hidden;
    position: relative;
}

body::before, body::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    filter: blur(80px);
    z-index: -1;
    opacity: 0.6;
    animation: float 15s infinite alternate ease-in-out;
}

body::before {
    width: 400px;
    height: 400px;
    background: rgba(255, 255, 255, 0.2);
    top: -100px;
    left: -100px;
}

body::after {
    width: 300px;
    height: 300px;
    background: rgba(0, 0, 0, 0.1);
    bottom: -50px;
    right: -50px;
    animation-delay: -5s;
}

@keyframes float {
    from { transform: translate(0, 0) rotate(0deg); }
    to { transform: translate(100px, 50px) rotate(30deg); }
}

.weather-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 90%;
    max-width: 400px;
    padding: 2.5rem;
    border-radius: 30px;
    text-align: center;
    background: rgba(255, 255, 255, 0.12);
    backdrop-filter: blur(25px);
    -webkit-backdrop-filter: blur(25px);
    border: 1px solid rgba(255, 255, 255, 0.3);
    box-shadow: 0 25px 45px rgba(0, 0, 0, 0.15),
                inset 0 0 15px rgba(255, 255, 255, 0.1);
    transition: all 0.5s ease;
    text-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
}

.weather-container h2 {
    font-size: 1.8rem;
    margin-bottom: 1.5rem;
    font-weight: 700;
    letter-spacing: -0.5px;
}

input[type="text"] {
    width: 100%;
    font-size: 1rem;
    padding: 15px 20px;
    margin-bottom: 1rem;
    border-radius: 15px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    outline: none;
    transition: 0.3s;
}

input[type="text"]:focus {
    background: rgba(255, 255, 255, 0.2);
    border-color: rgba(255, 255, 255, 0.5);
}

button {
    width: 100%;
    padding: 14px;
    border-radius: 15px;
    border: none;
    background: #fff;
    color: #1c9cf6;
    cursor: pointer;
    font-size: 1rem;
    font-weight: 700;
    transition: 0.3s;
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
}

button:hover {
    transform: translateY(-2px);
    box-shadow: 0 15px 25px rgba(0, 0, 0, 0.2);
    filter: brightness(1.1);
}

.city-name {
    margin: 1rem 0;
    font-size: 1.5rem;
    font-weight: 700;
}

.icon {
    font-size: 5rem;
    margin: 1rem 0;
    filter: drop-shadow(0 10px 15px rgba(0,0,0,0.2));
}

.temperature {
    font-size: 3.5rem;
    font-weight: 800;
    margin-bottom: 0.5rem;
}

.wind {
    font-size: 1rem;
    opacity: 0.9;
}

body.clear-sky { background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%); }
body.cloudy    { background: linear-gradient(135deg, #606c88 0%, #3f4c6b 100%); }
body.rain      { background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%); }
body.snow      { background: linear-gradient(135deg, #e6e9f0 0%, #eef1f5 100%); color: #333; }

body.snow .weather-container { border-color: rgba(0,0,0,0.1); color: #333; }
body.snow input, body.snow button { border-color: rgba(0,0,0,0.1); }
body.snow button { background: #333; color: #fff; }

.loading {
    display: block;
    animation: pulse 1.5s infinite;
}

@keyframes pulse {
    0% { opacity: 0.4; transform: scale(0.98); }
    50% { opacity: 1; transform: scale(1); }
    100% { opacity: 0.4; transform: scale(0.98); }
}
