/* Thư Viện Võ Lâm Truyền Kỳ — public UI. Scoped under .vl-library so Flatsome/theme styles are untouched.
   Design tokens: bg #F7F8FA · surface #FFF · primary NubaGame red #DD3333 · text #202124 · muted #6B7280 · border #E5E7EB · soft gold #B8860B (verified / rare).
   No gradients, no neon, no dark mode. Desktop container 1160px; mobile: 2-col stats, 1-col relations, 44px touch targets, no horizontal overflow. */
.vl-library{--vl-bg:#F7F8FA;--vl-surface:#FFFFFF;--vl-primary:#DD3333;--vl-primary-dark:#B42323;--vl-primary-soft:#FDECEC;--vl-text:#202124;--vl-muted:#6B7280;--vl-border:#E5E7EB;--vl-gold:#B8860B;--vl-gold-soft:#FBF3DC;--vl-green:#1F7A3E;--vl-green-soft:#E8F5EC;
  --vl-radius:12px;--vl-radius-sm:8px;--vl-shadow:0 1px 2px rgba(16,24,40,.04),0 2px 8px rgba(16,24,40,.06);--vl-focus:0 0 0 3px rgba(221,51,51,.35);
  max-width:1160px;margin:0 auto;padding:16px 16px 48px;font-family:Roboto,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:var(--vl-text);line-height:1.5;font-size:15px;background:transparent}
