/* =====================================
   AeroVisual
   Professional Aerial Media
   Main Stylesheet
===================================== */


/* ---------- Reset ---------- */

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


html {
    scroll-behavior: smooth;
}


section[id] {
    scroll-margin-top: 80px;
}


body {
    font-family:
        Inter,
        "Segoe UI",
        Arial,
        sans-serif;

    color: #1e1e1e;
    background: #ffffff;
    line-height: 1.6;
}


img {
    max-width: 100%;
    display: block;
}


a {
    text-decoration: none;
    color: inherit;
}



.container {
    width: min(1200px, 90%);
    margin: auto;
}



/* ---------- Typography ---------- */

h1,
h2,
h3 {
    line-height: 1.15;
    font-weight: 700;
}


h2 {
    font-size: clamp(2rem, 4vw, 3rem);
    margin-bottom: 20px;
}


h3 {
    font-size: 1.35rem;
}


.section-intro {
    max-width: 650px;
    color: #666;
    margin-bottom: 50px;
}



/* ---------- Buttons ---------- */


.button {

    display: inline-flex;
    align-items: center;
    justify-content: center;

    padding: 14px 32px;

    border-radius: 4px;

    font-weight: 600;

    transition:
        transform .25s ease,
        background .25s ease;

}


.button:hover {

    transform: translateY(-3px);

}


.primary {

    background:
        #fca311;

    color:
        #111;

}


.primary:hover {

    background:
        #ffb52b;

}



.secondary {

    border:
        1px solid rgba(255,255,255,.7);

    color:white;

}




/* ---------- Navigation ---------- */


.navbar {

    position:fixed;

    top:0;
    width:100%;

    z-index:10;

    padding:12px 0;

    background:#001021;

    transition:.3s;

}

.nav-container {

    display:flex;

    justify-content:space-between;

    align-items:center;

}



.logo {

    font-size:2rem;

    font-weight:800;

    letter-spacing:-1px;

    color:white;

}


.logo span {

    color:#fca311;

}



nav {

    display:flex;

    gap:35px;

}


nav a {

    color:white;

    font-size:1.15rem;

    transition:.2s;

}


nav a:hover {

    color:#fca311;

}



/* ---------- Header contact info ---------- */


.header-contact {

    display:flex;

    align-items:center;

    gap:22px;

}


.header-contact-item {

    display:flex;

    align-items:center;

    gap:6px;

    color:rgba(255,255,255,.75);

    font-size:.88rem;

    white-space:nowrap;

    transition:.2s;

}


.header-contact-item svg {

    width:15px;
    height:15px;

    flex-shrink:0;

}


.header-contact-item:hover,
.header-contact-item:focus-visible {

    color:#fca311;

}


@media(max-width:1150px){

    .header-contact {

        display:none;

    }

}


/* ---------- Language switcher ---------- */


.lang-switch {

    display:flex;

    align-items:center;

    gap:6px;

    color:rgba(255,255,255,.4);

}


.lang-switch button {

    background:none;

    border:none;

    cursor:pointer;

    padding:6px 8px;

    min-width:38px;

    font:inherit;

    font-size:1rem;

    font-weight:600;

    color:rgba(255,255,255,.6);

    transition:.2s;

}


.lang-switch button:focus-visible,
nav a:focus-visible,
.button:focus-visible,
.logo:focus-visible {

    outline:2px solid #fca311;

    outline-offset:3px;

}


.lang-switch button:hover {

    color:#fca311;

}


.lang-switch button.active {

    color:#fca311;

}




/* ---------- Hero ---------- */


.hero {

    min-height:100vh;

    display:flex;

    align-items:center;

    position:relative;

    overflow:hidden;

    background:url("../images/hero.webp");

    background-size:cover;

    background-position:center;

}


.hero-video {

    position:absolute;

    inset:0;

    width:100%;

    height:100%;

    object-fit:cover;

    z-index:0;

    pointer-events:none;

}


