
/* ==========================================================================
   CYBERTECH CERTIFICATE VERIFICATION
   ========================================================================== */

.verify-page {

    position:relative;

    min-height:calc(100vh - 100px);

    overflow:hidden;

    padding:80px 20px;

    background:radial-gradient(
            circle at 50% 0%,
            rgba(var(--t-cyan-rgb),.09),
            transparent 36%
        ),
        radial-gradient(
            circle at 0% 100%,
            rgba(59, 130, 246, .09),
            transparent 35%
        ),
        linear-gradient(
            135deg,
            var(--t-soft) 0%,
            var(--t-bg) 65%,
            var(--t-bg) 100%
        );

    color:var(--t-text2);
}

/* ==========================================================================
   Animated Grid
   ========================================================================== */

.verify-page::before {

    content:"";

    position:absolute;

    inset:0;

    pointer-events:none;

    opacity:.45;

    background-image:linear-gradient(
            rgba(var(--t-line-rgb),.32) 1px,
            transparent 1px
        ),

        linear-gradient(
            90deg,
            rgba(var(--t-line-rgb),.32) 1px,
            transparent 1px
        );

    background-size:45px 45px;

    animation:cyberGridMove
        18s
        linear
        infinite;
}

@keyframes cyberGridMove {

    from {

        background-position:0 0;
    }

    to {

        background-position:45px 45px;
    }
}

/* ==========================================================================
   Glow Orbs
   ========================================================================== */

.verify-glow {

    position:absolute;

    width:500px;

    height:500px;

    left:50%;

    top:42%;

    transform:translate(
            -50%,
            -50%
        );

    border-radius:50%;

    background:radial-gradient(
            circle,
            rgba(var(--t-cyan-rgb),.075),
            transparent 68%
        );

    pointer-events:none;

    animation:glowPulse
        5s
        ease-in-out
        infinite;
}

@keyframes glowPulse {

    0%,
    100% {

        transform:translate(-50%, -50%)
            scale(1);

        opacity:.7;
    }

    50% {

        transform:translate(-50%, -50%)
            scale(1.12);

        opacity:1;
    }
}

/* ==========================================================================
   Container
   ========================================================================== */

.verify-shell {

    position:relative;

    z-index:3;

    width:100%;

    max-width:900px;

    margin:0 auto;
}

/* ==========================================================================
   Header
   ========================================================================== */

.verify-header {

    margin-bottom:36px;

    text-align:center;

    animation:fadeUp
        .7s
        ease
        both;
}

.verify-brand {

    display:inline-flex;

    align-items:center;

    justify-content:center;

    gap:10px;

    margin-bottom:20px;

    color:var(--t-cyan);

    font-size:14px;

    font-weight:800;

    letter-spacing:4px;

    text-transform:uppercase;
}

.verify-brand-dot {

    width:9px;

    height:9px;

    border-radius:50%;

    background:var(--t-cyan);

    box-shadow:0 0 15px rgba(var(--t-cyan-rgb),.9);

    animation:statusPulse
        2s
        ease-in-out
        infinite;
}

@keyframes statusPulse {

    0%,
    100% {

        transform:scale(.9);

        box-shadow:0 0 7px
            rgba(var(--t-cyan-rgb),.5);
    }

    50% {

        transform:scale(1.25);

        box-shadow:0 0 20px
            rgba(var(--t-cyan-rgb),1);
    }
}

.verify-header h1 {

    margin:0;

    color:var(--t-heading);

    font-size:clamp(
            30px,
            5vw,
            48px
        );

    font-weight:900;

    letter-spacing:-.8px;
}

.verify-header p {

    max-width:630px;

    margin:15px auto 0;

    color:var(--t-muted);

    font-size:15px;

    line-height:1.9;
}

/* ==========================================================================
   Search Card
   ========================================================================== */

.verify-card {

    position:relative;

    overflow:hidden;

    padding:36px;

    border:1px solid
        rgba(71, 85, 105, .55);

    border-radius:20px;

    background:linear-gradient(
            145deg,
            rgba(var(--t-soft-rgb),.95),
            rgba(var(--t-bg-rgb),.97)
        );

    box-shadow:0 30px 80px
        rgba(var(--t-shadow-rgb),.35),
        inset
        0 1px 0
        rgba(var(--t-text-rgb),.025);

    backdrop-filter:blur(15px);

    animation:fadeUp
        .85s
        .1s
        ease
        both;
}

.verify-card::before {

    content:"";

    position:absolute;

    left:0;

    top:0;

    width:100%;

    height:2px;

    background:linear-gradient(
            90deg,
            transparent,
            var(--t-cyan),
            transparent
        );

    opacity:.8;
}