.vl-library *,.vl-library *::before,.vl-library *::after{box-sizing:border-box}
.vl-library a{color:var(--vl-primary-dark);text-decoration:none}
.vl-library a:hover{color:var(--vl-primary)}
.vl-library a:focus-visible,.vl-library button:focus-visible,.vl-library input:focus-visible,.vl-library select:focus-visible,.vl-library [tabindex]:focus-visible{outline:none;box-shadow:var(--vl-focus);border-radius:6px}
.vl-library img{max-width:100%;height:auto}
.vl-library .screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}
.vl-library h1,.vl-library h2,.vl-library h3{color:var(--vl-text);font-weight:700;line-height:1.25;margin:0}
.vl-library .nbvl-h2{font-size:18px;margin:0 0 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.vl-library .nbvl-h2-center{justify-content:center;margin:28px 0 14px;font-size:20px}
.vl-library .nbvl-h3{font-size:14px;margin:16px 0 8px;color:var(--vl-muted);font-weight:700;letter-spacing:.02em;display:flex;align-items:center;gap:8px}
.vl-library .nbvl-count{display:inline-block;min-width:22px;padding:1px 7px;border-radius:999px;background:var(--vl-bg);border:1px solid var(--vl-border);color:var(--vl-muted);font-size:12px;font-weight:600;text-align:center}
.vl-library .nbvl-muted{color:var(--vl-muted);font-weight:400;font-size:13px}
.vl-library .nbvl-note{color:var(--vl-muted);font-size:13px;margin:10px 0 0}
.vl-library .nbvl-empty-line{color:var(--vl-muted);font-size:14px;margin:0;padding:12px 14px;background:var(--vl-bg);border-radius:var(--vl-radius-sm)}
.vl-library .nbvl-empty{background:var(--vl-surface);border:1px dashed var(--vl-border);border-radius:var(--vl-radius);padding:22px 20px;color:var(--vl-text);text-align:center;margin:8px 0}
.vl-library .nbvl-empty b{font-size:16px}
.vl-library .nbvl-empty p{margin:6px 0 0;color:var(--vl-muted);font-size:14px}
.vl-library .nbvl-empty code{background:var(--vl-bg);padding:1px 6px;border-radius:4px;font-size:13px}
.vl-library .nbvl-foot{margin-top:32px;font-size:12px;color:var(--vl-muted);text-align:center}
.vl-library .nbvl-more-link{margin:12px 0 0;font-size:14px;font-weight:600}
.vl-library mark.nbvl-mark{background:#FFF2CC;color:inherit;padding:0 1px;border-radius:2px}

/* ---------- buttons / chips / tags / badges ---------- */
.vl-library .nbvl-btn{background:var(--vl-primary);color:#fff!important;border:1px solid var(--vl-primary);border-radius:999px;padding:0 20px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;cursor:pointer;line-height:1.2;transition:background .15s,border-color .15s}
.vl-library .nbvl-btn:hover{background:var(--vl-primary-dark);border-color:var(--vl-primary-dark)}
.vl-library .nbvl-btn-outline{background:var(--vl-surface);color:var(--vl-primary-dark)!important;border-color:var(--vl-border)}
.vl-library .nbvl-btn-outline:hover{background:var(--vl-primary-soft);border-color:var(--vl-primary)}
.vl-library .nbvl-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.vl-library .nbvl-tag{display:inline-flex;align-items:center;padding:4px 11px;border-radius:999px;background:var(--vl-bg);border:1px solid var(--vl-border);font-size:13px;color:var(--vl-text);line-height:1.3}
.vl-library .nbvl-tag-type{background:var(--vl-primary-soft);border-color:#F5C2C2;color:var(--vl-primary-dark);font-weight:700}
.vl-library .nbvl-tag-lv{background:var(--vl-gold-soft);border-color:#EAD9A3;color:#7A5A0B;font-weight:700}
.vl-library .nbvl-tag-full{background:var(--vl-green-soft);border-color:#BFE3CB;color:var(--vl-green)}
.vl-library .nbvl-tag-partial{background:var(--vl-gold-soft);border-color:#EAD9A3;color:#7A5A0B}
.vl-library .nbvl-badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;vertical-align:middle;white-space:nowrap}
.vl-library .nbvl-badge-direct{background:var(--vl-green-soft);color:var(--vl-green)}
.vl-library .nbvl-badge-verified{background:var(--vl-gold-soft);color:var(--vl-gold)}
.vl-library .nbvl-chips-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.vl-library .nbvl-chips-center{justify-content:center}
.vl-library .nbvl-chip,.vl-library .nbvl-chip-static{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:6px 14px;border-radius:999px;background:var(--vl-surface);border:1px solid var(--vl-border);color:var(--vl-text);font-size:14px;white-space:nowrap;box-shadow:0 1px 2px rgba(16,24,40,.04);transition:border-color .15s,color .15s,background .15s}
.vl-library a.nbvl-chip:hover{border-color:var(--vl-primary);color:var(--vl-primary-dark);background:var(--vl-primary-soft)}
.vl-library .nbvl-chip small{color:var(--vl-muted);font-size:12px}
.vl-library .nbvl-chip-static{cursor:default}
.vl-library .nbvl-info{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--vl-bg);color:var(--vl-muted);font-size:13px;font-weight:400;cursor:help;position:relative}
.vl-library .nbvl-info::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);background:var(--vl-text);color:#fff;font-size:12px;font-weight:400;line-height:1.35;padding:6px 10px;border-radius:6px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s;z-index:5}
.vl-library .nbvl-info:hover::after,.vl-library .nbvl-info:focus::after{opacity:1}

/* ---------- top bar / breadcrumb (detail & browse pages) ---------- */
.vl-library .nbvl-topbar{display:flex;gap:14px;align-items:center;position:sticky;top:0;z-index:40;background:rgba(247,248,250,.96);backdrop-filter:blur(6px);padding:10px 0;margin:-4px 0 10px;border-bottom:1px solid var(--vl-border)}
.vl-library .nbvl-home{font-weight:800;white-space:nowrap;color:var(--vl-primary-dark);font-size:15px;display:inline-flex;align-items:center;gap:6px;min-height:44px}
.vl-library .nbvl-search-mini{flex:1;margin:0;max-width:none}
.vl-library .nbvl-search-mini .nbvl-search-box{border-width:1px;box-shadow:none;min-height:44px;padding:3px 3px 3px 12px}
.vl-library .nbvl-search-mini input[type=search]{font-size:15px;padding:6px 4px}
.vl-library .nbvl-search-mini .nbvl-btn{min-height:38px;padding:0 16px;font-size:14px}
.vl-library .nbvl-crumb{font-size:13px;color:var(--vl-muted);margin:0 0 12px}
.vl-library .nbvl-crumb ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.vl-library .nbvl-crumb li+li::before{content:"›";margin:0 6px 0 2px;color:#9CA3AF}
.vl-library .nbvl-crumb a{color:var(--vl-muted)}
.vl-library .nbvl-crumb a:hover{color:var(--vl-primary)}
.vl-library .nbvl-crumb [aria-current]{color:var(--vl-text);font-weight:600}

/* ---------- hero / search ---------- */
.vl-library .nbvl-hero{text-align:center;padding:26px 0 8px}
.vl-library .nbvl-hero-compact{padding:8px 0 4px}
.vl-library .nbvl-title{font-size:clamp(26px,4vw,38px);font-weight:900;letter-spacing:-.01em;color:var(--vl-text);margin:0 0 8px}
.vl-library .nbvl-title-small{margin:0 0 10px;font-weight:800;font-size:14px;letter-spacing:.04em;text-transform:uppercase}
.vl-library .nbvl-sub{margin:0 auto 20px;color:var(--vl-muted);font-size:16px;max-width:640px}
.vl-library .nbvl-search{position:relative;max-width:760px;margin:0 auto}
.vl-library .nbvl-search-box{display:flex;align-items:center;background:var(--vl-surface);border:2px solid var(--vl-border);border-radius:999px;box-shadow:var(--vl-shadow);padding:4px 4px 4px 16px;min-height:56px;transition:border-color .15s,box-shadow .15s}
.vl-library .nbvl-search-box:focus-within{border-color:var(--vl-primary);box-shadow:0 4px 18px rgba(221,51,51,.12)}
.vl-library .nbvl-search-box .nbvl-search-icon{margin-right:8px;font-size:18px;color:var(--vl-muted)}
.vl-library .nbvl-search-box input[type=search]{flex:1;border:0;outline:0;background:transparent;font-size:17px;padding:10px 6px;min-width:0;box-shadow:none;margin:0;height:auto;color:var(--vl-text);-webkit-appearance:none;appearance:none}
.vl-library .nbvl-search-box input[type=search]::placeholder{color:#9CA3AF}
.vl-library .nbvl-suggest{position:absolute;left:0;right:0;top:calc(100% + 6px);background:var(--vl-surface);border:1px solid var(--vl-border);border-radius:var(--vl-radius);box-shadow:0 12px 30px rgba(16,24,40,.14);z-index:9999;max-height:60vh;overflow:auto;text-align:left}
.vl-library .nbvl-suggest-group{padding:8px 12px 2px;font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--vl-muted);text-transform:uppercase}
.vl-library .nbvl-suggest a{display:flex;gap:10px;align-items:center;padding:9px 12px;min-height:48px;color:var(--vl-text);border-top:1px solid #F1F2F4}
.vl-library .nbvl-suggest a:hover,.vl-library .nbvl-suggest a.is-active{background:var(--vl-primary-soft)}
.vl-library .nbvl-suggest a b{font-weight:600}
.vl-library .nbvl-suggest a small{display:block;color:var(--vl-muted);font-size:12px}
.vl-library .nbvl-suggest .nbvl-s-icon{width:40px;height:40px;flex:0 0 40px;display:flex;align-items:center;justify-content:center;font-size:18px;border-radius:8px;background:var(--vl-bg)}
.vl-library .nbvl-suggest .nbvl-s-icon.nbvl-s-img{background:#fff}
.vl-library .nbvl-s-img img{width:40px;height:40px;object-fit:contain;display:block}
.vl-library .nbvl-suggest .nbvl-s-all{display:block;text-align:center;color:var(--vl-primary);font-weight:700;justify-content:center}
.vl-library .nbvl-popular{max-width:760px;margin:14px auto 0;text-align:left}
.vl-library .nbvl-popular-title{display:block;font-size:12px;font-weight:700;letter-spacing:.06em;color:var(--vl-muted);text-transform:uppercase;margin-bottom:6px}
.vl-library .nbvl-chips{display:flex;flex-wrap:wrap;gap:8px}

/* ---------- explore (home) ---------- */
.vl-library .nbvl-catgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.vl-library .nbvl-cat{display:flex;align-items:center;gap:12px;padding:14px 14px;background:var(--vl-surface);border:1px solid var(--vl-border);border-radius:var(--vl-radius);box-shadow:var(--vl-shadow);transition:transform .12s,border-color .12s;color:var(--vl-text);min-height:76px}
.vl-library .nbvl-cat:hover{transform:translateY(-2px);border-color:var(--vl-primary)}
.vl-library .nbvl-cat-icon{font-size:26px;line-height:1;width:44px;height:44px;border-radius:10px;background:var(--vl-bg);display:flex;align-items:center;justify-content:center;flex:0 0 44px}
.vl-library .nbvl-cat-body{display:flex;flex-direction:column;min-width:0;flex:1}
.vl-library .nbvl-cat b{font-size:15px}
.vl-library .nbvl-cat small{color:var(--vl-muted);font-size:12px;line-height:1.3}
.vl-library .nbvl-cat-count{font-size:13px;font-weight:700;color:var(--vl-primary-dark);background:var(--vl-primary-soft);padding:3px 9px;border-radius:999px;white-space:nowrap}
.vl-library .nbvl-quick{margin-top:6px}

/* ---------- result / list cards ---------- */
.vl-library .nbvl-results-title{font-size:20px;margin:14px 0 6px}
.vl-library .nbvl-results-title .nbvl-more{font-size:13px;font-weight:600}
.vl-library .nbvl-h3 .nbvl-more{margin-left:auto;font-size:13px;letter-spacing:0;font-weight:600;color:var(--vl-primary-dark)}
.vl-library .nbvl-group{margin-top:14px}
.vl-library .nbvl-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.vl-library .nbvl-cards-sm{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
.vl-library .nbvl-card{display:flex;gap:12px;align-items:center;padding:10px 12px;min-height:64px;background:var(--vl-surface);border:1px solid var(--vl-border);border-radius:10px;color:var(--vl-text);min-width:0;transition:border-color .15s,box-shadow .15s}
.vl-library .nbvl-card:hover{border-color:var(--vl-primary);box-shadow:var(--vl-shadow)}
.vl-library .nbvl-card.is-untranslated .nbvl-card-body b{color:var(--vl-muted);font-weight:500;font-style:italic}
.vl-library .nbvl-card-icon{width:48px;height:48px;border-radius:10px;background:var(--vl-bg);display:flex;align-items:center;justify-content:center;font-size:22px;flex:0 0 48px;overflow:hidden}
.vl-library .nbvl-card-img{background:#fff;border:1px solid var(--vl-border)}
.vl-library .nbvl-card-img img{width:48px;height:48px;object-fit:contain;display:block}
.vl-library .nbvl-card-body{min-width:0;display:flex;flex-direction:column;flex:1}
.vl-library .nbvl-card-body b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vl-library .nbvl-card-body small{color:var(--vl-muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vl-library .nbvl-card-arrow{color:#C4C8CF;font-size:16px;flex:0 0 auto}
.vl-library .nbvl-card:hover .nbvl-card-arrow{color:var(--vl-primary)}
.vl-library .nbvl-cards-guide{grid-template-columns:1fr}
.vl-library .nbvl-cards-guide .nbvl-card-body b{white-space:normal}
.vl-library .nbvl-excerpt{display:block;color:var(--vl-muted);font-size:13px;margin:2px 0;white-space:normal}
.vl-library .nbvl-pixel{image-rendering:pixelated;image-rendering:crisp-edges}

/* ---------- detail page ---------- */
.vl-library .nbvl-detail{background:var(--vl-surface);border:1px solid var(--vl-border);border-radius:var(--vl-radius);box-shadow:var(--vl-shadow);padding:22px 26px}
.vl-library .nbvl-dhead{display:flex;gap:24px;align-items:flex-start;padding-bottom:18px;border-bottom:1px solid var(--vl-border)}
.vl-library .nbvl-dhead-body{min-width:0;flex:1}
.vl-library .nbvl-hero-img{flex:0 0 180px;width:180px;height:180px;border-radius:14px;background:var(--vl-bg);border:1px solid var(--vl-border);display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}
.vl-library .nbvl-hero-icon{flex-basis:120px;width:120px;height:120px}
.vl-library .nbvl-hero-map{flex-basis:320px;width:320px;height:200px}
.vl-library .nbvl-dimg-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;margin:0;width:100%;height:100%}
.vl-library .nbvl-dimg{width:160px;height:160px;object-fit:contain;display:block;background:transparent}
.vl-library .nbvl-dimg-icon{width:72px;height:72px}
.vl-library .nbvl-dimg-map{width:320px;height:200px;object-fit:cover;object-position:center;border-radius:12px}
.vl-library .nbvl-orig{display:block;line-height:0}
.vl-library .nbvl-ph{display:flex;align-items:center;justify-content:center;font-size:44px;color:#9CA3AF;background:transparent}
.vl-library .nbvl-ph-quest{font-size:40px}
.vl-library .nbvl-imgsrc{position:absolute;left:0;right:0;bottom:0;font-size:11px;color:var(--vl-muted);text-align:center;background:rgba(255,255,255,.85);padding:2px 4px;line-height:1.3}
.vl-library .nbvl-dimg-empty .nbvl-imgsrc{background:transparent}
.vl-library .nbvl-dname{font-size:clamp(24px,3vw,32px);font-weight:900;letter-spacing:-.01em;margin:0;color:var(--vl-text);line-height:1.15;word-wrap:break-word}
.vl-library .nbvl-lead{margin:12px 0 0;color:var(--vl-text);font-size:15px}
.vl-library .nbvl-lead-actions{margin:12px 0 0}
.vl-library .nbvl-facts{margin:12px 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,max-content));gap:6px 24px}
.vl-library .nbvl-facts div{display:flex;gap:8px;align-items:baseline}
.vl-library .nbvl-facts dt{color:var(--vl-muted);font-size:13px;margin:0}
.vl-library .nbvl-facts dd{margin:0;font-weight:600}
.vl-library .nbvl-jump{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:14px;font-size:13px;font-weight:600}
.vl-library .nbvl-jump a{color:var(--vl-muted);padding:6px 0;min-height:32px;display:inline-flex;align-items:center;border-bottom:2px solid transparent}
.vl-library .nbvl-jump a:hover{color:var(--vl-primary-dark);border-bottom-color:var(--vl-primary)}
.vl-library .nbvl-sec{padding:20px 0;border-bottom:1px solid var(--vl-border);scroll-margin-top:72px}
.vl-library .nbvl-sec:last-of-type{border-bottom:0}
.vl-library .nbvl-sec-related{background:var(--vl-bg);margin:0 -26px -22px;padding:20px 26px 24px;border-radius:0 0 var(--vl-radius) var(--vl-radius)}
.vl-library .nbvl-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
.vl-library .nbvl-stat{background:var(--vl-bg);border-radius:var(--vl-radius-sm);padding:10px 12px;min-height:60px}
.vl-library .nbvl-stat small{display:block;color:var(--vl-muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.vl-library .nbvl-stat b{font-size:17px;font-weight:700}
.vl-library .nbvl-stats-resist .nbvl-stat{min-height:52px;padding:8px 12px}
.vl-library .nbvl-list{margin:0;padding-left:20px}
.vl-library .nbvl-list li{margin:4px 0}
.vl-library .nbvl-loc{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px}
.vl-library .nbvl-loc-card{display:flex;gap:10px;align-items:flex-start;background:var(--vl-bg);border-radius:var(--vl-radius-sm);padding:10px 12px;min-height:52px}
.vl-library .nbvl-loc-card.is-verified{background:var(--vl-gold-soft)}
.vl-library .nbvl-pin{font-size:16px;line-height:1.4}
.vl-library .nbvl-loc-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.vl-library .nbvl-loc-map{font-weight:700;font-size:15px}
.vl-library .nbvl-xy{display:flex;flex-wrap:wrap;gap:4px 10px;font-family:ui-monospace,Consolas,monospace;font-size:13px;color:var(--vl-primary-dark)}
.vl-library .nbvl-dialog{margin:0;padding:0;list-style:none}
.vl-library .nbvl-dialog li{padding:8px 12px;border-left:3px solid var(--vl-gold);background:var(--vl-bg);margin:6px 0;border-radius:0 8px 8px 0;font-style:italic;color:#374151}
.vl-library .nbvl-steps{margin:0;padding-left:22px}
.vl-library .nbvl-steps li{margin:6px 0;padding-left:4px}
.vl-library .nbvl-step-map{color:var(--vl-muted)}
/* quest relation cards */
.vl-library .nbvl-qgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.vl-library .nbvl-qcard{border:1px solid var(--vl-border);border-radius:10px;padding:12px 14px;background:var(--vl-surface);display:flex;flex-direction:column;gap:8px;transition:border-color .15s,box-shadow .15s}
.vl-library .nbvl-qcard:hover{border-color:var(--vl-primary);box-shadow:var(--vl-shadow)}
.vl-library .nbvl-qcard-name{font-size:15px;font-weight:700;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.vl-library .nbvl-qcard-name a{color:var(--vl-text)}
.vl-library .nbvl-qcard-name a:hover{color:var(--vl-primary)}
.vl-library .nbvl-qcard-meta{margin:0;display:grid;grid-template-columns:1fr;gap:3px;font-size:13px}
.vl-library .nbvl-qcard-meta div{display:flex;gap:8px}
.vl-library .nbvl-qcard-meta dt{color:var(--vl-muted);min-width:64px;margin:0;flex:0 0 auto}
.vl-library .nbvl-qcard-meta dd{margin:0;min-width:0}
.vl-library .nbvl-qcard-link{margin-top:auto;font-size:13px;font-weight:700;display:inline-flex;align-items:center;min-height:32px}
.vl-library .nbvl-qcard-count{color:var(--vl-muted);font-size:12px}
/* guides */
.vl-library .nbvl-guides{display:grid;gap:8px}
.vl-library .nbvl-guide{display:flex;gap:12px;align-items:center;padding:12px 14px;min-height:56px;border:1px solid var(--vl-border);border-left:4px solid var(--vl-gold);border-radius:10px;background:#FFFDF7;color:var(--vl-text)}
.vl-library .nbvl-guide:hover{border-color:var(--vl-gold);box-shadow:var(--vl-shadow)}
.vl-library .nbvl-guide-icon{font-size:20px}
.vl-library .nbvl-guide-body{display:flex;flex-direction:column;min-width:0;flex:1}
.vl-library .nbvl-guide-body b{font-weight:700;font-size:15px}
.vl-library .nbvl-guide-body small{color:var(--vl-muted);font-size:13px;margin-top:2px}
.vl-library .nbvl-guide-arrow{color:#C4C8CF}

/* ---------- browse ---------- */
.vl-library .nbvl-browse-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin-bottom:12px}
.vl-library .nbvl-browse-head .nbvl-dname{font-size:clamp(22px,3vw,28px)}
.vl-library .nbvl-browse-filterlabel{font-size:.6em;font-weight:600;color:var(--vl-primary-dark);background:var(--vl-primary-soft);border-radius:999px;padding:4px 12px;vertical-align:middle}
.vl-library .nbvl-browse-count{margin:0;color:var(--vl-muted);font-size:14px}
.vl-library .nbvl-filters{background:var(--vl-bg);border-radius:var(--vl-radius);padding:12px 14px;margin-bottom:16px}
.vl-library .nbvl-filter-row{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.vl-library .nbvl-filter{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--vl-muted);font-weight:600;min-width:150px}
.vl-library .nbvl-filter-q{flex:1 1 220px}
.vl-library .nbvl-filter input[type=search],.vl-library .nbvl-filter select{min-height:44px;padding:8px 12px;border:1px solid var(--vl-border);border-radius:var(--vl-radius-sm);font-size:15px;background:var(--vl-surface);color:var(--vl-text);width:100%;margin:0;box-shadow:none}
.vl-library .nbvl-browse-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.vl-library .nbvl-pager{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;align-items:center;margin-top:22px}
.vl-library .nbvl-pager-btn,.vl-library .nbvl-pager-num{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 12px;border:1px solid var(--vl-border);border-radius:var(--vl-radius-sm);background:var(--vl-surface);color:var(--vl-text);font-weight:600}
.vl-library a.nbvl-pager-num:hover,.vl-library a.nbvl-pager-btn:hover{border-color:var(--vl-primary);color:var(--vl-primary-dark)}
.vl-library .nbvl-pager-num.is-current{background:var(--vl-primary);border-color:var(--vl-primary);color:#fff}
.vl-library .nbvl-pager-dots{color:var(--vl-muted);padding:0 4px}

/* ---------- route ---------- */
.vl-library .nbvl-routeform{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;margin:14px 0}
.vl-library .nbvl-routeform label{display:flex;flex-direction:column;font-size:12px;color:var(--vl-muted);gap:4px;font-weight:600}
.vl-library .nbvl-routeform select{min-height:44px;padding:9px 10px;border:1px solid var(--vl-border);border-radius:var(--vl-radius-sm);font-size:15px;background:var(--vl-surface);margin:0}
.vl-library .nbvl-route{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;align-items:flex-start}
.vl-library .nbvl-route-node a{display:inline-flex;align-items:center;min-height:44px;padding:8px 18px;background:var(--vl-primary-soft);border:1px solid #F5C2C2;border-radius:10px;font-weight:700;color:var(--vl-primary-dark)}
.vl-library .nbvl-route-via{padding:6px 0 6px 22px;color:var(--vl-muted);font-size:13px;position:relative}
.vl-library .nbvl-route-via::before{content:"↓";position:absolute;left:4px;color:var(--vl-gold);font-weight:900}

/* ---------- article reverse block (inside posts, outside .vl-library) ---------- */
.nbvl-libbox{border:1px solid #E5E7EB;border-left:4px solid #DD3333;border-radius:10px;padding:14px 16px;margin:24px 0;background:#F7F8FA;font-size:15px}
.nbvl-libbox .nbvl-libbox-title{margin:0 0 8px;font-size:16px;font-weight:700;color:#B42323}
.nbvl-libbox ul{margin:0 0 10px 18px;padding:0}
.nbvl-libbox li{margin:3px 0}
.nbvl-libbox .nbvl-btn{display:inline-block;background:#DD3333;color:#fff!important;border-radius:999px;padding:9px 16px;font-weight:700;font-size:13px}

/* ---------- admin debug layer (only rendered in debug mode) ---------- */
.vl-library .nbvl-adminbox{margin-top:20px;border:1px dashed #D1A24A;border-radius:10px;background:#FFF9EC;font-size:12px;color:#5B4300}
.vl-library .nbvl-adminbox summary{cursor:pointer;padding:10px 14px;font-weight:700;font-size:13px}
.vl-library .nbvl-adminbox summary small{font-weight:400;color:#8A6D1E}
.vl-library .nbvl-adminbox dl{margin:0;padding:0 14px 12px;display:grid;grid-template-columns:max-content 1fr;gap:4px 14px}
.vl-library .nbvl-adminbox dt{font-weight:700;margin:0}
.vl-library .nbvl-adminbox dd{margin:0;word-break:break-word}
.vl-library .nbvl-adminbox pre{margin:0;white-space:pre-wrap;font-size:11px;max-height:220px;overflow:auto;background:#fff;border:1px solid #EAD9A3;border-radius:6px;padding:6px 8px}
.vl-library .nbvl-report-btn{font-size:12px;padding:4px 10px;cursor:pointer;border:1px solid #D1A24A;background:#fff;border-radius:6px}

/* ---------- motion ---------- */
@media (prefers-reduced-motion:reduce){.vl-library *,.vl-library *::before,.vl-library *::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

/* ---------- tablet ---------- */
@media (max-width:1024px){
  .vl-library .nbvl-catgrid{grid-template-columns:repeat(2,1fr)}
}
/* ---------- mobile ---------- */
@media (max-width:760px){
  .vl-library{padding:10px 12px 36px;font-size:15px}
  .vl-library .nbvl-detail{padding:16px 14px}
  .vl-library .nbvl-topbar{flex-direction:column;align-items:stretch;gap:6px;position:static;padding:6px 0 10px}
  .vl-library .nbvl-home{justify-content:center}
  .vl-library .nbvl-search-box{padding-left:12px;min-height:52px}
  .vl-library .nbvl-search-box input[type=search]{font-size:16px}
  .vl-library .nbvl-catgrid{grid-template-columns:1fr 1fr;gap:8px}
  .vl-library .nbvl-cat{flex-direction:column;text-align:center;gap:6px;padding:14px 8px}
  .vl-library .nbvl-cat-body{align-items:center}
  .vl-library .nbvl-cards,.vl-library .nbvl-cards-sm,.vl-library .nbvl-browse-grid,.vl-library .nbvl-qgrid,.vl-library .nbvl-loc{grid-template-columns:1fr}
  .vl-library .nbvl-stats{grid-template-columns:repeat(2,1fr)}
  .vl-library .nbvl-dhead{flex-direction:column;align-items:center;text-align:center;gap:14px}
  .vl-library .nbvl-hero-img{flex-basis:auto}
  .vl-library .nbvl-hero-map{width:100%;max-width:320px;height:auto;aspect-ratio:16/10}
  .vl-library .nbvl-dimg-map{width:100%;height:100%}
  .vl-library .nbvl-tags,.vl-library .nbvl-jump,.vl-library .nbvl-facts{justify-content:center}
  .vl-library .nbvl-facts{grid-template-columns:1fr;text-align:left}
  .vl-library .nbvl-sec-related{margin:0 -14px -16px;padding:18px 14px 20px}
  .vl-library .nbvl-routeform{grid-template-columns:1fr}
  .vl-library .nbvl-chips{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
  .vl-library .nbvl-chip{font-size:13px;padding:6px 12px}
  .vl-library .nbvl-filter{min-width:calc(50% - 5px);flex:1 1 calc(50% - 5px)}
  .vl-library .nbvl-filter-q{flex-basis:100%;min-width:100%}
  .vl-library .nbvl-filters .nbvl-btn{flex:1 1 auto}
  .vl-library .nbvl-card-icon{width:44px;height:44px;flex-basis:44px}
  .vl-library .nbvl-card-img img{width:44px;height:44px}
  .vl-library .nbvl-info::after{white-space:normal;width:220px}
  .vl-library .nbvl-adminbox dl{grid-template-columns:1fr}
}

/* P1 quest page: collapsed dialogue, area tag, map cards */
.vl-library .nbvl-dialog-acc{border:1px solid var(--vl-border);border-radius:var(--vl-radius-sm);background:var(--vl-surface)}
.vl-library .nbvl-dialog-acc>summary{cursor:pointer;padding:12px 14px;font-weight:600;list-style:none;display:flex;align-items:center;gap:8px;min-height:44px}
.vl-library .nbvl-dialog-acc>summary::-webkit-details-marker{display:none}
.vl-library .nbvl-dialog-acc>summary::before{content:"▸";color:var(--vl-muted);transition:transform .15s}
.vl-library .nbvl-dialog-acc[open]>summary::before{transform:rotate(90deg)}
.vl-library .nbvl-dialog-acc>.nbvl-dialog{padding:0 14px 12px}
.vl-library a.nbvl-tag-area{background:var(--vl-bg);border:1px solid var(--vl-border);color:var(--vl-text);text-decoration:none}
.vl-library a.nbvl-tag-area:hover{border-color:var(--vl-primary);color:var(--vl-primary)}
.vl-library .nbvl-card-icon-map{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:10px;background:var(--vl-bg);font-size:20px;flex:0 0 44px}

/* ---------- quick facts (editorial, HIGH only) + guide card (main CTA) ---------- */
.vl-library .nbvl-quickfacts{margin-top:12px;padding:12px 14px;background:var(--vl-gold-soft);border:1px solid #EAD9A3;border-radius:var(--vl-radius-sm);grid-template-columns:repeat(auto-fit,minmax(180px,max-content));gap:6px 22px}
.vl-library .nbvl-quickfacts dt{min-width:0}
.vl-library .nbvl-quickfacts dd a{font-weight:700}
.vl-library .nbvl-sec-guide .nbvl-h2{margin-bottom:10px}
.vl-library .nbvl-guidecard{display:flex;gap:16px;align-items:stretch;border:1px solid #EAD9A3;border-left:5px solid var(--vl-gold);border-radius:var(--vl-radius);background:#FFFDF7;padding:14px 16px;color:var(--vl-text);box-shadow:var(--vl-shadow);transition:border-color .15s,box-shadow .15s}
.vl-library .nbvl-guidecard:hover{border-color:var(--vl-gold);box-shadow:0 4px 16px rgba(16,24,40,.10);color:var(--vl-text)}
.vl-library .nbvl-guidecard-img{flex:0 0 168px;width:168px;border-radius:var(--vl-radius-sm);overflow:hidden;background:var(--vl-bg);display:flex;align-items:center;justify-content:center;min-height:110px}
.vl-library .nbvl-guidecard-img img{width:100%;height:100%;object-fit:cover;display:block}
.vl-library .nbvl-guidecard-ph{font-size:40px}
.vl-library .nbvl-guidecard-body{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.vl-library .nbvl-guidecard-title{font-size:17px;font-weight:700;line-height:1.3;color:var(--vl-text)}
.vl-library .nbvl-guidecard-meta{color:var(--vl-primary-dark);font-weight:700;font-size:13px}
.vl-library .nbvl-guidecard-blurb{color:var(--vl-muted);font-size:14px;line-height:1.5}
.vl-library .nbvl-guidecard-cta{margin-top:auto;padding-top:6px;color:var(--vl-primary);font-weight:700;font-size:14px}
.vl-library .nbvl-guides-more{margin-top:10px}
.vl-library .nbvl-sparse{margin-top:16px}
@media (max-width:640px){
  .vl-library .nbvl-guidecard{flex-direction:column;gap:10px}
  .vl-library .nbvl-guidecard-img{width:100%;flex-basis:auto;max-height:160px}
  .vl-library .nbvl-quickfacts{grid-template-columns:1fr}
  .vl-library .nbvl-lead-actions{display:flex;flex-direction:column;gap:8px}
}
/* article-side "Tra cứu trong Thư viện" box (inside posts, outside .vl-library) */
.nbvl-libbox-hub .nbvl-libbox-title{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:#6B7280}
.nbvl-libbox-hub .nbvl-libbox-main{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:6px 0 10px}
.nbvl-libbox-hub .nbvl-libbox-main b{font-size:17px;color:#202124}
.nbvl-libbox-hub .nbvl-libbox-main small{display:block;color:#6B7280;font-size:13px;font-weight:400}
.nbvl-libbox-hub .nbvl-libbox-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.nbvl-libbox-hub .nbvl-libbox-chips li{margin:0}
.nbvl-libbox-hub .nbvl-libbox-chips a{display:inline-flex;align-items:center;gap:4px;padding:5px 11px;border:1px solid #E5E7EB;border-radius:999px;background:#fff;font-size:13px;color:#B42323;text-decoration:none;font-weight:600}
.nbvl-libbox-hub .nbvl-libbox-chips a:hover{border-color:#DD3333}
.nbvl-libbox-hub .nbvl-libbox-chips .nbvl-libbox-sep{color:#6B7280;font-size:13px;align-self:center;font-weight:600}

/* ---------- VLTK rework: 10-card home grid, tables (mobile: horizontal scroll), faction element badge, unresolved badges ---------- */
.vl-library .nbvl-catgrid-10{grid-template-columns:repeat(4,1fr)}
.vl-library .nbvl-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 6px;border:1px solid var(--vl-border);border-radius:var(--vl-radius-sm);background:var(--vl-surface)}
.vl-library table.nbvl-table{width:100%;min-width:520px;border-collapse:collapse;font-size:14px;margin:0}
.vl-library .nbvl-table th,.vl-library .nbvl-table td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--vl-border);vertical-align:middle;white-space:nowrap}
.vl-library .nbvl-table th{background:var(--vl-bg);font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--vl-muted);font-weight:700;position:sticky;top:0}
.vl-library .nbvl-table tbody tr:last-child td{border-bottom:0}
.vl-library .nbvl-table tbody tr:hover td{background:#FCFCFD}
.vl-library .nbvl-table td:first-child{white-space:normal;min-width:180px}
.vl-library .nbvl-table-params{min-width:420px}
.vl-library .nbvl-table-levels td,.vl-library .nbvl-table-levels th{text-align:center}
.vl-library .nbvl-table-levels td:first-child,.vl-library .nbvl-table-levels th:first-child{text-align:left}
.vl-library .nbvl-th-req,.vl-library .nbvl-td-req{color:var(--vl-muted)}
.vl-library .nbvl-td-lv{font-weight:800;color:var(--vl-primary-dark);vertical-align:top;background:var(--vl-bg)}
.vl-library .nbvl-mono{font-family:ui-monospace,Consolas,monospace;font-size:13px}
.vl-library .nbvl-inline-card{display:inline-flex;align-items:center;gap:8px;color:var(--vl-text)}
.vl-library .nbvl-inline-card .nbvl-card-icon{width:32px;height:32px;flex-basis:32px;font-size:16px}
.vl-library .nbvl-inline-card .nbvl-card-img img{width:32px;height:32px}
.vl-library .nbvl-inline-card:hover b{color:var(--vl-primary)}
.vl-library .nbvl-badge-unresolved{background:#F3F4F6;color:#6B7280;border:1px dashed #C4C8CF}
.vl-library .nbvl-badge-thin{background:#F3F4F6;color:#6B7280}
.vl-library .nbvl-card-static{cursor:default;border-style:dashed}
.vl-library .nbvl-card-static:hover{border-color:var(--vl-border);box-shadow:none}
.vl-library .nbvl-tag-series{background:#EEF6FF;border-color:#C7DDF7;color:#1D4ED8}
.vl-library .nbvl-hero-faction{display:flex;align-items:center;justify-content:center;font-weight:900;font-size:40px;color:#fff;background:var(--vl-muted)}
.vl-library .nbvl-hero-faction .nbvl-elem-badge{letter-spacing:.02em}
.vl-library .nbvl-elem-kim{background:linear-gradient(135deg,#B08D2A,#E3C56B)}
.vl-library .nbvl-elem-moc{background:linear-gradient(135deg,#2F7D3A,#7BC47F)}
.vl-library .nbvl-elem-thuy{background:linear-gradient(135deg,#1F5FA6,#6FB1E8)}
.vl-library .nbvl-elem-hoa{background:linear-gradient(135deg,#B42323,#F08A5D)}
.vl-library .nbvl-elem-tho{background:linear-gradient(135deg,#7A5A0B,#C9A25C)}
.vl-library .nbvl-elem-none{background:#9CA3AF}
.vl-library .nbvl-ph-shop{font-size:40px}
.vl-library .nbvl-overlay-note{margin-top:10px;font-style:italic}
.vl-library .nbvl-coords-acc{margin-top:12px}
.vl-library .nbvl-coords-acc .nbvl-table-wrap{margin:0 14px 12px}
.vl-library .nbvl-coords-acc .nbvl-note{margin:0 14px 12px}
.vl-library .nbvl-rewards li{margin:4px 0}
.vl-library .nbvl-stat-dur small{color:#7A5A0B}
.vl-library .nbvl-subnav{display:flex;gap:6px;flex-wrap:wrap}
@media (max-width:1024px){.vl-library .nbvl-catgrid-10{grid-template-columns:repeat(3,1fr)}}
@media (max-width:760px){
  .vl-library .nbvl-catgrid-10{grid-template-columns:1fr 1fr}
  .vl-library table.nbvl-table{min-width:480px;font-size:13px}
  .vl-library .nbvl-table th,.vl-library .nbvl-table td{padding:7px 9px}
  .vl-library .nbvl-hero-faction{width:120px;height:120px}
}
/* step 10-13: map classification badge, variant note, neutral dataset stats on /ban-do/ */
.vl-library .nbvl-tag-class{background:#EEF6FF;border-color:#C7DDF7;color:#1D4ED8;font-weight:600}
.vl-library .nbvl-tag-class-variant{background:#F3F4F6;border-color:#C4C8CF;color:#6B7280}
.vl-library .nbvl-variant-note{margin:8px 0 0;font-size:14px;color:var(--vl-muted)}
.vl-library .nbvl-browse-stats{margin:6px 0 0;color:var(--vl-muted);font-size:14px;line-height:1.6}
.vl-library .nbvl-browse-stats b{color:var(--vl-text);font-weight:600}

/* ---------------------------------------------------------------- step 12: interactive rendered map (templates/map.php + assets/js/vl-map.js) --------------------- */
.vl-library .nbvl-imap{--mk-npc:#1D4ED8;--mk-quai:#B45309;--mk-boss:#DD3333;--mk-cong:#1F7A3E;--mk-wp:#0F766E;--mk-nv:#B8860B;background:var(--vl-surface);border:1px solid var(--vl-border);border-radius:var(--vl-radius);box-shadow:var(--vl-shadow);padding:12px;max-width:100%;overflow:hidden}
.vl-library .nbvl-imap-bar{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;justify-content:space-between;margin-bottom:10px}
.vl-library .nbvl-imap-filters{display:flex;flex-wrap:wrap;gap:6px}
.vl-library .nbvl-imap-actions{display:flex;flex-wrap:wrap;gap:6px}
.vl-library .nbvl-imap-actions .nbvl-btn{min-height:38px;padding:0 14px;font-size:13px;gap:6px}
.vl-library .nbvl-fchip{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:4px 12px 4px 10px;border-radius:999px;background:var(--vl-bg);border:1px solid var(--vl-border);color:var(--vl-muted);font:inherit;font-size:13px;font-weight:600;cursor:pointer;line-height:1.2;transition:border-color .15s,color .15s,background .15s}
.vl-library .nbvl-fchip .nbvl-mk{position:static;transform:none;opacity:.35}
.vl-library .nbvl-fchip.is-on{background:var(--vl-surface);color:var(--vl-text);border-color:#C4C8CF}
.vl-library .nbvl-fchip.is-on .nbvl-mk{opacity:1}
.vl-library .nbvl-fchip:hover:not(:disabled){border-color:var(--vl-primary);color:var(--vl-primary-dark)}
.vl-library .nbvl-fchip:disabled{opacity:.5;cursor:not-allowed}
.vl-library .nbvl-fchip .nbvl-count{min-width:auto;padding:0 6px;font-size:11px}
.vl-library .nbvl-imap-focus{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;padding:8px 12px;border-radius:var(--vl-radius-sm);background:var(--vl-gold-soft);color:var(--vl-text);font-size:13px}
.vl-library .nbvl-imap-focus[hidden]{display:none}
.vl-library .nbvl-imap-unfocus{background:var(--vl-surface);border:1px solid var(--vl-border);border-radius:999px;padding:4px 12px;font:inherit;font-size:13px;font-weight:600;color:var(--vl-primary-dark);cursor:pointer;min-height:32px}
.vl-library .nbvl-imap-view{position:relative;overflow:auto;-webkit-overflow-scrolling:touch;max-height:78vh;border:1px solid var(--vl-border);border-radius:var(--vl-radius-sm);background-color:#15130f;overscroll-behavior:contain}
.vl-library .nbvl-imap-stage{position:relative;width:100%;max-width:100%;margin:0 auto;line-height:0}
.vl-library .nbvl-imap.is-zoomed .nbvl-imap-stage{max-width:none}
.vl-library .nbvl-imap-img{display:block;width:100%;height:auto;max-width:none;user-select:none;-webkit-user-drag:none}
.vl-library .nbvl-imap-layer{position:absolute;inset:0;line-height:1.2}
/* markers: fixed pixel size, percentage position (centre) — identical in the JS layer, the entity mini map and the legend */
.vl-library .nbvl-mk{position:absolute;display:inline-flex;align-items:center;justify-content:center;width:12px;height:12px;border-radius:50%;background:var(--mk-npc,#1D4ED8);border:2px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.45),0 1px 3px rgba(0,0,0,.5);transform:translate(-50%,-50%);cursor:pointer;color:#fff;text-decoration:none;padding:0;box-sizing:border-box}
.vl-library a.nbvl-mk,.vl-library a.nbvl-mk:hover{color:#fff}
.vl-library .nbvl-mk::after{content:"";position:absolute;inset:-8px}
.vl-library .nbvl-mk-npc{background:var(--mk-npc,#1D4ED8)}
.vl-library .nbvl-mk-quai{background:var(--mk-quai,#B45309);width:9px;height:9px;border-width:1.5px}
.vl-library .nbvl-mk-boss{background:var(--mk-boss,#DD3333);width:16px;height:16px;border-width:2.5px;box-shadow:0 0 0 2px rgba(221,51,51,.35),0 1px 4px rgba(0,0,0,.55)}
.vl-library .nbvl-mk-cong{background:var(--mk-cong,#1F7A3E);border-radius:2px;width:12px;height:12px;transform:translate(-50%,-50%) rotate(45deg)}
.vl-library .nbvl-mk-wp{background:var(--mk-wp,#0F766E);border-radius:2px;width:11px;height:11px}
.vl-library .nbvl-mk-nv{background:var(--mk-nv,#B8860B);width:16px;height:16px;font-size:11px;font-weight:800;line-height:1;transform:translate(-50%,-135%)}
.vl-library .nbvl-mk-nv b{font-weight:800;color:#fff}
.vl-library .nbvl-mk-cl{background:rgba(180,83,9,.85);width:26px;height:26px;border-width:2px;font-size:11px;font-weight:700}
.vl-library .nbvl-mk-cl b{color:#fff;font-weight:700}
.vl-library .nbvl-mk-static{position:static;transform:none;cursor:default;flex:none}
.vl-library .nbvl-mk-static::after{content:none}
.vl-library .nbvl-mk-static.nbvl-mk-cong{transform:rotate(45deg)}
.vl-library .nbvl-mk-static.nbvl-mk-nv{transform:none}
.vl-library .nbvl-mk-static.nbvl-mk-cl{width:22px;height:22px;font-size:10px}
.vl-library .nbvl-imap-layer .nbvl-mk:hover,.vl-library .nbvl-imap-layer .nbvl-mk.is-active,.vl-library .nbvl-imap-layer .nbvl-mk:focus-visible{z-index:5;box-shadow:0 0 0 3px rgba(255,255,255,.9),0 0 0 5px rgba(0,0,0,.5);border-radius:inherit}
.vl-library .nbvl-imap-layer .nbvl-mk.is-focus{width:16px;height:16px;z-index:4;animation:nbvl-pulse 1.4s ease-out infinite}
@keyframes nbvl-pulse{0%{box-shadow:0 0 0 0 rgba(255,255,255,.9),0 0 0 1px rgba(0,0,0,.5)}70%{box-shadow:0 0 0 12px rgba(255,255,255,0),0 0 0 1px rgba(0,0,0,.5)}100%{box-shadow:0 0 0 0 rgba(255,255,255,0),0 0 0 1px rgba(0,0,0,.5)}}
.vl-library .nbvl-imap-tip{position:absolute;z-index:9;min-width:160px;max-width:240px;background:var(--vl-surface);color:var(--vl-text);border:1px solid var(--vl-border);border-radius:var(--vl-radius-sm);box-shadow:0 6px 20px rgba(16,24,40,.22);padding:8px 10px;font-size:13px;line-height:1.35;transform:translate(-50%,calc(-100% - 14px));pointer-events:auto;display:flex;flex-direction:column;gap:2px}
.vl-library .nbvl-imap-tip[hidden]{display:none}
.vl-library .nbvl-imap-tip.is-right{transform:translate(calc(-100% + 16px),calc(-100% - 14px))}
.vl-library .nbvl-imap-tip.is-left{transform:translate(-16px,calc(-100% - 14px))}
.vl-library .nbvl-imap-tip.is-below{transform:translate(-50%,14px)}
.vl-library .nbvl-imap-tip.is-below.is-right{transform:translate(calc(-100% + 16px),14px)}
.vl-library .nbvl-imap-tip.is-below.is-left{transform:translate(-16px,14px)}
.vl-library .nbvl-imap-tip b{font-size:14px}
.vl-library .nbvl-imap-tip small{color:var(--vl-muted);font-size:12px}
.vl-library .nbvl-imap-tip .nbvl-xy-line{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;color:var(--vl-muted)}
.vl-library .nbvl-imap-tip a{display:block;font-weight:600;font-size:13px;margin-top:2px;min-height:28px;line-height:28px}
.vl-library .nbvl-imap-legend{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px;color:var(--vl-muted)}
.vl-library .nbvl-imap-legend li{display:inline-flex;align-items:center;gap:6px}
.vl-library .nbvl-imap-prov{margin-top:8px}
.vl-library .nbvl-sec-imap .nbvl-h2{margin-bottom:10px}
/* entity page mini map (static crop, no JS): 320×200 viewport, image positioned by NBVL_Map_View::mini_map() */
.vl-library .nbvl-minimap{margin:12px 0 0;max-width:320px}
.vl-library .nbvl-minimap-view{display:block;position:relative;width:320px;max-width:100%;height:200px;overflow:hidden;border-radius:var(--vl-radius-sm);border:1px solid var(--vl-border);background:#15130f}
.vl-library .nbvl-minimap-img{position:absolute;display:block;line-height:0}
.vl-library .nbvl-minimap-img img{display:block;width:100%;height:100%;max-width:none}
.vl-library .nbvl-minimap-img .nbvl-mk{position:absolute;transform:translate(-50%,-50%);cursor:pointer}
.vl-library .nbvl-minimap-img .nbvl-mk-static::after{content:"";position:absolute;inset:-4px}
.vl-library .nbvl-minimap-view:hover{border-color:var(--vl-primary)}
.vl-library .nbvl-minimap figcaption{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;font-size:12px;color:var(--vl-muted);margin-top:6px}
.vl-library .nbvl-minimap figcaption a{font-weight:600}
@media (max-width:760px){
  .vl-library .nbvl-imap{padding:8px;border-radius:var(--vl-radius-sm)}
  .vl-library .nbvl-imap-bar{gap:8px}
  .vl-library .nbvl-imap-filters{width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px;-webkit-overflow-scrolling:touch}
  .vl-library .nbvl-fchip{flex:none;min-height:40px}
  .vl-library .nbvl-imap-actions{width:100%}
  .vl-library .nbvl-imap-actions .nbvl-btn{flex:1 1 auto;min-height:40px}
  .vl-library .nbvl-imap-view{max-height:70vh}
  .vl-library .nbvl-imap-tip{max-width:200px;min-width:140px}
  .vl-library .nbvl-minimap,.vl-library .nbvl-minimap-view{max-width:100%}
}
