/* =========================================================
   APM Logistics - Modal Hasil Pelacakan + Balon WhatsApp
   File: landing/css/apm-track.css
   ========================================================= */

/* ---------- Modal dasar ---------- */
.trk-modal{
    position:fixed;
    inset:0;
    z-index:200;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:20px;
    opacity:0;
    visibility:hidden;
    transition:opacity .25s,visibility .25s
}
.trk-modal.is-open{
    opacity:1;
    visibility:visible
}
.trk-modal__backdrop{
    position:absolute;
    inset:0;
    background:rgba(12,37,80,.55);
    -webkit-backdrop-filter:blur(3px);
    backdrop-filter:blur(3px)
}
.trk-modal__dialog{
    position:relative;
    width:100%;
    max-width:720px;
    max-height:calc(100vh - 40px);
    display:flex;
    flex-direction:column;
    background:var(--white);
    border-radius:18px;
    box-shadow:0 24px 60px rgba(12,37,80,.3);
    overflow:hidden;
    transform:translateY(14px) scale(.98);
    transition:transform .25s
}
.trk-modal.is-open .trk-modal__dialog{
    transform:none
}
body.trk-lock{
    overflow:hidden
}

/* ---------- Header ---------- */
.trk-head{
    display:flex;
    align-items:center;
    gap:14px;
    padding:18px 22px;
    border-bottom:1px solid var(--border)
}
.trk-head__ico{
    flex:none;
    width:40px;
    height:40px;
    border-radius:12px;
    background:var(--bg-soft);
    display:grid;
    place-items:center;
    color:var(--navy)
}
.trk-head__ico svg{
    width:22px;
    height:22px
}
.trk-head__txt{
    flex:1;
    min-width:0
}
.trk-head__label{
    font-size:12px;
    color:var(--muted)
}
.trk-head__awb{
    display:flex;
    align-items:center;
    gap:8px;
    color:var(--navy);
    font-weight:700;
    font-size:18px;
    letter-spacing:.02em
}
.trk-copy{
    border:0;
    background:none;
    padding:4px;
    cursor:pointer;
    color:var(--muted);
    display:grid;
    place-items:center;
    border-radius:6px
}
.trk-copy:hover{
    color:var(--navy);
    background:var(--bg-chip)
}
.trk-copy svg{
    width:16px;
    height:16px
}
.trk-close{
    flex:none;
    width:36px;
    height:36px;
    border:0;
    border-radius:10px;
    background:var(--bg-chip);
    color:var(--navy);
    font-size:22px;
    line-height:1;
    cursor:pointer
}
.trk-close:hover{
    background:var(--border)
}

/* ---------- Body ---------- */
.trk-body{
    flex:1;
    overflow-y:auto;
    padding:20px 22px;
    overscroll-behavior:contain
}

/* Badge status */
.trk-badge{
    display:inline-flex;
    align-items:center;
    gap:6px;
    padding:5px 12px;
    border-radius:999px;
    font-size:12.5px;
    font-weight:600;
    background:#fff4e5;
    color:#b35c00
}
.trk-badge::before{
    content:"";
    width:7px;
    height:7px;
    border-radius:50%;
    background:currentColor
}
.trk-badge--done{
    background:#e7f7ee;
    color:#178a45
}

/* Ringkasan rute */
.trk-route{
    margin-top:14px;
    display:grid;
    grid-template-columns:1fr auto 1fr;
    align-items:center;
    gap:12px;
    padding:16px;
    border-radius:14px;
    background:var(--bg-soft)
}
.trk-route__lbl{
    font-size:11.5px;
    color:var(--muted);
    text-transform:uppercase;
    letter-spacing:.06em;
    font-weight:600
}
.trk-route__city{
    color:var(--navy);
    font-weight:600;
    font-size:14px;
    line-height:1.35;
    margin-top:2px
}
.trk-route__to{
    text-align:right
}
.trk-route__arrow{
    color:var(--red)
}
.trk-route__arrow svg{
    width:28px;
    height:28px
}