/* ==========================================================================
   Form
   ========================================================================== */

.verify-form {

    display:grid;

    grid-template-columns:1fr auto;

    gap:12px;
}

.verify-input-wrapper {

    position:relative;
}

.verify-input-icon {

    position:absolute;

    top:50%;

    left:17px;

    transform:translateY(-50%);

    color:var(--t-muted2);

    pointer-events:none;

    font-size:18px;
}

.verify-input {

    width:100%;

    height:58px;

    padding:0 18px
        0 50px;

    border:1px solid
        var(--t-line2);

    border-radius:11px;

    outline:0;

    background:rgba(var(--t-bg-rgb),.75);

    color:var(--t-heading);

    font-size:15px;

    letter-spacing:.8px;

    transition:all .25s ease;
}

.verify-input::placeholder {

    color:var(--t-muted2);
}

.verify-input:focus {

    border-color:var(--t-cyan);

    box-shadow:0 0 0 4px
        rgba(var(--t-cyan-rgb),.08);
}

.verify-submit {

    height:58px;

    padding:0 28px;

    border:0;

    border-radius:11px;

    cursor:pointer;

    background:linear-gradient(
            135deg,
            var(--t-cyan),
            var(--t-sky)
        );

    color:var(--t-on-accent);

    font-weight:900;

    font-size:14px;

    transition:all .25s ease;

    box-shadow:0 8px 25px
        rgba(var(--t-cyan-rgb),.13);
}

.verify-submit:hover {

    transform:translateY(-2px);

    box-shadow:0 12px 30px
        rgba(var(--t-cyan-rgb),.25);
}

.verify-submit:active {

    transform:scale(.98);
}

/* ==========================================================================
   Result
   ========================================================================== */

.verify-result {

    margin-top:30px;

    padding:30px;

    border-radius:16px;

    animation:resultEnter
        .65s
        cubic-bezier(
            .2,
            .8,
            .2,
            1
        )
        both;
}

@keyframes resultEnter {

    from {

        opacity:0;

        transform:translateY(15px)
            scale(.98);
    }

    to {

        opacity:1;

        transform:translateY(0)
            scale(1);
    }
}

/* ==========================================================================
   VALID
   ========================================================================== */

.verify-valid {

    border:1px solid
        rgba(var(--t-green2-rgb),.28);

    background:linear-gradient(
            135deg,
            rgba(var(--t-green2-rgb),.08),
            rgba(var(--t-bg-rgb),.35)
        );

    box-shadow:inset
        0 0 35px
        rgba(var(--t-green2-rgb),.025);
}

.valid-header {

    display:flex;

    align-items:center;

    gap:18px;

    padding-bottom:25px;

    border-bottom:1px solid
        rgba(var(--t-line2-rgb),.6);
}

.valid-icon {

    position:relative;

    flex:0 0 64px;

    width:64px;

    height:64px;

    display:flex;

    align-items:center;

    justify-content:center;

    border-radius:50%;

    border:1px solid
        rgba(var(--t-green2-rgb),.45);

    background:rgba(var(--t-green2-rgb),.09);

    color:var(--t-green);

    font-size:28px;

    box-shadow:0 0 35px
        rgba(var(--t-green2-rgb),.10);
}

.valid-icon::after {

    content:"";

    position:absolute;

    inset:-8px;

    border:1px solid
        rgba(var(--t-green2-rgb),.20);

    border-radius:50%;

    animation:validRing
        2.5s
        ease-out
        infinite;
}

@keyframes validRing {

    0% {

        transform:scale(.85);

        opacity:.8;
    }

    100% {

        transform:scale(1.35);

        opacity:0;
    }
}

.valid-title {

    color:var(--t-green);

    font-size:22px;

    font-weight:900;
}

.valid-subtitle {

    margin-top:5px;

    color:var(--t-muted);

    font-size:13px;
}

/* ==========================================================================
   Certificate Details
   ========================================================================== */

.certificate-details {

    display:grid;

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

    gap:18px 35px;

    padding-top:27px;
}

.detail-item {

    position:relative;

    padding-left:17px;
}

.detail-item::before {

    content:"";

    position:absolute;

    left:0;

    top:4px;

    width:3px;

    height:35px;

    border-radius:20px;

    background:var(--t-cyan);

    box-shadow:0 0 10px
        rgba(var(--t-cyan-rgb),.35);
}

