This commit is contained in:
zzh 2026-05-05 18:14:43 +08:00
parent 12b6e261e1
commit d572493115
183 changed files with 113352 additions and 2559 deletions

13
_diff_h4.txt Normal file
View File

@ -0,0 +1,13 @@
A_H4=66 B_H4=60
--- only in A H4 ---
#### 分区表(黑名单区/偏远分区/价格分区共用)`t_kpi_area`
#### 黑名单区 / 偏远分区 / 价格分区(共用 KpiArea)
#### 国家表 `t_country`
#### 字典表 `t_dict`
#### 公告通知表 `t_notice`
#### 通知已读明细表 `t_notice_read`
#### 通知类型
#### 接收对象类型
--- only in B H4 ---
#### 分区表(黑名单区/偏远分区/预警分区共用)`t_kpi_area`
#### 黑名单区 / 偏远分区 / 预警分区(共用 KpiArea)

15
_diff_headings.txt Normal file
View File

@ -0,0 +1,15 @@
A_lines=5054
B_lines=3652
A_H2=9 B_H2=8
A_H3=25 B_H3=23
--- only in A H2 ---
## 需求迭代目录(按日期管理)
--- only in B H2 ---
--- only in A H3 (first 80) ---
### 1.2 表结构设计公共规范
### 1.3 接口设计公共规范
### 迭代记录模板(新增迭代时复制)
### 附录二:分区类型说明(黑名单/偏远/价格)
--- only in B H3 (first 80) ---
### 1.2 表结构设计规范
### 附录二:分区类型说明(黑名单/偏远/预警)

5
_iter_diff_extract.txt Normal file
View File

@ -0,0 +1,5 @@
TABLE_ADDED
TABLE_DELETED
API_ADDED
API_DELETED
API_NAME_CHANGED

8
_iter_diff_extract2.txt Normal file
View File

@ -0,0 +1,8 @@
oldTables=35
newTables=39
oldApis=0
newApis=55
TABLE_ADD
TABLE_DEL
API_ADD
API_DEL

12
_iter_diff_extract3.txt Normal file
View File

@ -0,0 +1,12 @@
oldTables=35
newTables=39
oldApis=0
newApis=55
TABLE_ADD
t_country
t_dict
t_notice
t_notice_read
TABLE_DEL
API_ADD
API_DEL

51
_iter_diff_precise.txt Normal file
View File

@ -0,0 +1,51 @@
TABLE_ADD
t_country
t_dict
t_notice
t_notice_read
TABLE_DEL
API_ADD
GET /system/country/list | 国家列表
GET /system/dict/list | 字典列表
GET /system/notice/list | 通知列表
POST /channel/kpi-area/create | 创建分区
POST /channel/kpi-area/delete | 删除分区
POST /channel/kpi-area/info/add | 新增分区明细
POST /channel/kpi-area/info/delete | 删除分区明细
POST /channel/kpi-area/info/list | 分区明细列表
POST /channel/kpi-area/info/update | 修改分区明细
POST /channel/kpi-area/list | 分区列表
POST /channel/kpi-area/update | 修改分区
POST /channel/service-channel/group/create | 新增服务商
POST /channel/service-channel/group/delete | 删除服务商
POST /channel/service-channel/group/update | 编辑服务商
POST /order/parcel/batch-create | 批量创建小包
POST /system/dict/create | 新增字典
POST /system/dict/delete | 删除字典
POST /system/dict/update | 更新字典
POST /system/notice/create | 新增通知
POST /system/notice/delete | 删除通知
POST /system/notice/read-confirm | 确认已读
POST /system/notice/update | 编辑通知
API_DEL
POST /channel/sales-product/config/save | 保存产品配置
POST /channel/service-channel/config/save | 保存渠道配置
POST Track/ForewarningService/KpiArea/AddAreaInfo | 新增分区明细
POST Track/ForewarningService/KpiArea/CreateKpiArea | 创建分区
POST Track/ForewarningService/KpiArea/DeleteKpiArea | 删除分区
POST Track/ForewarningService/KpiArea/DeleteKpiAreaInfo | 删除分区明细
POST Track/ForewarningService/KpiArea/GetKpiAreaInfos | 分区明细列表
POST Track/ForewarningService/KpiArea/GetKpiAreas | 分区列表
POST Track/ForewarningService/KpiArea/ModifyKpiArea | 修改分区
POST Track/ForewarningService/KpiArea/ModifyKpiAreaInfo | 修改分区明细
API_UPD
COUNTS
old_tables=35
new_tables=39
old_apis=100
new_apis=112
add_tables=4
del_tables=0
add_apis=22
del_apis=10
upd_apis=0

View File

@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/png" href="/src/assets/logo.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>nanafa-哪哪发物流,发哪都方便</title>
<title>Nanafa Express|Faster & Simpler</title>
<link rel="stylesheet" type="text/css" media="print" href="/print-lock.css" />
<!-- DNS 预解析,加速资源加载 -->
<link rel="dns-prefetch" href="//43.139.210.35" />

14
nanafa/404.html Normal file
View File

@ -0,0 +1,14 @@
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
<script src="assets/js/main.js"></script>
</body>
</html>

522
nanafa/about.html Normal file
View File