/* Stepper progres */
.trk-steps{
    list-style:none;
    margin:20px 0 4px;
    padding:0;
    display:grid;
    grid-template-columns:repeat(4,1fr);
    position:relative
}
.trk-step{
    position:relative;
    text-align:center;
    font-size:12px;
    color:var(--muted);
    font-weight:500;
    padding-top:30px
}
.trk-step::before{
    /* garis */
    content:"";
    position:absolute;
    top:10px;
    left:-50%;
    width:100%;
    height:3px;
    background:var(--border)
}
.trk-step:first-child::before{
    display:none
}
.trk-step::after{
    /* titik */
    content:"";
    position:absolute;
    top:3px;
    left:50%;
    width:17px;
    height:17px;
    margin-left:-8.5px;
    border-radius:50%;
    background:var(--white);
    border:3px solid var(--border);
    box-sizing:border-box
}
.trk-step.is-done,
.trk-step.is-current{
    color:var(--navy)
}
.trk-step.is-done::before,
.trk-step.is-current::before{
    background:var(--red)
}
.trk-step.is-done::after{
    background:var(--red);
    border-color:var(--red)
}
.trk-step.is-current::after{
    border-color:var(--red);
    box-shadow:0 0 0 5px rgba(220,38,56,.15)
}
.trk-step.is-current{
    font-weight:700
}

/* Section judul */
.trk-sec{
    margin-top:22px
}
.trk-sec__title{
    font-size:13px;
    font-weight:700;
    color:var(--navy);
    margin-bottom:10px;
    text-transform:uppercase;
    letter-spacing:.05em
}

/* Grid detail */
.trk-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:1px;
    background:var(--border);
    border:1px solid var(--border);
    border-radius:12px;
    overflow:hidden
}
.trk-grid > div{
    background:var(--white);
    padding:10px 12px
}
.trk-grid dt{
    font-size:11.5px;
    color:var(--muted);
    margin-bottom:2px
}
.trk-grid dd{
    margin:0;
    color:var(--navy);
    font-weight:600;
    font-size:14px;
    word-break:break-word
}
.trk-grid--2{
    grid-template-columns:repeat(2,1fr)
}

/* Timeline */
.trk-timeline{
    list-style:none;
    margin:0;
    padding:0
}
.trk-timeline li{
    position:relative;
    padding:0 0 18px 26px
}
.trk-timeline li::before{
    content:"";
    position:absolute;
    left:5px;
    top:16px;
    bottom:0;
    width:2px;
    background:var(--border)
}
.trk-timeline li:last-child::before{
    display:none
}
.trk-timeline li::after{
    content:"";
    position:absolute;
    left:0;
    top:4px;
    width:12px;
    height:12px;
    border-radius:50%;
    background:var(--border)
}
.trk-timeline li:first-child::after{
    background:var(--red);
    box-shadow:0 0 0 4px rgba(220,38,56,.15)
}
.trk-tl__status{
    color:var(--navy);
    font-weight:600;
    font-size:14.5px;
    line-height:1.35
}
.trk-timeline li:not(:first-child) .trk-tl__status{
    color:var(--text);
    font-weight:500
}
.trk-tl__meta{
    font-size:12.5px;
    color:var(--muted);
    margin-top:2px
}
.trk-tl__meta a{
    color:var(--navy-btn);
    text-decoration:underline
}

/* State loading / error */
.trk-state{
    text-align:center;
    padding:36px 10px
}
.trk-spinner{
    width:42px;
    height:42px;
    margin:0 auto 14px;
    border-radius:50%;
    border:4px solid var(--bg-soft);
    border-top-color:var(--red);
    animation:trk-spin .8s linear infinite
}
@keyframes trk-spin{
    to{
        transform:rotate(360deg)
    }
}
.trk-state__ico{
    width:56px;
    height:56px;
    margin:0 auto 14px;
    border-radius:50%;
    background:#fdecee;
    color:var(--red);
    display:grid;
    place-items:center
}
.trk-state__ico svg{
    width:28px;
    height:28px
}
.trk-state h3{
    font-size:18px;
    margin-bottom:6px
}
.trk-state p{
    font-size:14.5px;
    max-width:380px;
    margin:0 auto
}

