:root{
    --primary:#106A2E;       /* Dartmouth Green */
    --secondary:#0D7856;     /* Dark Spring Green */
    --accent:#F4D35E;        /* Naples Yellow */
    --accent-deep:#D9A916;   /* deeper gold, for foil edges */
    --light:#F1F1F1;         /* Anti-flash White */
    --dark:#1F1F1F;          /* Eerie Black */
    --white:#FFFFFF;
    --gray:#64748B;
    --ink-soft:#6B7280;
    --shadow: 0 10px 30px rgba(16,106,46,0.10);
    --shadow-lg: 0 25px 60px -10px rgba(16,106,46,0.28), 0 8px 20px rgba(16,106,46,0.12);
    --radius-lg:28px;
    --radius-md:18px;
    --radius-sm:10px;
}

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

html{
    scroll-behavior:smooth;
}

body{
    font-family:"Segoe UI",sans-serif;
    line-height:1.6;
    color:var(--dark);
    background:var(--light);
}

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

.header{
    position:sticky;
    top:0;
    background:white;
    z-index:1000;
    box-shadow:0 2px 15px rgba(16,106,46,.08);
}

.navbar{
    display:flex;
    justify-content:space-between;
    align-items:center;
    height:80px;
}

.logo img{
    height:60px;
    width:auto;
    display:block;
}

@media(max-width:768px){
    .logo img{
        height:50px;
    }
}

.nav-links{
    display:flex;
    gap:2rem;
    list-style:none;
}

.nav-links a{
    text-decoration:none;
    color:var(--dark);
    font-weight:500;
    transition:.2s;
    position:relative;
}

.nav-links a::after{
    content:"";
    position:absolute;
    left:0;
    bottom:-6px;
    width:0;
    height:2px;
    background:var(--primary);
    transition:width .25s ease;
}

.nav-links a:hover{
    color:var(--primary);
}

.nav-links a:hover::after{
    width:100%;
}

.btn{
    display:inline-block;
    padding:14px 28px;
    border-radius:var(--radius-sm);
    text-decoration:none;
    transition:.3s;
    font-weight:600;
    letter-spacing:.01em;
}

.btn-primary{
    background:linear-gradient(135deg, var(--primary), var(--secondary));
    color:white;
    box-shadow:0 8px 20px rgba(16,106,46,0.25);
}

.btn-primary:hover{
    box-shadow:0 12px 26px rgba(16,106,46,0.32);
    transform:translateY(-2px);
}

.btn-outline{
    border:2px solid var(--primary);
    color:var(--primary);
    background:transparent;
}

.btn-outline:hover{
    background:var(--primary);
    color:white;
    transform:translateY(-2px);
}

.hero{
    padding:100px 0;
    background:
        radial-gradient(circle at 85% 12%, rgba(244,211,94,0.35) 0%, rgba(244,211,94,0) 45%),
        linear-gradient(160deg, #d7ead9 0%, #cfe9de 45%, #fcf0c8 100%);
    position:relative;
    overflow:hidden;
}

.hero-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    align-items:center;
    gap:4rem;
}

.hero h1{
    font-size:3.5rem;
    line-height:1.1;
    color:var(--dark);
    letter-spacing:-.01em;
}

.hero p{
    margin:1.5rem 0;
    color:var(--gray);
}

.hero-buttons{
    display:flex;
    gap:1rem;
}

.hero-tag{
    display:inline-block;
    color:var(--primary);
    font-weight:600;
    background:rgba(16,106,46,0.10);
    padding:6px 14px;
    border-radius:999px;
    font-size:.85rem;
    letter-spacing:.02em;
    margin-bottom:.5rem;
}

/* ============================= */
/* PHONE / DIGITAL ID MOCKUP     */
/* ============================= */

.phone-mockup{
    width:300px;
    margin:auto;
    background:transparent;
    padding:0;
    perspective:1400px;
    position:relative;
}

/* faint glow under the card to lift it off the hero background */
.phone-mockup::before{
    content:"";
    position:absolute;
    inset:6% 8% -6%;
    background:radial-gradient(closest-side, rgba(16,106,46,0.22), transparent 75%);
    filter:blur(18px);
    z-index:-1;
}

.id-flip-trigger{
    cursor:pointer;
}

.id-flip-inner{
    position:relative;
    width:100%;
    min-height:430px;
    transition:transform .65s cubic-bezier(.45,.05,.55,.95);
    transform-style:preserve-3d;
}

