:root {
    --blue: #0042c4;
    --bg: #fff;
    --muted: #6b7280;
    --card: #f8fafc;
    --max: 1100px;
    font-family: Poppins,system-ui,Arial
}

* {
    box-sizing: border-box
}

body {
    margin: 0;
    background: var(--bg);
    color: #111;
    line-height: 1.45
}

.container {
    max-width: var(--max);
    margin: 0 auto;
    padding: 2rem
}

.site-header {
    position: sticky;
    top: 0;
    background: rgba(255,255,255,.9);
    backdrop-filter: blur(6px);
    border-bottom: 1px solid #eee;
    z-index: 40
}

.header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .5rem 1rem
}

.brand {
    display: flex;
    align-items: center;
    gap: .6rem
}

.logo {
    height: 40px
}

.brand-name {
    font-weight: 600;
    color: var(--blue)
}

.nav {
    display: flex;
    gap: 1rem;
    align-items: center
}

    .nav a {
        color: #222;
        text-decoration: none;
        padding: .4rem .6rem;
        border-radius: 6px
    }

        .nav a:hover {
            background: #f3f4f6
        }

.btn-login {
    border: 1px solid var(--blue);
    color: var(--blue);
    padding: .5rem .75rem;
    border-radius: 8px;
    text-decoration: none;
    transition: all .2s
}

    .btn-login:hover {
        background: rgba(0,66,196,.08)
    }

.hero {
    padding: 4rem 0
}

.hero-inner {
    display: grid;
    grid-template-columns: 1fr 420px;
    gap: 2rem;
    align-items: center
}

.hero h1 {
    font-size: 2rem;
    margin: 0 0 .5rem;
    color: var(--blue)
}

.sub {
    color: var(--muted);
    margin: 0 0 1rem
}