.hero-overlay {

    position:absolute;

    inset:0;

    z-index:1;

    background:linear-gradient(

        rgba(0,0,0,.55),
        rgba(0,0,0,.65)

    );

}


@media (prefers-reduced-motion: reduce) {

    .hero-video {

        display:none;

    }

}


.hero-content {

    color:white;

    position:relative;

    z-index:2;

    max-width:800px;

}


.eyebrow {

    text-transform:uppercase;

    letter-spacing:2px;

    color:#fca311;

    font-size:.9rem;

    margin-bottom:25px;

}



.hero h1 {

    font-size:
    clamp(3rem, 7vw, 5.5rem);

    letter-spacing:-2px;

    margin-bottom:30px;

}



.hero-text {

    font-size:1.25rem;

    max-width:650px;

    color:#ddd;

    margin-bottom:40px;

}



.hero-buttons {

    display:flex;

    gap:20px;

    flex-wrap:wrap;

}



/* ---------- Sections ---------- */


.section {

    padding:100px 0;

}



.dark {

    background:#111827;

    color:white;

}



/* ---------- Service Cards ---------- */


.cards {

    display:grid;

    grid-template-columns:
    repeat(3,1fr);

    gap:30px;

}



.card {

    background:white;

    border-radius:10px;

    overflow:hidden;

    box-shadow:

    0 15px 40px rgba(0,0,0,.08);

    transition:.3s;

}



.card:hover {

    transform:translateY(-8px);

}



.card-image {

    height:240px;

    background-size:cover;

    background-position:center;

}



.construction {

    background-image:
    url("../images/construction.webp");

}


.property {

    background-image:
    url("../images/property.webp");

}


.commercial {

    background-image:
    url("../images/commercial.webp");

}


.roof-inspection {

    background-color:#0b1830;

    background-image:
    url("../images/roof-inspection.webp");

}


.solar-inspection {

    background-color:#0b1830;

    background-image:
    url("../images/solar-inspection.webp");

}


.industrial-inspection {

    background-color:#0b1830;

    background-image:
    url("../images/industrial-inspection.webp");

}



.card h3 {

    padding:25px 25px 10px;

}


.card p {

    padding:
    0 25px 30px;

    color:#666;

}



/* ---------- Industries ---------- */


.dark .section-intro {

    color:#9ca3af;

}


.industry-grid {

    display:grid;

    grid-template-columns:
    repeat(3,1fr);

    gap:24px;

}



/* Viewfinder cards — camera framing brackets
   in each corner, "locking on" in orange on hover */


.industry-card {

    position:relative;

    padding:30px 28px 28px;

    background:rgba(255,255,255,.03);

    transition:
        transform .3s ease,
        background .3s ease;

}


.industry-card::before,
.industry-card::after {

    content:"";

    position:absolute;

    inset:0;

    pointer-events:none;

    background:
        linear-gradient(var(--bc),var(--bc)) left 0 top 0 / 18px 2px,
        linear-gradient(var(--bc),var(--bc)) left 0 top 0 / 2px 18px,
        linear-gradient(var(--bc),var(--bc)) right 0 top 0 / 18px 2px,
        linear-gradient(var(--bc),var(--bc)) right 0 top 0 / 2px 18px,
        linear-gradient(var(--bc),var(--bc)) left 0 bottom 0 / 18px 2px,
        linear-gradient(var(--bc),var(--bc)) left 0 bottom 0 / 2px 18px,
        linear-gradient(var(--bc),var(--bc)) right 0 bottom 0 / 18px 2px,
        linear-gradient(var(--bc),var(--bc)) right 0 bottom 0 / 2px 18px;

    background-repeat:no-repeat;

}


.industry-card::before {

    --bc:rgba(255,255,255,.35);

}


.industry-card::after {

    --bc:#fca311;

    opacity:0;

    transition:opacity .3s ease;

}


