/* =========================================================
   SEÇÃO — SKETCH
   materialização do blueprint e callouts
   ========================================================= */

.sketch-container{
    position: relative;
    width: 100%;
    height: 100vh;
    background-color: #000000;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1; /* fica atrás das seções fixadas anteriores durante o scroll */
}
/*
  Palco com a proporção das imagens (2752x1536).
  Como todas as fotos compartilham o mesmo enquadramento, os callouts
  ficam presos às peças em qualquer tamanho de tela.
*/
.sketch-stage{
    position: relative;
    width: min(100%, calc(100vh * 2752 / 1536));
    aspect-ratio: 2752 / 1536;
    z-index: 2;
}
/* Grid Stacking para sobrepor exatamente as 5 imagens */
.sketch-stack{
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 1fr;
    z-index: 1;
}.sketch-img{
    grid-area: 1 / 1;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    will-change: opacity;
}
/* Camadas de opacidade inicial (começa no sketch-1) */
.sketch-1{
    z-index: 1;
    opacity: 1;
}.sketch-2{
    z-index: 2;
    opacity: 0;
}.sketch-3{
    z-index: 3;
    opacity: 0;
}.sketch-4{
    z-index: 4;
    opacity: 0;
}.sketch-5{
    z-index: 5;
    opacity: 0;
}
/* Linhas de Chamada (Leader Lines) */
.sketch-lines{
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 6;
    overflow: visible;
    pointer-events: none;
}.lead-line{
    fill: none;
    stroke: #00ff66;
    stroke-width: 1;
    /* fallback sem JS: a linha nasce totalmente recolhida */
    stroke-dasharray: 3000;
    stroke-dashoffset: 3000;
    opacity: 0.85;
}
/* Pontos de Ancoragem */
.callout-dot{
    position: absolute;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background-color: #00ff66;
    border: 2px solid rgba(255, 255, 255, 0.95);
    box-shadow:
        0 0 0 3px rgba(0, 255, 102, 0.25),
        0 0 22px rgba(0, 255, 102, 0.95);
    transform: translate(-50%, -50%);
    opacity: 0;
    z-index: 7;
    pointer-events: none;
}
/* Anel expansivo de radar no ponto */
.callout-dot::after{
    content: "";
    position: absolute;
    inset: -3px;
    border-radius: 50%;
    border: 1px solid rgba(0, 255, 102, 0.8);
    animation: dot-ring 2.4s ease-out infinite;
}@keyframes dot-ring{
    0% {
        transform: scale(1);
        opacity: 0.9;
    }
    70%,
    100% {
        transform: scale(2.6);
        opacity: 0;
    }
}.callout-dot-0{
    left: 28%;
    top: 63%;
}.callout-dot-1{
    left: 61%;
    top: 40%;
}.callout-dot-2{
    left: 38%;
    top: 52%;
}.callout-dot-3{
    left: 73%;
    top: 50%;
}
/* Caixas de Especificação */
.callout-box{
    position: absolute;
    width: 30%;
    padding: 8px 10px;
    background-color: rgba(0, 0, 0, 0.78);
    border: 1px solid rgba(0, 255, 102, 0.55);
    font-family: "IBM Plex Mono", monospace;
    z-index: 8;
    pointer-events: none;
    opacity: 0;
}.callout-code{
    display: block;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 1px;
    color: #00ff66;
}.callout-spec{
    display: block;
    font-size: 0.66rem;
    letter-spacing: 0.5px;
    color: #d8d8dd;
    margin-top: 3px;
}
/* Posicionamento das caixas (nos cantos livres da folha) */
.callout-box-0{
    left: 3%;
    top: 76%;
}.callout-box-1{
    left: 66%;
    top: 22%;
}.callout-box-2{
    left: 3%;
    top: 44%;
}.callout-box-3{
    left: 66%;
    top: 74%;
}
/* Bloco de Título (folha técnica) */
.title-block{
    position: absolute;
    right: 1.5%;
    bottom: 1.5%;
    padding: 8px 12px;
    background-color: rgba(0, 0, 0, 0.78);
    border: 1px solid rgba(0, 255, 102, 0.55);
    font-family: "IBM Plex Mono", monospace;
    text-align: right;
    z-index: 9;
    pointer-events: none;
}.tb-row{
    display: block;
    font-size: 0.6rem;
    letter-spacing: 1px;
    color: #8f8f96;
}.tb-title{
    color: #ffffff;
    font-weight: 600;
    margin-bottom: 2px;
}.tb-states{
    position: relative;
    display: block;
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px solid rgba(0, 255, 102, 0.25);
    min-height: 1em;
}.tb-state{
    position: absolute;
    right: 0;
    bottom: 0;
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 1px;
    color: #00ff66;
    white-space: nowrap;
    opacity: 0;
}.tb-state-0{
    opacity: 1;
}
/* Telas estreitas: boxes mais compactos e sem a linha de especificação */
@media (max-width: 768px){
    .lead-line {
        stroke-width: 1.6;
    }

    .callout-box {
        width: 34%;
        padding: 6px 8px;
    }

    .callout-code {
        font-size: 0.6rem;
        letter-spacing: 0.5px;
    }

    .callout-spec {
        display: none;
    }

    .tb-row,
    .tb-state {
        font-size: 0.55rem;
    }
}