.id-flip-inner.flipped{
    transform:rotateY(180deg);
}

.digital-id{
    position:absolute;
    inset:0;
    width:100%;
    background:var(--white);
    color:var(--dark);
    text-align:center;
    border-radius:var(--radius-lg);
    box-shadow:var(--shadow-lg);
    overflow:hidden;
    backface-visibility:hidden;
    border:1px solid rgba(16,106,46,0.08);
}

/* subtle card-stock texture so the front doesn't read as flat UI */
.digital-id::after{
    content:"";
    position:absolute;
    inset:0;
    background:
        repeating-linear-gradient(135deg, rgba(16,106,46,0.025) 0px, rgba(16,106,46,0.025) 1px, transparent 1px, transparent 10px);
    pointer-events:none;
}

.digital-id-back{
    transform:rotateY(180deg);
    display:flex;
    flex-direction:column;
}

.id-flip-hint{
    text-align:center;
    font-size:.7rem;
    color:var(--gray);
    margin-top:16px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    letter-spacing:.02em;
}

.id-flip-hint svg{
    color:var(--primary);
}

.id-back-header{
    background:linear-gradient(135deg, var(--primary), var(--secondary));
    padding:16px 18px;
    text-align:left;
    position:relative;
    z-index:1;
}

.id-back-header h4{
    color:white;
    font-size:.8rem;
    font-weight:600;
    margin:0;
    letter-spacing:.03em;
}

.id-back-body{
    padding:20px 18px 0;
    text-align:left;
    flex:1;
    position:relative;
    z-index:1;
}

.id-back-row{
    margin-bottom:14px;
}

.id-back-label{
    font-size:.6rem;
    text-transform:uppercase;
    letter-spacing:.08em;
    color:#9ca3af;
    margin-bottom:3px;
    display:block;
}

.id-back-value{
    font-size:.78rem;
    color:var(--dark);
    font-weight:500;
}

.id-barcode{
    height:38px;
    background:repeating-linear-gradient(
        90deg,
        var(--dark) 0px,
        var(--dark) 2px,
        transparent 2px,
        transparent 5px
    );
    margin:8px 0 4px;
    border-radius:4px;
    opacity:.85;
}

.id-back-terms{
    font-size:.6rem;
    color:var(--gray);
    line-height:1.5;
    padding:0 18px 16px;
    text-align:center;
}

.id-back-signature{
    border-top:1px dashed rgba(16,106,46,0.2);
    margin:4px 18px 16px;
    padding-top:8px;
    text-align:center;
    font-size:.62rem;
    color:#9ca3af;
}

/* ---- front face ---- */

.id-header{
    background:
        radial-gradient(circle at 100% 0%, rgba(244,211,94,0.25), transparent 55%),
        linear-gradient(135deg, var(--primary), var(--secondary));
    padding:20px 18px 16px;
    display:flex;
    align-items:center;
    gap:10px;
    text-align:left;
    position:relative;
    z-index:1;
}

.id-header-logo{
    width:38px;
    height:38px;
    border-radius:50%;
    background:rgba(255,255,255,.15);
    border:1.5px solid rgba(255,255,255,.35);
    display:flex;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
    color:white;
    font-size:1rem;
}

.id-header-text h4{
    color:white;
    font-size:.85rem;
    font-weight:600;
    margin:0;
    letter-spacing:.02em;
}

.id-header-text small{
    color:rgba(255,255,255,.7);
    font-size:.65rem;
    letter-spacing:.02em;
}

.id-accent-bar{
    height:4px;
    background:linear-gradient(90deg, var(--accent-deep), var(--accent) 50%, var(--accent-deep));
    position:relative;
    z-index:1;
}

.id-type-banner{
    background:var(--dark);
    color:var(--accent);
    font-size:.6rem;
    letter-spacing:.16em;
    text-transform:uppercase;
    padding:5px 0;
    font-weight:600;
    position:relative;
    z-index:1;
}

.id-photo-wrap{
    display:flex;
    justify-content:center;
    padding:24px 0 12px;
    position:relative;
    z-index:1;
}

.id-photo-ring{
    width:78px;
    height:78px;
    border-radius:50%;
    background:linear-gradient(135deg, var(--primary), var(--accent));
    padding:3px;
    position:relative;
    box-shadow:0 6px 16px rgba(16,106,46,0.25);
}