.industry-card:hover {

    transform:translateY(-6px);

    background:rgba(255,255,255,.06);

}


.industry-card:hover::after {

    opacity:1;

}



.industry-tag {

    display:block;

    font-family:
        ui-monospace,
        "Cascadia Mono",
        Consolas,
        monospace;

    font-size:.72rem;

    text-transform:uppercase;

    letter-spacing:2px;

    color:#fca311;

    margin-bottom:14px;

}


.industry-card h3 {

    margin-bottom:10px;

}


.industry-card p {

    color:#9ca3af;

    font-size:.95rem;

    line-height:1.55;

}



/* ---------- Process: flight path ----------
   The four steps sit as waypoints on a climb
   profile — takeoff, cruise, capture, landing.
   Markers are positioned to meet the SVG curve,
   so .flightpath-line and the --wy values below
   must be changed together.
------------------------------------------ */


.flightpath {

    position:relative;

}


.flightpath-line {

    display:none;

    position:absolute;

    top:0;
    left:0;

    width:100%;

    height:60px;

}


.flightpath-line path {

    fill:none;

    stroke:#fca311;

    stroke-width:1.5;

    stroke-dasharray:7 6;

    opacity:.75;

}


.flight-steps {

    list-style:none;

    margin:0;
    padding:0;

    display:grid;

    grid-template-columns:1fr;

    gap:34px;

    position:relative;

}


.flight-steps li {

    position:relative;

    padding-left:30px;

}


.wp {

    position:absolute;

    top:calc(var(--wy, 7px) - 4.5px);

    left:-4.5px;

    width:20px;

    height:20px;

    background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+CjxnIHN0cm9rZT0iI2ZjYTMxMSIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CjxsaW5lIHgxPSIxMiIgeTE9IjEyIiB4Mj0iNSIgeTI9IjUiLz4KPGxpbmUgeDE9IjEyIiB5MT0iMTIiIHgyPSIxOSIgeTI9IjUiLz4KPGxpbmUgeDE9IjEyIiB5MT0iMTIiIHgyPSI1IiB5Mj0iMTkiLz4KPGxpbmUgeDE9IjEyIiB5MT0iMTIiIHgyPSIxOSIgeTI9IjE5Ii8+CjwvZz4KPGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjIuNCIgZmlsbD0iI2ZjYTMxMSIvPgo8Y2lyY2xlIGN4PSIxOSIgY3k9IjUiIHI9IjIuNCIgZmlsbD0iI2ZjYTMxMSIvPgo8Y2lyY2xlIGN4PSI1IiBjeT0iMTkiIHI9IjIuNCIgZmlsbD0iI2ZjYTMxMSIvPgo8Y2lyY2xlIGN4PSIxOSIgY3k9IjE5IiByPSIyLjQiIGZpbGw9IiNmY2EzMTEiLz4KPHJlY3QgeD0iOS4zIiB5PSI5LjMiIHdpZHRoPSI1LjQiIGhlaWdodD0iNS40IiByeD0iMS40IiBmaWxsPSIjZmNhMzExIi8+Cjwvc3ZnPg==");

    background-size:contain;

    background-repeat:no-repeat;

    background-position:center;

}


.step-num {

    display:block;

    color:#fca311;

    font-size:1.4rem;

    font-weight:800;

    letter-spacing:1px;

    margin-bottom:6px;

}


.flight-steps h3 {

    margin-bottom:6px;

}


.flight-steps p {

    color:#666;

}


/* Mobile: the same route, drawn vertically */


.flight-steps::before {

    content:"";

    position:absolute;

    left:5px;

    top:10px;
    bottom:10px;

    border-left:1.5px dashed rgba(252,163,17,.65);

}



/* ---------- CTA ---------- */


.cta {

    padding:100px 0;

    text-align:center;

    background:

    linear-gradient(
        120deg,
        #14213d,
        #111827
    );

    color:white;

}