@ -0,0 +1,522 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<title>Nanafa Express - About</title>
<meta content="" name="description">
<meta content="" name="keywords">
<!-- Favicons -->
<link href="assets/img/favicon.png" rel="icon">
<link href="assets/img/apple-touch-icon.png" rel="apple-touch-icon">
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,600;1,700&family=Poppins:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Inter:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap" rel="stylesheet">
<!-- Vendor CSS Files -->
<link href="assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="assets/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
<link href="assets/vendor/fontawesome-free/css/all.min.css" rel="stylesheet">
<link href="assets/vendor/glightbox/css/glightbox.min.css" rel="stylesheet">
<link href="assets/vendor/swiper/swiper-bundle.min.css" rel="stylesheet">
<link href="assets/vendor/aos/aos.css" rel="stylesheet">
<!-- Template Main CSS File -->
<link href="assets/css/main.css" rel="stylesheet">
</head>
<body>
<!-- ======= Header ======= -->
<header id="header" class="header d-flex align-items-center fixed-top">
<div class="container-fluid container-xl d-flex align-items-center justify-content-between">
<a href="index.html" class="logo d-flex align-items-center">
<img src="assets/img/logo1.png" alt="Nanafa logo">
<h1>Nanafa Express</h1>
</a>
<i class="mobile-nav-toggle mobile-nav-show bi bi-list"></i>
<i class="mobile-nav-toggle mobile-nav-hide d-none bi bi-x"></i>
<nav id="navbar" class="navbar">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="about.html" class="active">About</a></li>
<li><a href="services.html">Services</a></li>
<li><a href="pricing.html">Pricing</a></li>
<li><a href="contact.html">Contact</a></li>
<li><a class="get-a-quote" href="https://oms.nanafa.com/login">Start Shipping</a></li>
<li><a class="get-a-quote wms-link" href="https://c.nanafa.com/" target="_blank" rel="noopener">WMS(Old)</a></li>
<li><a class="get-a-quote wms-link" href="https://wms.nanafa.com/" target="_blank" rel="noopener">WMS(New)</a></li>
</ul>
</nav><!-- .navbar -->
</div>
</header><!-- End Header -->
<!-- End Header -->
<main id="main">
<!-- ======= Breadcrumbs ======= -->
<div class="breadcrumbs">
<div class="page-header d-flex align-items-center" style="background-image: url('assets/img/page-header.jpg');">
<div class="container position-relative">
<div class="row d-flex justify-content-center">
<div class="col-lg-6 text-center">
<h2>About</h2>
<p>We provide transparent pricing, stable transit timelines, and responsive support to help cross-border businesses ship with confidence.</p>
</div>
</div>
</div>
</div>
<nav>
<div class="container">
<ol>
<li><a href="index.html">Home</a></li>
<li>About</li>
</ol>
</div>
</nav>
</div><!-- End Breadcrumbs -->
<!-- ======= About Us Section ======= -->
<section id="about" class="about">
<div class="container" data-aos="fade-up">
<div class="row gy-4">
<div class="col-lg-6 position-relative align-self-start order-lg-last order-first">
<img src="assets/img/about.jpg" class="img-fluid" alt="">
<a href="#" class="glightbox play-btn"></a>
</div>
<div class="col-lg-6 content order-last order-lg-first">
<h3>About Us</h3>
<p>
Nanafa Express focuses on international logistics operations with stable timelines, clear tracking, and transparent pricing to make global fulfillment faster and simpler.
</p>
<ul>
<li data-aos="fade-up" data-aos-delay="100">
<i class="bi bi-diagram-3"></i>
<div>
<h5>Global routes with predictable transit times</h5>
<p>Integrated routes and carriers help us keep lead times short and delivery quality consistent.</p>
</div>
</li>
<li data-aos="fade-up" data-aos-delay="200">
<i class="bi bi-fullscreen-exit"></i>
<div>
<h5>Real-time tracking with proactive exception control</h5>
<p>Every shipment is visible from pickup to delivery, with proactive alerts for delays or issues.</p>
</div>
</li>
<li data-aos="fade-up" data-aos-delay="300">
<i class="bi bi-broadcast"></i>
<div>
<h5>Dedicated account support and response SLA</h5>
<p>Our specialists respond fast with SLA-backed support so operations stay smooth and simple.</p>
</div>
</li>
</ul>
</div>
</div>
</div>
</section><!-- End About Us Section -->
<!-- ======= Stats Counter Section ======= -->
<section id="stats-counter" class="stats-counter pt-0">
<div class="container" data-aos="fade-up">
<div class="row gy-4">
<div class="col-lg-3 col-md-6">
<div class="stats-item text-center w-100 h-100">
<span data-purecounter-start="0" data-purecounter-end="232" data-purecounter-duration="1" class="purecounter"></span>
<p>Clients</p>
</div>
</div><!-- End Stats Item -->
<div class="col-lg-3 col-md-6">
<div class="stats-item text-center w-100 h-100">
<span data-purecounter-start="0" data-purecounter-end="521" data-purecounter-duration="1" class="purecounter"></span>
<p>Projects</p>
</div>
</div><!-- End Stats Item -->
<div class="col-lg-3 col-md-6">
<div class="stats-item text-center w-100 h-100">
<span data-purecounter-start="0" data-purecounter-end="1453" data-purecounter-duration="1" class="purecounter"></span>
<p>Hours Of Support</p>
</div>
</div><!-- End Stats Item -->
<div class="col-lg-3 col-md-6">
<div class="stats-item text-center w-100 h-100">
<span data-purecounter-start="0" data-purecounter-end="32" data-purecounter-duration="1" class="purecounter"></span>
<p>Workers</p>
</div>
</div><!-- End Stats Item -->
</div>
</div>
</section><!-- End Stats Counter Section -->
<!-- ======= Our Team Section ======= -->
<section id="team" class="team pt-0">
<div class="container" data-aos="fade-up">
<div class="section-header">
<span>Our Team</span>
<h2>Our Team</h2>
</div>
<div class="row" data-aos="fade-up" data-aos-delay="100">
<div class="col-lg-4 col-md-6 d-flex">
<div class="member">
<img src="assets/img/team/team-1.jpg" class="img-fluid" alt="">
<div class="member-content">
<h4>Walter White</h4>
<span>Web Development</span>
<p>
Our operations team standardizes every fulfillment step to improve predictability and customer satisfaction.
</p>
<div class="social">
<a href=""><i class="bi bi-twitter"></i></a>
<a href=""><i class="bi bi-facebook"></i></a>
<a href=""><i class="bi bi-instagram"></i></a>
<a href=""><i class="bi bi-linkedin"></i></a>
</div>
</div>
</div>
</div><!-- End Team Member -->
<div class="col-lg-4 col-md-6 d-flex">
<div class="member">
<img src="assets/img/team/team-2.jpg" class="img-fluid" alt="">
<div class="member-content">
<h4>Sarah Jhinson</h4>
<span>Marketing</span>
<p>
Repellat fugiat adipisci nemo illum nesciunt voluptas repellendus. In architecto rerum rerum temporibus
</p>
<div class="social">
<a href=""><i class="bi bi-twitter"></i></a>
<a href=""><i class="bi bi-facebook"></i></a>
<a href=""><i class="bi bi-instagram"></i></a>
<a href=""><i class="bi bi-linkedin"></i></a>
</div>
</div>
</div>
</div><!-- End Team Member -->
<div class="col-lg-4 col-md-6 d-flex">
<div class="member">
<img src="assets/img/team/team-3.jpg" class="img-fluid" alt="">
<div class="member-content">
<h4>William Anderson</h4>
<span>Content</span>
<p>
Voluptas necessitatibus occaecati quia. Earum totam consequuntur qui porro et laborum toro des clara
</p>
<div class="social">
<a href=""><i class="bi bi-twitter"></i></a>
<a href=""><i class="bi bi-facebook"></i></a>
<a href=""><i class="bi bi-instagram"></i></a>
<a href=""><i class="bi bi-linkedin"></i></a>
</div>
</div>
</div>
</div><!-- End Team Member -->
</div>
</div>
</section><!-- End Our Team Section -->
<!-- ======= Testimonials Section ======= -->
<section id="testimonials" class="testimonials">
<div class="container">
<div class="slides-1 swiper" data-aos="fade-up">
<div class="swiper-wrapper">
<div class="swiper-slide">
<div class="testimonial-item">
<img src="assets/img/testimonials/testimonials-1.jpg" class="testimonial-img" alt="">
<h3>Liam Chen</h3>
<h4>Ceo &amp; Founder</h4>
<div class="stars">
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
</div>
<p>
<i class="bi bi-quote quote-icon-left"></i>
Nanafa helped us shorten delivery lead time and stabilize order fulfillment across multiple countries. Our customer complaints dropped significantly.
<i class="bi bi-quote quote-icon-right"></i>
</p>
</div>
</div><!-- End testimonial item -->
<div class="swiper-slide">
<div class="testimonial-item">
<img src="assets/img/testimonials/testimonials-2.jpg" class="testimonial-img" alt="">
<h3>Sophie Lin</h3>
<h4>Brand Operations Director</h4>
<div class="stars">
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
</div>
<p>
<i class="bi bi-quote quote-icon-left"></i>
The route recommendations are practical and cost-effective. We can choose services by urgency and still keep margins healthy.
<i class="bi bi-quote quote-icon-right"></i>
</p>
</div>
</div><!-- End testimonial item -->
<div class="swiper-slide">
<div class="testimonial-item">
<img src="assets/img/testimonials/testimonials-3.jpg" class="testimonial-img" alt="">
<h3>David Wong</h3>
<h4>B2B Trading Manager</h4>
<div class="stars">
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
</div>
<p>
<i class="bi bi-quote quote-icon-left"></i>
Tracking visibility is excellent. Our team now handles exceptions faster with clearer operational ownership.
<i class="bi bi-quote quote-icon-right"></i>
</p>
</div>
</div><!-- End testimonial item -->
<div class="swiper-slide">
<div class="testimonial-item">
<img src="assets/img/testimonials/testimonials-4.jpg" class="testimonial-img" alt="">
<h3>Amy Zhao</h3>
<h4>Warehouse Operations Lead</h4>
<div class="stars">
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
</div>
<p>
<i class="bi bi-quote quote-icon-left"></i>
Nanafa helped us improve on-time delivery and reduce logistics exceptions while keeping operations fast and simple.
<i class="bi bi-quote quote-icon-right"></i>
</p>
</div>
</div><!-- End testimonial item -->
<div class="swiper-slide">
<div class="testimonial-item">
<img src="assets/img/testimonials/testimonials-5.jpg" class="testimonial-img" alt="">
<h3>Kevin Xu</h3>
<h4>International Business Owner</h4>
<div class="stars">
<i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
</div>
<p>
<i class="bi bi-quote quote-icon-left"></i>
For enterprise shipments, their SOP and billing reconciliation process saves us a lot of management time every month.
<i class="bi bi-quote quote-icon-right"></i>
</p>
</div>
</div><!-- End testimonial item -->
</div>
<div class="swiper-pagination"></div>
</div>
</div>
</section><!-- End Testimonials Section -->
<!-- ======= Frequently Asked Questions Section ======= -->
<section id="faq" class="faq">
<div class="container" data-aos="fade-up">
<div class="section-header">
<span>Frequently Asked Questions</span>
<h2>Frequently Asked Questions</h2>
</div>
<div class="row justify-content-center" data-aos="fade-up" data-aos-delay="200">
<div class="col-lg-10">
<div class="accordion accordion-flush" id="faqlist">
<div class="accordion-item">
<h3 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-content-1">
<i class="bi bi-question-circle question-icon"></i>
Which countries and routes do you support?
</button>
</h3>
<div id="faq-content-1" class="accordion-collapse collapse" data-bs-parent="#faqlist">
<div class="accordion-body">
We support major cross-border routes and can recommend channels based on transit time and cost targets.
</div>
</div>
</div><!-- # Faq item-->
<div class="accordion-item">
<h3 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-content-2">
<i class="bi bi-question-circle question-icon"></i>
Can I track every shipment in real time?
</button>
</h3>
<div id="faq-content-2" class="accordion-collapse collapse" data-bs-parent="#faqlist">
<div class="accordion-body">
Yes. You get milestone updates from pickup to delivery, with clear status visibility for your team.
</div>
</div>
</div><!-- # Faq item-->
<div class="accordion-item">
<h3 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-content-3">
<i class="bi bi-question-circle question-icon"></i>
How fast can I get a shipping quote?
</button>
</h3>
<div id="faq-content-3" class="accordion-collapse collapse" data-bs-parent="#faqlist">
<div class="accordion-body">
Share shipment details and we return a route-specific quote with transit-time options quickly.
</div>
</div>
</div><!-- # Faq item-->
<div class="accordion-item">
<h3 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-content-4">
<i class="bi bi-question-circle question-icon"></i>
Do you support enterprise-level custom workflows?
</button>
</h3>
<div id="faq-content-4" class="accordion-collapse collapse" data-bs-parent="#faqlist">
<div class="accordion-body">
<i class="bi bi-question-circle question-icon"></i>
Yes. You get milestone updates from pickup to delivery, with clear status visibility for your team.
</div>
</div>
</div><!-- # Faq item-->
<div class="accordion-item">
<h3 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-content-5">
<i class="bi bi-question-circle question-icon"></i>
How are claims and after-sales issues handled?
</button>
</h3>
<div id="faq-content-5" class="accordion-collapse collapse" data-bs-parent="#faqlist">
<div class="accordion-body">
Yes. We provide tailored SOPs, billing reconciliation, claims handling, and dedicated support teams.
</div>
</div>
</div><!-- # Faq item-->
</div>
</div>
</div>
</div>
</section><!-- End Frequently Asked Questions Section -->
</main><!-- End #main -->
<!-- ======= Footer ======= -->
<footer id="footer" class="footer">
<div class="container">
<div class="row gy-4">
<div class="col-lg-5 col-md-12 footer-info">
<a href="index.html" class="logo d-flex align-items-center">
<span>Nanafa Express</span>
</a>
<p>Nanafa Express is your international logistics partner for cross-border fulfillment, helping teams ship worldwide with faster execution and simpler operations.</p>
<div class="social-links d-flex mt-4">
<a href="#" class="wechat"><i class="fa-brands fa-weixin"></i></a>
<a href="#" class="douyin"><i class="fa-brands fa-tiktok"></i></a>
<a href="#" class="xiaohongshu"><i class="fa-regular fa-note-sticky"></i></a>
<a href="#" class="weibo"><i class="fa-brands fa-weibo"></i></a>
</div>
</div>
<div class="col-lg-2 col-6 footer-links">
<h4>Useful Links</h4>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About us</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Terms of service</a></li>
<li><a href="#">Privacy policy</a></li>
</ul>
</div>
<div class="col-lg-2 col-6 footer-links">
<h4>友情链接</h4>
<ul>
<li><a href="https://wms.nanafa.com/" target="_blank">Nanafa WMS</a></li>
<li><a href="https://c.nanafa.com/" target="_blank">Nanafa WMS (Old)</a></li>
<li><a href="https://oms.nanafa.com/" target="_blank">Nanafa OMS</a></li>
</ul>
</div>
<div class="col-lg-3 col-md-12 footer-contact text-center text-md-start">
<h4>Contact</h4>
<img src="assets/img/二维码.png" alt="QR Code" class="img-fluid w-50 mb-3" />
<p>
<strong>Phone:</strong> 18123959245<br>
<strong>Email:</strong> bd01@1st56.com<br>
<strong>Address:</strong> 深圳宝安区福永怀德翠岗5区36栋<br>
</p>
</div>
</div>
</div>
<div class="container mt-4">
<div class="copyright">
Copyright &copy; 2017-2026 Nanafa express. All Rights Reserved.<a target="_blank" href="https://beian.miit.gov.cn">粤ICP备19018720号</a>
</div>
</div>
</div>
</footer><!-- End Footer -->
<!-- End Footer -->
<a href="#" class="scroll-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>
<div id="preloader"></div>
<!-- Vendor JS Files -->
<script src="assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="assets/vendor/purecounter/purecounter_vanilla.js"></script>
<script src="assets/vendor/glightbox/js/glightbox.min.js"></script>
<script src="assets/vendor/swiper/swiper-bundle.min.js"></script>
<script src="assets/vendor/aos/aos.js"></script>
<script src="assets/vendor/php-email-form/validate.js"></script>
<!-- Template Main JS File -->
<script src="assets/js/main.js"></script>
</body>
</html>

