/* modules/neonlanding/views/css/landing.css */
/* ✅ Full width ONLY inside neon landing page */
#content .nl,
#content-wrapper .nl,
#main .nl{
    width:100%;
}

/* ✅ Only when this page contains .nl (landing) */
#content:has(.nl),
#content-wrapper:has(.nl),
#main:has(.nl),
#wrapper:has(.nl){
    max-width:none !important;
    width:100% !important;
    padding-left:0 !important;
    padding-right:0 !important;
    margin-left:0 !important;
    margin-right:0 !important;
}

/* ✅ Some themes limit width on .container / .container-fluid */
#content-wrapper:has(.nl) .container,
#content-wrapper:has(.nl) .container-fluid,
#main:has(.nl) .container,
#main:has(.nl) .container-fluid{
    max-width:none !important;
    width:100% !important;
    padding-left:0 !important;
    padding-right:0 !important;
}

/* ✅ Some themes add extra padding on rows / page-content */
#content-wrapper:has(.nl) .row,
#content-wrapper:has(.nl) .page-content,
#main:has(.nl) .row,
#main:has(.nl) .page-content{
    margin-left:0 !important;
    margin-right:0 !important;
    padding-left:0 !important;
    padding-right:0 !important;
}

/* =========================================================
   ✅ Neon Landing Typography + UI (clean & consistent)
   ========================================================= */
.nl{
    --wrap:100%;
    --r:18px;
    --b:1px;
    --bd:rgba(15,23,42,.10);
    --txt:#0f172a;
    --mut: #7e7e7e;
    --bg:#ffffff;
    --soft:#f6f7fb;

    --pri:#ff3ea5;
    --pri2:#7c3aed;
    --pri3:#22c55e;

    /* Typography system */
    --fw-regular:400;
    --fw-medium:500;
    --fw-semibold:600;
    --fw-bold:700;

    color:var(--txt);
    background:var(--bg);

    font-family:
            Inter,
            -apple-system,
            BlinkMacSystemFont,
            "Segoe UI",
            Roboto,
            "PingFang SC",
            "Hiragino Sans GB",
            "Microsoft YaHei",
            Arial,
            sans-serif;

    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
    text-rendering:optimizeLegibility;
}


.nl a{ color:inherit; text-decoration:none; color:white}
.nl-wrap{ width:min(var(--wrap), calc(100% - 32px)); margin:0 auto; }
.nl-row{ display:flex; align-items:center; justify-content:space-between; gap:16px; }

/* =========================
   Topbar (utility bar)
   ========================= */
.nl-topbar{
    /* look */
    background: linear-gradient(90deg, rgba(255,60,180,.95), rgba(120,90,255,.85));
    color: rgba(255,255,255,.92);

    /* typography */
    font-size:12.5px;
    font-weight:600;
    letter-spacing:.02em;

    /* layout */
    height:auto;
    padding:20px 0;

    /* subtle separation */
    border-bottom:1px solid rgba(255,255,255,.18);
}

.nl-topbar-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    padding:0; /* 由 nl-topbar 控制上下 padding */
}

/* left/right groups */
.nl-topbar-left,
.nl-topbar-right{
    display:flex;
    align-items:center;
    gap:10px;
    min-width:0;
}

/* dot separator */
.nl-dot{
    opacity:.55;
    margin:0 2px;
}

/* links */
.nl-topbar a{
    color: rgba(255,255,255,.92);
    text-decoration:none;
    opacity:.92;
    transition: opacity .15s ease, transform .15s ease;
}
.nl-topbar a:hover{
    opacity:1;
    transform: translateY(-1px);
}

/* make text not wrap weirdly */
.nl-topbar-left span,
.nl-topbar-right a{
    white-space:nowrap;
}

/* add a subtle divider between left and right (optional) */
.nl-topbar-right{
    padding-left:14px;
    border-left:1px solid rgba(255,255,255,.18);
}

/* =========================
   Mobile: stack + reduce items
   ========================= */