.cta p {

    margin:
    20px auto 35px;

    color:#ddd;

}



/* ---------- Footer ---------- */


footer {

    background:#080b12;

    color:#aaa;

    padding:30px 0;

    text-align:center;

    font-size:.9rem;

}


.footer-contact {

    display:flex;

    justify-content:center;

    flex-wrap:wrap;

    gap:28px;

    margin-bottom:16px;

}


.footer-contact-item {

    display:flex;

    align-items:center;

    gap:7px;

    color:#ccc;

    font-size:.92rem;

    transition:.2s;

}


.footer-contact-item svg {

    width:15px;
    height:15px;

    flex-shrink:0;

}


.footer-contact-item:hover,
.footer-contact-item:focus-visible {

    color:#fca311;

}





/* ---------- Responsive ---------- */


@media(max-width:900px){


nav {

    display:none;

}


.cards {

    grid-template-columns:1fr;

}


.industry-grid {

    grid-template-columns:repeat(2,1fr);

}


.hero h1 {

    letter-spacing:-1px;

}


}


/* Desktop: waypoints climb along the curve */


@media(min-width:901px){


.flightpath-line {

    display:block;

}


.flight-steps {

    grid-template-columns:repeat(4,1fr);

    gap:30px;

}


.flight-steps::before {

    display:none;

}


.flight-steps li {

    padding-left:0;

    padding-top:78px;

}


.flight-steps li:nth-child(1){ --wy:40px; }
.flight-steps li:nth-child(2){ --wy:14px; }
.flight-steps li:nth-child(3){ --wy:1px; }
.flight-steps li:nth-child(4){ --wy:28px; }


}


@media(max-width:600px){


.industry-grid {

    grid-template-columns:1fr;

    gap:16px;

}


.industry-card {

    padding:24px 22px 22px;

}


.section,
.cta {

    padding:64px 0;

}


/* Compact hero: svh keeps it stable when the
   mobile browser bar shows and hides */


.hero {

    min-height:86svh;

    padding:90px 0 40px;

}


.eyebrow {

    font-size:.72rem;

    letter-spacing:1.5px;

    margin-bottom:14px;

}


.hero h1 {

    font-size:2.4rem;

    letter-spacing:-1px;

    margin-bottom:16px;

}


.hero-text {

    font-size:1.02rem;

    margin-bottom:26px;

}


.hero-buttons {

    gap:12px;

}


.hero-buttons .button {

    padding:12px 20px;

    font-size:.95rem;

}


.lang-switch {

    gap:2px;

}


.lang-switch button {

    padding:6px;

    min-width:34px;

    font-size:.95rem;

}


}


@media(prefers-reduced-motion:reduce){


.reveal {

    opacity:1;

    transform:none;

    transition:none;

}


.industry-card,
.card,
.button {

    transition:none;

}


}
/* =====================================
   Scroll Animations
===================================== */


.reveal {

    opacity:0;

    transform:
    translateY(40px);

    transition:

    opacity .8s ease,

    transform .8s ease;

}



.reveal.visible {

    opacity:1;

    transform:
    translateY(0);

}




/* Smooth navbar transition */

.navbar {

    transition:

    background .3s ease,

    padding .3s ease;

}




/* Card animation delay */


.card:nth-child(2){

    transition-delay:.15s;

}


.card:nth-child(3){

    transition-delay:.3s;

}



/* Button enhancement */


.button {

    position:relative;

    overflow:hidden;

}


.button::after {

    content:"";

    position:absolute;

    width:0;

    height:100%;

    left:0;

    top:0;

    background:
    rgba(255,255,255,.15);

    transition:.35s;

}


.button:hover::after {

    width:100%;

}
/* Footer Legal Links */

.footer-links{

    margin-top:15px;

    display:flex;

    justify-content:center;

    align-items:center;

    gap:12px;

    font-size:.9rem;

}

.footer-links a{

    color:#aaa;

    transition:.25s;

}