2394
nanafa/assets/css/main.css Normal file

File diff suppressed because it is too large Load Diff

BIN
nanafa/assets/img/about.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

BIN
nanafa/assets/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
nanafa/assets/img/logo1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 686 KiB

601
nanafa/assets/js/main.js Normal file
View File

@ -0,0 +1,601 @@
/**
* Template Name: Logis - v1.0.1
* Template URL: https://bootstrapmade.com/logis-bootstrap-logistics-website-template/
* Author: BootstrapMade.com
* License: https://bootstrapmade.com/license/
*/
document.addEventListener('DOMContentLoaded', () => {
"use strict";
const languageStorageKey = 'nanafa-language';
const pageTitleMap = {
'Nanafa Express|Faster & Simpler': 'Nanafa Express|Faster & Simpler',
'Nanafa Express - About': 'Nanafa Express - 关于我们',
'Nanafa Express - Services': 'Nanafa Express - 服务',
'Nanafa Express - Service Details': 'Nanafa Express - 服务详情',
'Nanafa Express - Pricing': 'Nanafa Express - 价格',
'Nanafa Express - Contact': 'Nanafa Express - 联系我们',
'Nanafa Express - Get a Quote': 'Nanafa Express - 获取报价',
'Nanafa Express - Sample Inner Page': 'Nanafa Express - 示例内页',
'Nanafa Express - Company Profile': 'Nanafa Express - 公司介绍',
'404 Not Found': '404 页面未找到'
};
const i18nTextNodes = new WeakMap();
const textMap = {
'Home': '首页',
'About': '关于我们',
'About us': '关于我们',
'About Us': '关于我们',
'Services': '服务',
'Our Services': '我们的服务',
'Pricing': '价格',
'Contact': '联系我们',
'Contact CN': '联系我们',
'Sign In / Register': '注册/登录',
'Learn More': '了解更多',
'Search': '搜索',
'Track': '查询物流',
'Enter tracking number': '请输入跟踪单号',
'Your Name': '你的姓名',
'Your Email': '你的邮箱',
'Subject': '主题',
'Message': '留言内容',
'Name': '姓名',
'Email': '邮箱',
'Phone': '电话',
'City of Departure': '始发城市',
'Delivery City': '目的城市',
'Total Weight (kg)': '总重量 (kg)',
'Dimensions (cm)': '尺寸 (cm)',
'ZIP code or CitY': '邮编或城市',
'Call To Action': '立即行动',
'Frequently Asked Questions': '常见问题',
'Useful Links': '常用链接',
'Terms of service': '服务条款',
'Privacy policy': '隐私政策',
'Service Details': '服务详情',
'Sample Inner Page': '示例内页',
'Company Profile': '公司介绍',
'[Template] Sample Inner Page': '[模板] 示例内页',
'Our Team': '我们的团队',
'Horizontal Pricing': '横向价格',
'Your Personal Details': '您的个人信息',
'Send Message': '发送消息',
'Your quote request has been sent successfully. Thank you!': '您的询价请求已成功发送,感谢您!',
'Your message has been sent. Thank you!': '您的消息已发送,感谢您!',
'Loading': '加载中',
'Location:': '地址:',
'Phone:': '电话:',
'Call:': '电话:',
'Email:': '邮箱:',
'Address:': '地址:',
'Get a Quote': '获取报价',
'Get a quote': '获取报价',
'Copyright © 2020.SZJYH All rights reserved.': '版权 © 2020.SZJYH 保留所有权利。',
'About Us': '关于我们',
'Dolor iure expedita id fuga asperiores qui sunt consequatur minima. Quidem voluptas deleniti. Sit quia molestiae quia quas qui magnam itaque veritatis dolores. Corrupti totam ut eius incidunt reiciendis veritatis asperiores placeat.': '我们坚持高效、可靠、透明的服务理念,为客户提供稳定的跨境物流解决方案。',
'Ullamco laboris nisi ut aliquip consequat': '高效履约与稳定交付',
'Magni facilis facilis repellendus cum excepturi quaerat praesentium libre trade': '覆盖多场景物流需求,保障运输过程可追踪、可管理。',
'Magnam soluta odio exercitationem reprehenderi': '专业运营团队支持',
'Quo totam dolorum at pariatur aut distinctio dolorum laudantium illo direna pasata redi': '从下单到签收全流程跟进,及时响应客户问题。',
'Voluptatem et qui exercitationem': '持续优化时效与成本',
'Et velit et eos maiores est tempora et quos dolorem autem tempora incidunt maxime veniam': '通过线路与仓配优化,帮助客户获得更优履约体验。',
'Our Services': '我们的服务',
'Storage': '仓储',
'Logistics': '物流',
'Cargo': '货运',
'Trucking': '卡车运输',
'Packaging': '包装',
'Warehousing': '仓储',
'Cumque eos in qui numquam. Aut aspernatur perferendis sed atque quia voluptas quisquam repellendus temporibus itaqueofficiis odit': '提供灵活仓储与库存管理方案,支持多渠道订单履约。',
'Asperiores provident dolor accusamus pariatur dolore nam id audantium ut et iure incidunt molestiae dolor ipsam ducimus occaecati nisi': '整合头程、干线与末端配送,打造一体化物流服务。',
'Dicta quam similique quia architecto eos nisi aut ratione aut ipsum reiciendis sit doloremque oluptatem aut et molestiae ut et nihil': '针对不同货型与业务场景,定制高性价比运输方案。',
'Illo consequuntur quisquam delectus praesentium modi dignissimos facere vel cum onsequuntur maiores beatae consequatur magni voluptates': '提供标准化与定制化包装服务,降低运输破损风险。',
'Quas assumenda non occaecati molestiae. In aut earum sed natus eatae in vero. Ab modi quisquam aut nostrum unde et qui est non quo nulla': '多仓协同与库存可视化,提升发货效率与周转能力。',
'Call To Action': '立即行动',
'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.': '立即联系我们获取专属物流方案,我们将根据您的业务规模与线路需求快速报价并提供落地建议。',
'Frequently Asked Questions': '常见问题',
'Non consectetur a erat nam at lectus urna duis?': '你们支持哪些物流线路?',
'Feugiat pretium nibh ipsum consequat. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Venenatis lectus magna fringilla urna porttitor rhoncus dolor purus non.': '我们支持多国跨境线路,可根据目的地、时效和成本为您推荐合适渠道。',
'Feugiat scelerisque varius morbi enim nunc faucibus a pellentesque?': '是否支持订单追踪?',
'Dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. Id interdum velit laoreet id donec ultrices. Fringilla phasellus faucibus scelerisque eleifend donec pretium. Est pellentesque elit ullamcorper dignissim. Mauris ultrices eros in cursus turpis massa tincidunt dui.': '支持全流程节点追踪与状态更新,您可随时查看运输进展。',
'Dolor sit amet consectetur adipiscing elit pellentesque habitant morbi?': '如何获取报价?',
'Eleifend mi in nulla posuere sollicitudin aliquam ultrices sagittis orci. Faucibus pulvinar elementum integer enim. Sem nulla pharetra diam sit amet nisl suscipit. Rutrum tellus pellentesque eu tincidunt. Lectus urna duis convallis convallis tellus. Urna molestie at elementum eu facilisis sed odio morbi quis': '可在报价页面提交需求,我们会根据货量、线路、时效快速回复。',
'Ac odio tempor orci dapibus. Aliquam eleifend mi in nulla?': '支持企业定制方案吗?',
'Tempus quam pellentesque nec nam aliquam sem et tortor consequat?': '售后如何对接?',
'Molestie a iaculis at erat pellentesque adipiscing commodo. Dignissim suspendisse in est ante in. Nunc vel risus commodo viverra maecenas accumsan. Sit amet nisl suscipit adipiscing bibendum est. Purus gravida quis blandit turpis cursus in': '支持企业级定制服务,包含对账、异常处理与专属客服协同。',
'Useful Links': '常用链接',
'Our Services': '我们的服务',
'Web Design': '网站设计',
'Web Development': '网站开发',
'Product Management': '产品管理',
'Marketing': '市场推广',
'Graphic Design': '平面设计',
'Nanafa Express|Faster & Simpler': 'Nanafa Express|Faster & Simpler',
'We provide end-to-end international logistics for cross-border sellers and brands. From first mile to final delivery, Nanafa Express makes shipping faster and simpler.': '我们为跨境卖家与品牌提供端到端国际物流服务,从揽收到妥投全链路可控。哪哪发物流,让发货更快更简单。',
'Nanafa Express focuses on international logistics operations with stable timelines, clear tracking, and transparent pricing to make global fulfillment faster and simpler.': '哪哪发专注国际物流运营,以稳定时效、清晰轨迹和透明报价,帮助全球履约更快更简单。',
'Reliable global delivery network': '稳定可靠的全球配送网络',
'Integrated routes and carriers help us keep lead times short and delivery quality consistent.': '通过整合线路与承运资源,我们在缩短时效的同时保持交付稳定性。',
'Real-time tracking and exception handling': '全程追踪与异常处理',
'Every shipment is visible from pickup to delivery, with proactive alerts for delays or issues.': '每一票货物从揽收到签收全程可视,延误与异常可主动预警。',
'Dedicated support for cross-border teams': '跨境团队专属支持',
'Our logistics specialists respond quickly so your operations stay smooth and simple.': '物流专家快速响应,保障你的运营流程顺畅且简单。',
'Built for international fulfillment at scale, with standard processes and reliable execution.': '面向国际履约规模化场景,提供标准化流程与稳定执行。',
'Flexible shipping channels for parcels, pallets, and B2B cargo.': '支持包裹、托盘与 B2B 货运的灵活运输通道。',
'Standardized workflows that reduce risk and improve delivery speed.': '标准化操作流程,降低风险并提升交付速度。',
'Multi-warehouse inventory and order orchestration for international operations.': '面向国际业务的多仓库存与订单协同。',
'Line-haul and last-mile coordination across regions with stable performance.': '跨区域干线与末端协同,保障稳定履约表现。',
'Cost-efficient cargo plans tailored by route, weight, and service level.': '按线路、重量与服务等级定制更高性价比的货运方案。',
'Protective packaging options designed for international transport.': '针对国际运输场景提供防护型包装方案。',
'Smart warehousing and fast dispatch to keep global orders moving.': '智能仓储与快速出库,保障全球订单持续流转。',
'Need a global logistics partner? Talk to Nanafa Express and launch a faster, simpler shipping plan for your business.': '需要国际物流合作伙伴?联系哪哪发,为你的业务启动更快更简单的发货方案。',
'A logistics system built for speed, visibility, and simplicity.': '为速度、可视化与简化而打造的物流体系。',
'From pickup to customs and final delivery, we connect every step with operational control.': '从揽收、清关到末端妥投,每个环节都在运营管控之中。',
'Standard operating procedures ensure stable service quality.': '标准作业流程保障服务质量稳定。',
'Route optimization improves both transit time and cost.': '线路优化同时改善时效与成本。',
'Exception workflows reduce delays and customer complaints.': '异常处理流程降低延误与客诉。',
'Optimized for cross-border growth': '为跨境增长场景优化',
'Whether DTC or B2B, we provide consistent logistics capacity and service-level execution.': '无论 DTC 还是 B2B,我们都能提供持续稳定的履约能力与服务水位。',
'Data-driven operations and reporting': '数据驱动的运营与报表',
'Operational dashboards help you monitor timeliness, costs, and fulfillment performance.': '通过运营看板实时监控时效、成本与履约表现。',
'Scale your logistics without adding operational complexity.': '在不增加运营复杂度的情况下扩展物流规模。',
'Secure, compliant, and dependable international shipping.': '安全、合规、可靠的国际运输服务。',
'Which countries and routes do you support?': '支持哪些国家与物流线路?',
'We support major cross-border routes and can recommend channels based on transit time and cost targets.': '我们覆盖主流跨境线路,并可根据时效与成本目标推荐最合适渠道。',
'Can I track every shipment in real time?': '是否支持全程实时追踪?',
'Yes. You get milestone updates from pickup to delivery, with clear status visibility for your team.': '支持。你可以从揽收到签收获取关键节点更新,团队可清晰查看状态。',
'How do I get a shipping quote?': '如何获取运输报价?',
'Share shipment details in the contact form and we will return a route-specific quote quickly.': '在联系表单提交货物信息后,我们会快速返回线路化报价。',
'Do you provide enterprise-level custom solutions?': '是否提供企业级定制方案?',
'How is after-sales support handled?': '售后支持如何对接?',
'Yes. We provide tailored SOPs, billing reconciliation, exception handling, and dedicated support teams.': '支持。我们提供定制 SOP、账单对账、异常处理与专属客服团队。',
'Faster and simpler logistics execution designed for growing international businesses.': '为成长型国际业务打造更快更简单的物流执行体系。',
'We align capacity, route planning, and exception management so your team can scale operations without process chaos.': '我们协同运力、线路规划与异常处理,让团队在规模增长时依然保持流程清晰。',
'International Logistics Expertise': '国际物流专业能力',
'We combine route planning, customs coordination, and fulfillment execution to keep cross-border delivery reliable and easy to manage.': '我们将线路规划、清关协同与履约执行整合在一起,让跨境交付稳定且易管理。',
'Service details built around faster and simpler global shipping': '围绕“更快更简单”打造的全球发运服务细节',
'Nanafa Express delivers practical international logistics with clear operating standards, stable timelines, and full shipment visibility.': '哪哪发提供务实的国际物流服务,以清晰标准、稳定时效和全程可视化保障履约。',
'Route-specific transport plans for cost and speed balance.': '按线路定制运输方案,平衡成本与时效。',
'Milestone tracking with proactive exception alerts.': '关键节点跟踪并主动预警异常。',
'Dedicated support from booking to final delivery.': '从订舱到妥投提供专属支持。',
'Our teams coordinate warehouse, line-haul, customs, and last-mile partners to reduce delays and improve customer delivery experience.': '我们的团队协同仓储、干线、清关与末端伙伴,减少延误并提升客户签收体验。',
'If your business needs a dependable cross-border logistics partner, we can design and run a workflow that keeps shipping faster and simpler every day.': '如果你的业务需要可靠的跨境物流伙伴,我们可为你设计并运营一套每天都更快更简单的发运流程。',
'Nanafa Express is your international logistics partner for cross-border fulfillment, helping teams ship worldwide with faster execution and simpler operations.': '哪哪发是你值得信赖的国际物流合作伙伴,专注跨境履约,帮助团队以更快执行和更简单流程发往全球。',
'Facere distinctio molestiae nisi fugit tenetur repellat non praesentium nesciunt optio quis sit odio nemo quisquam. eius quos reiciendis eum vel eum voluptatem eum maiores eaque id optio ullam occaecati odio est possimus vel reprehenderit': '我们提供稳定高效的国际物流服务,帮助卖家与企业在全球范围内更快完成履约。',
'Clients': '客户',
'Projects': '项目',
'Support': '支持',
'Workers': '员工',
'Staff': '员工',
'Delivered': '签收',
'Customers': '客户',
'Orders': '订单',
'Hours Of Support': '支持时长',
'Free Plan': '免费方案',
'Business Plan': '商业方案',
'Developer Plan': '开发者方案',
'Buy Now': '立即购买',
'Consult Now': '立即咨询',
'Customs Clearance': '清关',
'Warehousing': '仓储',
'International Logistics': '国际物流',
'Formal and express customs declaration support': '一般贸易与快件清关申报支持',
'Document review and compliance check': '单证预审与合规校验',
'Customs status updates and exception follow-up': '清关状态更新与异常跟进',
'Inbound, shelving, and inventory control': '入库、上架与库存管控',
'Order picking, packing, and same-day dispatch': '拣货、打包与当日出库',
'Multi-platform order integration and reconciliation': '多平台订单对接与账务对账',
'Air, sea, and truck route options': '空运、海运与卡航多线路可选',
'End-to-end tracking from pickup to delivery': '从揽收到签收的全程追踪',
'SLA-based operations and after-sales support': '基于 SLA 的运营保障与售后支持',
'/ month': '/ 月',
'Quam adipiscing vitae proin': '基础功能支持',
'Nec feugiat nisl pretium': '标准服务保障',
'Nulla at volutpat diam uteera': '多渠道履约能力',
'Global route coverage': '全球线路覆盖',
'Customs support and compliance': '清关支持与合规保障',
'Real-time shipment visibility': '运输轨迹实时可视',
'Pharetra massa massa ultricies': '高级扩展能力',
'Massa ultricies mi quis hendrerit': '专属团队支持',
'Core Services': '核心服务',
'Transport Network': '运输网络',
'Fulfillment Assurance': '履约保障',
'Voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident': '我们通过标准化流程与可视化系统,确保每一票货物稳定交付。',
'Minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat tarad limino ata': '多渠道承运资源整合,兼顾时效、成本与稳定性。',
'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur': '以客户体验为中心,持续优化运输与履约流程。',
'Voluptatem dignissimos provident quasi corporis voluptates sit assumenda.': '我们通过技术与运营协同,持续提升物流服务品质。',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.': '提供从仓储到配送的一站式解决方案,帮助业务稳步增长。',
'Ullamco laboris nisi ut aliquip ex ea commodo consequat.': '标准化操作流程,保障稳定履约。',
'Duis aute irure dolor in reprehenderit in voluptate velit.': '智能路由规划,优化整体成本。',
'Ullam est qui quos consequatur eos accusamus.': '异常可追踪可处理,交付更可靠。',
'Corporis temporibus maiores provident': '覆盖多场景运输能力',
'Ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum': '无论是 B2B 还是电商订单,我们都可提供稳定履约能力与售后支持。',
'Sunt consequatur ad ut est nulla consectetur reiciendis animi voluptas': '以数据驱动的运营优化',
'Cupiditate placeat cupiditate placeat est ipsam culpa. Delectus quia minima quod. Sunt saepe odit aut quia voluptatem hic voluptas dolor doloremque.': '通过节点数据分析持续优化时效、库存与配送效率。',
'Facilis ut et voluptatem aperiam. Autem soluta ad fugiat.': '支持业务规模增长过程中的灵活扩展。',
'Quas et necessitatibus eaque impedit ipsum animi consequatur incidunt in': '稳定、安全、可扩展的服务体系',
'You can duplicate this sample page and create any number of inner pages you like!': '您可以复制该示例页面并创建任意数量的内页。',
'Our Team': '我们的团队',
'Walter White': 'Walter White',
'Sarah Jhinson': 'Sarah Jhinson',
'William Anderson': 'William Anderson',
'Saul Goodman': 'Saul Goodman',
'Sara Wilsson': 'Sara Wilsson',
'Jena Karlis': 'Jena Karlis',
'Matt Brandon': 'Matt Brandon',
'John Larson': 'John Larson',
'Liam Chen': '陈亮',
'Sophie Lin': '林苏菲',
'David Wong': '王大卫',
'Amy Zhao': '赵安妮',
'Kevin Xu': '徐凯文',
'Ceo & Founder': '首席执行官 / 创始人',
'Designer': '设计师',
'Store Owner': '店主',
'Freelancer': '自由职业者',
'Entrepreneur': '企业家',
'Cross-border E-commerce Seller': '跨境电商卖家',
'Brand Operations Director': '品牌运营总监',
'B2B Trading Manager': 'B2B 贸易经理',
'Warehouse Operations Lead': '仓储运营负责人',
'International Business Owner': '国际业务负责人',
'A108 Adam Street, New York, NY 535022': 'A108 Adam Street, New York, NY 535022',
'404 Not Found': '404 页面未找到',
'nginx': 'nginx',
'We provide transparent pricing, stable transit timelines, and responsive support to help cross-border businesses ship with confidence.': '我们提供透明报价、稳定时效和快速响应支持,帮助跨境业务更安心地发货。',
'Our operations team standardizes every fulfillment step to improve predictability and customer satisfaction.': '我们的运营团队将履约环节标准化,提升交付可预测性与客户满意度。',
'Nanafa helped us improve on-time delivery and reduce logistics exceptions while keeping operations fast and simple.': '哪哪发帮助我们提升准时交付并减少物流异常,同时让运营保持更快更简单。',
'Start Shipping': '开始发货',
'Get Your Shipping Plan': '获取你的发货方案',
'Global routes with predictable transit times': '全球线路覆盖,时效可预测',
'Real-time tracking with proactive exception control': '全程追踪并主动控制异常',
'Dedicated account support and response SLA': '专属客户支持与响应 SLA',
'Our specialists respond fast with SLA-backed support so operations stay smooth and simple.': '我们的专家团队提供 SLA 保障的快速响应,让运营始终更顺畅更简单。',
'Built for high-volume international fulfillment with stable operations and measurable service quality.': '面向大规模国际履约,提供稳定运营与可量化服务质量。',
'Flexible channels for parcels, pallets, and B2B cargo with optimized cost-time balance.': '支持包裹、托盘与 B2B 货运,并优化时效与成本平衡。',
'Standard operating procedures that reduce delivery risk and improve on-time performance.': '标准作业流程降低交付风险并提升准时率。',
'Need a reliable international logistics partner? Get a route-specific plan with pricing, transit time, and SLA commitment within 24 hours.': '需要可靠的国际物流伙伴?24 小时内获取含报价、时效与 SLA 承诺的线路方案。',
'A commercial logistics system built for speed, visibility, and margin control.': '为速度、可视化与利润控制打造的商业物流体系。',
'From pickup to customs clearance and final delivery, every milestone is managed with operational controls.': '从揽收到清关再到妥投,每个里程碑都在运营管控下执行。',
'Optimized for cross-border growth and profitability': '为跨境增长与利润提升优化',
'Faster and simpler fulfillment designed to support growing international revenue.': '更快更简单的履约体系,支持国际业务持续增长。',
'We align capacity, routing, and exception management so your team can scale volume without losing control of service levels.': '我们协同运力、路由与异常管理,让团队扩量时仍能稳住服务水位。',
'Data-driven operations, billing, and KPI reporting': '数据驱动的运营、对账与 KPI 报表',
'Operational dashboards track on-time rate, logistics cost, and fulfillment KPIs in one view.': '运营看板一屏跟踪准时率、物流成本与履约 KPI。',
'Secure, compliant, and claim-ready international shipping': '安全、合规、可理赔的国际运输服务',
'How fast can I get a shipping quote?': '最快多久可以拿到报价?',
'Share shipment details and we return a route-specific quote with transit-time options quickly.': '提交货物信息后,我们会快速返回含多种时效选项的线路报价。',
'Do you support enterprise-level custom workflows?': '是否支持企业级定制流程?',
'How are claims and after-sales issues handled?': '理赔与售后问题如何处理?',
'Yes. We provide tailored SOPs, billing reconciliation, claims handling, and dedicated support teams.': '支持。我们提供定制 SOP、账单对账、理赔处理与专属支持团队。',
'Route-specific transport plans balancing cost, speed, and service reliability.': '按线路定制运输方案,平衡成本、时效与服务稳定性。',
'Milestone tracking with proactive delay and exception alerts.': '关键节点跟踪并主动预警延误与异常。',
'Dedicated support from booking to delivery with clear escalation paths.': '从订舱到妥投提供专属支持,并配备清晰升级路径。',
'Partner Links': '友情链接',
'Nanafa WMS': '哪哪发仓储',
'Nanafa WMS (Old)': '哪哪发旧版仓储',
'Nanafa OMS': '哪哪发物流',
'Yidai Logistics': '一代国际',
'One Line': '壹号专线',
'Bldg. 36, Zone 5, Cuigang, Huaide, Fuyong, Baoan District, Shenzhen': '深圳宝安区福永怀德翠岗5区36栋',
'Copyright © 2017-2026 Nanafa express. All Rights Reserved.': 'Copyright © 2017-2026 Nanafa Express. All rights reserved.',
'Nanafa logo': '哪哪发标志'
,'Nanafa helped us shorten delivery lead time and stabilize order fulfillment across multiple countries. Our customer complaints dropped significantly.': '哪哪发帮助我们缩短了交付周期,并稳定了多国履约。客户投诉明显下降。'
,'The route recommendations are practical and cost-effective. We can choose services by urgency and still keep margins healthy.': '他们的线路建议务实且具性价比。我们可以按紧急程度选择服务,同时保持利润空间。'
,'Tracking visibility is excellent. Our team now handles exceptions faster with clearer operational ownership.': '轨迹可视化非常好。现在团队处理异常更快,责任分工也更清晰。'
,'Customs and line-haul coordination improved a lot after switching to Nanafa. Our on-time rate is now much more predictable.': '切换到哪哪发后,清关与干线协同提升很大,我们的准时率明显更可预测。'
,'For enterprise shipments, their SOP and billing reconciliation process saves us a lot of management time every month.': '对于企业级发运,他们的 SOP 和对账流程每个月都帮我们节省大量管理时间。'
};
const reverseTextMap = {};
Object.entries(textMap).forEach(([englishText, chineseText]) => {
if (chineseText && !reverseTextMap[chineseText]) {
reverseTextMap[chineseText] = englishText;
}
});
function normalizeI18nText(text) {
return text.replace(/\s+/g, ' ').trim();
}
function resolveEnglishKey(rawText) {
const normalizedText = normalizeI18nText(rawText || '');
if (!normalizedText) {
return '';
}
if (textMap[normalizedText]) {
return normalizedText;
}
return reverseTextMap[normalizedText] || '';
}
function registerI18nTargets() {
document.querySelectorAll('body *').forEach((element) => {
if (element.children.length !== 0) {
return;
}
const rawText = element.textContent;
if (!rawText) {
return;
}
const key = resolveEnglishKey(rawText);
if (key) {
element.setAttribute('data-i18n-key', key);
}
});
document.querySelectorAll('[placeholder]').forEach((element) => {
const placeholder = element.getAttribute('placeholder');
const placeholderKey = resolveEnglishKey(placeholder || '');
if (placeholderKey) {
element.setAttribute('data-i18n-placeholder-key', placeholderKey);
}
});
document.querySelectorAll('[alt],[title],[aria-label],[value]').forEach((element) => {
['alt', 'title', 'aria-label', 'value'].forEach((attr) => {
const rawValue = element.getAttribute(attr);
const key = resolveEnglishKey(rawValue || '');
if (key) {
element.setAttribute(`data-i18n-${attr}-key`, key);
}
});
});
const textNodeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT);
let textNode = textNodeWalker.nextNode();
while (textNode) {
const parent = textNode.parentElement;
if (!parent || ['SCRIPT', 'STYLE', 'NOSCRIPT'].includes(parent.tagName)) {
textNode = textNodeWalker.nextNode();
continue;
}
const key = resolveEnglishKey(textNode.textContent || '');
if (key) {
i18nTextNodes.set(textNode, key);
}
textNode = textNodeWalker.nextNode();
}
}
function applyLanguage(lang) {
const isChinese = lang === 'zh';
document.documentElement.lang = isChinese ? 'zh-CN' : 'en';
const currentTitle = document.title;
if (isChinese && pageTitleMap[currentTitle]) {
document.title = pageTitleMap[currentTitle];
} else if (!isChinese) {
const englishTitle = Object.keys(pageTitleMap).find((key) => pageTitleMap[key] === currentTitle);
if (englishTitle) {
document.title = englishTitle;
}
}
document.querySelectorAll('[data-i18n-key]').forEach((element) => {
const key = element.getAttribute('data-i18n-key');
if (!key) {
return;
}
element.textContent = isChinese ? (textMap[key] || key) : key;
});
document.querySelectorAll('[data-i18n-placeholder-key]').forEach((element) => {
const key = element.getAttribute('data-i18n-placeholder-key');
if (!key) {
return;
}
element.setAttribute('placeholder', isChinese ? (textMap[key] || key) : key);
});
['alt', 'title', 'aria-label', 'value'].forEach((attr) => {
document.querySelectorAll(`[data-i18n-${attr}-key]`).forEach((element) => {
const key = element.getAttribute(`data-i18n-${attr}-key`);
if (!key) {
return;
}
element.setAttribute(attr, isChinese ? (textMap[key] || key) : key);
});
});
const textNodeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT);
let textNode = textNodeWalker.nextNode();
while (textNode) {
const key = i18nTextNodes.get(textNode);
if (key) {
textNode.textContent = isChinese ? (textMap[key] || key) : key;
}
textNode = textNodeWalker.nextNode();
}
const languageToggleLink = document.querySelector('#language-toggle-btn');
if (languageToggleLink) {
languageToggleLink.textContent = isChinese ? 'EN' : '中文';
}
}
function initLanguageSwitch() {
const dropDownMenu = Array.from(document.querySelectorAll('#navbar > ul > li.dropdown')).find((menuItem) => {
const menuText = normalizeI18nText(menuItem.textContent || '');
return menuText.includes('Drop Down');
});
if (dropDownMenu) {
dropDownMenu.remove();
}
registerI18nTargets();
const navbarList = document.querySelector('#navbar ul');
if (navbarList) {
const languageItem = document.createElement('li');
const languageBtn = document.createElement('a');
languageBtn.id = 'language-toggle-btn';
languageBtn.href = '#';
languageBtn.className = 'language-toggle-link';
languageBtn.setAttribute('aria-label', 'Switch language');
languageBtn.addEventListener('click', (event) => {
event.preventDefault();
const currentLang = localStorage.getItem(languageStorageKey) === 'zh' ? 'zh' : 'en';
const nextLang = currentLang === 'en' ? 'zh' : 'en';
localStorage.setItem(languageStorageKey, nextLang);
applyLanguage(nextLang);
});
languageItem.appendChild(languageBtn);
navbarList.appendChild(languageItem);
}
const savedLanguage = localStorage.getItem(languageStorageKey) === 'zh' ? 'zh' : 'en';
applyLanguage(savedLanguage);
}
/**
* Preloader
*/
const preloader = document.querySelector('#preloader');
if (preloader) {
window.addEventListener('load', () => {
preloader.remove();
});
}
/**
* Sticky header on scroll
*/
const selectHeader = document.querySelector('#header');
if (selectHeader) {
document.addEventListener('scroll', () => {
window.scrollY > 100 ? selectHeader.classList.add('sticked') : selectHeader.classList.remove('sticked');
});
}
/**
* Scroll top button
*/
const scrollTop = document.querySelector('.scroll-top');
if (scrollTop) {
const togglescrollTop = function() {
window.scrollY > 100 ? scrollTop.classList.add('active') : scrollTop.classList.remove('active');
}
window.addEventListener('load', togglescrollTop);
document.addEventListener('scroll', togglescrollTop);
scrollTop.addEventListener('click', window.scrollTo({
top: 0,
behavior: 'smooth'
}));
}
/**
* Mobile nav toggle
*/
const mobileNavShow = document.querySelector('.mobile-nav-show');
const mobileNavHide = document.querySelector('.mobile-nav-hide');
document.querySelectorAll('.mobile-nav-toggle').forEach(el => {
el.addEventListener('click', function(event) {
event.preventDefault();
mobileNavToogle();
})
});
function mobileNavToogle() {
document.querySelector('body').classList.toggle('mobile-nav-active');
mobileNavShow.classList.toggle('d-none');
mobileNavHide.classList.toggle('d-none');
}
/**
* Hide mobile nav on same-page/hash links
*/
document.querySelectorAll('#navbar a').forEach(navbarlink => {
if (!navbarlink.hash) return;
let section = document.querySelector(navbarlink.hash);
if (!section) return;
navbarlink.addEventListener('click', () => {
if (document.querySelector('.mobile-nav-active')) {
mobileNavToogle();
}
});
});
/**
* Toggle mobile nav dropdowns
*/
const navDropdowns = document.querySelectorAll('.navbar .dropdown > a');
navDropdowns.forEach(el => {
el.addEventListener('click', function(event) {
if (document.querySelector('.mobile-nav-active')) {
event.preventDefault();
this.classList.toggle('active');
this.nextElementSibling.classList.toggle('dropdown-active');
let dropDownIndicator = this.querySelector('.dropdown-indicator');
dropDownIndicator.classList.toggle('bi-chevron-up');
dropDownIndicator.classList.toggle('bi-chevron-down');
}
})
});
/**
* Initiate pURE cOUNTER
*/
new PureCounter();
/**
* Initiate glightbox
*/
const glightbox = GLightbox({
selector: '.glightbox'
});
/**
* Init swiper slider with 1 slide at once in desktop view
*/
new Swiper('.slides-1', {
speed: 600,
loop: true,
autoplay: {
delay: 5000,
disableOnInteraction: false
},
slidesPerView: 'auto',
pagination: {
el: '.swiper-pagination',
type: 'bullets',
clickable: true
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
}
});
/**
* Animation on scroll function and init
*/
function aos_init() {
AOS.init({
duration: 1000,
easing: 'ease-in-out',
once: true,
mirror: false
});
}
window.addEventListener('load', () => {
aos_init();
});
initLanguageSwitch();
});