@media (max-width:768px){
    .nl-topbar{
        padding:8px 0;

    }

    .nl-topbar-row{
        flex-direction:column;
        align-items:flex-start;
        gap:6px;
    }

    .nl-topbar-right{
        border-left:none;
        padding-left:0;
    }

    /* optional: hide dots on mobile */
    .nl-dot{ display:none; }

    /* allow wrapping if needed */
    .nl-topbar-left,
    .nl-topbar-right{
        flex-wrap:wrap;
        gap:8px;
    }
}
.nl-header{
    padding:15px;   /* 👈 调大/调小这里 */
}
/* buttons */
a.nl-btn,
a.nl-btn:visited,
a.nl-btn:hover,
a.nl-btn:active,
a.nl-btn:focus{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;

    padding:14px 26px;
    border-radius:59px;

    font-size:16px;
    font-weight:var(--fw-semibold);
    letter-spacing:0.02em;

    color:#fff !important;
    background:linear-gradient(135deg, #ff2f92, #ff5fc8);

    border:none;
    cursor:pointer;
    text-decoration:none !important;
    white-space:nowrap;

    box-shadow:0 8px 24px rgba(255, 47, 146, 0.35),
    inset 0 0 0 1px rgba(255,255,255,0.22);

    transition:transform .18s ease, box-shadow .18s ease, filter .18s ease;
}
a.nl-btn:hover{ transform:translateY(-1px); filter:brightness(.98); }
a.nl-btn:active{ transform:translateY(0); filter:brightness(.96); }
a.nl-btn:focus{ outline:none; }
a.nl-btn:focus-visible{
    outline:3px solid rgba(255,47,146,.28);
    outline-offset:3px;
}

/* ✅ Ghost button (Get a quote) - force solid white */
a.nl-btn.nl-btn-ghost,
a.nl-btn.nl-btn-ghost:visited,
a.nl-btn.nl-btn-ghost:hover,
a.nl-btn.nl-btn-ghost:active,
a.nl-btn.nl-btn-ghost:focus {
    color: #0f172a !important;
    background: #ffffff !important;
    border: 1px solid rgba(15,23,42,.12) !important;
    box-shadow: none !important;
    text-decoration: none !important;
}

a.nl-btn.nl-btn-ghost:hover {
    background: #f8fafc !important;
}

.nl-hero-actions{
    display:flex;
    align-items:center;
    gap:14px;
    flex-wrap:nowrap;      /* 👈 关键：不允许换行 */
}



.nl-btn-lg{ padding:12px 16px; border-radius:16px; }

/* ghost button variant */
.nl-btn-ghost{
    color:#0f172a !important;
    background:#fff !important;
    border:1px solid var(--bd) !important;
    box-shadow:none !important;
}
.nl-btn-ghost:hover{ background:#f8fafc !important; }

/* hero */
.nl-hero{ padding:28px 0 10px; }
.nl-hero-grid{
    width:min(var(--wrap), calc(100% - 32px));
    margin:0 auto;
    display:grid;
    grid-template-columns:1.05fr .95fr;
    gap:18px;
    align-items:stretch;
}

.nl-hero-left{
    border:1px solid var(--bd);
    border-radius:calc(var(--r) + 8px);
    padding:28px;
    background:
            radial-gradient(1200px 500px at 20% 0%, rgba(255,62,165,.16), transparent 60%),
            radial-gradient(900px 500px at 70% 10%, rgba(124,58,237,.16), transparent 60%),
            #fff;
}

/* ===== Neon text kicker ===== */
/* ===== Neon text kicker (base) ===== */
.nl-kicker{
    display:inline-block;
    font-weight:700;
    font-size:13px;
    letter-spacing:.25em;
    text-transform:uppercase;
    color:#fff;
    margin-bottom:14px;

    /* base glow (neutral) */
    text-shadow:
            0 0 2px #fff,
            0 0 6px rgba(255,255,255,.85);
}

/* ===== Animation ===== */
.nl-kicker.is-animated{
    animation: neonPulse 3.5s ease-in-out infinite;
    will-change: filter;
}

/* ===== Color variants ===== */

.nl-kicker.neon-blue{
    text-shadow:
            0 0 2px #fff,
            0 0 6px rgba(255,255,255,.9),
            0 0 14px rgba(80, 160, 255, .9),
            0 0 30px rgba(80, 160, 255, .6),
            0 0 50px rgba(80, 160, 255, .35);
}

.nl-kicker.neon-white{
    text-shadow:
            0 0 2px #fff,
            0 0 8px rgba(255,255,255,.95),
            0 0 18px rgba(255,255,255,.75),
            0 0 32px rgba(255,255,255,.45);
}
.nl .nl-kicker.neon-pink{
    color: #ee5cb5; /* 👈 文字颜色 */
    font-size: 18px;
    text-shadow:
            0 0 2px #fff,
            0 0 10px rgba(255,255,255,.95),
            0 0 18px rgba(255, 60, 180, 1),
            0 0 40px rgba(255, 60, 180, .85),
            0 0 70px rgba(255, 60, 180, .55) !important;
}
.nl-kicker{
    display:block;
    text-align:center;
    margin-left:auto;
    margin-right:auto;
}
不需要
/* ===== Pulse animation ===== */
@keyframes neonPulse{
    0%,100%{
        filter:brightness(1);
    }
    50%{
        filter:brightness(1.18);
    }
}


.nl-kicker{
    animation:neonPulse 3.5s ease-in-out infinite;
}

/* mobile */
@media (max-width:768px){
    .nl-kicker{
        font-size:12px;
        letter-spacing:.22em;
    }
}


.nl-h1{
    margin:14px 0 10px;
    font-size:44px;
    line-height:1.1;
    letter-spacing:-0.02em;
    font-weight:var(--fw-bold);
}

.nl-grad{
    background:linear-gradient(135deg, var(--pri), var(--pri2));
    -webkit-background-clip:text;
    background-clip:text;
    color:transparent;
}

.nl-sub{
    color:var(--mut);
    font-size:16px;
    line-height:1.6;
    max-width:44ch;
    font-weight:var(--fw-regular);
    letter-spacing:0;
}



.nl-bullets{
    display:flex; gap:14px; flex-wrap:wrap;
    margin-top:16px;
    color:#334155;
    font-weight:var(--fw-medium);
    font-size:13px;
}

.nl-bullet{
    background:#fff;
    border:1px solid var(--bd);
    padding:8px 10px;
    border-radius:999px;
}
/* hero right */
.nl-hero-right {
    position: relative;
    border: 1px solid var(--bd);
    border-radius: calc(var(--r) + 8px);
    overflow: hidden;
    background: url("/modules/neonlanding/views/img/hero-bg.webp") center/cover no-repeat;

}

.nl-collage{ position:relative; height:100%; min-height:380px; padding:22px; }
.nl-hero-glow{
    position:absolute; inset:-120px;
    background:
            radial-gradient(closest-side at 40% 35%, rgba(255,62,165,.35), transparent 60%),
            radial-gradient(closest-side at 70% 30%, rgba(124,58,237,.35), transparent 60%),
            radial-gradient(closest-side at 55% 65%, rgba(34,197,94,.25), transparent 60%);
    filter:blur(18px);
}

.nl-float{
    position:absolute;
    border-radius:18px;
    padding:14px 14px;
    color:#fff;
    background:rgba(255,255,255,.10);
    border:1px solid rgba(255,255,255,.16);
    backdrop-filter:blur(10px);
    box-shadow:0 20px 60px rgba(0,0,0,.28);
}
.nl-float-title{ font-size:12px; opacity:.85; font-weight:var(--fw-semibold); }
.nl-float-big{ font-size:18px; font-weight:500; letter-spacing:-0.01em; margin-top:4px; }
.nl-float-sub{ font-size:12px; opacity:.85; margin-top:2px; font-weight:var(--fw-regular); }

.nl-float-1{top:10px;left:15px;}
.nl-float-2{ top:10px; right:5px; }
.nl-float-3{ bottom:22px; left:34px; }

.nl-hero-card{ position:absolute; left:22px; right:22px; bottom:22px; }
.nl{
    --card-alpha: .78;  /* 更透明 */
}

.nl{
    --card-alpha: .88;
}


.nl-hero-card-inner{
    border-radius:20px;
    padding:14px 16px;

    border: 2px solid rgb(255 255 255 / 40%);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}



.nl-mini-title{
    margin-top:10px;
    font-size:18px;
    font-weight: 400;
    letter-spacing:-0.01em;
    color: #ffffff;
}

.nl-mini-sub{
    margin-top:4px;
    color:var(--mut);
    font-weight:var(--fw-regular);
    font-size:13px;
    line-height:1.6;
}
.nl-mini-tag{
    display:inline-flex;
    padding:6px 10px;
    border-radius:999px;
    background: #ffffffc9;
    color: #333232;
    font-size: 14px;
    font-weight: 500;
}

.nl-mini-link{
    display:inline-flex;
    margin-top:10px;
    font-weight:var(--fw-semibold);
    color: #ffffff;
}
.nl .nl-mini-link:hover{
    color:#ff5fc8;
    text-shadow:
            0 0 6px rgba(255,95,200,.8),
            0 0 14px rgba(255,95,200,.6);
}
/* promos */
.nl-promos{
    margin-top:16px;
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:12px;
}
.nl-promo{
    border:1px solid var(--bd);
    border-radius:var(--r);
    padding:14px 16px;
    background:#fff;
}
.nl-promo-title{ font-weight:var(--fw-semibold); letter-spacing:0; }
.nl-promo-sub{
    color:var(--mut);
    margin-top:4px;
    font-weight:var(--fw-regular);
    font-size:13px;
    line-height:1.6;
}

/* sections */
.nl-section{ padding:38px 0; }
.nl-section-muted{
    background:var(--soft);
    border-top:1px solid rgba(15,23,42,.06);
    border-bottom:1px solid rgba(15,23,42,.06);
}
.nl-sec-head{ display:flex; align-items:end; justify-content:space-between; gap:12px; margin-bottom:14px; }
.nl-h2{
    margin:0;
    font-size:26px;
    letter-spacing:-0.01em;
    font-weight:var(--fw-semibold);
}
.nl-link{ font-weight:var(--fw-semibold); color:#0f172a; opacity:.9; }
.nl-link:hover{ opacity:1; }
.nl-muted{ color:var(--mut); font-weight:var(--fw-medium); font-size:13px; }

/* categories */
.nl-cats{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:18px;
}

@media (max-width:768px){
    .nl-cats{
        grid-template-columns:repeat(2,1fr);
    }
}
.nl-cat{
    position:relative;
    display:block;
    border-radius:20px;          /* 👈 圆角 */
    overflow:hidden;             /* 👈 关键 */
    text-decoration:none;
    background:#000;
}

.nl-cat-img{
    width:100%;
    aspect-ratio:30 / 16;          /* 正方形卡片 */
    background-size:cover;
    background-position:center;
    background-repeat:no-repeat;
    transition:transform .4s ease, filter .4s ease;
}

.nl-cat-text{
    position:absolute;
    inset:0;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;

    /* 暗层，保证字清晰 */
    background:linear-gradient(
            to bottom,
            rgba(0,0,0,.25),
            rgba(0,0,0,.45)
    );
}
.nl-cat-title{
    font-size:18px;
    font-weight:700;
    color:#fff;
    letter-spacing:.2em;
    text-shadow:
            0 0 6px rgba(255,255,255,.9),
            0 0 14px rgba(120,160,255,.85);
}

.nl-cat-sub{
    margin-top:6px;
    font-size:13px;
    color:rgba(255,255,255,.8);
}

.nl-cat:hover .nl-cat-img{
    transform:scale(1.06);
    filter:brightness(1.1) saturate(1.1);
}

.nl-cat:hover .nl-cat-text{
    background:linear-gradient(
            to bottom,
            rgba(0,0,0,.15),
            rgba(0,0,0,.35)
    );
}



/* steps */
.nl-steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-top:12px; }
.nl-step{ border:1px solid rgba(15,23,42,.10); border-radius:var(--r); padding:16px; background:#fff; }
.nl-step-n{
    width:34px; height:34px; border-radius:12px; display:grid; place-items:center;
    font-weight:var(--fw-bold); color:#fff;
    background:linear-gradient(135deg, var(--pri), var(--pri2));
}
.nl-step-t{ margin-top:10px; font-weight:var(--fw-semibold); }
.nl-step-s{
    margin-top:6px;
    color:var(--mut);
    font-weight:var(--fw-regular);
    font-size:13px;
    line-height:1.6;
}

/* grid tiles */
.nl-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-top:10px; }
.nl-tile{ border:1px solid var(--bd); border-radius:var(--r); padding:14px; background:#fff; overflow:hidden; }
.nl-tile-img{ aspect-ratio:4/3; border-radius:14px; overflow:hidden; background:#f1f5f9; }
.nl-tile-img img{ width:100%; height:100%; object-fit:cover; display:block; }
.nl-tile-ph{
    height:140px;
    border-radius:14px;
    display:grid;
    place-items:center;
    font-weight:var(--fw-semibold);
    letter-spacing:0.12em;
    background:linear-gradient(135deg, rgba(255,62,165,.18), rgba(124,58,237,.16), rgba(34,197,94,.12));
}
.nl-tile-title{color: #515050; margin-top:10px; font-weight:var(--fw-semibold); letter-spacing:-0.01em; }
.nl-tile-sub{
    margin-top:4px;
    color:var(--mut);
    font-weight:var(--fw-regular);
    font-size:13px;
    line-height:1.6;
}

/* quotes */
.nl-quotes{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:12px; }
.nl-quote{ border:1px solid rgba(15,23,42,.10); border-radius:var(--r); padding:16px; background:#fff; }
.nl-quote-t{ font-weight:var(--fw-regular); line-height:1.6; }
.nl-quote-s{ margin-top:10px; color:var(--mut); font-weight:var(--fw-semibold); font-size:13px; }

/* cta */
.nl-cta{ padding:26px 0 46px; }
.nl-cta-inner{
    border-radius:calc(var(--r) + 8px);
    border:1px solid var(--bd);
    padding:20px 22px;
    background:
            radial-gradient(900px 420px at 20% 0%, rgba(255,62,165,.16), transparent 60%),
            radial-gradient(900px 420px at 70% 10%, rgba(124,58,237,.14), transparent 60%),
            #fff;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
}
.nl-cta-title{ font-size:22px; font-weight:var(--fw-bold); letter-spacing:-0.01em; }
.nl-cta-sub{ margin-top:6px; color:var(--mut); font-weight:var(--fw-regular); line-height:1.6; }
.nl-cta-actions{ display:flex; gap:10px; flex-wrap:wrap; }

/* footer */
.nl-footer{ padding:22px 0 34px; color:#334155; }
.nl-footer-row{ display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.nl-footer-links{ display:flex; gap:14px; }
.nl-footer a{ opacity:.85; }
.nl-footer a:hover{ opacity:1; }

/* responsive */
@media (max-width: 992px){
    .nl-hero-grid{ grid-template-columns:1fr; }
    .nl-promos{ grid-template-columns:1fr; }
    .nl-cats{ grid-template-columns:repeat(2,1fr); }
    .nl-steps{ grid-template-columns:repeat(2,1fr); }
    .nl-grid{ grid-template-columns:repeat(2,1fr); }
    .nl-quotes{ grid-template-columns:1fr; }
    .nl-nav{ display:none; }
}
.tvcms-header-menu-offer-wrapper{
    display: none !important;
}

.flag-icon{
    width:18px;
    height:auto;
    margin-right:6px;
    vertical-align:middle;
}
/* =========================================
   FIX: desktop 字体太大 + 4个按钮同一行
   放到 landing.css 最底部
   ========================================= */

/* 1) Topbar：桌面保持小一点，移动端也别放大到 18px */
.nl-topbar{
    font-size: 12px;          /* 桌面字更小更干净 */
    padding: 12px 0;          /* 桌面高度别太夸张 */
}

@media (max-width:768px){
    .nl-topbar{
        font-size: 12px;        /* ✅ 改掉你原来的 18px */
        padding: 10px 0;
    }
}

/* 2) Hero 按钮区：桌面强制一行，移动端允许换行 */
.nl-hero-actions{
    display:flex;
    align-items:center;        /* 垂直居中 */
    justify-content:center;    /* 水平居中 */
    gap:12px;
    flex-wrap:nowrap;
}
@media (max-width:768px){
    .nl-hero-actions{
        flex-wrap:wrap;         /* ✅ 手机允许换行 */
        justify-content:center;
    }
}

/* 3) 如果你是“4个按钮都要同一行”（桌面），给按钮更紧凑一点 */
@media (min-width:992px){
    a.nl-btn{
        padding: 12px 18px;     /* 更紧凑，保证 4 个更容易塞进一行 */
        font-size: 15px;
    }
}

/* =========================================
   MOBILE ONLY FIXES (<=768px)
   ========================================= */
@media (max-width:768px){

    /* ---------------------------------
       ① Header 两个按钮：强制一行
       --------------------------------- */
    .nl-header-cta{
        display:flex !important;
        flex-wrap:nowrap !important;
        gap:10px;
        justify-content:center;
    }

    .nl-header-cta > a{
        flex:1 1 0;
        min-width:0;
        padding:10px 12px;
        font-size:14px;
        white-space:nowrap;
    }

    /* ---------------------------------
       ② Hero 区按钮：一行两个 + 字体略小
       --------------------------------- */
    .nl-hero-actions{
        display:flex !important;
        flex-wrap:nowrap !important;
        gap:10px;
        justify-content:center;
    }

    .nl-hero-actions > a{
        flex:1 1 0;
        padding:12px 10px;
        font-size:14px;
        text-align:center;
    }

    /* ---------------------------------
       ③ Bullets：每行 2 个 + 字体小一点
       --------------------------------- */
    .nl-bullets{
        display:grid !important;
        grid-template-columns:repeat(2, 1fr);
        gap:8px 8px;
        margin-top:14px;
    }

    .nl-bullet{
        font-size:12px;           /* 👈 字体变小 */
        padding:6px 8px;
        justify-content:flex-start;
        white-space:nowrap;
    }

    .nl-bullet img.flag-icon{
        width:14px;
    }
}
/* =========================================
   MOBILE: fix clipped/cut-off content
   ========================================= */
@media (max-width:768px){

    /* 1) 让 hero 区域不要被宽度/边距挤压 */
    .nl .nl-hero-grid{
        width:100% !important;        /* 不要再 min(...-32px) */
        margin:0 !important;
        padding:0 14px !important;    /* 手机留一点边距即可 */
        box-sizing:border-box;
    }

    /* 2) 左侧卡片（实际就是手机唯一列）避免溢出裁切 */
    .nl .nl-hero-left{
        padding:18px !important;
        overflow:visible !important;
    }

    /* 3) 两个按钮所在行：允许缩小，不要被挤出 */
    .nl .nl-hero-actions{
        gap:10px !important;
    }
    .nl .nl-hero-actions > a{
        min-width:0 !important;       /* ✅ 关键：允许内容缩小 */
    }

    /* 4) bullets 两列：允许换行显示，不要强制一行导致裁切 */
    .nl .nl-bullet{
        white-space:normal !important; /* ✅ 不要 nowrap，否则会被截 */
        line-height:1.2;
    }
}
/* =========================================
   MOBILE: center bullets (icon + text)
   ========================================= */
@media (max-width:768px){

    /* bullets 两列保持不变，你已经是 grid 了 */
    .nl .nl-bullets{
        justify-items:stretch;          /* 每个格子填满 */
    }

    /* 每个胶囊：内容水平居中 + 文本居中 */
    .nl .nl-bullet{
        display:flex !important;
        align-items:center !important;
        justify-content:center !important;   /* ✅ icon+文字整体居中 */
        text-align:center !important;        /* ✅ 多行文字居中 */
        gap:6px !important;

        /* 让换行更好看：允许换行，但居中 */
        white-space:normal !important;
        line-height:1.15;
    }

    /* icon 不要把布局挤坏 */
    .nl .nl-bullet img.flag-icon{
        width:14px;
        flex:0 0 auto;
    }

    /* emoji/图标开头的 bullet（💰⚡✅✨🔆）也统一居中 */
    .nl .nl-bullet{
        padding:6px 8px; /* 你原来就有，这里再保证一致 */
    }
}
/* =========================================
   MOBILE: fix "glow" clipped on the right
   ========================================= */
@media (max-width:768px){
    .nl .nl-h1{
        font-size: 38px !important;   /* ✅ 手机别用 44px */
        line-height: 1.08 !important;
        overflow: visible !important;
    }

    .nl .nl-grad{
        display:inline-block;
        padding-right: 4px;           /* ✅ 给右边留空，防止最后一笔被切 */
    }
}
/* =========================================
   DESKTOP: fix clipped corner on "glow"
   ========================================= */
@media (min-width: 769px){
    .nl .nl-h1{
        overflow: visible !important;
    }

    .nl .nl-grad{
        display:inline-block;
        padding-right: 6px;   /* ✅ 关键：防止 W 最右侧被 background-clip 裁掉 */
    }
}
/* =========================================
   MOBILE: prevent nl-float cards overlapping
   ========================================= */
@media (max-width:768px){

    /* 所有 floating card 在手机端统一缩小 */
    .nl .nl-float{
        padding:10px 12px;
        border-radius:14px;
        max-width:65%;              /* 👈 限制宽度，防止横向打架 */
    }

    .nl .nl-float-title{
        font-size:11px;
        line-height:1.2;
    }

    .nl .nl-float-big{
        font-size:14px;             /* 👈 原来 18px，手机太大 */
        line-height:1.25;
        margin-top:2px;
        white-space:nowrap;         /* 👈 不允许断行，避免撑宽 */
        overflow:hidden;
        text-overflow:ellipsis;     /* 超出显示 … */
    }

    /* 单独微调两个上方卡片的位置 */
    .nl .nl-float-1{
        top:10px;
        left:10px;
    }

    .nl .nl-float-2{
        top:10px;
        right:10px;
    }
}
/* =========================================
   Steps (How it works) – polished
   ========================================= */

.nl-steps{
    display:grid;
    grid-template-columns:repeat(4, 1fr);
    gap:14px;
    margin-top:14px;
}

.nl-step{
    background:#fff;
    border:1px solid rgba(15,23,42,.10);
    border-radius:18px;
    padding:16px 16px 14px;
    box-shadow:0 10px 30px rgba(15,23,42,.05);
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
    min-height: 132px;
}

.nl-step:hover{
    transform: translateY(-2px);
    box-shadow:0 18px 40px rgba(15,23,42,.08);
    border-color: rgba(255,62,165,.28);
}

.nl-step-top{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
}

.nl-step-n{
    width:34px;
    height:34px;
    border-radius:12px;
    display:grid;
    place-items:center;
    font-weight:800;
    color:#fff;
    background:linear-gradient(135deg, var(--pri), var(--pri2));
    flex: 0 0 auto;
}

/* icon bubble */
.nl-step-ic{
    width:38px;
    height:38px;
    border-radius:14px;
    display:grid;
    place-items:center;
    background: linear-gradient(135deg, rgba(255,62,165,.14), rgba(124,58,237,.12));
    border:1px solid rgba(15,23,42,.08);
    flex: 0 0 auto;
}

.nl-step-ic img{
    width:22px;
    height:22px;
    display:block;
}

.nl-step-t{
    margin-top:12px;
    font-weight:700;
    font-size:14px;
    letter-spacing:-0.01em;
    color:#0f172a;
}

.nl-step-s{
    margin-top:6px;
    color:rgba(15,23,42,.62);
    font-size:13px;
    line-height:1.55;
}

/* Responsive */
@media (max-width: 992px){
    .nl-steps{ grid-template-columns:repeat(2, 1fr); }
}
@media (max-width: 560px){
    .nl-steps{ grid-template-columns:1fr; }
    .nl-step{ min-height: auto; }
}
/* =========================================
   Text-only Production Process (Arrow Flow)
   ========================================= */

.nl-process{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:14px;
    margin-top:14px;
}

/* Step card */
.nl-process-step{
    flex:1 1 0;
    background:#fff;
    border:1px solid rgba(15,23,42,.10);
    border-radius:16px;
    padding:16px 16px 14px;
    box-shadow:0 10px 28px rgba(15,23,42,.05);
}

/* Title */
.nl-process-title{
    font-weight:800;
    font-size:14px;
    letter-spacing:-0.01em;
    color:#0f172a;
}

/* Description */
.nl-process-desc{
    margin-top:6px;
    font-size:13px;
    line-height:1.55;
    color:rgba(15,23,42,.65);
}

/* Arrow between steps */
.nl-process-arrow{
    flex:0 0 auto;
    font-size:22px;
    line-height:1;
    margin-top:26px;
    color:rgba(124,58,237,.55);
    user-select:none;
}

/* Tablet: wrap to 2 rows */
@media (max-width: 992px){
    .nl-process{
        flex-wrap:wrap;
    }
    .nl-process-arrow{
        display:none;
    }
}

/* Mobile: vertical process with arrows */
@media (max-width: 560px){
    .nl-process{
        flex-direction:column;
        gap:10px;
    }

    .nl-process-step{
        width:100%;
    }

    .nl-process-arrow{
        display:block;
        margin:2px auto;
        font-size:18px;
        transform: rotate(90deg); /* → 变成 ↓ */
        color:rgba(124,58,237,.45);
    }
}
/* =========================================
   Center text in process steps
   ========================================= */

.nl-process-step{
    text-align: center;   /* 👈 核心：标题+描述全部居中 */
}

/* 标题 */
.nl-process-title{
    text-align: center;
}

/* 描述 */
.nl-process-desc{
    text-align: center;
}
/* =========================================
  Reviews (FINAL) – Grid 4 columns (no blank right)
  ✅ Keep current look you already have (last override)
  ✅ Remove all previous duplicate .nl-rv-* blocks
  ========================================= */

.nl-rv-masonry{
    margin-top: 16px;

    /* ✅ Grid layout: no "right-side big blank" like CSS columns */
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    align-items: start;
}

/* Review card */
.nl-rv{
    width: 100%;
    margin: 0;                 /* ✅ grid uses gap */
    display: block;

    background: #fff;
    border: 1px solid rgba(15,23,42,.08);
    border-radius: 16px;
    padding: 10px 10px 9px;    /* compact */

    box-shadow: 0 8px 20px rgba(15,23,42,.045);
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.nl-rv:hover{
    transform: translateY(-2px);
    box-shadow: 0 16px 40px rgba(15,23,42,.08);
    border-color: rgba(255,62,165,.26);
}

/* header row */
.nl-rv-head{
    display:flex;
    align-items:center;
    gap:8px;
}

/* avatar */
.nl-rv-avatar{
    width: 30px;
    height: 30px;
    border-radius: 10px;
    overflow: hidden;
    flex: 0 0 auto;

    background: linear-gradient(135deg, rgba(255,62,165,.18), rgba(124,58,237,.14));
    border: 1px solid rgba(15,23,42,.08);
    display:grid;
    place-items:center;
}

.nl-rv-avatar img{
    width:100%;
    height:100%;
    object-fit:contain;
    background:#0b0b12;
    display:block;
}

.nl-rv-initial{
    font-weight: 900;
    font-size: 13px;
    color: rgba(15,23,42,.70);
}

/* meta */
.nl-rv-meta{ flex: 1 1 auto; min-width: 0; }

.nl-rv-name{
    font-weight: 700;
    font-size: 12.5px;
    color:#0f172a;
    line-height: 1.1;
}

.nl-rv-sub{
    margin-top: 2px;
    font-size: 11px;
    color: rgba(15,23,42,.55);

    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    opacity: .7;
}

/* right side */
.nl-rv-right{
    flex: 0 0 auto;
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    gap:6px;
}

.nl-rv-stars{
    font-size: 10.5px;
    letter-spacing: .06em;
    color: rgba(255,62,165,.95);
    line-height: 1;
    user-select:none;
}

.nl-rv-badge{
    font-size: 10px;
    font-weight: 750;
    padding: 2px 7px;
    border-radius: 999px;

    background: rgba(124,58,237,.10);
    color: rgba(124,58,237,.95);
    border: 1px solid rgba(124,58,237,.18);
}

/* text */
.nl-rv-text{
    margin-top: 8px;
    font-size: 12.5px;
    line-height: 1.5;
    color: rgba(15,23,42,.74);
}

/* media: fixed width, auto height (keep your current behavior) */
.nl-rv-media{
    display: block;

    /* ✅ Keep your current “compact 4-col” look */
    width: 240px;
    max-width: 100%;
    margin: 8px auto 0;

    border-radius: 12px;
    overflow: hidden;
    border: 1px solid rgba(15,23,42,.08);
    background: rgba(15,23,42,.03);
}

.nl-rv-media img{
    display: block;
    width: 100%;
    height: auto;
    object-fit: contain;  /* ✅ no crop */
}

/* Responsive */
@media (max-width: 1200px){
    .nl-rv-masonry{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 992px){
    .nl-rv-masonry{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .nl-rv-media{ width: 260px; }
}
@media (max-width: 560px){
    .nl-rv-masonry{ grid-template-columns: 1fr; }
    .nl-rv-media{ width: 100%; }
}
/* =========================================
   Popular picks - product tiles (polished)
   Paste at END of landing.css
   ========================================= */

/* Grid: 更均匀、间距更舒服 */
.nl-grid{
    display:grid;
    grid-template-columns:repeat(4, minmax(0, 1fr));
    gap:16px;
    margin-top:14px;
}
@media (max-width: 1200px){
    .nl-grid{ grid-template-columns:repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 992px){
    .nl-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)); gap:14px; }
}
@media (max-width: 560px){
    .nl-grid{ grid-template-columns:1fr; }
}

/* Card: 更轻、更高级 */
.nl-tile{
    display:flex;
    flex-direction:column;
    gap:10px;

    background:#fff;
    border:1px solid rgba(15,23,42,.08);
    border-radius:18px;
    padding:12px;

    box-shadow: 0 10px 26px rgba(15,23,42,.05);
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
    overflow:hidden;
}

.nl-tile:hover{
    transform: translateY(-2px);
    box-shadow: 0 18px 44px rgba(15,23,42,.10);
    border-color: rgba(255,62,165,.22);
}

/* Image: 统一比例 + 轻微“玻璃感” */
.nl-tile-img{
    border-radius:16px;
    overflow:hidden;
    position:relative;

    /* ✅ 固定比例，排版更整齐（你现在每张图尺寸不一） */
    aspect-ratio: 16 / 10;
    background: linear-gradient(135deg, rgba(255,62,165,.10), rgba(124,58,237,.08));
    border:1px solid rgba(15,23,42,.06);
}

.nl-tile-img img{
    width:100%;
    height:100%;
    object-fit:cover;               /* ✅ 统一填充更好看 */
    display:block;
    transform: scale(1);
    transition: transform .35s ease, filter .35s ease;
    filter: saturate(1.05) contrast(1.02);
}

.nl-tile:hover .nl-tile-img img{
    transform: scale(1.04);
    filter: saturate(1.10) contrast(1.05);
}

/* Title: 两行截断，避免卡片高度乱跳 */
.nl-tile-title{
    font-weight: 750;
    color:#0f172a;
    font-size: 13.5px;
    line-height: 1.35;
    letter-spacing: -0.01em;

    display: -webkit-box;
    -webkit-line-clamp: 2;          /* ✅ 最多2行 */
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: calc(1.35em * 2);   /* ✅ 保证每张卡标题区高度一致 */
}

/* Price: 更突出、更像电商 */
.nl-tile-sub{
    margin-top: -2px;
    font-size: 13px;
    font-weight: 800;
    color: rgba(15,23,42,.78);
}

/* 可选：加一个 “Starting at” 的弱化前缀（如果你要） */
.nl-tile-sub .nl-price-prefix{
    font-weight: 650;
    color: rgba(15,23,42,.52);
    margin-right: 6px;
}

/* NO PHOTO placeholder */
.nl-tile-ph{
    height:100%;
    width:100%;
    display:grid;
    place-items:center;
    font-size:11px;
    font-weight:800;
    letter-spacing:.16em;
    color: rgba(15,23,42,.35);
}

/* 更紧凑的 section 标题排版（可选） */
.nl-sec-head{
    align-items: center;
}
/* =========================================
   3-frame "video" strip (fast, no JS)
   ========================================= */

.nl-video{ padding: 8px 0 26px; }

.nl-video-card.nl-frames{
    position: relative;
    border-radius: 22px;
    overflow: hidden;
    border: 1px solid rgba(15,23,42,.08);
    background: #0b0b12;
    box-shadow: 0 18px 60px rgba(15,23,42,.10);
    aspect-ratio: 1400/500;        /* ✅ 可改 16/9 */
}

/* all frames stack */
.nl-frame{
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;

    opacity: 0;
    transform: scale(1.01);
    filter: saturate(1.05) contrast(1.02);
    transition: opacity .35s ease;
}

/* base always visible underneath */
.nl-frame.base{
    opacity: 1;
}

/* animate ON and SMILE on top */
.nl-frame.on{
    animation: nlFrameOn 6s infinite;
}
.nl-frame.smile{
    animation: nlFrameSmile 6s infinite;
}

/* 6s 循环：0~0.2s 快速出现，保持约 5s，最后快速消失 */
@keyframes nlFrameOn{
    0%   { opacity: 0; }
    3%   { opacity: 1; }   /* ✅ 约 0.18s 内出现（6s * 3%） */
    87%  { opacity: 1; }   /* ✅ 保持约 5.0s（6s * 84%≈5.04s） */
    92%  { opacity: 0; }   /* ✅ 快速淡出 */
    100% { opacity: 0; }
}

/* ✅ 不用第三帧就关掉 */
.nl-frame.smile{
    animation: none !important;
    opacity: 0 !important;
}

/* subtle overlay glow for readability */
.nl-video-card.nl-frames::before{
    content:"";
    position:absolute;
    inset:0;
    pointer-events:none;
    background:
            radial-gradient(900px 380px at 18% 20%, rgba(255,62,165,.22), transparent 62%),
            radial-gradient(900px 420px at 70% 30%, rgba(124,58,237,.20), transparent 62%),
            linear-gradient(180deg, rgba(0,0,0,.10), rgba(0,0,0,.28));
}

/* =========================================
   Floating text overlays
   ========================================= */

.nl-video-floats{
    position:absolute;
    inset:0;
    pointer-events:none;
    z-index: 3;
}

.nl-vfloat{
    position:absolute;
    padding: 10px 12px;
    border-radius: 999px;
    font-weight: 800;
    font-size: 13px;
    letter-spacing: .02em;
    color: rgba(255,255,255,.92);

    background: rgba(255,255,255,.10);
    border: 1px solid rgba(255,255,255,.18);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);

    box-shadow: 0 16px 40px rgba(0,0,0,.25);
    text-shadow: 0 0 10px rgba(255,255,255,.18);

    animation: nlFloatY 6s ease-in-out infinite, nlNeonFlicker 3.6s infinite;
}
.nl-vfloat.v1{
    font-size: 25px;      /* 原来 ~13px → 稍大但不夸张 */
    padding: 10px 10px;     /* pill 更饱满 */
    line-height: 1.15;      /* 霓虹字更紧致 */
    font-weight: 400;       /* “Made in USA” 更有力量感 */
    left: 60px;
    top: 40px;
}

.nl-vfloat.v2{
    font-size: 25px;      /* 原来 ~13px → 稍大但不夸张 */
    padding: 10px 10px;     /* pill 更饱满 */
    line-height: 1.15;      /* 霓虹字更紧致 */
    font-weight: 400;       /* “Made in USA” 更有力量感 */
    left: 60px;
    top: 120px;
}
.nl-vfloat.v3{
    font-size: 25px;      /* 原来 ~13px → 稍大但不夸张 */
    padding: 10px 10px;     /* pill 更饱满 */
    line-height: 1.15;      /* 霓虹字更紧致 */
    font-weight: 400;       /* “Made in USA” 更有力量感 */
    left: 60px;
    top: 195px;
}


.nl-vfloat.v4{
    font-size: 25px;      /* 原来 ~13px → 稍大但不夸张 */
    padding: 10px 10px;     /* pill 更饱满 */
    line-height: 1.15;      /* 霓虹字更紧致 */
    font-weight: 400;       /* “Made in USA” 更有力量感 */
    left: 60px;
    top: 270px;
}

/* --- Video headline overlay (bottom) --- */
.nl-video-card{ position:relative; } /* 你已有就不用重复 */

.nl-video-headline{
    color:white;
    position:absolute;
    left:14px;
    right:14px;
    bottom:6px;                 /* 更贴底 */
    z-index:5;
    pointer-events:none;

    padding:8px 10px 8px;        /* 高度压缩 */
    border-radius:12px;

    background: linear-gradient(
            to top,
            rgba(0,0,0,.40),
            rgba(0,0,0,.16) 55%,
            rgba(0,0,0,0)
    );
    backdrop-filter: blur(4px);
}

.nl-vh-kicker{
    font-size:10px;              /* 原来 12px */
    margin-bottom:3px;
    letter-spacing:.06em;
}

.nl-vh-title{
    font-size: clamp(14px, 1.6vw, 20px);  /* 原来 18–28 */
    line-height:1.05;
    margin-bottom:2px;

    text-shadow:
            0 0 2px rgba(255,255,255,.85),
            0 0 10px rgba(120,200,255,.18),
            0 0 18px rgba(255,80,200,.12);
}

.nl-vh-sub{
    font-size:11px;              /* 原来 13 */
    line-height:1.2;
    opacity:.85;
}


/* 让 floats 不和 headline 打架：把 floats 往上挪一点 */
.nl-video-floats{
    position:absolute;
    inset:0;
    z-index:6; /* floats 在 headline 之上也行，你想反过来就改成 4 */
}




@keyframes nlFloatY{
    0%,100%{ transform: translateY(0); }
    50%{ transform: translateY(-10px); }
}

/* subtle neon blink (premium, not flashy) */
@keyframes nlNeonFlicker{
    0%, 100% { opacity: .95; filter: brightness(1); }
    45%      { opacity: .70; filter: brightness(.92); }
    55%      { opacity: 1;   filter: brightness(1.12); }
}

/* =========================================
   Caption
   ========================================= */

.nl-video-caption{
    position:absolute;
    left: 14px;
    right: 14px;
    bottom: 12px;
    z-index: 4;

    padding: 10px 12px;
    border-radius: 16px;

    color: rgba(255,255,255,.88);
    font-weight: 650;
    font-size: 13px;
    letter-spacing: .01em;

    background: rgba(0,0,0,.26);
    border: 1px solid rgba(255,255,255,.14);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

@media (max-width: 560px){
    .nl-video-card.nl-frames{
        aspect-ratio: 4 / 3 !important;   /* 更高：4:3 */
    }
}
@media (max-width: 560px){
    .nl-video{ padding-bottom: 18px; }
    .nl-vfloat{ font-size: 12px; padding: 8px 10px; }
    .nl-vfloat.v4{ display:none; }
    .nl-video-caption{ font-size: 12px; }
}
/* =========================
   Hide floats on mobile
   ========================= */
@media (max-width: 576px){
    .nl-video-floats{
        display: none !important;
    }
}
/* ✅ FORCE hide video floats on mobile/tablet (strong override) */
@media (max-width: 768px){
    #content-wrapper:has(.nl) .nl .nl-video .nl-video-floats,
    #main:has(.nl) .nl .nl-video .nl-video-floats,
    .nl .nl-video .nl-video-floats{
        display: none !important;
        visibility: hidden !important;
        opacity: 0 !important;
    }

    /* double insurance: hide pills too */
    .nl .nl-video .nl-vfloat{
        display: none !important;
    }
}