.detail-label {

    margin-bottom:6px;

    color:var(--t-muted2);

    font-size:10px;

    font-weight:800;

    letter-spacing:1.3px;

    text-transform:uppercase;
}

.detail-value {

    color:var(--t-heading);

    font-size:15px;

    font-weight:700;

    line-height:1.5;

    word-break:break-word;
}

.certificate-number {

    color:var(--t-cyan);

    letter-spacing:.8px;
}

/* ==========================================================================
   Security Footer
   ========================================================================== */

.security-note {

    display:flex;

    align-items:flex-start;

    gap:10px;

    margin-top:26px;

    padding-top:20px;

    border-top:1px solid
        rgba(var(--t-line2-rgb),.55);

    color:var(--t-muted2);

    font-size:11px;

    line-height:1.7;
}

.security-icon {

    color:var(--t-cyan);

    font-size:14px;
}

/* ==========================================================================
   INVALID
   ========================================================================== */

.verify-invalid {

    border:1px solid
        rgba(239, 68, 68, .25);

    background:linear-gradient(
            135deg,
            rgba(239, 68, 68, .07),
            rgba(var(--t-bg-rgb),.30)
        );

    text-align:center;
}

.invalid-icon {

    width:68px;

    height:68px;

    display:flex;

    align-items:center;

    justify-content:center;

    margin:0 auto 17px;

    border:1px solid
        rgba(239, 68, 68, .40);

    border-radius:50%;

    background:rgba(239, 68, 68, .09);

    color:var(--t-red);

    font-size:28px;

    animation:invalidShake
        .5s
        ease;
}

@keyframes invalidShake {

    0%,
    100% {

        transform:translateX(0);
    }

    25% {

        transform:translateX(-5px);
    }

    75% {

        transform:translateX(5px);
    }
}

.invalid-title {

    color:var(--t-red);

    font-size:22px;

    font-weight:900;
}

.invalid-description {

    max-width:530px;

    margin:9px auto 0;

    color:var(--t-muted);

    font-size:13px;

    line-height:1.8;
}

/* ==========================================================================
   Revoked
   ========================================================================== */

.verify-revoked {

    border-color:rgba(var(--t-orange-rgb),.30);

    background:linear-gradient(
            135deg,
            rgba(var(--t-orange-rgb),.08),
            rgba(var(--t-bg-rgb),.30)
        );
}

.verify-revoked
.invalid-icon {

    border-color:rgba(var(--t-orange-rgb),.4);

    background:rgba(var(--t-orange-rgb),.09);

    color:var(--t-yellow);
}

.verify-revoked
.invalid-title {

    color:var(--t-yellow);
}

/* ==========================================================================
   Initial State
   ========================================================================== */

.verify-empty {

    margin-top:30px;

    padding:30px;

    border:1px dashed
        var(--t-line2);

    border-radius:14px;

    text-align:center;

    color:var(--t-muted2);
}

.verify-empty-icon {

    margin-bottom:10px;

    color:var(--t-muted2);

    font-size:28px;
}

/* ==========================================================================
   Footer Badge
   ========================================================================== */

.cybertech-security {

    display:flex;

    justify-content:center;

    align-items:center;

    gap:8px;

    margin-top:24px;

    color:var(--t-muted2);

    font-size:10px;

    letter-spacing:1.2px;

    text-transform:uppercase;

    animation:fadeUp
        1s
        .25s
        ease
        both;
}

.cybertech-security span {

    color:var(--t-cyan);
}

/* ==========================================================================
   Entrance
   ========================================================================== */

@keyframes fadeUp {

    from {

        opacity:0;

        transform:translateY(
                18px
            );
    }

    to {

        opacity:1;

        transform:translateY(
                0
            );
    }
}

/* ==========================================================================
   Responsive
   ========================================================================== */

@media (max-width: 720px) {

    .verify-page {

        padding:50px 15px;
    }

    .verify-card {

        padding:23px;
    }

    .verify-form {

        grid-template-columns:1fr;
    }

    .verify-submit {

        width:100%;
    }

    .certificate-details {

        grid-template-columns:1fr;
    }

    .valid-header {

        align-items:flex-start;
    }
}

/* ==========================================================================
   RTL
   ========================================================================== */

html[dir="rtl"]
.verify-input {

    padding:0 50px
        0 18px;

    direction:ltr;

    text-align:left;
}

html[dir="rtl"]
.verify-input-icon {

    left:auto;

    right:17px;
}

html[dir="rtl"]
.detail-item {

    padding-left:0;

    padding-right:17px;
}

html[dir="rtl"]
.detail-item::before {

    left:auto;

    right:0;
}