.id-photo-inner{
    width:100%;
    height:100%;
    border-radius:50%;
    background:#f3f4f6;
    display:flex;
    align-items:center;
    justify-content:center;
    color:var(--primary);
    opacity:.55;
    border:2px solid white;
}

.id-active-dot{
    position:absolute;
    bottom:2px;
    right:calc(50% - 39px - 2px);
    width:14px;
    height:14px;
    background:#22c55e;
    border-radius:50%;
    border:2.5px solid white;
    box-shadow:0 0 0 3px rgba(34,197,94,0.18);
}

.id-details{
    padding:0 20px 16px;
    position:relative;
    z-index:1;
}

.id-name{
    font-size:1.05rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.02em;
    color:var(--dark);
}

.id-number{
    font-size:.7rem;
    color:var(--gray);
    margin-top:3px;
    letter-spacing:.1em;
    text-transform:uppercase;
    font-family:"Courier New",monospace;
}

.id-divider{
    height:1px;
    background:linear-gradient(90deg, transparent, rgba(16,106,46,0.18), transparent);
    margin:14px 0;
}

.id-row{
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:6px 0;
}

.id-row-label{
    font-size:.62rem;
    text-transform:uppercase;
    letter-spacing:.07em;
    color:#9ca3af;
}

.id-pill{
    font-size:.62rem;
    font-weight:600;
    padding:3px 10px;
    border-radius:6px;
}

.id-pill-course{
    background:var(--accent);
    color:var(--dark);
}

.id-pill-status{
    background:#dcfce7;
    color:#166534;
    display:inline-flex;
    align-items:center;
    gap:5px;
}

.id-pill-status .dot{
    width:5px;
    height:5px;
    border-radius:50%;
    background:#22c55e;
    box-shadow:0 0 0 2px rgba(34,197,94,0.25);
}

.id-row-value{
    font-size:.72rem;
    font-weight:600;
    color:var(--dark);
}

.id-qr-section{
    background:#f9fafb;
    border-top:1px solid rgba(16,106,46,0.08);
    padding:16px 18px;
    display:flex;
    align-items:center;
    gap:12px;
    text-align:left;
    position:relative;
    z-index:1;
}

.qr-placeholder{
    width:58px;
    height:58px;
    background:
        linear-gradient(90deg, var(--dark) 0 2px, transparent 2px 4px) 0 0/8px 100%,
        linear-gradient(var(--dark) 0 2px, transparent 2px 4px) 0 0/100% 8px,
        white;
    border:1px solid #e5e7eb;
    border-radius:8px;
    flex-shrink:0;
    position:relative;
}

.qr-placeholder::after{
    content:"";
    position:absolute;
    inset:14px;
    background:var(--dark);
    opacity:.08;
    border-radius:3px;
}

.id-qr-text small{
    display:block;
    font-size:.68rem;
    font-weight:600;
    color:var(--dark);
    margin-bottom:2px;
}

.id-qr-text span{
    font-size:.6rem;
    color:var(--gray);
    line-height:1.4;
}

.id-footer-strip{
    height:5px;
    background:linear-gradient(90deg, var(--secondary), var(--primary) 50%, var(--accent-deep));
}

/* ============================= */

.section{
    padding:100px 0;
}

.section-light{
    background:var(--light);
}

.section-header{
    text-align:center;
    margin-bottom:4rem;
}

.section-header h2{
    color:var(--dark);
}

.section-header p{
    color:var(--gray);
    margin-top:.5rem;
}

.feature-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
    gap:2rem;
}

.service-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
    gap:1.5rem;
}

.card{
    background:white;
    padding:2rem;
    border-radius:var(--radius-md);
    box-shadow:var(--shadow);
    border:1px solid rgba(16,106,46,0.06);
    transition:.3s;
}

.card:hover{
    transform:translateY(-8px);
    border-color:rgba(16,106,46,0.2);
    box-shadow:var(--shadow-lg);
}

.card h3{
    color:var(--dark);
    margin:.75rem 0 .5rem;
}

.card p{
    color:var(--gray);
}

.service-card{
    background:white;
    padding:1.75rem;
    border-radius:var(--radius-md);
    box-shadow:var(--shadow);
    border:1px solid rgba(16,106,46,0.06);
    transition:.3s;
    text-align:left;
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:.5rem;
}

