> ## Documentation Index
> Fetch the complete documentation index at: https://playnewyork.city/llms.txt
> Use this file to discover all available pages before exploring further.

# New York

> Whitelisted FiveM roleplay in a 1:1 New York City. All five boroughs, real streets, real laws.

export const NS_CSS = `
#navbar,#footer,#banner,.nav-tabs{display:none!important}
.ns .ns-line{position:sticky;top:0;z-index:40}
.ns .ns-b{background:var(--c);color:#fff!important}
.ns .ns-hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(24px,4vw,64px);align-items:center}
.ns .ns-hl{display:grid;gap:22px;align-content:center}
.ns .ns-hl .ns-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:clamp(15px,1.6vw,19px)}
.ns .ns-tagline{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#9EA2A7;margin-left:8px}
.ns .ns-hl h1{font:900 clamp(56px,9vw,128px)/.86 var(--sans);font-stretch:80%;letter-spacing:-.045em;color:#fff}
.ns .ns-sub{font:500 clamp(17px,1.5vw,20px)/1.45 var(--sans);color:#C9CBCE;max-width:40ch}
.ns .ns-hl .ns-live{margin-top:0}
.ns .ns-heromap{position:relative;aspect-ratio:600/597;max-width:560px;width:100%;justify-self:end}
.ns .ns-heromap::before{content:"";position:absolute;inset:8%;border-radius:50%;background:radial-gradient(closest-side,rgba(215,25,63,.16),transparent);filter:blur(10px)}
.ns .ns-heromap svg{position:relative;display:block;width:100%;height:auto;overflow:visible}
.ns .ns-heromap path{fill:var(--c);fill-opacity:.9;stroke:#000;stroke-width:1.4;stroke-linejoin:round;transition:fill-opacity .2s,transform .2s;transform-box:fill-box;transform-origin:center}
.ns .ns-heromap svg:hover path{fill-opacity:.45}
.ns .ns-heromap a:hover path,.ns .ns-heromap a:focus-visible path{fill-opacity:1;transform:scale(1.02)}
.ns .ns-heromap a{outline:none}
.ns .ns-heromap text{font:800 15px var(--sans);fill:#fff;paint-order:stroke;stroke:rgba(0,0,0,.6);stroke-width:3px;pointer-events:none}
.ns .ns-platform .ns-dirs{margin-top:clamp(28px,4vw,48px);border:1px solid #ffffff24;border-radius:8px}
.ns .ns-platform .ns-dirs > div{background:#0c0c0e}
@media (max-width:860px){.ns .ns-hero{grid-template-columns:1fr}.ns .ns-heromap{justify-self:center;max-width:440px}}
.ns{--bg:#EEF0EE;--card:#FFFFFF;--ink:#0E0F11;--soft:#55595F;--rule:#D3D6D2;--sign:#0E0F11;--sign-soft:#9EA2A7;--red:#D7193F;--red-ink:#B0102E;--l4:#00933C;--lA:#0039A6;--l7:#B933AD;--lN:#FCCC0A;--lL:#A7A9AC;--lG:#6CBE45;--lB:#FF6319;--sans:"Archivo","Helvetica Neue",Helvetica,Arial,sans-serif;--mono:"JetBrains Mono",ui-monospace,Menlo,monospace;--gut:clamp(16px,4vw,44px);background:var(--bg);color:var(--ink);font:400 16px/1.55 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
html.dark .ns{--bg:#09090B;--card:#141417;--ink:#EFEFED;--soft:#9A9EA4;--rule:#27272C;--sign:#000;--red-ink:#FF6F8C}
.ns,.ns *{box-sizing:border-box}
.ns h1,.ns h2,.ns h3,.ns h4,.ns p{margin:0}
.ns h1,.ns h2,.ns h3{text-wrap:balance}
.ns a{color:inherit}
.ns :focus-visible{outline:3px solid var(--red);outline-offset:3px}
.ns .ns-w{max-width:1180px;margin-inline:auto;padding-inline:var(--gut)}
.ns .ns-mono{font-family:var(--mono)}
.ns .ns-b{--c:var(--red);display:inline-grid;place-items:center;width:1.8em;height:1.8em;border-radius:50%;background:var(--c);color:#fff;font:800 1em/1 var(--sans);flex:none}
.ns .ns-b.ns-k{color:#0E0F11}
.ns .ns-btn{display:inline-flex;align-items:center;gap:10px;padding:13px 20px;border-radius:999px;font:700 15px/1 var(--sans);text-decoration:none;border:0;cursor:pointer;white-space:nowrap}
.ns .ns-btn.ns-red{background:var(--red);color:#fff}
.ns .ns-btn.ns-red:hover{background:#BE1236}
.ns .ns-btn.ns-out{box-shadow:inset 0 0 0 1.5px currentColor;background:none;color:inherit}
.ns .ns-line{background:var(--sign);color:#fff}
.ns .ns-line .ns-w{display:flex;align-items:center;gap:18px;min-height:64px}
.ns .ns-logo{display:flex;align-items:center;gap:10px;font:850 19px/1 var(--sans);letter-spacing:-.02em;text-decoration:none;white-space:nowrap;cursor:pointer}
.ns .ns-logo .ns-b{font-size:14px;border-radius:5px}
.ns .ns-stations{flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}
.ns .ns-stations::-webkit-scrollbar{display:none}
.ns .ns-stations ol{list-style:none;margin:0;padding:10px 4px;display:flex;align-items:center;position:relative;min-width:max-content}
.ns .ns-stations ol::before{content:"";position:absolute;left:14px;right:14px;top:50%;height:4px;margin-top:-2px;background:var(--red);border-radius:2px}
.ns .ns-stations li{position:relative;margin:0;padding:0}
.ns .ns-stations a{display:flex;align-items:center;gap:8px;padding:6px 14px;text-decoration:none;font:600 13.5px/1 var(--sans);color:var(--sign-soft);cursor:pointer}
.ns .ns-stations a::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--sign);border:3px solid #fff;flex:none;position:relative;z-index:1}
.ns .ns-stations a span{background:var(--sign);padding:2px 4px;position:relative;z-index:1}
.ns .ns-stations a[aria-current="page"]{color:#fff}
.ns .ns-stations a[aria-current="page"]::before{background:var(--red);border-color:var(--red);box-shadow:0 0 0 3px #fff}
.ns .ns-line .ns-btn{padding:10px 16px;font-size:14px}
@media (max-width:700px){.ns .ns-line .ns-btn{display:none}}
.ns .ns-band{background:var(--sign);color:#fff;border-top:1px solid #ffffff1c}
.ns .ns-band .ns-w{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-block:18px}
.ns .ns-band h2{font:800 clamp(24px,3.2vw,34px)/1 var(--sans);letter-spacing:-.025em;margin-right:auto;color:#fff}
.ns .ns-band .ns-note{font:600 11.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--sign-soft)}
.ns .ns-sec{padding-block:clamp(32px,5vw,60px)}
.ns .ns-lead{font-size:clamp(17px,1.5vw,19px);color:var(--soft);max-width:60ch}
.ns .ns-eyebrow{font:600 11.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--red-ink)}
.ns .ns-platform{background:var(--sign);color:#fff;position:relative;overflow:hidden}
.ns .ns-platform::after{content:"";position:absolute;left:0;right:0;bottom:0;height:10px;background:repeating-linear-gradient(90deg,#FCCC0A 0 26px,#0E0F11 26px 52px);opacity:.9}
.ns .ns-platform .ns-w{padding-block:clamp(44px,8vw,96px) clamp(56px,9vw,104px);display:grid;gap:30px}
.ns .ns-dirs{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#ffffff2e;border-radius:4px;overflow:hidden}
.ns .ns-dirs > div{background:var(--sign);padding:14px 16px;display:flex;align-items:center;gap:12px;font-weight:700}
.ns .ns-dirs .ns-ar{font-size:26px;line-height:1}
.ns .ns-dirs small{display:block;font:500 13px/1.3 var(--sans);color:var(--sign-soft)}
.ns .ns-cta{display:flex;gap:12px;flex-wrap:wrap}
.ns .ns-platform .ns-btn.ns-out{color:#fff}
@media (max-width:640px){.ns .ns-dirs{grid-template-columns:1fr}}
.ns .ns-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--rule)}
.ns .ns-fact{padding:24px clamp(16px,2vw,26px);border-right:1px solid var(--rule);display:grid;gap:6px}
.ns .ns-fact:last-child{border-right:0}
.ns .ns-fact b{font:850 clamp(30px,3.6vw,44px)/1 var(--sans);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.ns .ns-fact span{color:var(--soft);font-size:14.5px}
@media (max-width:820px){.ns .ns-facts{grid-template-columns:1fr 1fr}.ns .ns-fact:nth-child(2){border-right:0}.ns .ns-fact:nth-child(-n+2){border-bottom:1px solid var(--rule)}}
.ns .ns-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.ns .ns-tile{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:22px;display:grid;gap:10px;align-content:start;text-decoration:none;transition:transform .15s,border-color .15s;cursor:pointer}
.ns .ns-tile:hover{transform:translateY(-2px);border-color:var(--ink)}
.ns .ns-tile h3{font:800 20px/1.15 var(--sans);letter-spacing:-.015em;display:flex;align-items:center;gap:10px}
.ns .ns-tile h3 .ns-b{font-size:13px}
.ns .ns-tile p{color:var(--soft);font-size:15px}
.ns .ns-tile .ns-go{font:600 12px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--red-ink);margin-top:4px}
@media (max-width:900px){.ns .ns-tiles{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.ns .ns-tiles{grid-template-columns:1fr}}
.ns .ns-steps{list-style:none;margin:0;padding:0;display:grid;gap:0;counter-reset:s}
.ns .ns-steps li{display:grid;grid-template-columns:64px minmax(0,1fr);gap:18px;padding:22px 0;margin:0;border-bottom:1px solid var(--rule);counter-increment:s}
.ns .ns-steps li::before{content:counter(s);display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--ink);color:var(--bg);font:850 22px/1 var(--sans)}
.ns .ns-steps h3{font:800 21px/1.2 var(--sans);margin-bottom:6px}
.ns .ns-steps p{color:var(--soft);max-width:62ch}
.ns kbd,.ns .ns-cmd{font:600 13px/1 var(--mono);padding:3px 7px;border-radius:4px;background:var(--card);border:1px solid var(--rule);border-bottom-width:2px;color:var(--ink);white-space:nowrap}
.ns .ns-split{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);align-items:start}
@media (max-width:860px){.ns .ns-split{grid-template-columns:1fr}}
.ns .ns-panel{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:22px;display:grid;gap:14px}
.ns .ns-panel h3{font:800 18px/1.2 var(--sans)}
.ns .ns-q{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.ns .ns-q li{display:flex;align-items:center;gap:12px;font-weight:600;margin:0}
.ns .ns-q .ns-pos{font:700 12px var(--mono);color:var(--soft);width:34px}
.ns .ns-pocket{display:flex;gap:8px;flex-wrap:wrap}
.ns .ns-pocket span{padding:8px 12px;border-radius:999px;background:var(--bg);border:1px solid var(--rule);font-weight:600;font-size:14px}
.ns .ns-boros{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:22px}
.ns .ns-boro{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:18px;display:grid;gap:8px;align-content:start;border-top:6px solid var(--c)}
.ns .ns-boro h4{font:800 18px/1.1 var(--sans)}
.ns .ns-boro p{color:var(--soft);font-size:14px}
.ns .ns-bh{display:flex;align-items:baseline;gap:10px}
.ns .ns-area{margin-left:auto;font:600 11.5px/1 var(--mono);color:var(--soft);white-space:nowrap}
.ns .ns-hoods{display:flex;flex-wrap:wrap;gap:5px}
.ns .ns-hoods span{font-size:12.5px;font-weight:600;padding:4px 8px;border-radius:999px;background:var(--bg);border:1px solid var(--rule)}
@media (max-width:860px){.ns .ns-boros{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.ns .ns-boros{grid-template-columns:1fr}}
.ns .ns-jobs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.ns .ns-job{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:22px;display:grid;gap:10px;align-content:start}
.ns .ns-job header{display:flex;align-items:center;gap:12px}
.ns .ns-job header .ns-b{font-size:18px}
.ns .ns-job h3{font:800 22px/1.1 var(--sans)}
.ns .ns-tag{margin-left:auto;font:600 11px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:6px 8px;border-radius:4px;border:1px solid var(--rule);color:var(--soft);white-space:nowrap}
.ns .ns-tag.ns-r{border-color:var(--red);color:var(--red-ink)}
.ns .ns-job p{color:var(--soft);font-size:15px}
@media (max-width:760px){.ns .ns-jobs{grid-template-columns:1fr}}
.ns .ns-law{width:100%;border-collapse:collapse;font-size:15px;margin:0;display:table}
.ns .ns-law th{text-align:left;font:600 11px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--soft);padding:10px 12px;border-bottom:2px solid var(--ink)}
.ns .ns-law td{padding:12px;border-bottom:1px solid var(--rule);vertical-align:top}
.ns .ns-law td:nth-child(2){font:600 13px/1.5 var(--mono);white-space:nowrap}
.ns .ns-law td:nth-child(3){white-space:nowrap}
.ns .ns-cls{display:inline-block;font:700 11.5px/1 var(--mono);padding:5px 7px;border-radius:4px;background:var(--bg);border:1px solid var(--rule)}
.ns .ns-cls.ns-f{background:var(--red);border-color:var(--red);color:#fff}
.ns .ns-tablewrap{overflow-x:auto;background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:8px 12px}
.ns .ns-groups{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.ns .ns-groups button{font:600 14px var(--sans);padding:9px 14px;border-radius:999px;border:1px solid var(--rule);background:var(--card);color:var(--ink);cursor:pointer}
.ns .ns-groups button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.ns .ns-oath{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:28px}
.ns .ns-oath > div{padding:18px;border-radius:10px;background:var(--card);border:1px solid var(--rule);display:grid;gap:6px}
.ns .ns-oath b{font-size:16px}
.ns .ns-oath span{color:var(--soft);font-size:14px}
@media (max-width:860px){.ns .ns-oath{grid-template-columns:1fr}}
.ns .ns-keys{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.ns .ns-kg{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:18px}
.ns .ns-kg h3{font:800 16px/1 var(--sans);margin-bottom:12px}
.ns .ns-kg dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:10px 14px;align-items:baseline}
.ns .ns-kg dt{white-space:nowrap}
.ns .ns-kg dd{margin:0;color:var(--soft);font-size:14.5px}
@media (max-width:900px){.ns .ns-keys{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.ns .ns-keys{grid-template-columns:1fr}}
.ns .ns-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.ns .ns-mc{border-radius:14px;padding:18px;min-height:210px;display:grid;align-content:space-between;background:var(--card);border:1px solid var(--rule);position:relative;overflow:hidden}
.ns .ns-mc::before{content:"";position:absolute;inset:auto -30% -60% auto;width:180px;height:180px;border-radius:50%;background:var(--c,var(--lL));opacity:.18}
.ns .ns-mc .ns-top{display:flex;justify-content:space-between;font:700 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--soft)}
.ns .ns-mc h3{font:800 21px/1.15 var(--sans)}
.ns .ns-mc p{color:var(--soft);font-size:14px;margin-top:6px}
.ns .ns-mc .ns-p{font:850 30px/1 var(--sans);letter-spacing:-.03em}
.ns .ns-mc .ns-p.ns-s{font:600 12.5px/1 var(--mono);color:var(--soft);text-transform:uppercase;letter-spacing:.06em}
.ns .ns-fine{margin-top:18px;font-size:14px;color:var(--soft);max-width:70ch}
.ns .ns-cls{white-space:nowrap}
.ns .ns-h3{font:800 22px/1.2 var(--sans)}
.ns .ns-rulebook{counter-reset:r}
.ns .ns-rules{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.ns .ns-rules li{counter-increment:r;padding:18px;border-radius:10px;background:var(--card);border:1px solid var(--rule);display:grid;gap:6px;align-content:start}
.ns .ns-rules li::before{content:counter(r,decimal-leading-zero);font:600 12px/1 var(--mono);color:var(--red-ink)}
.ns .ns-rules b{font-size:16px}
.ns .ns-rules span{color:var(--soft);font-size:14.5px}
.ns .ns-faq{margin-top:14px;border-bottom:1px solid var(--rule)}
.ns .ns-faq details{border-top:1px solid var(--rule);padding:16px 0}
.ns .ns-faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px;font:700 17px/1.35 var(--sans)}
.ns .ns-faq summary::-webkit-details-marker{display:none}
.ns .ns-faq summary::after{content:"+";font:600 20px/1 var(--mono);color:var(--soft)}
.ns .ns-faq details[open] summary::after{content:"–"}
.ns .ns-faq p{margin-top:10px;color:var(--soft);max-width:70ch}
@media (max-width:860px){.ns .ns-rules{grid-template-columns:1fr}}
.ns .ns-foot{background:var(--sign);color:var(--sign-soft);margin-top:40px}
.ns .ns-foot .ns-w{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;padding-block:22px;font:500 12px/1.5 var(--mono)}
.ns .ns-atlas{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:22px;margin-top:24px;align-items:start}
.ns .ns-mapcard{background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:14px;position:relative}
.ns .ns-mapcard svg{display:block;width:100%;height:auto}
.ns .ns-mapcard path{fill:var(--c);stroke:var(--card);stroke-width:1.6;stroke-linejoin:round;cursor:pointer;transition:opacity .2s,filter .2s;outline:none}
.ns .ns-mapcard g{outline:none}
.ns .ns-mapcard g[data-dim="true"] path{opacity:.4}
.ns .ns-mapcard g:focus-visible path{stroke:var(--ink);stroke-width:3}
.ns .ns-mapcard text{font:800 15px var(--sans);fill:#fff;paint-order:stroke;stroke:rgba(0,0,0,.55);stroke-width:3px;pointer-events:none;text-anchor:middle}
.ns .ns-mapcard .ns-water{position:absolute;left:18px;bottom:14px;font:600 10.5px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--soft)}
.ns .ns-mapcard .ns-north{position:absolute;right:18px;top:16px;font:700 11px/1 var(--mono);color:var(--soft);display:grid;justify-items:center;gap:3px}
.ns .ns-pick{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.ns .ns-pick button{display:inline-flex;align-items:center;gap:8px;font:600 14px var(--sans);padding:8px 12px 8px 8px;border-radius:999px;border:1px solid var(--rule);background:var(--card);color:var(--ink);cursor:pointer}
.ns .ns-pick button i{width:14px;height:14px;border-radius:50%;background:var(--c)}
.ns .ns-pick button[aria-pressed="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.ns .ns-atlas .ns-boro{border-top-width:8px}
.ns .ns-atlas .ns-boro h4{font-size:26px}
.ns .ns-atlas .ns-boro p{font-size:15.5px}
@media (max-width:860px){.ns .ns-atlas{grid-template-columns:1fr}}
.ns .ns-live{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.ns .ns-live span{display:inline-flex;align-items:center;gap:9px;padding:8px 13px;border-radius:999px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);font:600 12.5px/1 var(--mono);letter-spacing:.04em;color:#E6E7E9}
.ns .ns-live b{font:800 13.5px/1 var(--sans);color:#fff;letter-spacing:0}
.ns .ns-dot{width:8px;height:8px;border-radius:50%;background:#6CBE45;box-shadow:0 0 0 0 rgba(108,190,69,.6);animation:nsPulse 2s infinite}
.ns .ns-dot.ns-off{background:#808183;animation:none}
@keyframes nsPulse{0%{box-shadow:0 0 0 0 rgba(108,190,69,.55)}70%{box-shadow:0 0 0 8px rgba(108,190,69,0)}100%{box-shadow:0 0 0 0 rgba(108,190,69,0)}}
.ns .ns-lawbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;margin:22px 0 12px;align-items:center}
.ns .ns-search{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--rule);border-radius:999px;padding:0 16px;height:46px}
.ns .ns-search:focus-within{border-color:var(--ink)}
.ns .ns-search input{flex:1;min-width:0;border:0;outline:0;background:none;color:var(--ink);font:500 16px var(--sans)}
.ns .ns-search kbd{flex:none}
.ns .ns-seg{display:inline-flex;border:1px solid var(--rule);border-radius:999px;overflow:hidden;background:var(--card)}
.ns .ns-seg button{font:600 13.5px var(--sans);padding:0 14px;height:44px;border:0;background:none;color:var(--ink);cursor:pointer}
.ns .ns-seg button+button{border-left:1px solid var(--rule)}
.ns .ns-seg button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.ns .ns-count{font:600 12px/1 var(--mono);color:var(--soft);letter-spacing:.05em;text-transform:uppercase;margin:0 0 10px}
.ns .ns-law mark{background:rgba(215,25,63,.22);color:inherit;border-radius:2px;padding:0 1px}
.ns .ns-empty{padding:28px 12px;color:var(--soft);text-align:center}
@media (max-width:640px){.ns .ns-lawbar{grid-template-columns:1fr}.ns .ns-seg{justify-self:start}}
@media (prefers-reduced-motion:reduce){.ns *{transition:none!important;animation:none!important}}
.ns p a{text-decoration:underline;text-decoration-color:var(--red);text-decoration-thickness:2px;text-underline-offset:3px}
.ns .ns-faq details{padding:0}
.ns .ns-faq summary{padding:16px 0}
.ns .ns-faq p{margin:0 0 16px}
div[class*="pt-[120px]"]:has(.ns){padding-top:0!important}
@media (max-width:600px){
.ns .ns-law,.ns .ns-law tbody{display:block}
.ns .ns-law thead{display:none}
.ns .ns-law tr{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:14px 4px;border-bottom:1px solid var(--rule)}
.ns .ns-law td{display:block;padding:0;border:0}
.ns .ns-law td:nth-child(1){grid-column:1;grid-row:1;font-weight:600}
.ns .ns-law td:nth-child(2){grid-column:1;grid-row:2;font-size:12px;color:var(--soft)}
.ns .ns-law td:nth-child(3){grid-column:2;grid-row:1/3}
.ns .ns-law td:nth-child(4){grid-column:1/3;grid-row:3}
}
.ns .ns-news{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:14px;max-width:760px}
.ns .ns-news li{padding:20px;border-radius:10px;background:var(--card);border:1px solid var(--rule);display:grid;gap:8px}
.ns .ns-nh{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--soft)}
.ns .ns-news h3{font:800 19px/1.25 var(--sans)}
.ns .ns-news p{color:var(--soft)}
.ns .ns-stations a{padding:6px 10px;gap:7px}
@media (max-width:860px){
.ns .ns-stations{-webkit-mask-image:linear-gradient(90deg,#000 78%,transparent);mask-image:linear-gradient(90deg,#000 78%,transparent)}
}
.ns .ns-b[style*="--lN"],.ns .ns-b[style*="--lL"],.ns .ns-b[style*="--lG"]{color:#0E0F11!important}
`;
export const NS_PAGES = [["home", "Home"], ["arrive", "Arrive"], ["boroughs", "Boroughs"], ["work", "Work"], ["law", "The Law"], ["rules", "Rules"], ["controls", "Controls"], ["store", "Store"], ["news", "News"]];
export const NS_BOROS = [["Manhattan", "--lB", "22.7 sq mi", "The 1811 grid, set 29° off true north, from the Battery to Inwood.", ["Financial District", "Chinatown", "Lower East Side", "Greenwich Village", "Midtown", "Hell's Kitchen", "Upper West Side", "Upper East Side", "Harlem", "East Harlem", "Washington Heights", "Inwood"]], ["The Bronx", "--l4", "42.2 sq mi", "The only borough attached to the mainland, from the Grand Concourse to City Island.", ["Mott Haven", "Hunts Point", "Morrisania", "Fordham", "Belmont", "Riverdale", "Pelham Bay", "City Island"]], ["Brooklyn", "--lA", "69.4 sq mi", "The most populous borough, from the waterfront to Coney Island.", ["Williamsburg", "Greenpoint", "DUMBO", "Bed-Stuy", "Crown Heights", "Park Slope", "Flatbush", "Bay Ridge", "Coney Island", "East New York"]], ["Queens", "--l7", "108.7 sq mi", "The largest borough by land, from Long Island City out to the Rockaways.", ["Long Island City", "Astoria", "Jackson Heights", "Corona", "Flushing", "Jamaica", "Forest Hills", "Far Rockaway"]], ["Staten Island", "--lG", "57.5 sq mi", "Across the harbor, from St. George to Tottenville.", ["St. George", "Stapleton", "Port Richmond", "New Dorp", "Great Kills", "Tottenville"]]];
export const NS_LAW = [["Violence", "Assault, 3rd degree", "PL 120.00", "A misd", "Causing physical injury"], ["Violence", "Assault, 2nd degree", "PL 120.05", "D felony", "Injury with a weapon, or to an officer or EMT on duty"], ["Violence", "Assault, 1st degree", "PL 120.10", "B felony", "Serious injury with a deadly weapon"], ["Violence", "Menacing, 2nd degree", "PL 120.14", "A misd", "Showing a weapon to put someone in fear"], ["Violence", "Manslaughter, 1st degree", "PL 125.20", "B felony", "Intending serious injury, causing death"], ["Violence", "Murder, 2nd degree", "PL 125.25", "A-I felony", "Intentional killing, or any death during a robbery or burglary"], ["Violence", "Kidnapping, 2nd degree", "PL 135.20", "B felony", "Abducting a person"], ["Property", "Petit larceny", "PL 155.25", "A misd", "Stealing property worth $1,000 or less"], ["Property", "Grand larceny, 4th degree", "PL 155.30", "E felony", "Over $1,000, or any gun, bank card or car over $100"], ["Property", "Robbery, 3rd degree", "PL 160.05", "D felony", "Taking property by force"], ["Property", "Robbery, 1st degree", "PL 160.15", "B felony", "Robbery while armed, or showing a firearm"], ["Property", "Burglary, 2nd degree", "PL 140.25", "C felony", "Entering a home to commit a crime"], ["Weapons", "Criminal possession of a weapon, 4th degree", "PL 265.01", "A misd", "Any unlicensed firearm"], ["Weapons", "Criminal possession of a weapon, 2nd degree", "PL 265.03", "C felony", "A loaded gun outside your home or business"], ["Weapons", "Firearm in a sensitive location", "PL 265.01-e", "E felony", "Carrying in Times Square, transit, schools and similar places"], ["Controlled substances", "Unlawful possession of cannabis", "PL 222.25", "Violation", "More than 3 oz (adults 21+ may carry up to 3 oz)"], ["Controlled substances", "Criminal possession of a controlled substance, 7th degree", "PL 220.03", "A misd", "Any amount of a controlled substance"], ["Controlled substances", "Criminal sale of a controlled substance, 3rd degree", "PL 220.39", "B felony", "Selling a narcotic"], ["Money", "Forgery, 1st degree", "PL 170.15", "C felony", "Counterfeit currency"], ["Money", "Money laundering, 4th degree", "PL 470.05", "E felony", "Moving more than $5,000 of criminal proceeds"], ["Order", "Resisting arrest", "PL 205.30", "A misd", "Preventing a lawful arrest"], ["Order", "Tampering with physical evidence", "PL 215.40", "E felony", "Hiding or destroying evidence"], ["Order", "Unlawful fleeing a police officer, 3rd degree", "PL 270.25", "A misd", "Fleeing in a vehicle at 25+ mph over the limit"], ["Road", "Driving while intoxicated", "VTL 1192(2)", "U misd", "Driving with a BAC of .08 or higher"], ["Road", "Leaving the scene, injury", "VTL 600(2)(a)", "B misd", "Driving away after hurting someone"], ["Road", "Leaving the scene, serious injury", "VTL 600(2)(c)", "E felony", "Driving away after seriously hurting someone"], ["Road", "Leaving the scene, death", "VTL 600(2)(c)", "D felony", "Driving away after a crash that kills someone"]];
export const NS_MAP = [["Staten Island", "M183.5,379.8L198.6,385.3L199.4,387.7L198.2,389.0L200.1,388.9L197.0,389.9L200.2,389.6L197.3,391.2L200.4,391.0L197.1,391.8L197.9,395.1L196.7,396.4L199.9,396.5L196.7,396.9L198.2,397.3L196.8,397.4L197.2,406.3L202.6,408.5L197.3,406.7L198.0,414.4L200.7,419.3L205.3,422.1L204.0,423.7L206.6,423.6L205.7,424.5L215.0,439.1L217.9,441.0L218.3,448.7L219.6,449.7L208.9,460.8L205.8,465.2L206.5,466.2L199.4,473.4L199.7,475.6L195.0,479.0L196.8,480.4L194.9,479.2L183.2,491.8L182.9,494.3L177.8,496.9L174.4,502.6L171.7,503.5L170.4,507.8L167.2,508.8L166.6,512.7L164.7,512.3L162.8,516.4L160.1,514.8L154.2,523.7L150.2,523.7L143.8,528.1L134.9,542.7L128.2,550.2L126.0,549.2L124.3,542.1L131.2,541.4L137.8,533.9L138.3,530.0L134.8,526.0L129.8,525.6L127.9,526.5L129.0,527.8L128.7,528.0L127.9,526.7L127.5,527.0L128.5,528.0L128.2,528.3L127.0,526.4L126.1,527.6L127.4,528.9L126.2,527.9L127.1,529.2L125.9,528.2L125.3,528.8L126.6,529.9L124.4,529.2L125.7,530.4L123.3,530.6L124.5,532.1L123.4,531.3L122.9,531.8L124.1,532.5L123.8,532.9L122.3,531.7L122.4,537.6L122.8,537.2L122.5,537.9L123.7,538.7L123.4,539.0L122.5,537.9L123.1,539.1L114.9,543.1L107.4,551.2L100.8,553.2L92.4,559.1L90.2,558.7L84.2,564.5L80.5,562.4L76.4,564.4L65.2,577.7L60.4,575.6L60.7,573.4L51.8,575.1L41.0,587.2L26.3,589.3L17.0,595.4L9.5,597.4L6.9,596.8L2.6,591.7L0.0,580.9L2.1,578.5L1.0,577.9L1.2,577.7L2.5,577.9L2.2,575.3L6.0,570.4L5.4,569.0L6.9,570.4L6.1,568.9L7.9,568.4L6.7,567.7L9.9,569.2L9.3,567.4L10.8,566.2L17.0,563.3L13.7,561.7L12.6,556.4L15.2,547.7L14.6,543.0L11.1,539.3L12.0,537.7L10.8,533.6L8.2,530.5L13.2,523.7L16.4,524.0L20.7,520.0L20.7,517.4L24.0,517.1L26.9,512.8L37.5,512.2L40.0,514.0L39.8,512.1L42.7,512.8L47.1,508.7L55.3,472.7L55.0,464.7L62.7,454.0L61.4,447.0L57.0,437.7L57.4,430.5L59.6,426.1L58.3,416.5L59.2,406.2L65.1,399.3L65.8,396.2L74.6,387.7L76.4,386.6L77.7,389.3L77.7,385.9L81.6,386.4L81.7,385.0L82.1,389.8L82.5,388.2L85.6,389.2L87.7,385.2L91.0,388.4L89.2,391.8L91.3,388.8L96.2,390.5L96.6,389.1L98.7,392.5L98.9,391.0L99.1,392.6L101.4,391.6L100.8,394.2L102.9,394.7L103.4,392.6L104.0,395.6L104.3,394.2L106.3,395.4L106.5,393.5L107.9,396.0L109.0,393.6L109.1,396.3L111.0,396.6L112.7,395.7L112.5,393.4L115.6,396.1L115.4,394.1L120.7,394.1L130.9,389.8L136.2,390.6L136.4,392.0L136.8,390.8L138.8,393.5L139.6,390.6L141.9,392.3L143.4,390.5L146.5,390.8L146.5,389.3L147.4,390.4L147.1,389.1L147.9,390.3L147.7,388.9L149.4,390.2L149.4,388.2L151.5,389.0L157.5,384.7L169.3,385.3Z", 120, 505], ["Queens", "M469.9,163.1L477.2,168.7L478.8,167.2L486.2,170.0L495.9,170.7L498.0,172.0L497.5,176.3L499.8,180.6L510.9,177.0L508.9,176.3L511.7,177.2L512.8,173.1L510.1,171.8L517.0,169.6L523.7,181.0L519.8,183.4L517.6,181.0L526.4,193.9L527.6,192.9L527.9,193.3L526.4,193.9L529.7,201.9L551.8,226.5L540.5,210.8L540.0,205.1L542.4,202.7L540.1,196.3L545.1,188.9L597.1,231.2L598.6,234.7L600.0,251.1L591.7,267.4L567.3,275.5L571.0,292.8L572.3,336.1L570.3,343.8L569.4,359.7L572.8,375.4L555.3,382.7L554.4,392.3L557.4,398.6L556.9,399.4L554.1,399.4L555.8,396.3L552.5,395.5L552.8,393.9L551.6,396.7L549.5,397.1L551.1,395.5L551.1,394.8L549.2,396.9L550.1,391.9L548.9,388.0L540.9,381.4L548.8,390.5L547.6,399.0L529.8,407.6L523.6,420.9L522.6,419.6L523.5,416.3L522.5,415.9L522.2,416.7L522.1,416.7L518.9,422.1L518.8,422.0L522.5,415.8L517.7,410.4L514.4,410.6L508.0,420.9L508.8,425.2L512.6,430.1L501.3,438.6L497.6,434.7L491.1,432.5L497.9,417.3L503.2,417.3L510.8,406.4L503.4,400.7L494.0,405.3L501.9,400.6L472.2,383.4L469.1,379.5L466.7,370.6L467.9,364.9L471.8,362.4L479.8,363.1L471.9,361.0L466.6,363.9L465.0,370.5L467.1,381.1L463.8,378.1L463.5,380.6L461.2,379.5L458.6,375.9L457.9,372.9L460.7,369.5L457.8,372.6L457.2,371.9L458.0,371.2L458.4,369.8L460.3,369.0L460.7,368.0L460.5,367.1L459.5,366.3L459.9,366.1L460.0,365.9L459.4,364.3L459.4,366.4L460.6,367.8L458.2,369.7L457.6,371.3L456.5,367.6L457.5,369.5L456.8,367.1L458.6,366.5L456.0,366.8L458.5,380.3L454.9,381.0L453.5,380.1L450.2,360.5L449.0,363.3L453.2,384.7L438.6,386.6L435.4,382.0L438.7,376.2L431.6,376.4L425.7,369.1L427.4,368.3L427.6,366.2L425.9,365.8L427.5,366.4L426.3,368.4L423.8,366.5L429.8,363.8L428.9,359.1L431.9,358.5L429.8,347.4L426.8,347.9L424.7,336.7L422.8,332.1L420.7,332.8L417.6,313.9L412.1,315.3L395.2,329.5L392.1,330.6L390.3,328.0L387.8,332.2L382.8,324.3L382.7,319.2L377.8,315.4L379.4,313.1L371.3,307.1L372.5,305.5L370.1,303.7L371.3,302.1L360.4,293.6L361.6,292.0L358.0,285.5L361.8,284.2L360.0,283.7L356.9,275.2L357.6,273.4L362.0,273.3L357.1,272.1L352.4,266.8L342.9,263.6L339.1,256.0L334.4,253.6L339.2,251.1L342.3,245.9L340.8,245.5L337.9,251.3L333.1,253.0L325.9,250.3L318.4,252.8L316.4,251.8L319.5,245.1L318.5,244.2L320.5,243.6L319.6,242.6L320.8,242.9L320.0,242.1L322.7,237.5L326.6,239.0L323.3,236.2L337.0,215.1L341.0,210.2L346.3,207.2L346.8,205.2L343.2,202.2L344.7,197.4L347.4,195.7L353.1,197.9L365.5,187.1L373.4,177.5L383.7,180.2L388.4,185.0L385.4,189.1L382.8,189.2L381.2,192.7L390.1,187.0L388.3,188.6L389.0,190.7L389.9,189.9L389.0,190.8L391.9,188.8L393.0,189.9L391.6,190.5L393.5,195.1L392.1,196.8L392.8,200.4L394.7,196.2L395.4,202.3L401.4,201.4L400.3,193.1L407.0,192.2L406.9,189.6L405.9,189.0L405.9,189.0L410.8,190.9L415.1,184.5L416.7,185.5L418.5,182.4L418.7,182.6L416.6,185.8L418.0,187.8L413.7,191.9L432.6,204.2L429.2,206.8L431.3,208.9L424.2,211.9L428.5,218.6L430.5,215.7L430.9,217.7L429.2,218.1L430.9,219.2L428.7,218.8L437.3,222.3L438.2,220.0L435.8,221.0L438.2,219.7L439.5,221.3L449.8,213.0L449.3,211.4L444.0,213.8L440.4,211.9L439.5,207.6L438.3,207.4L439.5,206.2L436.6,204.7L439.1,202.2L439.1,195.9L438.4,193.8L437.0,194.4L436.4,194.5L438.2,193.6L435.5,194.2L438.5,193.2L436.2,193.3L438.6,193.0L437.0,191.5L438.8,189.8L432.3,190.2L427.7,185.2L434.9,181.4L432.8,180.8L435.2,177.2L434.0,173.1L435.2,171.8L439.0,174.0L439.4,171.1L442.1,170.0L445.0,171.8L445.3,170.0L446.4,170.9L445.7,169.0L447.1,171.1L448.4,167.9L451.1,166.7L448.5,168.0L452.0,173.3L451.8,180.2L456.5,180.9L458.1,180.0L458.1,176.9L461.9,174.7L460.2,169.1L464.9,168.3ZM520.8,430.0L529.6,429.9L529.7,432.3L535.0,434.1L533.3,436.4L533.5,436.6L535.2,434.0L540.0,435.1L550.6,432.4L553.4,439.1L558.8,445.6L558.9,452.8L556.9,453.7L556.7,454.9L556.1,453.7L554.8,454.2L556.9,455.1L558.8,453.2L559.4,457.4L549.7,457.6L542.2,462.4L533.8,461.3L518.1,463.3L477.4,473.0L455.4,481.3L416.1,500.5L389.5,510.6L376.6,512.7L340.0,532.3L341.0,514.2L355.8,504.2L364.9,502.4L371.1,498.1L376.6,502.4L382.4,502.2L392.0,494.2L408.0,493.9L437.5,474.9L449.6,475.3L465.2,467.8L468.8,468.3L477.3,461.3L479.4,461.4L479.6,459.6L479.8,461.2L480.3,460.7L479.7,460.2L479.7,459.6L480.1,459.4L481.3,460.5L481.6,458.6L485.8,462.6L485.7,461.1L487.5,461.1L483.4,457.8L485.5,455.8L489.4,460.0L488.5,457.6L489.5,457.3L488.3,457.4L488.5,456.4L487.8,456.6L488.4,456.3L488.0,456.3L486.8,454.1L486.5,454.3L486.3,453.9L488.8,451.1L500.3,449.5L506.8,444.9L502.4,450.6L501.7,455.8L502.6,456.9L502.4,455.1L502.6,455.1L503.1,457.0L503.8,452.3L509.8,445.8L509.7,441.9L515.2,435.7L518.6,435.6L519.9,436.8L519.4,438.9L519.2,438.0L518.8,437.3L517.9,436.4L519.4,443.3L515.6,448.9L513.5,448.4L511.6,450.7L512.2,452.7L513.6,453.9L519.0,447.0L520.5,452.1L526.4,452.6L523.2,450.3L525.5,436.1L522.0,433.1L521.2,435.0L519.9,432.6ZM465.9,392.6L469.3,407.1L474.6,414.4L471.6,417.2L475.0,418.9L472.8,424.5L474.3,429.1L476.8,428.7L474.6,431.0L475.4,434.7L476.4,433.7L476.1,437.4L473.2,442.1L472.0,450.3L469.1,456.9L457.0,457.1L454.4,455.8L457.0,452.6L461.7,452.8L464.0,450.2L465.4,452.1L466.3,449.4L468.8,449.5L465.6,448.3L470.8,434.5L469.5,432.0L468.7,437.4L464.4,429.3L455.3,429.0L455.9,411.3L458.4,402.8L455.9,394.6L464.0,398.5L465.6,397.9Z", 475, 300], ["Brooklyn", "M325.3,251.3L333.8,254.4L333.0,256.7L333.2,258.0L334.8,254.9L335.2,256.5L338.2,256.6L342.9,264.7L352.4,268.0L357.5,279.7L349.2,285.7L350.3,287.5L348.1,291.4L349.6,290.9L351.2,294.6L349.6,289.1L351.2,288.3L350.7,285.8L353.3,284.9L353.5,282.7L358.5,282.3L359.1,283.7L357.1,285.3L361.6,292.0L360.4,293.6L371.3,302.1L370.1,303.7L372.5,305.5L371.3,307.1L379.4,313.1L377.8,315.4L382.7,319.2L382.8,324.3L387.8,332.2L390.3,328.0L392.1,330.6L400.7,326.0L412.1,315.3L418.1,314.5L420.7,332.8L422.8,332.1L424.7,336.7L426.8,347.9L429.8,347.4L431.9,358.5L428.9,359.1L429.8,363.8L423.8,366.5L423.7,368.4L430.5,377.4L428.9,382.5L430.3,387.3L424.1,388.9L420.0,392.5L421.1,394.2L417.9,391.2L406.3,371.7L416.5,394.0L418.6,395.2L411.6,397.3L407.2,393.9L403.3,387.2L399.6,386.7L397.3,381.3L393.7,379.2L393.6,380.0L396.1,383.9L395.5,382.6L396.8,382.3L396.9,385.2L408.7,398.2L401.7,405.4L402.8,409.2L401.6,410.2L400.1,408.4L397.5,409.1L392.3,415.7L388.6,417.4L366.4,403.8L365.1,404.7L381.6,414.7L380.8,415.8L383.3,418.7L387.8,418.9L388.5,428.8L393.8,431.2L390.5,433.5L395.1,433.2L391.2,439.9L384.2,441.6L382.6,432.8L381.3,432.6L382.7,434.4L382.6,434.5L374.5,424.6L375.4,427.1L373.7,426.1L381.6,434.6L382.2,441.3L378.4,442.5L377.6,440.4L374.7,440.0L375.3,441.8L373.4,440.9L375.0,443.7L369.3,443.8L365.6,436.9L368.4,432.9L368.7,428.2L366.1,430.3L367.0,432.6L364.5,434.9L364.4,438.6L363.1,438.0L364.3,439.2L362.9,438.4L368.4,445.4L374.3,445.7L372.4,446.6L374.4,447.2L401.3,441.5L406.9,466.5L409.2,471.0L405.9,477.8L388.9,482.6L387.2,478.1L387.7,473.7L385.1,467.0L379.4,468.1L377.0,466.5L377.1,467.9L371.6,469.3L371.0,457.3L367.7,451.2L360.8,446.7L357.2,449.7L351.4,443.7L349.3,445.6L368.7,464.9L363.3,469.5L357.3,469.9L353.7,467.0L358.2,462.1L353.1,465.7L353.3,465.1L352.6,465.3L353.0,464.9L351.9,464.7L351.6,464.5L351.0,463.9L351.5,464.3L351.6,457.9L348.8,456.7L350.3,464.4L351.9,465.7L350.3,468.2L353.2,467.9L356.7,471.3L369.4,469.3L370.6,473.2L365.3,473.4L371.2,473.7L371.6,475.4L357.6,472.9L326.3,473.7L326.5,475.1L337.9,476.5L348.8,476.2L350.5,483.4L294.6,490.0L294.0,492.9L293.6,490.2L273.8,492.8L272.8,489.1L263.0,485.2L262.0,480.9L263.2,478.3L269.5,475.1L288.5,479.6L291.1,475.5L289.0,478.4L285.1,476.4L286.5,471.4L280.9,474.8L275.8,473.6L278.1,470.3L276.5,469.1L282.4,465.6L278.2,467.6L281.0,464.7L275.6,468.7L278.3,466.1L276.6,464.8L279.1,461.4L275.8,461.6L277.8,458.7L274.9,460.1L272.1,455.1L264.3,448.5L243.6,442.7L237.1,436.2L232.6,428.1L231.1,420.2L231.7,406.5L236.3,393.9L234.2,393.1L236.4,393.7L237.5,391.6L236.3,390.2L239.2,386.3L241.1,387.4L243.1,385.0L245.6,386.8L247.9,383.6L244.3,380.0L249.4,382.4L247.6,380.9L249.9,381.6L247.9,376.8L249.8,376.6L248.6,375.5L251.3,376.6L248.6,374.4L253.1,377.1L250.3,373.9L253.1,374.2L251.0,372.4L256.5,372.7L254.4,370.6L256.7,372.5L257.5,371.4L254.6,369.0L258.0,370.6L255.4,367.7L259.4,368.8L256.9,366.7L256.9,366.2L259.8,368.3L260.5,367.4L257.2,364.8L259.2,362.9L263.2,365.6L264.0,364.4L260.9,361.8L262.4,361.2L266.7,364.7L268.0,363.2L264.8,360.6L265.7,359.3L271.4,361.9L269.3,360.0L272.3,360.8L267.7,357.2L272.1,360.1L270.8,356.8L274.8,359.9L276.5,357.7L272.9,354.8L276.0,353.4L277.1,352.0L277.4,347.5L275.7,351.6L272.9,353.5L269.7,352.6L268.6,355.4L268.5,355.4L270.2,348.4L267.9,354.0L268.4,351.8L265.4,351.9L263.6,356.8L259.0,357.5L257.8,357.1L255.1,347.4L257.1,348.3L258.2,357.0L262.8,355.8L264.9,351.1L263.5,348.9L260.6,350.1L263.3,348.8L259.6,348.7L260.7,346.7L259.1,348.3L262.0,345.0L258.4,345.6L259.9,343.1L255.7,346.6L257.4,344.6L255.6,342.5L256.7,340.5L254.5,339.6L256.3,337.6L255.2,336.0L262.2,330.4L262.9,331.4L260.8,333.1L262.0,334.9L265.6,330.9L263.1,330.0L269.7,326.7L272.8,320.7L275.0,321.1L274.1,317.8L281.9,300.8L299.4,298.5L300.3,302.5L302.0,300.3L300.9,303.0L303.5,304.8L302.2,307.6L304.0,305.2L305.8,306.8L305.0,304.6L307.6,307.1L305.4,303.1L309.0,306.3L305.4,302.3L309.5,304.5L303.4,298.4L305.7,298.2L303.4,296.1L307.2,298.7L305.9,294.1L308.2,300.0L311.1,302.1L309.2,299.8L308.4,292.1L311.4,282.8L316.0,275.6L316.9,271.2L321.4,271.9L317.5,270.2L316.8,258.5L321.0,252.8ZM440.9,408.0L438.2,412.1L441.0,411.5L445.0,416.5L423.3,424.0L422.9,422.1L425.6,422.3L426.1,415.1L423.5,416.2L423.6,412.5L426.8,413.6L431.0,408.0L433.7,410.1L433.3,408.4L437.2,409.6ZM445.5,424.2L443.9,428.3L447.7,430.9L450.7,429.7L448.0,441.4L441.1,444.3L436.1,439.6L440.4,436.3L440.0,431.6L442.2,424.2ZM420.5,423.2L407.5,427.5L411.2,415.9L419.8,409.8L421.8,412.9ZM443.4,402.2L439.5,406.5L428.8,406.1L431.4,399.5L441.6,394.3L445.0,397.5Z", 335, 395], ["Manhattan", "M355.5,54.0L359.8,55.2L359.6,58.6L361.1,60.5L362.6,59.7L361.5,57.1L364.0,60.3L365.0,58.4L370.5,59.5L372.8,62.7L370.5,69.8L368.5,73.2L366.8,73.0L367.4,74.7L363.0,80.7L360.7,79.0L362.0,81.7L351.9,100.1L346.3,114.4L346.9,151.0L352.7,163.0L352.4,170.5L337.3,188.3L336.6,191.3L338.7,198.5L337.7,200.6L307.0,244.6L305.7,256.0L303.5,255.9L305.4,256.4L303.6,256.7L306.8,268.1L301.2,290.6L296.3,293.0L278.1,294.9L274.7,297.3L274.5,300.1L272.4,299.0L272.8,300.2L271.1,300.2L272.2,301.6L270.2,300.9L271.4,302.7L269.9,301.2L268.9,301.8L270.3,303.4L270.1,303.6L268.7,301.9L266.0,304.2L267.6,304.8L267.0,306.1L265.7,304.4L264.0,304.9L264.3,306.7L259.8,306.6L255.1,298.3L256.8,288.7L258.1,289.7L258.4,287.9L256.9,288.4L258.0,280.5L261.9,280.1L260.3,277.8L262.0,278.1L263.4,270.2L259.6,269.5L263.6,269.3L263.7,266.8L260.5,266.5L260.9,263.3L264.0,263.6L264.2,260.0L260.9,259.5L264.4,259.4L263.0,258.5L264.3,258.2L264.8,251.2L262.4,249.0L265.8,249.0L262.9,247.5L265.7,247.9L266.2,245.9L262.9,245.0L266.4,244.5L266.6,243.1L263.3,242.1L265.8,241.9L263.5,240.6L266.0,240.4L263.7,239.2L266.2,239.0L263.9,237.7L266.9,232.7L265.2,231.8L265.3,231.6L267.0,232.4L270.8,224.7L268.5,222.6L271.9,222.3L273.5,219.4L271.1,218.0L274.4,217.8L272.1,216.2L275.0,216.7L272.6,214.8L276.4,216.5L273.6,213.6L277.2,215.0L277.9,213.6L274.3,211.6L278.1,213.2L278.9,211.8L275.3,209.8L279.1,211.4L279.9,210.0L276.3,208.0L279.2,209.1L277.1,206.6L280.0,207.6L281.5,205.2L279.1,203.7L282.0,203.9L279.6,202.3L282.3,203.8L280.2,201.6L282.6,202.8L284.4,200.0L288.0,193.5L285.1,193.7L288.0,193.2L291.7,185.4L289.9,185.6L291.0,184.2L291.8,185.4L292.6,183.8L291.2,183.8L292.6,183.7L320.5,133.9L319.7,131.8L321.2,132.8L319.7,130.8L328.6,118.3L334.2,102.1L333.3,92.7L338.8,87.8L349.0,68.3L351.6,58.7ZM361.0,163.4L368.4,170.7L369.1,173.4L367.7,176.0L357.6,189.8L353.7,191.8L346.2,188.8L345.5,185.0L349.0,179.2L351.9,176.9L353.7,177.6L355.8,177.8L355.8,176.4L355.3,176.2L356.4,176.2L355.1,176.1L353.9,177.5L354.7,176.1L353.5,175.5L354.9,171.0L354.6,164.0L356.7,161.7ZM254.7,316.8L263.3,317.7L261.6,318.4L263.3,319.8L261.8,323.9L257.6,325.7L259.7,326.3L257.1,327.9L257.5,325.8L251.6,329.3L252.1,330.1L251.1,331.4L251.4,329.4L247.6,328.7L247.5,326.7ZM338.9,208.7L327.3,225.7L317.5,236.6L335.7,207.6L340.7,203.1ZM376.8,56.7L374.4,61.8L367.0,56.7L372.9,52.0Z", 300, 190], ["The Bronx", "M372.9,0.0L427.8,21.4L427.7,18.6L429.2,18.8L430.3,14.6L431.5,14.6L430.7,13.4L434.0,11.0L433.1,9.4L436.9,7.4L434.3,11.4L443.6,14.2L443.5,16.2L447.3,16.2L450.6,30.6L499.6,45.8L496.8,49.6L494.8,57.5L489.3,64.1L488.4,61.3L487.4,63.2L488.8,66.1L485.7,66.2L482.9,63.2L487.0,69.6L488.8,69.1L488.7,70.8L494.4,61.6L497.6,60.3L499.4,54.8L498.1,54.0L499.7,51.7L503.3,48.8L503.3,52.0L508.9,52.9L505.8,61.0L508.1,59.7L507.9,62.4L509.7,59.5L510.2,63.9L507.6,67.2L505.0,65.1L501.3,67.5L500.0,73.2L500.8,77.9L497.9,80.7L498.1,84.1L493.4,86.3L494.4,90.6L491.7,96.0L487.5,88.6L486.8,76.8L485.6,76.3L485.4,79.3L483.6,78.6L483.7,81.2L480.2,75.7L476.9,73.3L475.7,74.8L474.3,77.4L478.3,80.7L478.7,87.4L474.3,87.5L473.5,91.5L475.7,94.5L474.6,98.4L476.2,97.3L475.1,98.6L477.2,97.2L477.4,97.4L475.8,99.8L478.1,98.6L477.7,100.1L477.9,100.2L478.1,100.3L477.8,100.2L478.1,100.2L478.6,98.3L478.8,98.3L478.1,100.3L478.5,100.5L479.4,98.1L478.3,101.6L478.5,100.5L477.3,100.4L476.7,100.7L477.6,102.2L476.5,103.2L475.1,101.4L472.3,101.4L476.1,105.6L476.6,108.1L474.2,110.9L475.9,120.4L478.2,124.3L481.3,124.4L477.1,126.4L478.1,127.0L477.1,128.5L478.9,128.2L476.9,130.1L484.5,128.4L487.0,137.5L494.8,142.1L490.6,146.9L488.7,146.8L486.5,142.3L484.9,140.9L486.5,142.9L487.1,143.7L487.0,143.9L484.4,141.0L486.6,146.2L489.6,150.0L501.9,154.1L502.2,158.1L499.2,158.6L490.0,151.8L487.8,152.4L481.3,146.2L474.5,144.8L459.4,149.1L457.3,152.5L457.9,157.5L451.6,155.7L448.4,146.7L450.0,133.0L446.3,123.2L450.1,116.6L449.1,108.2L449.3,116.1L445.5,122.1L448.8,136.2L446.7,137.8L442.2,149.4L436.8,144.1L432.2,144.2L438.9,147.1L438.1,152.4L439.4,152.8L440.1,157.6L431.5,158.0L428.1,155.6L428.4,149.9L427.1,150.9L427.9,151.8L427.9,152.9L426.5,150.9L418.9,149.5L415.6,143.9L409.4,141.6L415.8,147.4L418.5,155.0L413.9,164.3L413.5,162.9L407.6,162.7L407.3,160.7L400.2,161.5L395.7,156.2L394.7,157.5L395.5,156.1L391.9,155.5L392.9,157.4L389.3,154.8L389.1,156.4L381.6,157.5L371.4,169.4L363.4,166.0L359.3,161.2L354.2,160.7L348.5,150.2L348.2,114.4L353.1,100.9L359.7,88.8L370.8,73.9L376.8,56.7L372.9,52.0L364.8,56.8L359.5,52.2L357.1,52.2L362.0,39.7L371.6,2.5ZM396.1,166.4L398.4,167.4L401.6,170.7L413.3,176.8L415.5,181.8L413.1,184.7L407.4,185.4L395.8,182.6L391.8,174.8L392.9,169.2ZM502.6,81.1L504.9,82.6L504.5,87.1L506.2,87.6L505.0,88.4L510.0,91.1L509.1,93.3L511.9,94.2L510.7,96.0L512.6,95.5L510.8,96.1L512.0,96.4L511.3,98.1L513.2,97.7L510.9,98.5L510.3,100.4L511.7,99.8L510.0,101.3L509.9,102.4L510.5,102.0L513.0,101.1L513.7,102.1L509.9,102.4L510.5,104.0L513.4,102.2L510.5,104.1L513.0,103.6L511.3,105.2L513.2,104.0L513.4,104.7L511.6,105.2L512.8,105.8L510.6,112.8L508.4,111.2L507.5,111.8L507.3,111.6L507.4,108.7L504.8,106.9L500.9,98.0L503.1,94.0L501.7,92.7L503.3,91.5L500.1,91.1L502.6,90.1L499.4,91.1L502.4,89.0L499.8,89.8L501.9,88.8L499.7,89.2L501.7,87.8L500.2,88.2L501.7,87.7L500.1,87.9L501.4,86.8L500.6,84.6L499.9,84.5L499.9,84.3L499.4,84.3L499.4,84.1ZM529.5,86.2L525.1,89.7L524.8,96.8L526.7,100.1L525.5,100.3L522.7,96.9L523.5,93.7L521.2,90.3L522.5,89.8L521.2,87.9L522.0,79.1L525.0,80.1Z", 420, 100]];
export const NS_CFX = "";
export const NS_RULES = [["Community", [["18+ only", "Every resident is 18 or older. New York does not take responsibility for underage play."], ["Respect the people", "No harassment, hate or slurs, in the city, in the Discord or anywhere you represent New York."], ["Keep real life out", "Never share or dig up someone's real name, face, location or accounts."], ["Staff calls stand", "If staff step into a scene, follow the call and take any disagreement to a ticket afterward."]]], ["Roleplay", [["Play it straight", "No cheats, mod menus or exploits. Found a bug? Report it; don't use it."], ["Keep what you know in character", "Nothing from streams, Discord or outside calls that your character couldn't know."], ["Value your life", "A gun in your face is a gun in your face. Act the way a real person would, injuries included."], ["Violence needs a story", "No attacking people or ramming cars without an in-character reason and some interaction first."], ["Finish the scene", "Logging off to dodge a situation is an automatic 21-day suspension."]]], ["Characters", [["A name for a state ID", "No celebrity, joke or offensive names. Your character should read like a real New Yorker."], ["Report it properly", "Problems get reported after the scene in a Discord ticket, with a clip if you have one."]]]];
export const NS_FAQ = [["How do I get in?", "Join the Discord at discord.gg/badtimes, read the law and these rules, then apply in the server. If you're approved, whitelist access is a one-time $40, and you can connect using the New York launcher."], ["Does it cost anything to apply?", "No. Applying is free, and you're only charged for the whitelist after you're approved."], ["How old do I need to be?", "18 or older, to join the Discord, apply or play. New York does not take responsibility for anyone under 18 who plays anyway."], ["What do I need to play?", "A PC copy of Grand Theft Auto V, FiveM, a working microphone, and the Discord app open while you play."], ["Why did I lose my place in line?", "The line reads your Discord roles in real time. Leave the Discord or close the app and you drop out. Reconnecting again and again also sends you to the back."], ["My loading screen is frozen.", "Let the bar finish, press Esc once, and restart FiveM if it still hangs."], ["Can I have more than one character?", "Yes. Each keeps their own money, skills and history."], ["How do I join the NYPD or FDNY EMS?", "Apply through the Discord. Recruits train in the city once they're accepted. Mechanics are hired in person by the shop owner."], ["Does buying something give me an edge?", "Priority gets you in faster on busy nights. Nothing you buy overrides the law, the rules or a staff decision."], ["Can I get a refund?", "No. Payments are final, and access doesn't transfer between accounts."], ["How do I report a player or appeal a decision?", "Open a ticket in the Discord after the scene ends. A clip is the fastest way to a decision."]];
export const NS_NEWS = [["Sep 25, 2026", "Site", "New Rules stop and FAQ", "Rules for players now have their own stop, with answers to common questions. The law table is easier to read, and the site works better on phones."]];
export const NS_KEYS = [["Everyday", [["F1", "Phone"], ["F2", "Inventory"], ["F6", "Jobs and duty"], ["F9", "Radio"], ["B", "Talk on the radio"], ["F11", "Voice range"], ["E", "Interact"], ["INSERT", "Hide the HUD"]]], ["Driving", [["F5", "Keys: lock, unlock, share"], ["G", "Engine on or off"], ["H", "Lean out of the window"], ["E", "Switch seats (while seated)"]]], ["Firearms", [["F3", "Grips"], ["K", "Sling a long gun (police)"]]], ["Public safety", [["F7", "EMS dispatch"], ["F10", "Police notebook / EMS menu"]]], ["Commands", [["/bank", "Bank menu at a teller"], ["/watermark", "Watermark settings"]]]];
export const NSHome = () => {
  const ids = NS_PAGES.map(p => p[0]);
  const read = () => {
    if (typeof window === "undefined") return "home";
    const h = window.location.hash.slice(1);
    return ids.includes(h) ? h : "home";
  };
  const [pg, setPg] = useState("home");
  const [grp, setGrp] = useState("All");
  const [q, setQ] = useState("");
  const [kd, setKd] = useState("All");
  const [bo, setBo] = useState("Manhattan");
  const [hv, setHv] = useState(null);
  const [live, setLive] = useState(null);
  useEffect(() => {
    const k = e => {
      if (e.key !== "/" || (/INPUT|TEXTAREA|SELECT/).test(e.target && e.target.tagName || "")) return;
      const i = document.querySelector(".ns input[data-law]");
      if (i) {
        e.preventDefault();
        i.focus();
      }
    };
    window.addEventListener("keydown", k);
    return () => window.removeEventListener("keydown", k);
  }, []);
  useEffect(() => {
    let on = true;
    const load = async () => {
      const r = {};
      try {
        const d = await fetch("https://discord.com/api/v10/invites/badtimes?with_counts=true").then(x => x.json());
        if (d && d.approximate_member_count) {
          r.on = d.approximate_presence_count;
          r.mem = d.approximate_member_count;
        }
      } catch (e) {}
      if (NS_CFX) {
        try {
          const f = await fetch("https://servers-frontend.fivem.net/api/servers/single/" + NS_CFX).then(x => x.json());
          const D = f && f.Data || ({});
          if (typeof D.clients === "number") {
            r.pl = D.clients;
            r.max = D.sv_maxclients || D.svMaxclients;
          }
        } catch (e) {}
      }
      if (on) setLive(r);
    };
    load();
    const t = setInterval(load, 60000);
    return () => {
      on = false;
      clearInterval(t);
    };
  }, []);
  useEffect(() => {
    setPg(read());
    const f = () => {
      setPg(read());
      window.scrollTo(0, 0);
    };
    window.addEventListener("hashchange", f);
    return () => window.removeEventListener("hashchange", f);
  }, []);
  const go = id => e => {
    e.preventDefault();
    if (window.location.hash !== "#" + id) window.location.hash = id; else setPg(id);
  };
  const groups = ["All", ...Array.from(new Set(NS_LAW.map(r => r[0])))];
  const fel = c => c.endsWith("felony");
  const kind = c => c === "Violation" ? "Violation" : fel(c) ? "Felony" : "Misdemeanor";
  const nf = n => Number(n).toLocaleString("en-US");
  const qq = q.trim().toLowerCase();
  const rows = NS_LAW.filter(r => (grp === "All" || r[0] === grp) && (kd === "All" || kind(r[3]) === kd) && (!qq || (r[0] + " " + r[1] + " " + r[2] + " " + r[4]).toLowerCase().includes(qq)));
  const hl = t => {
    if (!qq) return t;
    const i = t.toLowerCase().indexOf(qq);
    if (i < 0) return t;
    return <>{t.slice(0, i)}<mark>{t.slice(i, i + qq.length)}</mark>{t.slice(i + qq.length)}</>;
  };
  const cur = NS_BOROS.find(b => b[0] === bo) || NS_BOROS[0];
  const act = hv || bo;
  const Band = ({t, n}) => <div className="ns-band"><div className="ns-w"><h2>{t}</h2><span className="ns-note">{n}</span></div></div>;
  return <div className="ns">
      <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Archivo:wdth,wght@62..125,400..900&amp;family=JetBrains+Mono:wght@400;600&amp;display=swap" />
      <style>{NS_CSS}</style>
      <nav className="ns-line" aria-label="Site">
        <div className="ns-w">
          <a className="ns-logo" href="#home" onClick={go("home")}><span className="ns-b" style={{
    background: "var(--red)"
  }}>NY</span>New York</a>
          <div className="ns-stations"><ol>{NS_PAGES.map(([id, n]) => <li key={id}><a href={"#" + id} onClick={go(id)} aria-current={pg === id ? "page" : undefined}><span>{n}</span></a></li>)}</ol></div>
          <a className="ns-btn ns-red" href="https://discord.gg/badtimes">Discord ↗</a>
        </div>
      </nav>
      {pg === "home" && <section>
        <div className="ns-platform"><div className="ns-w">
          <div className="ns-hero">
            <div className="ns-hl">
              <div className="ns-row">
                {NS_BOROS.map(([n, c]) => <span key={n} className={"ns-b" + (c === "--lG" ? " ns-k" : "")} style={{
    background: "var(" + c + ")"
  }} title={n}>{n === "The Bronx" ? "X" : n[0]}</span>)}
                <span className="ns-mono ns-tagline">FiveM · Whitelisted · 18+</span>
              </div>
              <h1>New York</h1>
              <p className="ns-sub">New York at full scale. Every borough mapped block for block, and a city that holds you to its laws.</p>
              <div className="ns-cta"><a className="ns-btn ns-red" href="#arrive" onClick={go("arrive")}>Get in</a><a className="ns-btn ns-out" href="https://discord.gg/badtimes">Join the Discord ↗</a></div>
              <div className="ns-live" aria-live="polite">
                {live === null && <span><i className="ns-dot ns-off" />Checking the line…</span>}
                {live && typeof live.pl === "number" && <span><i className="ns-dot" />In the city <b>{nf(live.pl)}{live.max ? " / " + nf(live.max) : ""}</b></span>}
                {live && typeof live.on === "number" && <span><i className="ns-dot" />Discord <b>{nf(live.on)}</b> online · {nf(live.mem)} members</span>}
              </div>
            </div>
            <div className="ns-heromap">
              <svg viewBox="0 0 600 597" role="group" aria-label="The five boroughs. Choose one to explore it.">{NS_MAP.map(([n, d, x, y]) => {
    const b = NS_BOROS.find(r => r[0] === n);
    return <a key={n} href="#boroughs" aria-label={n} onClick={e => {
      setBo(n);
      go("boroughs")(e);
    }} style={{
      "--c": "var(" + b[1] + ")"
    }}><path d={d} /><text x={x} y={y} textAnchor="middle">{n}</text></a>;
  })}</svg>
            </div>
          </div>
          <div className="ns-dirs">
            <div><span className="ns-ar">↑</span><div>Uptown & The Bronx<small>Harlem · East Harlem · Fordham</small></div></div>
            <div><span className="ns-ar">↓</span><div>Downtown & Brooklyn<small>Chinatown · Downtown · Prospect Park</small></div></div>
          </div>
        </div></div>
        <div className="ns-w"><div className="ns-facts">
          <div className="ns-fact"><b>1:1</b><span>Every street where it sits in the real city</span></div>
          <div className="ns-fact"><b>5</b><span>Boroughs, complete: Manhattan, the Bronx, Brooklyn, Queens and Staten Island</span></div>
          <div className="ns-fact"><b>~300</b><span>Square miles of land, the size of the real New York City</span></div>
          <div className="ns-fact"><b>$4</b><span>Flat bus fare anywhere in the city</span></div>
        </div></div>
        <div className="ns-w ns-sec">
          <p className="ns-eyebrow">Where to go</p>
          <h2 style={{
    font: "850 clamp(28px,3.6vw,42px)/1.05 var(--sans)",
    letterSpacing: "-.03em",
    margin: "10px 0 22px"
  }}>Pick a stop.</h2>
          <div className="ns-tiles">
            {[["arrive", "1", "--red", "Get in", "Three steps from Discord to your first night in the city.", "Arrive →"], ["boroughs", "2", "--lB", "The boroughs", "All five, at real scale, neighborhood by neighborhood.", "Explore →"], ["work", "3", "--lA", "Work", "Police, EMS, the garage, or nothing at all.", "Get hired →"], ["law", "4", "--l4", "The law", "New York's own statutes. Break them and the case follows you.", "Read →"], ["controls", "5", "--l7", "Controls", "Every default key and command on one card.", "Keys →"], ["store", "6", "--lN", "Store", "Ways to support the servers, bought through a Discord ticket.", "Browse →"], ["rules", "7", "--lL", "Rules", "The conduct rules for players, plus answers to common questions.", "Read →"], ["news", "8", "--lG", "News", "What's changed in the city, newest first.", "Catch up →"]].map(([id, n, c, t, d, g]) => <a className="ns-tile" key={id} href={"#" + id} onClick={go(id)}><h3><span className={"ns-b" + (c === "--lN" ? " ns-k" : "")} style={{
    "--c": "var(" + c + ")"
  }}>{n}</span>{t}</h3><p>{d}</p><span className="ns-go">{g}</span></a>)}
          </div>
          <p className="ns-fine">New York is for players 18 or older. New York does not take responsibility for underage play.</p>
        </div>
      </section>}
      {pg === "arrive" && <section>
        <Band t="Arrive" n="Discord · Whitelist · FiveM" />
        <div className="ns-w ns-sec ns-split">
          <div>
            <p className="ns-lead">Nobody wanders in. Every resident comes through the Discord first.</p>
            <ol className="ns-steps" style={{
    marginTop: "18px"
  }}>
              <li><div><h3>Join the Discord</h3><p>Go to <span className="ns-cmd">discord.gg/badtimes</span> for the community, applications and support.</p></div></li>
              <li><div><h3>Apply for the whitelist</h3><p>Read <a href="#law" onClick={go("law")}>the law</a> and <a href="#rules" onClick={go("rules")}>the conduct standards</a>, then apply in the server. Applying is free. If you're approved, whitelist access is a one-time $40.</p></div></li>
              <li><div><h3>Connect</h3><p>Open the <b>New York launcher</b>, sign in and select <b>Enter the City</b>. Keep the launcher open while you play; closing it ends your linked FiveM session.</p></div></li>
              <li><div><h3>Make your person</h3><p>Your first load opens character creation. Give them a name that belongs on a state ID. You can make more than one character later, and each keeps their own money, skills and history.</p></div></li>
            </ol>
          </div>
          <div style={{
    display: "grid",
    gap: "14px"
  }}>
            <div className="ns-panel" style={{
    borderColor: "var(--red)"
  }}><h3>18+ only</h3><p style={{
    color: "var(--soft)",
    fontSize: "14.5px"
  }}>Every resident is 18 or older. New York does not take responsibility for underage play.</p></div>
            <div className="ns-panel"><h3>Who gets in first</h3>
              <ol className="ns-q">
                <li><span className="ns-pos">01</span><span className="ns-b" style={{
    fontSize: "11px"
  }}>F</span>Founders and staff</li>
                <li><span className="ns-pos">02</span><span className="ns-b ns-k" style={{
    fontSize: "11px",
    "--c": "var(--lN)"
  }}>S</span>Supporters and priority holders</li>
                <li><span className="ns-pos">03</span><span className="ns-b" style={{
    fontSize: "11px",
    "--c": "var(--lL)"
  }}>W</span>Whitelisted residents</li>
              </ol></div>
            <div className="ns-panel"><h3>In your pockets on day one</h3>
              <div className="ns-pocket"><span>Phone</span><span>State ID</span><span>A little cash</span></div>
              <p style={{
    color: "var(--soft)",
    fontSize: "14.5px"
  }}>Open a Chase account first: four branches, and a debit card for paying at the register. Then eat something; hunger and thirst count.</p></div>
            <div className="ns-panel"><h3>Frozen loading screen?</h3>
              <p style={{
    color: "var(--soft)",
    fontSize: "14.5px"
  }}>Let the bar finish, press <kbd>Esc</kbd> once, and restart FiveM if it still hangs. Reconnecting again and again sends you to the back of the line.</p></div>
          </div>
        </div>
      </section>}
      {pg === "boroughs" && <section>
        <Band t="The Boroughs" n="1:1 · Five boroughs" />
        <div className="ns-w ns-sec">
          <p className="ns-lead">All five boroughs are built at real scale, on the real street grid. If you know New York, you already know your way around. No car yet? A flat $4 bus fare gets you across town.</p>
          <div className="ns-atlas">
            <div>
              <div className="ns-mapcard">
                <svg viewBox="0 0 600 597" role="group" aria-label="Map of the five boroughs of New York City">{NS_MAP.map(([n, d, x, y]) => {
    const b = NS_BOROS.find(r => r[0] === n);
    return <g key={n} tabIndex={0} role="button" aria-label={n} aria-pressed={bo === n} data-dim={act !== n} style={{
      "--c": "var(" + b[1] + ")"
    }} onClick={() => setBo(n)} onMouseEnter={() => setHv(n)} onMouseLeave={() => setHv(null)} onFocus={() => setHv(n)} onBlur={() => setHv(null)} onKeyDown={e => {
      if (e.key === "Enter" || e.key === " ") {
        e.preventDefault();
        setBo(n);
      }
    }}><path d={d} /><text x={x} y={y} textAnchor="middle">{n}</text></g>;
  })}</svg>
                <span className="ns-north">N<span>↑</span></span>
                <span className="ns-water" style={{
    top: "16px",
    bottom: "auto"
  }}>Five boroughs · drawn to scale</span>
              </div>
              <div className="ns-pick" role="toolbar" aria-label="Choose a borough">{NS_BOROS.map(([n, c]) => <button type="button" key={n} aria-pressed={bo === n} style={{
    "--c": "var(" + c + ")"
  }} onClick={() => setBo(n)}><i />{n}</button>)}</div>
            </div>
            <article className="ns-boro" style={{
    "--c": "var(" + cur[1] + ")"
  }}><div className="ns-bh"><h4>{cur[0]}</h4><span className="ns-area">{cur[2]}</span></div><p>{cur[3]}</p><div className="ns-hoods">{cur[4].map(x => <span key={x}>{x}</span>)}</div></article>
          </div>
          <p className="ns-fine">Neighborhoods shown are a sample; every one in the real city is there. The map marks public places like banks, stores, the precinct and the hospital. The rest you find by asking. There's also a rental counter by the bus terminal for cheap hourly cars; bring them back, or they're reported stolen. Every resident is 18 or older, and New York does not take responsibility for underage play.</p>
        </div>
      </section>}
      {pg === "work" && <section>
        <Band t="Work" n="Up to 4 jobs · switch with F6" />
        <div className="ns-w ns-sec">
          <p className="ns-lead">Hold up to four jobs and work one shift at a time. Clocking in turns on your pay, your radio and your tools; clocking out turns them off. Every job is for residents 18 or older, and New York does not take responsibility for underage play.</p>
          <div className="ns-jobs" style={{
    marginTop: "22px"
  }}>
            <article className="ns-job"><header><span className="ns-b" style={{
    "--c": "var(--lA)"
  }}>P</span><h3>NYPD</h3><span className="ns-tag ns-r">Apply</span></header><p>Based at the Harlem Precinct. Applications go through the Discord, and recruits train in the city. Patrol carries an MDT, body cameras, drones and K9, and the precinct runs its own forensics lab.</p></article>
            <article className="ns-job"><header><span className="ns-b">E</span><h3>FDNY EMS</h3><span className="ns-tag ns-r">Apply</span></header><p>Apply through the Discord. Crews answer medical calls, treat wounds body part by body part, and bring the worst cases into the hospital.</p></article>
            <article className="ns-job"><header><span className="ns-b ns-k" style={{
    "--c": "var(--lN)"
  }}>M</span><h3>Mechanic</h3><span className="ns-tag">Hired in person</span></header><p>There's no application. The shop owner decides who works the bays: repairs, tuning, bodywork and mileage checks.</p></article>
            <article className="ns-job"><header><span className="ns-b" style={{
    "--c": "var(--lL)"
  }}>C</span><h3>Civilian</h3><span className="ns-tag">Everyone</span></header><p>Where every resident begins. No shift and no paycheck, just the city.</p></article>
          </div>
        </div>
      </section>}
      {pg === "law" && <section>
        <Band t="The Law" n="NY Penal Law · VTL" />
        <div className="ns-w ns-sec">
          <p className="ns-lead">The city runs on New York's statutes. Commit a crime and you'll face the charge that fits it, graded the way a Manhattan court would grade it.</p>
          <div className="ns-lawbar">
            <label className="ns-search"><span aria-hidden="true" style={{
    color: "var(--soft)"
  }}>⌕</span><input type="text" data-law="1" value={q} onChange={e => setQ(e.target.value)} placeholder="Search offenses, statutes or conduct" aria-label="Search the law" />{q && <button type="button" onClick={() => setQ("")} aria-label="Clear search" style={{
    border: 0,
    background: "none",
    color: "var(--soft)",
    cursor: "pointer",
    font: "600 18px var(--sans)"
  }}>×</button>}{!q && <kbd aria-hidden="true">/</kbd>}</label>
            <div className="ns-seg" role="toolbar" aria-label="Filter by class">{["All", "Felony", "Misdemeanor", "Violation"].map(k => <button type="button" key={k} aria-pressed={kd === k} onClick={() => setKd(k)}>{k}</button>)}</div>
          </div>
          <div className="ns-groups" role="toolbar" aria-label="Filter offenses">{groups.map(g => <button type="button" key={g} aria-pressed={grp === g} onClick={() => setGrp(g)}>{g}</button>)}</div>
          <p className="ns-count">{rows.length} of {NS_LAW.length} offenses</p>
          <div className="ns-tablewrap"><table className="ns-law"><thead><tr><th>Offense</th><th>Statute</th><th>Class</th><th>What it covers</th></tr></thead>
            <tbody>{rows.map(r => <tr key={r[2] + r[1]}><td>{hl(r[1])}</td><td>{hl(r[2])}</td><td><span className={"ns-cls" + (fel(r[3]) ? " ns-f" : "")} title={kind(r[3])}>{r[3]}</span></td><td style={{
    color: "var(--soft)"
  }}>{hl(r[4])}</td></tr>)}</tbody></table>{rows.length === 0 && <p className="ns-empty">No offense matches that. Try a statute number like 265 or a word like “larceny”.</p>}</div>
          <h3 style={{
    font: "800 22px/1.2 var(--sans)",
    marginTop: "36px"
  }}>Out of character</h3>
          <p className="ns-lead" style={{
    marginTop: "6px",
    fontSize: "16px"
  }}>These apply to players, not characters. Staff enforce them directly. Every player must be 18 or older, and New York does not take responsibility for underage play.</p>
          <div className="ns-oath">
            <div><b>Respect the people</b><span>No harassment or hate, here or anywhere else. Never share someone's real details.</span></div>
            <div><b>Play it straight</b><span>No cheats, exploits or information from outside the city. Moving like a real body is part of it.</span></div>
            <div><b>Finish the scene</b><span>Logging off to dodge a situation is an automatic 21-day suspension. Report problems afterward.</span></div>
          </div>
          <p className="ns-fine">Written for roleplay, not legal advice. Class letters follow New York law: felonies run from A (most serious) to E, misdemeanors are A or B, and U means unclassified. A violation is not a crime.</p>
          <p className="ns-fine">Rules for players, and answers to common questions, are on the <a href="#rules" onClick={go("rules")}>Rules</a> stop.</p>
        </div>
      </section>}
      {pg === "controls" && <section>
        <Band t="Controls" n="Rebind in Settings → Key Bindings → FiveM" />
        <div className="ns-w ns-sec">
          <p className="ns-lead">If a key stops responding after an update, rebind it. FiveM remembers the first default it ever saw. The city is for players 18 or older, and New York does not take responsibility for underage play.</p>
          <div className="ns-keys" style={{
    marginTop: "22px"
  }}>{NS_KEYS.map(([t, rows]) => <div className="ns-kg" key={t}><h3>{t}</h3><dl>{rows.flatMap(([k, v]) => [<dt key={k + "k"}><kbd>{k}</kbd></dt>, <dd key={k + "v"}>{v}</dd>])}</dl></div>)}</div>
        </div>
      </section>}
      {pg === "rules" && <section>
        <Band t="Rules" n="Conduct · Questions" />
        <div className="ns-w ns-sec">
          <p className="ns-lead">The law covers characters. These rules cover players. Staff enforce them directly, and read your application with them in mind.</p>
          <div className="ns-rulebook">{NS_RULES.map(([g, items]) => <div key={g} style={{
    marginTop: "34px"
  }}><h3 className="ns-h3">{g}</h3><ol className="ns-rules">{items.map(([t, x]) => <li key={t}><b>{t}</b><span>{x}</span></li>)}</ol></div>)}</div>
          <h3 className="ns-h3" style={{
    marginTop: "48px"
  }}>Questions</h3>
          <div className="ns-faq">{NS_FAQ.map(([qn, a]) => <details key={qn}><summary>{qn}</summary><p>{a}</p></details>)}</div>
          <p className="ns-fine">Something not covered here? Ask in the Discord before you act on it.</p>
        </div>
      </section>}
      {pg === "store" && <section>
        <Band t="Store" n="Bought through a Discord ticket" />
        <div className="ns-w ns-sec">
          <p className="ns-lead">Every purchase pays for hosting and development. Choose an item, then open a <span className="ns-cmd">#store</span> ticket naming it.</p>
          <div className="ns-cards" style={{
    marginTop: "22px"
  }}>
            <article className="ns-mc" style={{
    "--c": "var(--red)"
  }}><div className="ns-top"><span>Access</span><span>NY</span></div><div><h3>Whitelist</h3><p>Lifetime access for one Discord and FiveM account. Charged only after your application is approved.</p></div><span className="ns-p">$40</span></article>
            <article className="ns-mc" style={{
    "--c": "var(--lN)"
  }}><div className="ns-top"><span>Cosmetic</span><span>NY</span></div><div><h3>Height Menu</h3><p>Set your character's height.</p></div><span className="ns-p">$15</span></article>
          </div>
          <p className="ns-fine">You must be 18 or older to buy anything, and New York does not take responsibility for underage play. Applying is free, and nobody pays for the whitelist before approval. Payments are final after that: no refunds, chargebacks or exchanges. Access doesn't transfer between accounts. Buying something never overrides the law, <a href="#rules" onClick={go("rules")}>the conduct standards</a> or a staff decision.</p>
          <div className="ns-cta" style={{
    marginTop: "18px"
  }}><a className="ns-btn ns-red" href="https://discord.gg/badtimes">Open a ticket ↗</a></div>
        </div>
      </section>}
      {pg === "news" && <section>
        <Band t="News" n="Updates · Changelog" />
        <div className="ns-w ns-sec">
          <p className="ns-lead">What's changed in the city, newest first.</p>
          <ol className="ns-news">{NS_NEWS.map(([dt, tag, t, x]) => <li key={dt + t}><div className="ns-nh"><span className="ns-mono">{dt}</span><span className="ns-tag">{tag}</span></div><h3>{t}</h3><p>{x}</p></li>)}</ol>
        </div>
      </section>}
      <footer className="ns-foot"><div className="ns-w"><span>New York · FiveM</span><span>Not affiliated with the MTA, NYPD, FDNY or the City of New York</span><span>18+ only. New York does not take responsibility for underage play.</span></div></footer>
    </div>;
};

<NSHome />