.footer-links a:hover{

    color:#fca311;

}



/* ---------- Contact form ---------- */


.contact-form{

    max-width:640px;
    margin:36px auto 0;
    text-align:left;

}


.form-row{

    display:flex;
    gap:20px;

}


.form-group{

    flex:1;
    margin-bottom:18px;

    display:flex;
    flex-direction:column;

}


.form-group label{

    font-size:.85rem;
    color:#ccc;
    margin-bottom:6px;
    font-weight:600;

}


.form-group input,
.form-group textarea{

    background:rgba(255,255,255,.06);
    border:1px solid rgba(255,255,255,.15);
    border-radius:8px;

    padding:12px 14px;

    color:#fff;
    font-family:inherit;
    font-size:.95rem;

    transition:border-color .2s, background .2s;

}


.form-group input::placeholder,
.form-group textarea::placeholder{

    color:#8a93a1;

}


.form-group input:focus,
.form-group textarea:focus{

    outline:none;
    border-color:#fca311;
    background:rgba(255,255,255,.09);

}


.form-group textarea{

    resize:vertical;
    min-height:120px;

}


.hp-field{

    position:absolute;
    left:-9999px;
    width:1px;
    height:1px;
    overflow:hidden;

}


.contact-form .button{

    border:none;
    cursor:pointer;
    font-family:inherit;

}


.contact-form .button:disabled{

    opacity:.6;
    cursor:not-allowed;

}


.form-status{

    margin-top:14px;
    min-height:1.4em;

    font-size:.9rem;

}


.form-status.sending{

    color:#9ca3af;

}


.form-status.success{

    color:#4ade80;

}


.form-status.error{

    color:#f87171;

}


@media(max-width:600px){

.form-row{

    flex-direction:column;
    gap:0;

}

}


body.modal-open{

    overflow:hidden;

}


.legal-modal{

    position:fixed;
    inset:0;
    z-index:999;

    display:flex;
    align-items:center;
    justify-content:center;

    padding:24px;

    opacity:0;
    visibility:hidden;

    transition:opacity .25s ease, visibility .25s ease;

}


.legal-modal.open{

    opacity:1;
    visibility:visible;

}


.legal-modal-overlay{

    position:absolute;
    inset:0;

    background:rgba(0,10,20,.72);
    backdrop-filter:blur(3px);

}


.legal-modal-content{

    position:relative;

    background:#001021;
    color:#ddd;

    width:min(720px, 100%);
    max-height:85vh;

    overflow-y:auto;

    border-radius:14px;
    border:1px solid rgba(255,255,255,.08);

    padding:44px 40px;

    box-shadow:0 20px 60px rgba(0,0,0,.5);

    transform:translateY(20px);
    transition:transform .25s ease;

}


.legal-modal.open .legal-modal-content{

    transform:translateY(0);

}


.legal-modal-close{

    position:absolute;
    top:14px;
    right:16px;

    background:none;
    border:none;

    font-size:1.8rem;
    line-height:1;

    color:#aaa;
    cursor:pointer;

    padding:6px 10px;
    border-radius:8px;

    transition:.2s;

}


.legal-modal-close:hover,
.legal-modal-close:focus{

    color:#fca311;
    background:rgba(255,255,255,.06);

}


.legal-panel{

    display:none;

}


.legal-panel.active{

    display:block;

}


.legal-panel h2{

    color:#fca311;
    font-size:1.6rem;
    margin-bottom:20px;
    padding-right:30px;

}


.legal-body p{

    margin-bottom:14px;
    color:#ddd;
    font-size:.98rem;

}


.legal-body ul{

    margin:0 0 14px 20px;

}


.legal-body li{

    margin-bottom:12px;
    color:#ddd;
    font-size:.98rem;

}


.legal-body strong{

    color:#fff;

}


@media(max-width:600px){

.legal-modal-content{

    padding:36px 22px;

}

}