.service-card:hover{
    transform:translateY(-8px);
    border-color:rgba(16,106,46,0.2);
    box-shadow:var(--shadow-lg);
}

.service-icon-badge{
    width:46px;
    height:46px;
    border-radius:12px;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:1.4rem;
    margin-bottom:.5rem;
}

.service-card h3{
    color:var(--dark);
    font-size:1.1rem;
}

.service-card p{
    color:var(--gray);
    font-size:.9rem;
}

.steps{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:2rem;
}

.step{
    text-align:center;
}

.step span{
    font-size:2rem;
    color:var(--primary);
    font-weight:700;
}

.step h3{
    margin:.5rem 0;
    color:var(--dark);
}

.step p{
    color:var(--gray);
}

.faq-item{
    background:white;
    margin-bottom:1rem;
    border-radius:12px;
    overflow:hidden;
    border:1px solid rgba(16,106,46,0.06);
}

.faq-question{
    width:100%;
    padding:1.5rem;
    border:none;
    background:white;
    cursor:pointer;
    text-align:left;
    font-weight:600;
    color:var(--dark);
}

.faq-answer{
    max-height:0;
    overflow:hidden;
    transition:.4s;
}

.faq-answer p{
    padding:0 1.5rem 1.5rem;
    color:var(--gray);
}

.faq-item.active .faq-answer{
    max-height:200px;
}

.faq-item.active .faq-question{
    color:var(--primary);
}

.footer{
    background:var(--dark);
    color:white;
    text-align:center;
    padding:3rem 0;
}

.footer h3{
    color:var(--accent);
}

.footer p{
    color:rgba(255,255,255,.7);
}

.footer-links{
    margin:1rem 0;
}

.footer-links a{
    color:white;
    text-decoration:none;
    margin:0 10px;
    transition:.2s;
}

.footer-links a:hover{
    color:var(--accent);
}

.menu-toggle{
    display:none;
}

@media(max-width:768px){

    .hero-grid{
        grid-template-columns:1fr;
        text-align:center;
    }

    .hero h1{
        font-size:2.5rem;
    }

    .hero-buttons{
        justify-content:center;
    }

    .steps{
        grid-template-columns:1fr;
    }

    .menu-toggle{
        display:block;
        border:none;
        background:none;
        font-size:1.5rem;
        color:var(--dark);
    }

    .nav-links{
        display:none;
        position:absolute;
        top:80px;
        left:0;
        width:100%;
        background:white;
        flex-direction:column;
        padding:2rem;
    }

    .nav-links.active{
        display:flex;
    }

    .nav-btn{
        display:none;
    }

    .phone-mockup{
        width:min(280px,80vw);
    }

    .id-flip-inner{
        min-height:400px;
    }
}

@media(max-width:480px){

    .hero{
        padding:70px 0;
    }

    .hero h1{
        font-size:2rem;
    }

    .phone-mockup{
        width:min(250px,72vw);
    }

    .id-flip-inner{
        min-height:370px;
    }

    .id-photo-ring{
        width:64px;
        height:64px;
    }

    .id-name{
        font-size:.92rem;
    }

    .id-details{
        padding:0 16px 14px;
    }

    .id-header{
        padding:16px 16px 12px;
    }

    .id-qr-section{
        padding:14px 16px;
        gap:10px;
    }

    .qr-placeholder{
        width:50px;
        height:50px;
    }

    .id-back-body{
        padding:16px 16px 0;
    }

    .id-back-terms{
        padding:0 16px 14px;
    }

    .id-row-label,
    .id-back-label{
        font-size:.58rem;
    }

    .id-row-value,
    .id-back-value{
        font-size:.7rem;
    }

    .id-pill{
        font-size:.58rem;
        padding:3px 8px;
    }

    .id-number{
        font-size:.65rem;
    }

    .id-qr-text small{
        font-size:.64rem;
    }

    .id-qr-text span{
        font-size:.58rem;
    }

    .id-back-header h4,
    .id-header-text h4{
        font-size:.78rem;
    }

    .id-header-text small{
        font-size:.6rem;
    }
}

@media(max-width:360px){

    .phone-mockup{
        width:min(220px,68vw);
    }

    .id-flip-inner{
        min-height:340px;
    }

    .id-photo-wrap{
        padding:18px 0 10px;
    }

    .id-photo-ring{
        width:56px;
        height:56px;
    }

    .id-active-dot{
        right:calc(50% - 31px - 2px);
    }
}