/* ============================================================
 * 网址导航模块（版式参考 plnav.com：分类树 + 站点卡片网格 + 榜单）
 * 颜色跟随前台主题变量（--primary 等）
 * ============================================================ */

/* ---------------- 通用 ---------------- */
.nv-wrap{max-width:1280px;margin:0 auto;padding:18px 16px 48px}
.nv-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;padding:0 18px;border:0;border-radius:10px;background:var(--primary);color:#fff;font-size:14px;cursor:pointer;transition:.15s;white-space:nowrap;text-decoration:none}
.nv-btn:hover{filter:brightness(.94);color:#fff}
.nv-btn.ghost{background:#fff;border:1px solid var(--line);color:#5a6270}
.nv-btn.ghost:hover{border-color:var(--primary);color:var(--primary);filter:none}
.nv-btn.ghost.danger:hover{border-color:#e5484d;color:#e5484d}
.nv-btn.sm{height:31px;padding:0 13px;font-size:12.5px;border-radius:8px}
.nv-empty{background:#fff;border:1px dashed var(--line);border-radius:14px;padding:56px 20px;text-align:center;color:#98a1ad}
.nv-empty p{margin:0 0 14px;font-size:14px}

/* ---------------- 顶部搜索区 ---------------- */
.nv-hero{background:linear-gradient(135deg,#fff6ef,#fff 55%);border:1px solid #ffe6d5;border-radius:18px;padding:24px 26px;display:grid;grid-template-columns:1fr auto;gap:22px;align-items:center;margin-bottom:14px}
.nv-hero-sm{padding:18px 22px}
.nv-hero h1{margin:0 0 6px;font-size:26px;color:#2f3439;font-weight:800;letter-spacing:.5px}
.nv-hero-sm h1{font-size:20px}
.nv-hero p{margin:0 0 14px;color:#8a919f;font-size:13.5px}
.nv-search{display:flex;align-items:center;gap:8px;max-width:560px;background:#fff;border:1px solid #ffd0b3;border-radius:12px;padding:0 6px 0 12px;height:46px;box-shadow:0 4px 14px rgba(255,111,6,.08)}
.nv-search:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-shadow)}
.nv-search-ico{font-size:15px;opacity:.6}
.nv-search input{flex:1;border:0;outline:0;height:44px;font-size:14px;background:transparent}
.nv-search button{height:34px;padding:0 20px;border:0;border-radius:9px;background:var(--primary);color:#fff;font-size:14px;cursor:pointer}
.nv-quick{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.nv-quick a{font-size:12.5px;color:#7d858f;background:#fff;border:1px solid var(--line);border-radius:20px;padding:4px 12px;text-decoration:none;transition:.15s}
.nv-quick a:hover{border-color:var(--primary);color:var(--primary)}
.nv-hero-r{display:flex;flex-direction:column;align-items:flex-end;gap:12px}
.nv-stats{display:flex;gap:24px}
.nv-stats .it{text-align:center}
.nv-stats .it b{display:block;font-size:22px;color:var(--primary);line-height:1.2;font-weight:800}
.nv-stats .it span{font-size:12px;color:#98a1ad}

/* ---------------- 公告 ---------------- */
.nv-notice{display:flex;gap:10px;align-items:flex-start;background:#fffaf3;border:1px solid #ffe2c4;border-radius:12px;padding:10px 14px;margin-bottom:14px}
.nv-notice .ico{font-size:15px;line-height:1.4}
.nv-notice p{margin:0;font-size:12.5px;color:#a06a2c;line-height:1.8}

/* ---------------- 三栏骨架 ---------------- */
.nv-main{display:grid;grid-template-columns:216px minmax(0,1fr) 296px;gap:16px;align-items:start}

/* ---------------- 左侧分类树 ---------------- */
.nv-side{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 10px;position:sticky;top:12px}
.nv-side-hd{font-size:13px;font-weight:700;color:#2f3439;padding:2px 8px 10px;border-bottom:1px solid #f2f4f8;margin-bottom:8px}
.nv-cats{max-height:520px;overflow:auto}
.nv-cat{display:flex;align-items:center;gap:7px;padding:8px 9px;border-radius:9px;font-size:13.5px;color:#4d5460;text-decoration:none;transition:.14s}
.nv-cat em{font-style:normal;font-size:15px;width:18px;text-align:center;flex:0 0 auto}
.nv-cat i{margin-left:auto;font-style:normal;font-size:11.5px;color:#b3bac4;background:#f5f6fa;border-radius:8px;padding:0 6px;line-height:16px}
.nv-cat:hover{background:#f7f9ff;color:var(--primary)}
.nv-cat:hover i{background:#fff;color:var(--primary)}
.nv-cat.on{background:var(--primary-light);color:var(--primary);font-weight:600}
.nv-cat.on i{background:#fff;color:var(--primary)}
.nv-cat.all{margin-bottom:6px}
.nv-cat-box{padding-bottom:4px}
.nv-sub{display:none;flex-wrap:wrap;gap:5px;padding:2px 6px 8px 26px}
.nv-cat-box:hover .nv-sub,.nv-cat-box.open .nv-sub{display:flex}
.nv-sub a{font-size:12px;color:#8a919f;background:#f6f7fb;border-radius:6px;padding:2px 8px;text-decoration:none;transition:.14s}
.nv-sub a:hover{background:var(--primary-light);color:var(--primary)}
.nv-sub a.on{background:var(--primary);color:#fff}
.nv-side-submit{display:block;margin-top:10px;padding:12px;border-radius:12px;background:linear-gradient(135deg,#fff3e9,#fff);border:1px dashed #ffcdb4;text-decoration:none}
.nv-side-submit b{display:block;font-size:13px;color:#c4521a}
.nv-side-submit span{font-size:11.5px;color:#98a1ad}

/* ---------------- 主区 ---------------- */
.nv-content{min-width:0}
.nv-sec{margin-bottom:18px}
.nv-sec-hd{display:flex;align-items:center;gap:10px;margin:0 0 10px}
.nv-sec-hd h2{display:flex;align-items:center;gap:7px;margin:0;font-size:16px;color:#2f3439;font-weight:700;flex:0 0 auto}
.nv-sec-hd h2 em{font-style:normal;font-size:17px}
.nv-sec-tip{font-size:12px;color:#b3bac4}
.nv-sec-tabs{display:flex;flex-wrap:wrap;gap:6px;flex:1;min-width:0;overflow:hidden}
.nv-sec-tabs a{font-size:12px;color:#8a919f;background:#f6f7fb;border-radius:6px;padding:2px 9px;text-decoration:none;white-space:nowrap}
.nv-sec-tabs a:hover{background:var(--primary-light);color:var(--primary)}
.nv-more{margin-left:auto;font-size:12.5px;color:#98a1ad;text-decoration:none;white-space:nowrap}
.nv-more:hover{color:var(--primary)}
.nv-sec-rec .nv-grid{background:linear-gradient(135deg,#fffaf6,#fff);border:1px solid #ffeada;border-radius:14px;padding:12px}

.nv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(224px,1fr));gap:10px}
.nv-grid-lg{grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}
/* 首页分组网格固定 3 列：与服务端「凑整行」的补位磁贴逻辑配套，避免最后一行残缺 */
.nv-sec .nv-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
/* 末行补位磁贴：与站点卡片同尺寸，虚线框居中，把最后一行补齐 */
.nv-more-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:1px dashed #d9dee7;border-radius:12px;background:rgba(255,255,255,.55);text-decoration:none;transition:.16s;min-height:64px}
.nv-more-tile b{font-size:13.5px;color:#6a727c;font-weight:600}
.nv-more-tile span{font-size:11.5px;color:#b3bac4}
.nv-more-tile:hover{border-color:var(--primary);background:#fff}
.nv-more-tile:hover b{color:var(--primary)}

/* 站点卡片 */
.nv-card{display:flex;align-items:flex-start;gap:10px;background:#fff;border:1px solid #eef0f5;border-radius:12px;padding:11px 12px;text-decoration:none;transition:.16s}
.nv-card:hover{border-color:#ffd0b3;box-shadow:0 6px 18px rgba(255,111,6,.10);transform:translateY(-2px)}
.nv-ico{flex:0 0 auto;width:38px;height:38px;border-radius:10px;background:#f4f6fa;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid #eef0f5}
.nv-ico img{width:24px;height:24px;object-fit:contain}
.nv-letter{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-style:normal;font-size:16px;font-weight:700;color:#fff;background:hsl(var(--hue,20) 78% 60%)}
.nv-card-body{min-width:0;flex:1}
.nv-card-hd{display:flex;align-items:center;gap:5px}
.nv-card-hd b{font-size:14px;color:#2f3439;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nv-flag{font-style:normal;font-size:10.5px;line-height:15px;padding:0 5px;border-radius:5px;flex:0 0 auto}
.nv-flag.top{background:#ffecec;color:#e5484d}
.nv-flag.rec{background:#fff8e6;color:#b7791f}
.nv-card-desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:3px;font-style:normal;font-size:12.5px;color:#8a919f;line-height:1.55;min-height:calc(1.55em * 2)}
.nv-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}
.nv-tags i{font-style:normal;font-size:11px;color:#6a727c;background:#f5f6fa;border-radius:5px;padding:1px 7px}
.nv-tags i.cat{background:#eef3ff;color:#3f6ad8}

/* 列表页工具条 */
.nv-listbar{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:8px}
.nv-crumb{display:flex;align-items:center;gap:6px;font-size:13px;color:#8a919f;flex:1;min-width:0;flex-wrap:wrap}
.nv-crumb a{color:#5a6270;text-decoration:none}
.nv-crumb a:hover{color:var(--primary)}
.nv-crumb b{color:#2f3439}
.nv-sorts{display:flex;gap:4px;flex:0 0 auto}
.nv-sorts a{font-size:12.5px;color:#6a727c;padding:5px 12px;border-radius:8px;text-decoration:none;background:#f6f7fb}
.nv-sorts a.on{background:var(--primary);color:#fff}
.nv-listbar-meta{font-size:12.5px;color:#98a1ad;margin:0 4px 10px}
.nv-listbar-meta b{color:var(--primary)}
.nv-wrap .pagination{display:flex;justify-content:center;gap:6px;list-style:none;padding:18px 0 4px;margin:0}
.nv-wrap .pagination li a,.nv-wrap .pagination li span{display:inline-block;padding:6px 12px;border:1px solid var(--line);border-radius:8px;font-size:13px;color:#6a727c;text-decoration:none;background:#fff}
.nv-wrap .pagination li.active span{background:var(--primary);border-color:var(--primary);color:#fff}
.nv-wrap .pagination li.disabled span{color:#c0c6cf;background:#fafbfd}

/* ---------------- 右侧榜单 ---------------- */
.nv-aside{display:flex;flex-direction:column;gap:14px;position:sticky;top:12px}
.nv-rank{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.nv-rank h3{margin:0 0 8px;font-size:13.5px;color:#2f3439;font-weight:700;display:flex;align-items:center;gap:6px}
.nv-rank h3 em{font-style:normal}
.nv-rank ol,.nv-rank ul{list-style:none;margin:0;padding:0}
.nv-rank ol li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px dashed #f2f4f8}
.nv-rank ol li:last-child{border-bottom:0}
.nv-rank .no{flex:0 0 auto;width:17px;height:17px;line-height:17px;text-align:center;border-radius:5px;font-size:11px;font-style:normal;background:#f2f4f8;color:#98a1ad}
.nv-rank .no.hot{background:var(--primary);color:#fff}
.nv-rank ol a{flex:1;min-width:0;font-size:13px;color:#4d5460;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nv-rank ol a:hover{color:var(--primary)}
.nv-rank ol span{font-size:11.5px;color:#b3bac4}
.nv-rank ul li{display:flex;align-items:center;gap:9px;padding:6px 0}
.nv-dot{flex:0 0 auto;width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700;color:#fff;background:hsl(var(--hue,20) 78% 60%)}
.nv-rank ul div{min-width:0;flex:1}
.nv-rank ul a{display:block;font-size:13px;color:#4d5460;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nv-rank ul a:hover{color:var(--primary)}
.nv-rank ul em{display:block;font-style:normal;font-size:11.5px;color:#b3bac4}
.nv-aside-cta{background:linear-gradient(135deg,#fff3e9,#fff);border:1px solid #ffe2c4;border-radius:14px;padding:14px}
.nv-aside-cta b{display:block;font-size:13.5px;color:#2f3439}
.nv-aside-cta p{margin:6px 0 12px;font-size:12.5px;color:#98a1ad;line-height:1.7}
.nv-aside-cta .nv-btn{width:100%}

/* ---------------- 提交表单 ---------------- */
.nv-form-wrap{display:grid;grid-template-columns:minmax(0,1fr) 288px;gap:16px;align-items:start}
.nv-form{background:#fff;border:1px solid var(--line);border-radius:14px;padding:6px 20px 18px}
.nv-form-sec{margin:16px 0 10px;padding-top:12px;font-size:14px;font-weight:700;color:#2f3439;border-top:1px solid #f2f4f8}
.nv-form-sec:first-child{border-top:0;padding-top:6px;margin-top:6px}
.nv-field{margin-bottom:14px}
.nv-field > label{display:block;font-size:13px;color:#5a6270;margin-bottom:6px}
.nv-field > label i{color:#e5484d;font-style:normal}
.nv-field input[type=text],.nv-field input[type=password],.nv-field select,.nv-field textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:13.5px;color:#2f3439;background:#fff;outline:0;font-family:inherit}
.nv-field input:focus,.nv-field select:focus,.nv-field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-shadow)}
.nv-field textarea{resize:vertical;line-height:1.7}
.nv-hint{display:block;margin-top:5px;font-size:12px;color:#b3bac4}
.nv-tagchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.nv-tagchips button{font-size:12.5px;color:#6a727c;background:#f5f6fa;border:1px solid #e6e8ee;border-radius:14px;padding:3px 11px;cursor:pointer;transition:.14s;font-family:inherit}
.nv-tagchips button:hover{border-color:var(--primary);color:var(--primary)}
.nv-tagchips button.on{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}
.nv-icon-row{display:flex;align-items:center;gap:10px}
.nv-icon-prev{flex:0 0 auto;width:44px;height:44px;border-radius:11px;background:#f4f6fa;border:1px solid #eef0f5;display:flex;align-items:center;justify-content:center;overflow:hidden}
.nv-icon-prev img{width:26px;height:26px;object-fit:contain}
.nv-icon-row input[type=text]{flex:1}
.nv-modes{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:6px}
.nv-mode{display:block;border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;transition:.15s;background:#fff}
.nv-mode:hover{border-color:#ffd0b3}
.nv-mode.on{border-color:var(--primary);background:#fffaf6;box-shadow:0 0 0 3px var(--primary-shadow)}
.nv-mode b{display:block;font-size:13.5px;color:#2f3439;margin-bottom:4px}
.nv-mode b em{font-style:normal;color:var(--primary);font-weight:800}
.nv-mode span{font-size:12px;color:#98a1ad;line-height:1.6}
.nv-paybox{margin:10px 0 4px}
.nv-paybox-in{background:#fffbf5;border:1px solid #ffe2c4;border-radius:12px;padding:14px}
.nv-paybox-row{display:flex;align-items:center;gap:12px;padding:5px 0;font-size:13px;color:#6a727c}
.nv-paybox-row > span{flex:0 0 78px;color:#98a1ad}
.nv-paybox-row > b{color:var(--primary);font-size:15px}
.nv-paybox-row input{width:180px;border:1px solid #ffd0b3;border-radius:9px;padding:7px 11px;font-size:13.5px;outline:0}
.nv-paybox-tip{margin:8px 0 0;font-size:12px;color:#a06a2c;line-height:1.8}
.nv-paybox-tip a{color:var(--primary)}
.nv-form-foot{display:flex;gap:10px;margin-top:16px}
.nv-form-aside{display:flex;flex-direction:column;gap:14px}
.nv-card-tip{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.nv-card-tip h3{margin:0 0 8px;font-size:13.5px;color:#2f3439}
.nv-card-tip ol{margin:0;padding-left:18px;font-size:12.5px;color:#8a919f;line-height:1.9}
.nv-card-tip p{margin:0;font-size:12.5px;color:#8a919f;line-height:1.9}

/* ---------------- 我的收录 ---------------- */
.nv-mine{display:flex;flex-direction:column;gap:10px}
.nv-mine-item{display:flex;align-items:flex-start;gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.nv-mine-body{flex:1;min-width:0}
.nv-mine-hd{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.nv-mine-hd b{font-size:14.5px;color:#2f3439}
.nv-st{font-style:normal;font-size:11.5px;line-height:17px;padding:0 7px;border-radius:6px}
.nv-st.ok{background:#e9f8ee;color:#1a9c4a}
.nv-st.wait{background:#fff7e6;color:#ad6800}
.nv-st.no{background:#ffecec;color:#e5484d}
.nv-st.paid{background:#eef3ff;color:#3f6ad8}
.nv-st.top{background:#ffecec;color:#e5484d}
.nv-mine-url{display:block;font-style:normal;font-size:12.5px;color:#3f6ad8;margin-top:4px;word-break:break-all}
.nv-mine-desc{margin:6px 0 0;font-size:12.5px;color:#8a919f;line-height:1.7}
.nv-mine-meta{display:flex;flex-wrap:wrap;gap:14px;margin-top:8px;font-size:12px;color:#b3bac4}
.nv-mine-meta .no{color:#e5484d}
.nv-mine-act{display:flex;flex-direction:column;gap:6px;flex:0 0 auto}

/* ---------------- 轻提示 ---------------- */
.nv-toast{position:fixed;left:50%;top:84px;transform:translateX(-50%) translateY(-14px);background:rgba(30,36,48,.92);color:#fff;padding:10px 20px;border-radius:10px;font-size:13.5px;z-index:1100;opacity:0;transition:.22s;pointer-events:none;max-width:80vw}
.nv-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------------- 响应式 ---------------- */@media (max-width:1180px){
    .nv-main{grid-template-columns:200px minmax(0,1fr)}
    .nv-aside{display:none}
}
@media (max-width:900px){
    .nv-hero{grid-template-columns:1fr}
    .nv-hero-r{align-items:flex-start}
    .nv-form-wrap{grid-template-columns:1fr}
    .nv-main{grid-template-columns:1fr}
    .nv-side{position:static}
    .nv-cats{max-height:none;display:flex;flex-wrap:wrap;gap:4px}
    .nv-cat-box{width:auto}
    .nv-sub{padding-left:6px}
    .nv-cat-box:hover .nv-sub,.nv-cat-box.open .nv-sub{display:flex}
    .nv-modes{grid-template-columns:1fr}
}
@media (max-width:640px){
    .nv-wrap{padding:12px 12px 40px}
    .nv-grid,.nv-grid-lg{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
    .nv-sec .nv-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .nv-card{padding:9px 10px}
    .nv-card-desc{-webkit-line-clamp:1}
    .nv-stats{gap:14px}
    .nv-mine-item{flex-wrap:wrap}
    .nv-mine-act{flex-direction:row;width:100%}
}