/* Cari ulang */
.trk-retry{
    display:flex;
    gap:8px;
    max-width:420px;
    margin:18px auto 0
}
.trk-retry input{
    flex:1;
    min-width:0;
    height:44px;
    border:1px solid var(--border);
    border-radius:10px;
    padding:0 14px;
    font:inherit;
    font-size:15px;
    color:var(--navy)
}
.trk-retry input:focus{
    outline:0;
    border-color:var(--navy-btn);
    box-shadow:0 0 0 3px rgba(26,58,124,.12)
}
.trk-retry button{
    height:44px;
    padding:0 18px;
    border:0;
    border-radius:10px;
    background:var(--navy-btn);
    color:#fff;
    font:inherit;
    font-weight:600;
    cursor:pointer
}
.trk-retry button:hover{
    background:var(--navy-dark)
}

/* ---------- Footer ---------- */
.trk-foot{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:14px 22px;
    border-top:1px solid var(--border);
    background:#fafcff
}
.trk-foot__help{
    font-size:13px;
    color:var(--muted)
}
.trk-foot__actions{
    display:flex;
    gap:8px
}
.trk-btn{
    display:inline-flex;
    align-items:center;
    gap:8px;
    height:42px;
    padding:0 18px;
    border-radius:999px;
    border:0;
    font:inherit;
    font-size:14px;
    font-weight:600;
    cursor:pointer;
    white-space:nowrap
}
.trk-btn svg{
    width:18px;
    height:18px
}
.trk-btn--ghost{
    background:var(--bg-chip);
    color:var(--navy)
}
.trk-btn--ghost:hover{
    background:var(--border)
}
.trk-btn--wa{
    background:#1fa855;
    color:#fff
}
.trk-btn--wa:hover{
    background:#178a45
}
.trk-btn--wa svg{
    fill:currentColor
}

/* Teks wajib reCAPTCHA (badge disembunyikan agar tidak bertabrakan dengan balon WA) */
.trk-legal{
    padding:0 22px 12px;
    background:#fafcff;
    font-size:11px;
    color:var(--muted);
    text-align:center
}
.trk-legal a{
    text-decoration:underline
}
.grecaptcha-badge{
    visibility:hidden !important
}

/* Loading pada tombol cari di strip */
.feature__search.is-loading svg{
    animation:trk-spin .8s linear infinite;
    stroke:var(--red)
}
.feature__input.is-invalid::placeholder{
    color:var(--red)
}

/* ---------- Balon WhatsApp (pengganti balon Lacak Resi) ---------- */
.track-float.track-float--wa{
    background:#1fa855;
    box-shadow:0 8px 24px rgba(31,168,85,.32)
}
.track-float.track-float--wa:hover{
    background:#178a45
}
.track-float.track-float--wa::before{
    background:#1fa855
}
.track-float--wa svg{
    fill:currentColor;
    stroke:none
}

/* ---------- Responsive ---------- */
@media (max-width:575px){
    .trk-modal{
        padding:0;
        align-items:flex-end
    }
    .trk-modal__dialog{
        max-height:92vh;
        border-radius:18px 18px 0 0;
        transform:translateY(40px)
    }
    .trk-head,.trk-body,.trk-foot{
        padding-left:16px;
        padding-right:16px
    }
    .trk-head__awb{
        font-size:16px
    }
    .trk-grid{
        grid-template-columns:repeat(2,1fr)
    }
    .trk-step{
        font-size:10.5px
    }
    .trk-foot{
        flex-direction:column;
        align-items:stretch
    }
    .trk-foot__help{
        text-align:center
    }
    .trk-foot__actions{
        flex-direction:column-reverse
    }
    .trk-btn{
        justify-content:center;
        width:100%
    }
}
@media (prefers-reduced-motion:reduce){
    .trk-modal,.trk-modal__dialog{
        transition:none
    }
    .trk-spinner,.feature__search.is-loading svg{
        animation-duration:2s
    }
}