.card-visual {
    height: 220px;
    border-radius: 12px;
    background: linear-gradient(135deg,var(--blue),#2b6ef6);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: 22px;
    box-shadow: 0 8px 30px rgba(2,6,23,.08);
    padding: 1.75rem 1.5rem
}

.btn-primary, .btn-ghost {
    display: inline-block;
    text-decoration: none;
    border-radius: 10px;
    transition: all .25s
}

.btn-primary {
    background: var(--blue);
    color: #fff;
    padding: .75rem 1rem;
    border: 0
}

    .btn-primary:hover {
        filter: brightness(1.1);
        box-shadow: 0 6px 16px rgba(0,66,196,.25)
    }

.btn-ghost {
    border: 1px solid var(--blue);
    color: var(--blue);
    padding: .75rem 1rem
}

    .btn-ghost:hover {
        background: rgba(0,66,196,.08)
    }

.servicos {
    padding: 3rem 0
}

    .servicos h2 {
        text-align: center;
        margin-bottom: .4rem
    }

    .servicos .lead {
        text-align: center;
        color: var(--muted);
        margin-bottom: 1.5rem
    }

.service-block {
    display: flex;
    align-items: center;
    gap: 2rem;
    padding: 2rem 0;
    border-radius: 16px
}

    .service-block.bg-gray {
        background: #f9fafb
    }

.service-text h3 {
    color: var(--blue);
    margin: .2rem 0
}

.service-text h4 {
    margin: .2rem 0 1rem 0;
    color: #111;
    font-weight: 500
}

.service-text p {
    margin: 0 0 1rem 0;
    color: #333;
    max-width: 560px
}

.service-text ul {
    list-style: none;
    padding: 0;
    margin: 0
}

.service-text li {
    margin-bottom: .5rem
}

.service-img img {
    max-width: 480px;
    width: 100%;
    border-radius: 12px;
    box-shadow: 0 8px 24px rgba(0,0,0,.06)
}

.contato {
    padding: 3rem 0
}

.contact-form {
    max-width: 680px;
    margin: 0 auto;
    display: grid;
    gap: .75rem
}

    .contact-form label {
        display: block;
        font-size: .9rem
    }

    .contact-form input,
    .contact-form textarea {
        width: 100%;
        padding: .75rem;
        border-radius: 8px;
        border: 1px solid #e6e9ef;
        background: #fff
    }

.form-actions {
    display: flex;
    gap: .75rem;
    flex-wrap: wrap;
    padding-top: .5rem
}

.site-footer {
    border-top: 1px solid #eee;
    padding: 1.25rem 0;
    text-align: center;
    color: var(--muted)
}

.page-auth .auth-main {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4rem 1rem
}

.auth-card {
    max-width: 560px;
    background: #fff;
    border-radius: 12px;
    padding: 2rem;
    box-shadow: 0 10px 30px rgba(2,6,23,.06)
}

.tabs {
    display: flex;
    gap: .5rem;
    margin-bottom: 1rem
}

.tab {
    padding: .5rem .85rem;
    border: 1px solid #e6e9ef;
    border-radius: 8px;
    cursor: pointer;
    background: #fff
}

    .tab.active {
        background: #eef3ff;
        border-color: #cfe0ff;
        color: #0b3db8;
        font-weight: 600
    }

.hidden {
    display: none
}

.muted {
    color: var(--muted);
    font-size: .9rem;
    margin-top: .5rem
}

.alert {
    padding: .65rem .8rem;
    border-radius: 8px;
    margin: .5rem 0;
    border: 1px solid transparent
}

    .alert.ok {
        background: #ebfff3;
        border-color: #b6f1c8;
        color: #0a7d39
    }

    .alert.err {
        background: #ffeeee;
        border-color: #ffc3c3;
        color: #b00020
    }

@media (max-width:900px) {
    .hero-inner {
        grid-template-columns: 1fr
    }

    .service-block {
        flex-direction: column;
        text-align: center
    }

    .service-text ul {
        max-width: 320px;
        margin: 0 auto;
        text-align: left
    }
}

.auth-form label {
    display: block;
    margin-bottom: .75rem;
    font-weight: 500
}

.auth-form input,
.auth-form select {
    width: 100%;
    padding: .75rem;
    border: 1px solid #d0d7e2;
    border-radius: 8px;
    font-size: 1rem;
    background: #fff;
    margin-top: .25rem
}

    .auth-form input:focus,
    .auth-form select:focus {
        outline: none;
        border-color: var(--blue);
        box-shadow: 0 0 0 3px rgba(0,66,196,.1)
    }

.form-actions {
    text-align: right;
    margin-top: 1rem
}

.auth-main {
    min-height: 100vh;
    background: linear-gradient(135deg,#eef3ff,#ffffff)
}

.auth-card {
    box-shadow: 0 8px 32px rgba(0,66,196,.08)
}

.tab {
    font-weight: 500;
    font-size: 1rem
}

.auth-form {
    animation: fade .3s ease
}

@keyframes fade {
    from {
        opacity: 0;
        transform: translateY(10px)
    }

    to {
        opacity: 1;
        transform: none
    }
}

/* ------------ TechDesk hero — card + letreiro digitando ------------ */

.card-visual.td-card {
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 18px 45px rgba(15,23,42,.08);
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    padding: 1.9rem 1.7rem;
    gap: 0.55rem;
    position: relative;
    overflow: hidden;
}

    /* Barrinha / acento no topo do card */
    .card-visual.td-card::before {
        content: '';
        position: absolute;
        inset: 0;
        border-radius: inherit;
        border-top: 3px solid transparent;
        background: linear-gradient(90deg,#0042c4,#5b8dff,#22d3ee);
        background-size: 200% 1px;
        background-repeat: no-repeat;
        background-position: 0 0;
        mask: linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
        -webkit-mask: linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
        padding-top: 0;
        pointer-events: none;
    }

/* Pill com o nome da marca */
.td-pill {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .2rem .65rem;
    border-radius: 999px;
    font-size: .7rem;
    letter-spacing: .2em;
    text-transform: uppercase;
    background: rgba(15,23,42,.04);
    color: var(--blue);
    font-weight: 600;
}

/* Label acima do letreiro */
.td-hero-label {
    margin: 0;
    font-size: .9rem;
    font-weight: 500;
    color: #4b5563;
}

/* Letreiro principal (linha do “digitando”) */
.td-hero-tagline {
    margin-top: .15rem;
    min-height: 1.8rem;
    font-size: 1.3rem;
    font-weight: 700;
    letter-spacing: .04em;
    display: flex;
    align-items: center;
    color: #0f172a;
    font-family: Poppins,system-ui,Arial;
}

/* Texto com gradient tech */
#tdHeroWord {
    background: linear-gradient(120deg,#0042c4,#4f46e5,#22c1c3);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    white-space: nowrap;
}

/* Cursor piscando ao lado do texto */
.td-hero-tagline::after {
    content: '|';
    margin-left: .15rem;
    font-weight: 400;
    color: #9ca3af;
    animation: tdCursorBlink 1s steps(2,start) infinite;
}

@keyframes tdCursorBlink {
    0%,49% {
        opacity: 1
    }

    50%,100% {
        opacity: 0
    }
}

/* Padroniza imagens dos serviços TechDesk */
.service-img img {
    width: 100%;
    max-width: 360px; /* deixa padrão entre as 3 */
    aspect-ratio: 1 / 1; /* todas viram quadradas perfeitas */
    object-fit: contain; /* mantém proporção sem cortar */
    padding: 20px;
    /* CAIXA ESTILIZADA QUE REMOVE O FUNDO QUADRADO */
    background: transparent;
    border-radius: 20px;
    mask-image: radial-gradient(circle at center, #000 60%, transparent 100%);
    -webkit-mask-image: radial-gradient(circle at center, #000 60%, transparent 100%);
    /* sombra suave ao redor */
    box-shadow: 0 8px 20px rgba(0,0,0,.05);
}
