@charset "utf-8";

/* General Page Styles */

* {
    box-sizing: border-box;
}

html {
    background-color: rgb(225, 232, 238);
}

body {
    margin: 0 auto;
    width: 90%;
    max-width: 1200px;
    font-family: Verdana, Geneva, sans-serif;
    color: rgb(45, 55, 65);
    background-color: white;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
}

header {
    background-color: rgb(35, 65, 95);
    color: white;
    text-align: center;
    padding: 30px 20px;
}

header h1 {
    margin: 0;
    font-size: 2.4em;
}

header p {
    margin: 10px 0 0;
    font-size: 1.1em;
}


/* Navigation */

nav {
    background-color: rgb(25, 45, 65);
}

nav ul {
    display: flex;
    justify-content: center;
    list-style: none;
    margin: 0;
    padding: 0;
}

nav li {
    width: 33.333%;
}

nav a {
    display: block;
    color: white;
    text-decoration: none;
    text-align: center;
    padding: 16px;
    font-weight: bold;
    transition: background-color 0.4s ease,
    color 0.4s ease,
    font-size 0.4s ease;
}

nav a:hover,
nav a:focus {
    background-color: rgb(105, 170, 220);
    color: rgb(20, 40, 60);
    font-size: 1.1em;
}


/* Main Content */

main {
    padding: 30px;
}

h2 {
    color: rgb(35, 65, 95);
}

h3 {
    color: rgb(50, 85, 115);
}

section {
    margin-bottom: 40px;
}

p,
li {
    line-height: 1.6;
}


/* Home Hero */

.hero {
    display: flex;
    align-items: center;
    gap: 30px;
}

.hero img {
    width: 50%;
    height: auto;
    border-radius: 8px;
}

.hero-text {
    width: 50%;
}

.hero-text h2 {
    font-size: 2em;
    margin-top: 0;
}


/* Buttons */

.button {
    display: inline-block;
    background-color: rgb(35, 95, 145);
    color: white;
    text-decoration: none;
    font-weight: bold;
    padding: 12px 20px;
    margin-top: 10px;
    border-radius: 5px;
    transition: background-color 0.3s ease,
    transform 0.3s ease;
}

.button:hover,
.button:focus {
    background-color: rgb(70, 140, 195);
    transform: scale(1.05);
}


/* Home Service Cards */

.cards {
    display: flex;
    gap: 20px;
}

.card {
    flex: 1;
    padding: 20px;
    background-color: rgb(238, 243, 247);
    border: 1px solid rgb(190, 205, 215);
    border-radius: 8px;
    transition: transform 0.3s ease,
    box-shadow 0.3s ease;
}

.card:hover {
    transform: translateY(-5px);
    box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15);
}


/* Callout */

.callout {
    text-align: center;
    background-color: rgb(225, 238, 248);
    padding: 25px;
    border-radius: 8px;
}


/* Services Page */

.service-section {
    display: flex;
    align-items: center;
    gap: 30px;
    padding: 25px 0;
    border-bottom: 1px solid rgb(200, 210, 220);
}

.service-section img {
    width: 45%;
    height: auto;
    border-radius: 8px;
}

.service-section div {
    flex: 1;
}

.service-section.reverse {
    flex-direction: row-reverse;
}


/* Services Table */

.table-container {
    overflow-x: auto;
}

table {
    width: 100%;
    border-collapse: collapse;
}

th,
td {
    border: 1px solid rgb(130, 150, 165);
    padding: 12px;
    text-align: left;
}

th {
    background-color: rgb(35, 65, 95);
    color: white;
}

tbody tr:nth-child(even) {
    background-color: rgb(238, 243, 247);
}

tbody tr:hover {
    background-color: rgb(220, 235, 245);
}


/* Contact Page */

.contact-section {
    display: flex;
    gap: 40px;
    align-items: flex-start;
}

.contact-info {
    width: 35%;
    background-color: rgb(238, 243, 247);
    padding: 20px;
    border-radius: 8px;
}

form {
    width: 65%;
}

fieldset {
    border: 1px solid rgb(150, 165, 175);
    border-radius: 8px;
    padding: 25px;
}

legend {
    color: rgb(35, 65, 95);
    font-size: 1.2em;
    font-weight: bold;
    padding: 0 10px;
}

label {
    display: block;
    margin-top: 15px;
    margin-bottom: 5px;
    font-weight: bold;
}

input,
select,
textarea {
    width: 100%;
    padding: 10px;
    font-family: inherit;
    font-size: 1em;
    border: 1px solid rgb(150, 165, 175);
    border-radius: 4px;
}

textarea {
    resize: vertical;
}

input:focus,
select:focus,
textarea:focus {
    background-color: rgb(235, 246, 255);
    outline: 2px solid rgb(70, 140, 195);
}

input:required:valid,
select:required:valid,
textarea:required:valid {
    border-color: rgb(60, 130, 90);
}

.form-buttons {
    display: flex;
    gap: 15px;
    margin-top: 20px;
}

input[type="submit"],
input[type="reset"] {
    cursor: pointer;
    background-color: rgb(35, 95, 145);
    color: white;
    border: none;
    font-weight: bold;
    transition: background-color 0.3s ease;
}

input[type="submit"]:hover,
input[type="reset"]:hover {
    background-color: rgb(70, 140, 195);
}


/* Footer */

footer {
    clear: both;
    text-align: center;
    background-color: rgb(25, 45, 65);
    color: white;
    padding: 20px;
}

footer p {
    margin: 5px;
}


/* Tablet and Mobile */

@media only screen and (max-width: 768px) {

    body {
        width: 100%;
    }

    header h1 {
        font-size: 2em;
    }

    nav ul {
        flex-direction: column;
    }

    nav li {
        width: 100%;
    }

    nav a {
        border-bottom: 1px solid rgb(80, 100, 120);
    }

    main {
        padding: 20px;
    }

    .hero,
    .service-section,
    .service-section.reverse,
    .contact-section {
        flex-direction: column;
    }

    .hero img,
    .hero-text,
    .service-section img,
    .contact-info,
    form {
        width: 100%;
    }

    .cards {
        flex-direction: column;
    }

    .form-buttons {
        flex-direction: column;
    }
}


/* Small Mobile */

@media only screen and (max-width: 480px) {

    header {
        padding: 20px 10px;
    }

    header h1 {
        font-size: 1.6em;
    }

    main {
        padding: 15px;
    }

    .hero-text h2 {
        font-size: 1.5em;
    }

    fieldset {
        padding: 15px;
    }
}