1
nanafa/assets/vendor/aos/aos.css vendored Normal file

File diff suppressed because one or more lines are too long

1
nanafa/assets/vendor/aos/aos.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,491 @@
/*!
* Bootstrap Reboot v5.2.0-beta1 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors
* Copyright 2011-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-2xl: 2rem;
--bs-border-radius-pill: 50rem;
--bs-heading-color: ;
--bs-link-color: #0d6efd;
--bs-link-hover-color: #0a58ca;
--bs-code-color: #d63384;
--bs-highlight-bg: #fff3cd;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: 1px solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-left: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: var(--bs-link-color);
text-decoration: underline;
}
a:hover {
color: var(--bs-link-hover-color);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: rgba(var(--bs-body-color-rgb), 0.75);
text-align: left;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: left;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: left;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,488 @@
/*!
* Bootstrap Reboot v5.2.0-beta1 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors
* Copyright 2011-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-2xl: 2rem;
--bs-border-radius-pill: 50rem;
--bs-heading-color: ;
--bs-link-color: #0d6efd;
--bs-link-hover-color: #0a58ca;
--bs-code-color: #d63384;
--bs-highlight-bg: #fff3cd;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: 1px solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-right: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-right: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: var(--bs-link-color);
text-decoration: underline;
}
a:hover {
color: var(--bs-link-hover-color);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: rgba(var(--bs-body-color-rgb), 0.75);
text-align: right;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: right;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: right;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More