-
-
-
ThingsBoard IoT Gateway
-
Platform: Low-spec server (e.g, Raspberry Pi, Intel NUC)
CPU: Single-core x86-x64 processor
RAM: 1 GB
Storage: 10 GB of free disk space
OS: Linux (Debian, CentOS)
-
+
+
+
+
Handles up to 1,000 devices per Edge instance while ensuring zero data loss through persistent local storage and automatic sync.
+
+
+
+
+
+
Deploy thousands of Edge instances across distributed sites for horizontal scalability and distributed data processing.
+
+
+
+
+
+
Instant access to critical data enables immediate decision-making. Local alarms trigger on-site without server connectivity.
+
+
+
+
+
+
Operates independently when disconnected. Stores data locally and auto-syncs when connection restores—zero data loss.
+
+
+
+
+
+
Local processing delivers sub-second response times, critical for industrial automation and real-time control systems.
+
+
+
+
+
+
Drag-and-drop rule chain designer lets you define custom logic for data processing, external integrations, and alarm notifications.
+
+
+
+
+
+
Intuitive interface and multi-protocol support (MQTT, CoAP, HTTP) enable fast deployment across diverse device ecosystems.
@@ -317,5 +427,58 @@ description: Comprehensive software solutions for edge computing, providing data
+
+
+
\ No newline at end of file
diff --git a/products/thingsboard-edge/thingsboard-edge.sass b/products/thingsboard-edge/thingsboard-edge.sass
index 7bb379d84a..974762e83d 100644
--- a/products/thingsboard-edge/thingsboard-edge.sass
+++ b/products/thingsboard-edge/thingsboard-edge.sass
@@ -34,27 +34,41 @@
align-content: center
background-color: rgba(0,0,0,0.72)
.edge-title
- margin-bottom: 20px
- font-size: 22px
- font-weight: 400
+ margin-bottom: 24px
+ font-size: 42px
+ font-weight: 500
text-shadow: 0 0 18px rgba(0,0,0,.66)
.edge-description
- margin-bottom: 40px
- font-size: 14px
- line-height: 16px
+ margin-bottom: 48px
+ font-size: 22px
+ line-height: 32px
text-shadow: 0 0 18px rgba(0,0,0,.66)
.try-edge
cursor: pointer
- line-height: 40px
- font-size: 16px
- padding: 0 15px
- border: 1px solid white
- background-color: transparent
- transition: 0.6s
- text-shadow: 0 0 18px rgba(0,0,0,.66)
+ line-height: 52px
+ font-size: 20px
+ padding: 0 28px
+ transition: all 0.3s ease
+ border: 2px solid white
+ color: white
&:hover
+ transform: scale(1.08)
+ background-color: rgba(255,255,255,0.15)
+ &:first-of-type
background-color: white
- color: $dark-grey
+ color: #009688
+ &:hover
+ transform: scale(1.08)
+ background-color: white
+ color: #009688
+ text-shadow: none
+ &:last-of-type
+ background-color: transparent
+ &:hover
+ transform: scale(1.05)
+ background-color: white
+ color: #009688
+ text-shadow: none
.learn-tb
cursor: pointer
line-height: 40px
@@ -146,29 +160,184 @@
font-size: 18px
#intro
- margin-bottom: 80px
- padding-top: 98px
+ margin-bottom: 10px
+ padding-top: 25px
color: #212924
.intro_title
padding: 0
- .labeling
- margin: 48px 0 102px
text-align: center
- color: #A5A5A5
+ margin-bottom: 64px
+ .stats-container
+ display: flex
+ justify-content: space-between
+ align-items: center
+ gap: 40px
+ max-width: 1200px
+ margin: 0 auto
+ .stat-block
+ flex: 1
+ text-align: center
+ padding: 32px 20px
+ position: relative
+ &:not(:last-child)::after
+ content: ''
+ position: absolute
+ right: -20px
+ top: 50%
+ transform: translateY(-50%)
+ width: 1px
+ height: 60px
+ background: linear-gradient(to bottom, transparent, #E0E0E0 20%, #E0E0E0 80%, transparent)
+ .stat-number
+ font-size: 64px
+ font-weight: 700
+ color: #009688
+ line-height: 1
+ margin-bottom: 12px
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Poppins, sans-serif
+ .stat-label
+ font-size: 18px
+ font-weight: 500
+ color: #757C76
+ line-height: 1.4
+
+ #product
+ padding: 10px 0
+ #background
+ .small1
+ top: -50px
+ .product-title
+ text-align: center
+ margin-top: 30px
+ margin-bottom: 30px
+ font-size: 42px
+ font-weight: 600
+ color: #212529
+ .scenario-wrapper
+ max-width: 1400px
+ margin: 0 auto
+ display: flex
+ gap: 40px
+ align-items: flex-start
+ .scenario-tabs
+ flex: 0 0 520px
+ display: flex
+ flex-direction: column
+ gap: 12px
+ .scenario-tab
+ padding: 20px 24px
font-size: 20px
- line-height: 1.5em
- font-weight: normal
- padding: 0
+ font-weight: 500
+ line-height: 1.4
+ color: #212529
+ background: white
+ border-radius: 12px
+ cursor: pointer
+ transition: all 0.3s ease
+ text-align: left
+ border: 2px solid transparent
+ &:hover
+ background: #F5F7FA
+ &.active
+ background: #E8F5F3
+ color: #212529
+ box-shadow: 0 2px 8px rgba(0,0,0,0.08)
+ .chevron
+ transform: rotate(180deg)
+ .tab-tags
+ display: flex
+ .tag
+ color: #009688
+ border: 1px solid #009688
+ background: transparent
+ font-size: 16px
+ font-weight: 400
+ p
+ color: #212529
+ font-size: 16px
+ font-weight: 400
+ .tab-header
+ display: flex
+ justify-content: space-between
+ align-items: center
+ width: 100%
+ .tab-name
+ margin: 0
+ font-size: 24px
+ font-weight: 400
+ line-height: inherit
+ display: block
+ .chevron
+ display: inline-block
+ margin-left: 8px
+ vertical-align: middle
+ transition: transform 0.3s ease
+ flex-shrink: 0
+ color: currentColor
+ .tab-tags
+ display: none
+ flex-wrap: wrap
+ gap: 8px
+ margin-top: 12px
+ .tag
+ display: inline-block
+ padding: 6px 14px
+ font-size: 13px
+ font-weight: 400
+ color: #009688
+ background: transparent
+ border: 1px solid #009688
+ border-radius: 6px
+ transition: all 0.2s ease
+ text-align: center
+ .scenario-category
+ display: none
+ flex: 1
+ min-width: 1000px
+ &.active
+ display: block
+ div
+ background: transparent
+ padding: 48px
+ img
+ display: block
+ max-width: 100%
+ height: auto
+ margin: 0 auto 32px
+ border-radius: 8px
+ .cta-button
+ display: block
+ width: fit-content
+ padding: 12px 32px
+ margin: 0 auto
+ background: #009688
+ color: white
+ font-size: 20px
+ font-weight: 500
+ text-decoration: none
+ border-radius: 6px
+ transition: all 0.3s ease
+ box-shadow: 0 2px 8px rgba(0,150,136,0.3)
+ &:hover
+ background: #1EB7A9
+ box-shadow: 0 4px 12px rgba(0,150,136,0.4)
+ text-decoration: none
+ transform: translateY(-2px)
#matrix
- margin: 80px -100% 0
+ margin: 40px -100% 0
padding: 0 100% 88px
- h3
- color: #212529
+ h2
+ text-align: center
+ margin-bottom: 35px
+ font-size: 42px
font-weight: 600
+ color: #212529
+ p
text-align: center
+ margin-bottom: 54px
font-size: 20px
- line-height: 40px
+ line-height: 1.6
#backg-matrix
position: relative
margin-left: -20px
@@ -179,7 +348,7 @@
width: 20%
position: absolute
z-index: -1
- top: 127px
+ top: 185px
.coln
height: 840px
border-radius: 6px
@@ -230,7 +399,7 @@
filter: invert(32%) sepia(100%) saturate(700%) hue-rotate(207deg) brightness(100%) contrast(102%)
thead
color: #212529
- font-size: 12px
+ font-size: 16px
line-height: 30px
background-color: unset
tr
@@ -240,10 +409,15 @@
text-align: center
vertical-align: center
font-weight: 600
- font-size: 11px
+ font-size: 16px
padding: 46px 0 30px
&:nth-child(1n)
color: white
+ a
+ text-decoration: none
+ transition: color 0.2s ease
+ &:hover
+ text-decoration: underline
td
width: 40%
tbody
@@ -252,7 +426,7 @@
height: 64px
th, a
font-weight: 600
- font-size: 12px
+ font-size: 16px
padding-right: 5px
color: #212529
img
@@ -260,65 +434,127 @@
td
text-align: center
font-weight: 600
- font-size: 11px
+ font-size: 14px
img
width: 32px
- #products
- margin-bottom: 143px
- #typical-usage-scenario
- font-size: 42px
+
+ #authored-quote
+ margin-top: 150px
+ padding: 20px 20px
#background
- .main2
- height: 877px
- .product-title
- text-align: center
- margin-bottom: 72px
- .product-list
- display: flex
+ .main1
+ top: -150px
+ .small3
+ top: -300px
+ .small4
+ top: -90px
+ main
+ max-width: 1500px
+ margin: 0 auto
+ background: white
+ border: 2px solid #E8EBF0
+ border-radius: 24px
+ padding: 24px
+ display: grid
+ grid-template-columns: 185px 1fr
gap: 40px
- align-items: flex-start
- @media screen and (max-width: 1450px)
- flex-direction: column
- div
- width: 100%
- display: flex
- flex-direction: column
- align-items: center
- gap: 40px
- padding: 40px
- border-radius: 6px
- text-align: center
- background-color: white
- box-shadow: 0 50px 50px -20px rgba(0,0,0,0.15), 0 0 30px 0 rgba(0,0,0,0.05)
- @media screen and (max-width: 1450px)
- gap: 30px
- padding: 30px
- p
- font-size: 16px
- h4
- font-size: 40px
- &:first-of-type
- p
- margin-bottom: 45px
- &.main
- height: 820px
- h4
- font-size: 55px
- p
- font-size: 18px
- margin: 0
- a
- padding-top: 20px
- color: #009688
- font-weight: 500
- #minimal-requirements
+ position: relative
+ img
+ grid-column: 1
+ grid-row: 1
+ width: 200px
+ height: 200px
+ border-radius: 12px
+ object-fit: cover
+ object-position: 15% center
+ position: relative
+ z-index: 1
+ .text
+ grid-column: 2
+ grid-row: 1
+ padding-left: 32px
+ border-left: 4px solid #009688
+ position: relative
+ z-index: 1
+ h2
+ font-size: 24px
+ font-weight: 600
+ color: #212529
+ margin-bottom: 20px
+ .quote
+ font-size: 16px
+ line-height: 1.6
+ color: #3D3D3D
+ margin-bottom: 24px
+ .author
+ font-size: 18px
+ font-weight: 600
+ color: #212529
+ margin-bottom: 4px
+ .title
+ font-size: 14px
+ color: #757C76
+ margin: 0
+
+ #get-in-touch
+ padding: 60px 20px
+ position: relative
main
- #background
- .main1
- top: -200px
- height: 890px
+ max-width: 1500px
+ margin: 0 auto
+ position: relative
+ opacity: 0
+ transform: translateY(50px)
+ animation: slideUp 0.8s ease-out forwards
+ @keyframes slideUp
+ to
+ opacity: 1
+ transform: translateY(0)
+ #background
+ position: absolute
+ top: 0
+ left: 0
+ width: 100%
+ height: 100%
+ z-index: -1
+ .block
+ background: white
+ border: 2px solid #009688
+ border-radius: 24px
+ padding: 40px 60px
+ box-shadow: 0 2px 12px rgba(0,0,0,0.08)
+ display: flex
+ justify-content: space-between
+ align-items: center
+ gap: 40px
+ .cta
+ font-size: 32px
+ font-weight: 600
+ color: #212529
+ margin: 0
+ .button
+ display: inline-block
+ padding: 16px 40px
+ background: #009688
+ color: white
+ font-size: 20px
+ font-weight: 500
+ text-decoration: none
+ border-radius: 8px
+ transition: all 0.3s ease
+ white-space: nowrap
+ &:hover
+ background: #1EB7A9
+ transform: translateY(-2px)
+ box-shadow: 0 4px 12px rgba(0,150,136,0.4)
- #local-deployment, #data-filtering, #local-alarms, #batch-update, #minimal-requirements
+ #local-deployment, #data-filtering, #local-alarms, #batch-update
+ h2
+ text-align: center
+ margin: 60px 0 10px
+ font-size: 42px
+ font-weight: 600
+ color: #212529
.block
justify-content: space-between
display: flex
@@ -355,66 +591,139 @@
#batch-update .block
padding: 80px 0 120px
- #minimal-requirements .block .feature-des
- padding: 80px 0 120px
-
#bottom-features
- padding-top: 72px
- .cards
- background-color: #EFFAF9
- padding: 72px 50% 28px
+ padding: 20px 20px
+ main
+ max-width: 1500px
+ margin: 0 auto
+ position: relative
+ h2
+ text-align: center
+ margin-bottom: 60px
+ font-size: 42px
+ font-weight: 600
+ color: #212529
+ .features-grid
+ display: grid
+ grid-template-columns: repeat(3, 1fr)
+ gap: 24px
+ .feature-card
+ background: white
+ border: 2px solid #E8EBF0
+ border-radius: 12px
+ overflow: hidden
+ transition: all 0.3s ease
+ &:hover
+ border-color: #009688
+ box-shadow: 0 4px 12px rgba(0,150,136,0.15)
+ &.active
+ border-color: #009688
+ .chevron
+ transform: rotate(180deg)
+ &.open
+ .chevron
+ transform: rotate(180deg)
+ .feature-content
+ max-height: 500px
+ padding: 0 24px 24px
+ opacity: 1
+ .feature-header
+ display: flex
+ align-items: center
+ gap: 16px
+ padding: 24px
+ cursor: pointer
+ transition: background 0.2s ease
+ &:hover
+ background: #F8F9FA
+ .feature-icon
+ flex: 0 0 68px
+ width: 68px
+ height: 68px
+ display: flex
+ align-items: center
justify-content: center
- margin-right: -50%
- margin-left: -50%
- &>div
- margin-bottom: 36px
- &.col-lg-6
- padding: 0 18px
- max-width: 100%
- .block
- padding: 48px
- float: left
- width: 100%
- height: 100%
- background: white
- border-radius: 6px
- box-shadow: 0 50px 50px -20px rgba(0,0,0,0.15)
- display: unset
- text-align: center
- div
- width: 100%
- .title
- margin-bottom: 6px
- line-height: 33px
- p
- margin-top: 10px
- img
- height: fit-content
- margin: 0 0 18px
+ background: #F0F8F7
+ border-radius: 8px
+ img
+ width: 58px
+ height: 58px
+ .feature-title
+ flex: 1
+ font-size: 18px
+ font-weight: 600
+ color: #212529
+ margin: 0
+ .chevron
+ flex: 0 0 20px
+ color: #757C76
+ transition: transform 0.3s ease
+ .feature-content
+ max-height: 0
+ overflow: hidden
+ opacity: 0
+ transition: all 0.4s ease
+ p
+ font-size: 18px
+ line-height: 1.6
+ color: #3D3D3D
+ margin: 0
#bottom
- display: flex
- justify-content: center
- padding: 46px 0 100px
+ padding: 80px 20px
+ .contact-us-banner
+ max-width: 1500px
+ margin: 0 auto
+ background: white
+ border: 2px solid #009688
+ border-radius: 24px
+ box-shadow: 0 4px 20px rgba(0,0,0,0.08)
+ display: flex
+ align-items: center
+ justify-content: space-between
+ padding: 10px 60px
+ gap: 60px
+ position: relative
+ overflow: hidden
+ opacity: 0
+ transform: translateY(50px)
+ animation: slideUp 0.8s ease-out forwards
+ @keyframes slideUp
+ to
+ opacity: 1
+ transform: translateY(0)
+ .contact-us-banner-content
+ flex: 1
+ h2
+ font-size: 32px
+ font-weight: 500
+ color: #212529
+ margin: 0 0 32px
+ line-height: 1.2
+ .contact-us-banner-buttons
+ display: flex
+ gap: 16px
.bottom-button
- background-color: #009688
- font-size: 24px
- font-weight: 400
- text-align: center
+ display: inline-block
+ padding: 16px 40px
+ background: #009688
color: white
- border-radius: 4px
+ font-size: 20px
+ font-weight: 500
text-decoration: none
- padding: 16px
- width: 350px
- display: block
- box-shadow: 0 28px 16px -20px rgba(34,41,41,0.25)
+ border-radius: 8px
+ transition: all 0.3s ease
&:hover
- background-color: #1EB7A9
- text-decoration: none
- color: #fff
- &:active
- background-color: #009688
- transition-duration: 0s
+ background: #1EB7A9
+ transform: translateY(-2px)
+ box-shadow: 0 4px 12px rgba(0,150,136,0.4)
+ img
+ flex: 0 0 280px
+ width: 280px
+ height: auto
+ opacity: 0.9
+ -webkit-mask-image: linear-gradient(to bottom, black 0%, transparent 100%)
+ mask-image: linear-gradient(to bottom, black 0%, transparent 100%)
#background
z-index: -1
@@ -509,135 +818,856 @@
opacity: 1
transform: translate3d(0, 0, 0)
- @media screen and (min-width: 750px)
- #hero
- #hero-content
- .edge-title
- font-size: 36px
- .edge-description
- font-size: 20px
- margin-bottom: 60px
+ // Large desktop (≤1400px)
+ @media screen and (max-width: 1400px)
+ #edgeContent
+ #product
+ .scenario-wrapper
+ max-width: 1200px
+ .scenario-tabs
+ flex: 0 0 420px
+ .scenario-category
+ min-width: 700px
+
+ // Desktop/Laptop (≤1200px)
+ @media screen and (max-width: 1200px)
+ #thingsboard-edge
+ #hero
+ #hero-content
+ .edge-title
+ font-size: 36px
+ .edge-description
+ font-size: 20px
+ line-height: 28px
+ .try-edge
+ font-size: 18px
+ line-height: 48px
+ padding: 0 24px
#edgeContent
+ h1
+ font-size: 28px
+ line-height: 44px
+ a
+ font-size: 28px
+ h2, h3.item-heading
+ font-size: 32px
+ line-height: 48px
+ h3:not(.item-heading)
+ font-size: 28px
+ #intro
+ .stats-container
+ gap: 24px
+ .stat-number
+ font-size: 52px
+ .stat-label
+ font-size: 16px
+ #product
+ .product-title
+ font-size: 36px
+ .scenario-wrapper
+ max-width: 100%
+ gap: 24px
+ .scenario-tabs
+ flex: 0 0 360px
+ .scenario-tab
+ padding: 16px 20px
+ .tab-header .tab-name
+ font-size: 20px
+ .scenario-category
+ min-width: 500px
+ div
+ padding: 32px
+ #matrix
+ h2
+ font-size: 36px
+ p
+ font-size: 18px
+ table
+ thead
+ font-size: 14px
+ tr th
+ font-size: 14px
+ tbody tr
+ th, a
+ font-size: 14px
+ td
+ font-size: 13px
+ #authored-quote
+ main
+ gap: 24px
+ img
+ width: 160px
+ height: 160px
+ .text
+ h2
+ font-size: 22px
+ .quote
+ font-size: 15px
#local-deployment, #data-filtering, #local-alarms, #batch-update
+ h2
+ font-size: 36px
+ #bottom-features
+ h2
+ font-size: 36px
+ .features-grid
+ gap: 16px
+ .feature-header
+ padding: 20px
+ .feature-icon
+ flex: 0 0 56px
+ width: 56px
+ height: 56px
+ img
+ width: 48px
+ height: 48px
+ .feature-title
+ font-size: 16px
+ #get-in-touch
.block
- .feature-des, .block-img
- width: 80%
+ padding: 32px 40px
+ .cta
+ font-size: 28px
+ .button
+ font-size: 18px
+ padding: 14px 32px
+ #bottom
+ .contact-us-banner
+ padding: 10px 40px
+ gap: 40px
+ .contact-us-banner-content h2
+ font-size: 28px
+ img
+ flex: 0 0 220px
+ width: 220px
+
+ // Tablet landscape (≤992px)
+ @media screen and (max-width: 992px)
+ #thingsboard-edge
+ #hero
+ #hero-content
+ .edge-title
+ font-size: 32px
+ .edge-description
+ font-size: 18px
+ line-height: 26px
+ margin-bottom: 36px
+ .try-edge
+ font-size: 16px
+ line-height: 44px
+ padding: 0 20px
+ #edgeContent
+ h1
+ font-size: 26px
+ line-height: 40px
+ a
+ font-size: 26px
+ h2, h3.item-heading
+ font-size: 28px
+ line-height: 42px
+ h3:not(.item-heading)
+ font-size: 24px
+ p
+ font-size: 16px
+ line-height: 24px
+ #intro
+ .intro_title
+ margin-bottom: 48px
+ .stats-container
+ flex-wrap: wrap
+ gap: 20px
+ .stat-block
+ flex: 1 1 calc(50% - 20px)
+ min-width: 200px
+ &:not(:last-child)::after
+ display: none
+ .stat-number
+ font-size: 48px
+ .stat-label
+ font-size: 15px
+ #product
+ .product-title
+ font-size: 32px
+ .scenario-wrapper
+ flex-direction: column
+ gap: 24px
+ .scenario-tabs
+ flex: none
+ width: 100%
+ .scenario-category
+ min-width: unset
+ width: 100%
+ div
+ padding: 24px
#matrix
- h3
- font-size: 42px
- line-height: 63px
+ h2
+ font-size: 32px
+ p
+ font-size: 16px
#backg-matrix
.gateway, .edge, .cloud
- padding: 0 20px
- width: 20%
+ top: 150px
+ .coln
+ height: 720px
table
thead
- font-size: 30px
+ font-size: 13px
tr
+ height: 90px
th
- width: 20%
- padding: 0 0 10px
- font-size: 20px
- td
- width: 40%
- tbody
- tr
- th, a
- padding-right: 30px
- font-size: 18px
- td
- font-size: 20px
- img
- width: unset
- #bottom-features .cards .col-lg-6 .block
- text-align: left
- display: flex
- div
- width: calc(100% - 122px)
+ font-size: 13px
+ padding: 36px 0 24px
+ tbody tr
+ height: 56px
+ th, a
+ font-size: 13px
+ td
+ font-size: 12px
+ img
+ width: 28px
+ #authored-quote
+ margin-top: 100px
+ main
+ grid-template-columns: 140px 1fr
+ gap: 24px
+ padding: 20px
+ img
+ width: 140px
+ height: 140px
+ .text
+ padding-left: 24px
+ h2
+ font-size: 20px
+ margin-bottom: 16px
+ .quote
+ font-size: 15px
+ margin-bottom: 20px
+ #local-deployment, #data-filtering, #local-alarms, #batch-update
+ h2
+ font-size: 32px
+ .block
+ padding: 40px 0
+ #bottom-features
+ h2
+ font-size: 32px
+ margin-bottom: 40px
+ .features-grid
+ grid-template-columns: repeat(2, 1fr)
+ #get-in-touch
+ .block
+ padding: 28px 32px
+ gap: 24px
+ .cta
+ font-size: 24px
+ .button
+ font-size: 16px
+ padding: 12px 28px
+ #bottom
+ .contact-us-banner
+ flex-direction: column
+ text-align: center
+ padding: 32px
+ gap: 24px
+ .contact-us-banner-content h2
+ font-size: 26px
+ .contact-us-banner-buttons
+ justify-content: center
img
- margin: 0 30px 0 0
+ flex: 0 0 auto
+ width: 200px
+ order: -1
- @media screen and (max-width: 750px)
- #matrix
- h3
- font-size: 38px
- line-height: 42px
+ // Tablet portrait (≤768px)
+ @media screen and (max-width: 768px)
+ #thingsboard-edge
+ #hero
+ #hero-content
+ .edge-title
+ font-size: 28px
+ margin-bottom: 16px
+ .edge-description
+ font-size: 16px
+ line-height: 22px
+ margin-bottom: 32px
+ .try-edge
+ font-size: 15px
+ line-height: 42px
+ padding: 0 18px
+ #edgeContent
+ h1
+ font-size: 24px
+ line-height: 36px
+ a
+ font-size: 24px
+ h2, h3.item-heading
+ font-size: 26px
+ line-height: 38px
+ h3:not(.item-heading)
+ font-size: 22px
+ p
+ font-size: 15px
+ line-height: 23px
+ #intro
+ .intro_title
+ margin-bottom: 40px
+ .stats-container
+ gap: 16px
+ .stat-block
+ padding: 24px 16px
+ .stat-number
+ font-size: 40px
+ .stat-label
+ font-size: 14px
+ #product
+ .product-title
+ font-size: 28px
+ margin-top: 24px
+ margin-bottom: 24px
+ .scenario-tab
+ padding: 14px 16px
+ font-size: 15px
+ .tab-header .tab-name
+ font-size: 18px
+ .tag
+ font-size: 12px
+ padding: 5px 12px
+ &.active p
+ font-size: 14px
+ .scenario-category
+ div
+ padding: 20px 16px
+ .cta-button
+ font-size: 18px
+ padding: 10px 28px
+ #matrix
+ margin: 30px 0 0
+ padding: 0 0 70px
+ h2
+ font-size: 28px
+ margin-bottom: 24px
+ p
+ font-size: 15px
+ margin-bottom: 40px
+ #backg-matrix
+ display: none
table
width: 100%
+ margin: 30px 0 16px
+ border-collapse: collapse
thead
- font-size: 20px
+ font-size: 12px
tr
+ height: 70px
th
- width: 20%
- padding: 0 0 2px
- font-size: 16px
- td
- width: 40%
- tbody
- tr
- th, a
- font-size: 16px
- td
- font-size: 18px
- img
- width: unset
+ font-size: 12px
+ padding: 20px 6px
+ vertical-align: middle
+ &:nth-child(2)
+ background-color: rgba(122, 77, 195, 0.15)
+ color: #7A4DC3
+ &:nth-child(3)
+ background-color: rgba(0, 150, 136, 0.15)
+ color: #009688
+ &:nth-child(4)
+ background-color: rgba(42, 125, 236, 0.15)
+ color: #2A7DEC
+ tbody tr
+ height: 48px
+ th, a
+ font-size: 12px
+ td
+ font-size: 11px
+ padding: 6px
+ &:nth-child(2)
+ background-color: rgba(122, 77, 195, 0.08)
+ &:nth-child(3)
+ background-color: rgba(0, 150, 136, 0.08)
+ &:nth-child(4)
+ background-color: rgba(42, 125, 236, 0.08)
+ img
+ width: 26px
+ #authored-quote
+ margin-top: 80px
+ padding: 20px 16px
+ main
+ display: flex
+ flex-direction: column
+ gap: 16px
+ padding: 20px
+ img
+ width: 140px
+ height: 140px
+ margin: 0 auto
+ order: 1
+ .text
+ order: 2
+ border-left: none
+ padding-left: 0
+ padding-top: 16px
+ border-top: 4px solid #009688
+ text-align: center
+ h2
+ font-size: 20px
+ .quote
+ font-size: 14px
+ .author
+ font-size: 16px
+ #local-deployment, #data-filtering, #local-alarms, #batch-update
+ h2
+ font-size: 28px
+ margin: 50px 0 8px
+ .block
+ padding: 36px 0
+ .feature-des
+ padding-top: 40px !important
+ #bottom-features
+ padding: 40px 16px
+ h2
+ font-size: 28px
+ margin-bottom: 36px
+ .features-grid
+ grid-template-columns: 1fr
+ gap: 12px
+ .feature-header
+ padding: 18px 16px
+ .feature-icon
+ flex: 0 0 52px
+ width: 52px
+ height: 52px
+ img
+ width: 42px
+ height: 42px
+ .feature-title
+ font-size: 15px
+ #get-in-touch
+ padding: 50px 16px
+ .block
+ padding: 24px 20px
+ flex-direction: column
+ text-align: center
+ gap: 20px
+ .cta
+ font-size: 22px
+ .button
+ font-size: 16px
+ padding: 12px 28px
+ #bottom
+ padding: 60px 16px
+ .contact-us-banner
+ padding: 28px 24px
+ .contact-us-banner-content h2
+ font-size: 24px
+ margin-bottom: 24px
+ .bottom-button
+ font-size: 18px
+ padding: 14px 32px
+ img
+ width: 180px
- @media screen and (min-width: 1025px)
- section, header
- main
- max-width: 100%
- footer
- main, div.main-div
- max-width: 100%
+ // Mobile landscape (≤576px)
+ @media screen and (max-width: 576px)
+ #thingsboard-edge
+ #hero
+ #hero-content
+ .edge-title
+ font-size: 24px
+ margin-bottom: 14px
+ .edge-description
+ font-size: 14px
+ line-height: 20px
+ margin-bottom: 28px
+ .try-edge
+ font-size: 14px
+ line-height: 38px
+ padding: 0 14px
#edgeContent
+ h1
+ font-size: 22px
+ line-height: 32px
+ a
+ font-size: 22px
+ h2, h3.item-heading
+ font-size: 24px
+ line-height: 34px
+ h3:not(.item-heading)
+ font-size: 20px
+ p
+ font-size: 14px
+ line-height: 22px
+ a
+ font-size: 16px
#intro
+ padding-top: 20px
.intro_title
- padding: 0 5%
- .labeling
- padding: 0 8%
+ font-size: 22px
+ margin-bottom: 32px
+ .stats-container
+ display: grid
+ grid-template-columns: repeat(2, 1fr)
+ gap: 16px
+ .stat-block
+ padding: 16px 12px
+ .stat-number
+ font-size: 36px
+ margin-bottom: 8px
+ .stat-label
+ font-size: 13px
+ #product
+ .product-title
+ font-size: 26px
+ margin-top: 20px
+ margin-bottom: 20px
+ .scenario-tab
+ padding: 14px 14px
+ .tab-header .tab-name
+ font-size: 16px
+ .tag
+ font-size: 12px
+ padding: 4px 10px
+ &.active p
+ font-size: 14px
+ .scenario-category
+ div
+ padding: 18px 12px
+ .cta-button
+ font-size: 16px
+ padding: 10px 24px
+ #matrix
+ margin: 30px 0 0
+ padding: 0 0 50px
+ h2
+ font-size: 24px
+ margin-bottom: 16px
+ p
+ font-size: 14px
+ margin-bottom: 28px
+ #backg-matrix
+ display: none
+ table
+ width: 100%
+ margin: 24px 0 16px
+ border-collapse: collapse
+ thead
+ font-size: 10px
+ tr
+ height: 65px
+ th
+ font-size: 10px
+ padding: 16px 4px
+ vertical-align: middle
+ &:nth-child(2)
+ background-color: rgba(122, 77, 195, 0.15)
+ color: #7A4DC3
+ &:nth-child(3)
+ background-color: rgba(0, 150, 136, 0.15)
+ color: #009688
+ &:nth-child(4)
+ background-color: rgba(42, 125, 236, 0.15)
+ color: #2A7DEC
+ tbody tr
+ height: 44px
+ th, a
+ font-size: 10px
+ padding-right: 4px
+ td
+ font-size: 9px
+ padding: 4px
+ &:nth-child(2)
+ background-color: rgba(122, 77, 195, 0.08)
+ &:nth-child(3)
+ background-color: rgba(0, 150, 136, 0.08)
+ &:nth-child(4)
+ background-color: rgba(42, 125, 236, 0.08)
+ img
+ width: 20px
+ #authored-quote
+ margin-top: 60px
+ padding: 16px 12px
+ main
+ display: flex
+ flex-direction: column
+ padding: 18px 14px
+ gap: 14px
+ img
+ width: 110px
+ height: 110px
+ margin: 0 auto
+ order: 1
+ .text
+ order: 2
+ border-left: none
+ padding-left: 0
+ padding-top: 14px
+ border-top: 4px solid #009688
+ text-align: center
+ h2
+ font-size: 18px
+ margin-bottom: 14px
+ .quote
+ font-size: 13px
+ margin-bottom: 18px
+ .author
+ font-size: 15px
+ .title
+ font-size: 13px
#local-deployment, #data-filtering, #local-alarms, #batch-update
+ h2
+ font-size: 26px
+ margin: 36px 0 6px
.block
- flex-direction: row
- .feature-des, .block-img
- width: calc(50% - 80px)
- order: unset
+ padding: 28px 0
+ .feature-des
+ padding-top: 16px !important
.block-img img
- margin: unset
- #local-alarms #background .main2
- height: 405px
-
- @media screen and (min-width: 1250px)
- #hero
- #hero-content
- .edge-title
- margin-bottom: 60px
- font-size: 64px
- .edge-description
- font-size: 28px
- margin-bottom: 80px
- .try-edge
- line-height: 60px
- font-size: 28px
- padding: 0 40px
- margin: 0 4px
- border-width: 3px
- #edgeContent
- max-width: 1400px
- #intro
- .intro_title
- padding: 0 7%
- .labeling
- padding: 0 13%
+ max-width: 100%
+ #bottom-features
+ padding: 32px 12px
+ h2
+ font-size: 26px
+ margin-bottom: 28px
+ .features-grid
+ gap: 10px
+ .feature-header
+ padding: 14px 12px
+ gap: 12px
+ .feature-icon
+ flex: 0 0 48px
+ width: 48px
+ height: 48px
+ img
+ width: 36px
+ height: 36px
+ .feature-title
+ font-size: 14px
+ .feature-content p
+ font-size: 14px
+ #get-in-touch
+ padding: 40px 12px
+ .block
+ padding: 20px 16px
+ gap: 16px
+ .cta
+ font-size: 20px
+ .button
+ font-size: 15px
+ padding: 10px 24px
+ #bottom
+ padding: 50px 12px
+ .contact-us-banner
+ padding: 24px 18px
+ gap: 18px
+ .contact-us-banner-content h2
+ font-size: 22px
+ margin-bottom: 20px
+ .contact-us-banner-buttons
+ flex-direction: column
+ gap: 12px
+ .bottom-button
+ font-size: 16px
+ padding: 12px 28px
+ img
+ width: 160px
- @media screen and (min-width: 1500px)
+ // Mobile portrait (≤414px)
+ @media screen and (max-width: 414px)
+ #thingsboard-edge
+ #hero
+ #hero-content
+ .edge-title
+ font-size: 22px
+ .edge-description
+ font-size: 13px
+ line-height: 18px
+ margin-bottom: 24px
+ .try-edge
+ font-size: 13px
+ line-height: 36px
+ padding: 0 12px
#edgeContent
- max-width: 1400px
#intro
.intro_title
- padding: 0 10%
- .labeling
- padding: 0 18%
- #batch-update .block
- padding-top: 40px
- #local-alarms #background .main2
- height: 485px
+ font-size: 24px
+ margin-bottom: 40px
+ .stats-container
+ display: grid
+ grid-template-columns: repeat(2, 1fr)
+ gap: 20px
+ .stat-block
+ padding: 16px 12px
+ &:not(:last-child)::after
+ display: none
+ .stat-number
+ font-size: 32px
+ margin-bottom: 8px
+ .stat-label
+ font-size: 14px
+ #product
+ .product-title
+ font-size: 28px
+ margin-top: 20px
+ margin-bottom: 20px
+ .scenario-tabs
+ flex: none
+ width: 100%
+ .scenario-tab
+ padding: 16px 18px
+ font-size: 16px
+ .tab-header .tab-name
+ font-size: 18px
+ .tag
+ font-size: 13px
+ padding: 4px 10px
+ .scenario-wrapper
+ flex-direction: column
+ gap: 20px
+ .scenario-category
+ min-width: unset
+ width: 100%
+ div
+ padding: 24px 16px
+ img
+ max-width: 100%
+ .cta-button
+ font-size: 16px
+ padding: 10px 24px
+ #matrix
+ margin: 40px 0 0
+ padding: 0 0 40px
+ h2
+ font-size: 22px
+ margin-bottom: 16px
+ p
+ font-size: 14px
+ margin-bottom: 24px
+ #backg-matrix
+ display: none
+ table
+ width: 100%
+ margin: 20px 0 16px
+ border-collapse: collapse
+ thead
+ font-size: 9px
+ tr
+ height: 60px
+ th
+ font-size: 9px
+ padding: 12px 2px
+ vertical-align: middle
+ background-color: transparent
+ &:nth-child(2)
+ background-color: rgba(122, 77, 195, 0.15)
+ color: #7A4DC3
+ &:nth-child(3)
+ background-color: rgba(0, 150, 136, 0.15)
+ color: #009688
+ &:nth-child(4)
+ background-color: rgba(42, 125, 236, 0.15)
+ color: #2A7DEC
+ tbody
+ tr
+ height: 40px
+ th, a
+ font-size: 9px
+ padding-right: 2px
+ td
+ font-size: 8px
+ padding: 4px 2px
+ &:nth-child(2)
+ background-color: rgba(122, 77, 195, 0.08)
+ &:nth-child(3)
+ background-color: rgba(0, 150, 136, 0.08)
+ &:nth-child(4)
+ background-color: rgba(42, 125, 236, 0.08)
+ img
+ width: 18px
+ #authored-quote
+ margin-top: 80px
+ padding: 20px 12px
+ main
+ display: flex
+ flex-direction: column
+ padding: 20px 16px
+ gap: 20px
+ img
+ width: 120px
+ height: 120px
+ margin: 0 auto
+ order: 1
+ .text
+ order: 2
+ border-left: none
+ padding-left: 0
+ padding-top: 20px
+ border-top: 4px solid #009688
+ text-align: center
+ h2
+ font-size: 18px
+ .quote
+ font-size: 14px
+ .author
+ font-size: 16px
+ #local-deployment, #data-filtering, #local-alarms, #batch-update
+ h2
+ font-size: 28px
+ margin: 40px 0 8px
+ .block
+ padding: 30px 0
+ .feature-des
+ padding-top: 20px !important
+ .block-img
+ img
+ max-width: 100%
+ #get-in-touch
+ padding: 40px 12px
+ .block
+ padding: 24px 16px
+ flex-direction: column
+ text-align: center
+ gap: 20px
+ .cta
+ font-size: 22px
+ .button
+ font-size: 16px
+ padding: 12px 28px
+ #bottom-features
+ padding: 40px 12px
+ h2
+ font-size: 28px
+ margin-bottom: 40px
+ .features-grid
+ grid-template-columns: repeat(3, 1fr)
+ gap: 12px
+ .feature-header
+ padding: 16px 8px
+ flex-direction: column
+ gap: 8px
+ .feature-icon
+ width: 48px
+ height: 48px
+ img
+ width: 36px
+ height: 36px
+ .feature-title
+ display: none
+ .chevron
+ display: none
+ .feature-content
+ display: none
+ #bottom
+ padding: 40px 12px
+ .contact-us-banner
+ flex-direction: column
+ text-align: center
+ padding: 28px 20px
+ gap: 20px
+ .contact-us-banner-content
+ h2
+ font-size: 22px
+ margin-bottom: 20px
+ .contact-us-banner-buttons
+ justify-content: center
+ .bottom-button
+ font-size: 16px
+ padding: 12px 24px
+ img
+ width: 180px
+ flex: 0 0 auto
\ No newline at end of file