{"id":1398,"date":"2026-09-30T23:15:49","date_gmt":"2026-09-30T16:15:49","guid":{"rendered":"https:\/\/slimthailand.com\/?page_id=1398"},"modified":"2026-11-02T12:38:46","modified_gmt":"2026-11-02T05:38:46","slug":"page-1398","status":"publish","type":"page","link":"https:\/\/www.slimthailand.com\/en\/page-1398\/","title":{"rendered":"Outdoor Sauna"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1398\" class=\"elementor elementor-1398\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-17f8d82 e-con-full e-flex e-con e-parent\" data-id=\"17f8d82\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fe487ad elementor-widget elementor-widget-html\" data-id=\"fe487ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n     SLIM | OUTDOOR SAUNA PRODUCT HERO\r\n     READY TO COPY & PASTE\r\n========================================================= -->\r\n\r\n<style>\r\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@300;400;500;600&display=swap');\r\n\r\n\r\n\/* =========================================================\r\n   BASE\r\n========================================================= *\/\r\n\r\n#slim-outdoor-hero,\r\n#slim-outdoor-hero * {\r\n    box-sizing: border-box;\r\n    font-family: 'Montserrat', sans-serif !important;\r\n}\r\n\r\n#slim-outdoor-hero {\r\n    position: relative;\r\n\r\n    width: 100%;\r\n    height: 560px;\r\n    min-height: 500px;\r\n\r\n    margin-top: 0 !important;\r\n    padding-top: 0 !important;\r\n\r\n    overflow: hidden;\r\n\r\n    background: #f5f1eb;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   BACKGROUND IMAGE\r\n========================================================= *\/\r\n\r\n#slim-outdoor-hero .soh-bg {\r\n    position: absolute;\r\n    inset: 0;\r\n\r\n    z-index: 1;\r\n\r\n    background-image:\r\n        url('https:\/\/www.slimthailand.com\/wp-content\/uploads\/2026\/10\/media-20261029-114347.png');\r\n\r\n    background-size: cover;\r\n    background-position: center right;\r\n    background-repeat: no-repeat;\r\n\r\n    transform: scale(1.001);\r\n\r\n    transition:\r\n        transform 1.8s cubic-bezier(.2,.7,.2,1);\r\n}\r\n\r\n\r\n\/* subtle zoom *\/\r\n\r\n#slim-outdoor-hero:hover .soh-bg {\r\n    transform: scale(1.015);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   LEFT CREAM GRADIENT\r\n========================================================= *\/\r\n\r\n#slim-outdoor-hero .soh-overlay {\r\n    position: absolute;\r\n    inset: 0;\r\n\r\n    z-index: 2;\r\n\r\n    pointer-events: none;\r\n\r\n    background:\r\n        linear-gradient(\r\n            90deg,\r\n\r\n            rgba(247,244,238,1) 0%,\r\n            rgba(247,244,238,1) 23%,\r\n\r\n            rgba(247,244,238,.99) 30%,\r\n            rgba(247,244,238,.95) 36%,\r\n            rgba(247,244,238,.81) 43%,\r\n            rgba(247,244,238,.54) 50%,\r\n            rgba(247,244,238,.22) 57%,\r\n            rgba(247,244,238,0) 66%\r\n        );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CONTENT WRAPPER\r\n========================================================= *\/\r\n\r\n#slim-outdoor-hero .soh-inner {\r\n    position: relative;\r\n    z-index: 3;\r\n\r\n    width: 100%;\r\n    max-width: 1600px;\r\n    height: 100%;\r\n\r\n    margin: 0 auto;\r\n\r\n    display: flex;\r\n    align-items: center;\r\n\r\n    padding:\r\n        55px\r\n        clamp(40px, 6vw, 95px);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TEXT CONTENT\r\n========================================================= *\/\r\n\r\n#slim-outdoor-hero .soh-content {\r\n    width: 46%;\r\n    max-width: 610px;\r\n\r\n    transform: translateY(-3px);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   BREADCRUMB\r\n========================================================= *\/\r\n\r\n#slim-outdoor-hero .soh-breadcrumb {\r\n    display: flex;\r\n    align-items: center;\r\n\r\n    gap: 9px;\r\n\r\n    margin:\r\n        0\r\n        0\r\n        18px;\r\n\r\n    color: #68635d;\r\n\r\n    font-size: 11px;\r\n    font-weight: 500;\r\n\r\n    line-height: 1;\r\n\r\n    letter-spacing: .12em;\r\n\r\n    text-transform: uppercase;\r\n}\r\n\r\n\r\n#slim-outdoor-hero .soh-breadcrumb-separator {\r\n    opacity: .45;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TITLE\r\n========================================================= *\/\r\n\r\n#slim-outdoor-hero .soh-title {\r\n    margin: 0;\r\n\r\n    color: #252422;\r\n\r\n    font-size:\r\n        clamp(46px, 4.5vw, 70px);\r\n\r\n    font-weight: 300;\r\n\r\n    line-height: 1.03;\r\n\r\n    letter-spacing: -0.045em;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   DESCRIPTION\r\n========================================================= *\/\r\n\r\n#slim-outdoor-hero .soh-description {\r\n    max-width: 540px;\r\n\r\n    margin:\r\n        18px\r\n        0\r\n        0;\r\n\r\n    color: #6f6962;\r\n\r\n    font-size:\r\n        clamp(15px, 1.15vw, 18px);\r\n\r\n    font-weight: 300;\r\n\r\n    line-height: 1.55;\r\n\r\n    letter-spacing: -0.015em;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SECOND PARAGRAPH\r\n========================================================= *\/\r\n\r\n#slim-outdoor-hero .soh-description + .soh-description {\r\n    margin-top: 18px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   INTRO ANIMATION\r\n========================================================= *\/\r\n\r\n#slim-outdoor-hero .soh-breadcrumb,\r\n#slim-outdoor-hero .soh-title,\r\n#slim-outdoor-hero .soh-description {\r\n    opacity: 0;\r\n\r\n    transform:\r\n        translateY(18px);\r\n\r\n    animation:\r\n        sohFadeUp .8s ease forwards;\r\n}\r\n\r\n\r\n#slim-outdoor-hero .soh-title {\r\n    animation-delay: .08s;\r\n}\r\n\r\n\r\n#slim-outdoor-hero .soh-description:nth-of-type(1) {\r\n    animation-delay: .16s;\r\n}\r\n\r\n\r\n#slim-outdoor-hero .soh-description:nth-of-type(2) {\r\n    animation-delay: .24s;\r\n}\r\n\r\n\r\n@keyframes sohFadeUp {\r\n\r\n    to {\r\n        opacity: 1;\r\n        transform: translateY(0);\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TABLET\r\n========================================================= *\/\r\n\r\n@media (max-width: 1100px) {\r\n\r\n    #slim-outdoor-hero {\r\n        height: 520px;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-inner {\r\n        padding:\r\n            45px\r\n            45px;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-content {\r\n        width: 52%;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-bg {\r\n        background-position:\r\n            63% center;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-overlay {\r\n\r\n        background:\r\n            linear-gradient(\r\n                90deg,\r\n\r\n                rgba(247,244,238,1) 0%,\r\n                rgba(247,244,238,.99) 30%,\r\n                rgba(247,244,238,.91) 42%,\r\n                rgba(247,244,238,.67) 54%,\r\n                rgba(247,244,238,.26) 69%,\r\n                rgba(247,244,238,0) 84%\r\n            );\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MOBILE\r\n========================================================= *\/\r\n\r\n@media (max-width: 767px) {\r\n\r\n    #slim-outdoor-hero {\r\n        height: 680px;\r\n        min-height: 680px;\r\n    }\r\n\r\n\r\n    \/* MOBILE IMAGE *\/\r\n\r\n    #slim-outdoor-hero .soh-bg {\r\n        background-image:\r\n            url('https:\/\/www.slimthailand.com\/wp-content\/uploads\/2026\/10\/media-20261030-125026.png');\r\n\r\n        background-size: cover;\r\n\r\n        background-position:\r\n            center center;\r\n\r\n        background-repeat: no-repeat;\r\n    }\r\n\r\n\r\n    \/* MOBILE CREAM FADE \u2014 REDUCED *\/\r\n\r\n    #slim-outdoor-hero .soh-overlay {\r\n\r\n        background:\r\n            linear-gradient(\r\n                180deg,\r\n\r\n                rgba(247,244,238,.98) 0%,\r\n                rgba(247,244,238,.94) 14%,\r\n                rgba(247,244,238,.78) 24%,\r\n                rgba(247,244,238,.52) 32%,\r\n                rgba(247,244,238,.25) 40%,\r\n                rgba(247,244,238,.08) 46%,\r\n                rgba(247,244,238,0) 52%\r\n            );\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-inner {\r\n        align-items: flex-start;\r\n\r\n        padding:\r\n            48px\r\n            22px\r\n            28px;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-content {\r\n        width: 100%;\r\n        max-width: 100%;\r\n\r\n        transform: none;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-breadcrumb {\r\n        margin-bottom: 14px;\r\n\r\n        font-size: 9px;\r\n\r\n        gap: 7px;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-title {\r\n        max-width: 370px;\r\n\r\n        font-size:\r\n            clamp(39px, 10.5vw, 49px);\r\n\r\n        line-height: 1.03;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-description {\r\n        max-width: 345px;\r\n\r\n        margin-top: 16px;\r\n\r\n        font-size: 12.5px;\r\n\r\n        line-height: 1.55;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-description + .soh-description {\r\n        margin-top: 14px;\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SMALL MOBILE\r\n========================================================= *\/\r\n\r\n@media (max-width: 420px) {\r\n\r\n    #slim-outdoor-hero {\r\n        height: 650px;\r\n        min-height: 650px;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-bg {\r\n        background-image:\r\n            url('https:\/\/www.slimthailand.com\/wp-content\/uploads\/2026\/10\/media-20261030-125026.png');\r\n\r\n        background-size: cover;\r\n\r\n        background-position:\r\n            center center;\r\n\r\n        background-repeat: no-repeat;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-inner {\r\n        padding:\r\n            40px\r\n            18px\r\n            24px;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-title {\r\n        font-size: 37px;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-description {\r\n        max-width: 310px;\r\n\r\n        margin-top: 14px;\r\n\r\n        font-size: 11.5px;\r\n\r\n        line-height: 1.5;\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-description + .soh-description {\r\n        margin-top: 12px;\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   REDUCED MOTION\r\n========================================================= *\/\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n\r\n    #slim-outdoor-hero *,\r\n    #slim-outdoor-hero *::before,\r\n    #slim-outdoor-hero *::after {\r\n\r\n        animation: none !important;\r\n        transition: none !important;\r\n\r\n    }\r\n\r\n\r\n    #slim-outdoor-hero .soh-breadcrumb,\r\n    #slim-outdoor-hero .soh-title,\r\n    #slim-outdoor-hero .soh-description {\r\n\r\n        opacity: 1;\r\n        transform: none;\r\n\r\n    }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n<!-- =========================================================\r\n     HTML\r\n========================================================= -->\r\n\r\n<section id=\"slim-outdoor-hero\">\r\n\r\n\r\n    <div class=\"soh-bg\"><\/div>\r\n\r\n\r\n    <div class=\"soh-overlay\"><\/div>\r\n\r\n\r\n    <div class=\"soh-inner\">\r\n\r\n\r\n        <div class=\"soh-content\">\r\n\r\n\r\n            <div class=\"soh-breadcrumb\">\r\n\r\n                <span>\r\n                    PRODUCTS\r\n                <\/span>\r\n\r\n                <span class=\"soh-breadcrumb-separator\">\r\n                    \/\r\n                <\/span>\r\n\r\n                <span>\r\n                    OUTDOOR SAUNA.\r\n                <\/span>\r\n\r\n            <\/div>\r\n\r\n\r\n            <h1 class=\"soh-title\">\r\n                Outdoor Sauna\r\n            <\/h1>\r\n\r\n\r\n            <p class=\"soh-description\">\r\n\r\n                Bring wellness closer to nature. Explore our\r\n                collection of outdoor sauna designs crafted\r\n                for relaxation, fresh air and elevated\r\n                everyday rituals.\r\n\r\n            <\/p>\r\n\r\n\r\n            <p class=\"soh-description\">\r\n\r\n                From timeless barrel saunas to modern cabin designs,\r\n                our outdoor collection blends natural materials with\r\n                contemporary craftsmanship \u2014 creating a serene retreat\r\n                in your own space.\r\n\r\n            <\/p>\r\n\r\n\r\n        <\/div>\r\n\r\n\r\n    <\/div>\r\n\r\n\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a9b7921 elementor-widget elementor-widget-html\" data-id=\"a9b7921\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* =========================================================\n   SLIM \u2014 OUTDOOR SAUNA\n   READY TO PASTE (fast-load version)\n========================================================= *\/\n\n#slim-outdoor-products{\n  width:100%;\n  margin:0;\n  padding:0 30px 30px;\n  box-sizing:border-box;\n  font-family:\"Montserrat\",\"Prompt\",sans-serif;\n  color:#342e29;\n  background:#f8f5ef;\n}\n\n#slim-outdoor-products *,\n#slim-outdoor-products *::before,\n#slim-outdoor-products *::after{\n  box-sizing:border-box;\n}\n\n\/* FILTER *\/\n#slim-outdoor-products .slim-filter{\n  width:100%;\n  display:flex !important;\n  align-items:center !important;\n  justify-content:flex-start !important;\n  margin:0 0 24px !important;\n  padding:0 !important;\n  background:transparent !important;\n  border:0 !important;\n  border-bottom:1px solid #ded8cf !important;\n  overflow-x:auto;\n  scrollbar-width:none;\n}\n\n#slim-outdoor-products .slim-filter::-webkit-scrollbar{\n  display:none;\n}\n\n#slim-outdoor-products .slim-filter-btn{\n  all:unset !important;\n  position:relative !important;\n  display:flex !important;\n  align-items:center !important;\n  justify-content:center !important;\n  height:44px !important;\n  padding:0 28px !important;\n  margin:0 !important;\n  background:transparent !important;\n  border:0 !important;\n  border-radius:0 !important;\n  box-shadow:none !important;\n  font-family:\"Montserrat\",sans-serif !important;\n  font-size:10px !important;\n  line-height:1 !important;\n  font-weight:500 !important;\n  letter-spacing:.045em !important;\n  color:#806f60 !important;\n  cursor:pointer !important;\n  white-space:nowrap !important;\n}\n\n#slim-outdoor-products .slim-filter-btn:first-child{\n  padding-left:18px !important;\n}\n\n#slim-outdoor-products .slim-filter-btn:not(:last-child)::after{\n  content:\"\";\n  position:absolute;\n  right:0;\n  top:50%;\n  transform:translateY(-50%);\n  width:1px;\n  height:18px;\n  background:#ddd7ce;\n}\n\n#slim-outdoor-products .slim-filter-btn.active,\n#slim-outdoor-products .slim-filter-btn:hover{\n  color:#342e29 !important;\n}\n\n\/* GRID *\/\n#slim-outdoor-products .slim-products-grid{\n  width:100%;\n  display:grid !important;\n  grid-template-columns:repeat(3,minmax(0,1fr)) !important;\n  gap:14px !important;\n  margin:0 !important;\n  padding:0 !important;\n}\n\n\/* CARD *\/\n#slim-outdoor-products .slim-product-card{\n  width:100%;\n  min-width:0;\n  margin:0 !important;\n  padding:0 !important;\n  display:flex;\n  flex-direction:column;\n  background:#f8f5ef !important;\n  border:1px solid #e3ddd4 !important;\n  border-radius:0 !important;\n  box-shadow:none !important;\n  overflow:hidden;\n}\n\n\/* IMAGE *\/\n#slim-outdoor-products .slim-product-image{\n  display:block !important;\n  width:100% !important;\n  margin:0 !important;\n  padding:0 !important;\n  overflow:hidden;\n  background:#f5f1e9 !important;\n  text-decoration:none !important;\n  aspect-ratio:1.085 \/ 1;\n}\n\n#slim-outdoor-products .slim-product-image img{\n  display:block !important;\n  width:100% !important;\n  height:auto !important;\n  aspect-ratio:1.085 \/ 1 !important;\n  margin:0 !important;\n  padding:0 !important;\n  object-fit:cover !important;\n  object-position:center !important;\n  border:0 !important;\n  border-radius:0 !important;\n  transition:transform .45s ease;\n}\n\n#slim-outdoor-products .slim-product-card:hover .slim-product-image img{\n  transform:scale(1.018);\n}\n\n\/* CONTENT *\/\n#slim-outdoor-products .slim-product-body{\n  display:flex;\n  flex:1;\n  flex-direction:column;\n  min-height:170px;\n  margin:0 !important;\n  padding:17px 23px 18px !important;\n  background:#f8f5ef !important;\n}\n\n#slim-outdoor-products .slim-product-type{\n  margin:0 0 7px !important;\n  padding:0 !important;\n  font-size:9px !important;\n  line-height:1.2 !important;\n  font-weight:500 !important;\n  letter-spacing:.055em !important;\n  color:#9c8d80 !important;\n}\n\n#slim-outdoor-products .slim-product-title{\n  margin:0 !important;\n  padding:0 !important;\n  font-size:18px !important;\n  line-height:1.28 !important;\n  font-weight:400 !important;\n  letter-spacing:-.015em !important;\n}\n\n#slim-outdoor-products .slim-product-title a{\n  color:#332d28 !important;\n  text-decoration:none !important;\n  font-weight:400 !important;\n}\n\n#slim-outdoor-products .slim-product-description{\n  min-height:30px;\n  margin:5px 0 0 !important;\n  padding:0 !important;\n  font-size:10px !important;\n  line-height:1.55 !important;\n  font-weight:300 !important;\n  color:#a3968a !important;\n}\n\n#slim-outdoor-products .slim-product-divider{\n  width:100% !important;\n  height:1px !important;\n  margin:13px 0 0 !important;\n  padding:0 !important;\n  background:#ded8cf !important;\n  border:0 !important;\n}\n\n\/* FOOTER *\/\n#slim-outdoor-products .slim-product-footer{\n  width:100% !important;\n  display:flex !important;\n  align-items:center !important;\n  justify-content:space-between !important;\n  margin-top:auto !important;\n  padding-top:18px !important;\n  color:inherit !important;\n  text-decoration:none !important;\n}\n\n#slim-outdoor-products .slim-product-price{\n  display:flex !important;\n  align-items:baseline !important;\n  gap:3px !important;\n  white-space:nowrap !important;\n}\n\n#slim-outdoor-products .slim-from{\n  font-size:10px !important;\n  line-height:1 !important;\n  font-weight:300 !important;\n  color:#a29488 !important;\n}\n\n#slim-outdoor-products .slim-price-value{\n  font-size:11px !important;\n  line-height:1 !important;\n  font-weight:500 !important;\n  color:#332d28 !important;\n}\n\n#slim-outdoor-products .slim-arrow{\n  display:inline-block !important;\n  font-size:17px !important;\n  line-height:1 !important;\n  font-weight:300 !important;\n  color:#433a33 !important;\n  transition:transform .25s ease;\n}\n\n#slim-outdoor-products .slim-product-footer:hover .slim-arrow{\n  transform:translateX(3px);\n}\n\n\/* SKELETON (shown instantly while loading) *\/\n#slim-outdoor-products .slim-skeleton .slim-product-image,\n#slim-outdoor-products .slim-skeleton .slim-sk-line{\n  background:linear-gradient(90deg,#efe9df 25%,#f6f2eb 50%,#efe9df 75%) !important;\n  background-size:200% 100% !important;\n  animation:slimOutdoorShimmer 1.2s ease-in-out infinite;\n}\n\n#slim-outdoor-products .slim-sk-line{\n  display:block;\n  height:10px;\n  margin:0 0 10px;\n}\n\n@keyframes slimOutdoorShimmer{\n  0%{background-position:200% 0}\n  100%{background-position:-200% 0}\n}\n\n\/* STATUS *\/\n#slim-outdoor-products .slim-loading,\n#slim-outdoor-products .slim-no-products,\n#slim-outdoor-products .slim-error{\n  grid-column:1 \/ -1;\n  padding:50px 20px;\n  text-align:center;\n  font-size:12px;\n  color:#8f8174;\n}\n\n\/* TABLET *\/\n@media (max-width:1024px){\n  #slim-outdoor-products{\n    padding-left:20px;\n    padding-right:20px;\n  }\n\n  #slim-outdoor-products .slim-products-grid{\n    grid-template-columns:repeat(2,minmax(0,1fr)) !important;\n    gap:12px !important;\n  }\n}\n\n\/* MOBILE \u2014 2 ITEMS *\/\n@media (max-width:767px){\n\n  #slim-outdoor-products{\n    width:100%;\n    padding:0 12px 20px;\n  }\n\n  #slim-outdoor-products .slim-filter{\n    margin-bottom:14px !important;\n  }\n\n  #slim-outdoor-products .slim-filter-btn{\n    height:40px !important;\n    padding:0 14px !important;\n    font-size:8px !important;\n  }\n\n  #slim-outdoor-products .slim-filter-btn:first-child{\n    padding-left:8px !important;\n  }\n\n  #slim-outdoor-products .slim-products-grid{\n    grid-template-columns:repeat(2,minmax(0,1fr)) !important;\n    gap:8px !important;\n  }\n\n  #slim-outdoor-products .slim-product-card{\n    min-width:0 !important;\n  }\n\n  #slim-outdoor-products .slim-product-image{\n    aspect-ratio:1 \/ 1;\n  }\n\n  #slim-outdoor-products .slim-product-image img{\n    width:100% !important;\n    aspect-ratio:1 \/ 1 !important;\n    object-fit:cover !important;\n  }\n\n  #slim-outdoor-products .slim-product-body{\n    min-height:145px;\n    padding:11px 11px 12px !important;\n  }\n\n  #slim-outdoor-products .slim-product-type{\n    font-size:7px !important;\n    margin-bottom:5px !important;\n  }\n\n  #slim-outdoor-products .slim-product-title{\n    font-size:13px !important;\n    line-height:1.3 !important;\n  }\n\n  #slim-outdoor-products .slim-product-description{\n    min-height:26px;\n    margin-top:4px !important;\n    font-size:8px !important;\n    line-height:1.45 !important;\n    display:-webkit-box;\n    -webkit-line-clamp:2;\n    -webkit-box-orient:vertical;\n    overflow:hidden;\n  }\n\n  #slim-outdoor-products .slim-product-divider{\n    margin-top:9px !important;\n  }\n\n  #slim-outdoor-products .slim-product-footer{\n    padding-top:11px !important;\n  }\n\n  #slim-outdoor-products .slim-from{\n    font-size:7px !important;\n  }\n\n  #slim-outdoor-products .slim-price-value{\n    font-size:8px !important;\n  }\n\n  #slim-outdoor-products .slim-arrow{\n    font-size:14px !important;\n  }\n}\n<\/style>\n\n<section id=\"slim-outdoor-products\">\n\n  <div class=\"slim-filter\">\n\n    <button class=\"slim-filter-btn active\" data-filter=\"all\">\n      ALL\n    <\/button>\n\n    <button class=\"slim-filter-btn\" data-filter=\"barrel\">\n      BARREL\n    <\/button>\n\n    <button class=\"slim-filter-btn\" data-filter=\"cabin\">\n      CABIN\n    <\/button>\n\n    <button class=\"slim-filter-btn\" data-filter=\"panoramic\">\n      PANORAMIC\n    <\/button>\n\n    <button class=\"slim-filter-btn\" data-filter=\"premium\">\n      PREMIUM\n    <\/button>\n\n  <\/div>\n\n  <div class=\"slim-products-grid\" id=\"slimOutdoorGrid\">\n    <!-- skeleton cards: visible instantly, replaced when products arrive -->\n    <article class=\"slim-product-card slim-skeleton\"><div class=\"slim-product-image\"><\/div><div class=\"slim-product-body\"><span class=\"slim-sk-line\" style=\"width:30%\"><\/span><span class=\"slim-sk-line\" style=\"width:70%;height:16px\"><\/span><span class=\"slim-sk-line\" style=\"width:90%\"><\/span><\/div><\/article>\n    <article class=\"slim-product-card slim-skeleton\"><div class=\"slim-product-image\"><\/div><div class=\"slim-product-body\"><span class=\"slim-sk-line\" style=\"width:30%\"><\/span><span class=\"slim-sk-line\" style=\"width:70%;height:16px\"><\/span><span class=\"slim-sk-line\" style=\"width:90%\"><\/span><\/div><\/article>\n    <article class=\"slim-product-card slim-skeleton\"><div class=\"slim-product-image\"><\/div><div class=\"slim-product-body\"><span class=\"slim-sk-line\" style=\"width:30%\"><\/span><span class=\"slim-sk-line\" style=\"width:70%;height:16px\"><\/span><span class=\"slim-sk-line\" style=\"width:90%\"><\/span><\/div><\/article>\n  <\/div>\n\n<\/section>\n\n<script data-no-optimize=\"1\" data-no-defer=\"1\" data-no-minify=\"1\">\n(function(){\n\n  const API_BASE =\n    window.location.origin +\n    '\/wp-json\/wc\/store\/v1';\n\n  const CATEGORY_SLUG =\n    'outdoor-sauna';\n\n  \/\/ Optional: put the category ID here (e.g. 42) to skip slug lookup entirely\n  const CATEGORY_ID = null;\n\n  const CACHE_KEY =\n    'slim_products_' + CATEGORY_SLUG + '_v1';\n\n  \/\/ Only request the fields the card uses -> much smaller response\n  const FIELDS =\n    'id,name,permalink,short_description,prices,images,categories';\n\n  const grid =\n    document.getElementById('slimOutdoorGrid');\n\n  if(!grid) return;\n\n  let activeFilter = 'all';\n\n\n  function cleanHTML(html){\n    if(!html) return '';\n\n    const div =\n      document.createElement('div');\n\n    div.innerHTML = html;\n\n    return (\n      div.textContent ||\n      div.innerText ||\n      ''\n    )\n    .replace(\/\\s+\/g,' ')\n    .trim();\n  }\n\n\n  function escapeHTML(value){\n    return String(value || '')\n      .replace(\/&\/g,'&amp;')\n      .replace(\/<\/g,'&lt;')\n      .replace(\/>\/g,'&gt;')\n      .replace(\/\"\/g,'&quot;')\n      .replace(\/'\/g,'&#039;');\n  }\n\n\n  function formatPrice(product){\n\n    if(\n      !product.prices ||\n      product.prices.price === undefined ||\n      product.prices.price === null\n    ){\n      return '';\n    }\n\n    const minorUnit =\n      Number(\n        product.prices.currency_minor_unit || 0\n      );\n\n    const divisor =\n      Math.pow(10,minorUnit);\n\n    const number =\n      Number(product.prices.price) \/ divisor;\n\n    if(!Number.isFinite(number)){\n      return '';\n    }\n\n    return new Intl.NumberFormat(\n      'en-US',\n      {\n        maximumFractionDigits:0\n      }\n    ).format(number);\n  }\n\n\n  \/* CACHE (localStorage) *\/\n\n  function readCache(){\n    try{\n      const raw = localStorage.getItem(CACHE_KEY);\n      return raw ? JSON.parse(raw) : null;\n    }catch(e){\n      return null;\n    }\n  }\n\n  function writeCache(items){\n    try{\n      localStorage.setItem(CACHE_KEY, JSON.stringify(items));\n    }catch(e){}\n  }\n\n\n  \/* PRODUCTS (one request, category by slug or ID) *\/\n\n  async function fetchProducts(category){\n\n    const response =\n      await fetch(\n        API_BASE +\n        '\/products?category=' +\n        encodeURIComponent(category) +\n        '&per_page=100' +\n        '&_fields=' + FIELDS\n      );\n\n    if(!response.ok){\n      throw new Error(\n        'Cannot load products'\n      );\n    }\n\n    return await response.json();\n  }\n\n\n  async function getCategoryIdBySlug(){\n\n    const response =\n      await fetch(\n        API_BASE +\n        '\/products\/categories?per_page=100&_fields=id,slug,name'\n      );\n\n    if(!response.ok){\n      throw new Error(\n        'Cannot load categories'\n      );\n    }\n\n    const categories =\n      await response.json();\n\n    const found =\n      categories.find(function(category){\n\n        const slug =\n          String(category.slug || '')\n          .toLowerCase();\n\n        const name =\n          String(category.name || '')\n          .trim()\n          .toLowerCase();\n\n        return(\n          slug === CATEGORY_SLUG ||\n          name === 'outdoor sauna'\n        );\n\n      });\n\n    if(!found){\n      throw new Error(\n        'Outdoor Sauna category not found'\n      );\n    }\n\n    return found.id;\n  }\n\n\n  async function getProducts(){\n\n    if(CATEGORY_ID){\n      return fetchProducts(CATEGORY_ID);\n    }\n\n    \/\/ Store API accepts slugs directly -> skips the categories request\n    try{\n      const products = await fetchProducts(CATEGORY_SLUG);\n      if(Array.isArray(products) && products.length){\n        return products;\n      }\n    }catch(e){}\n\n    \/\/ Fallback: old behaviour (look up the ID first)\n    return fetchProducts(await getCategoryIdBySlug());\n  }\n\n\n  function getSeries(product){\n\n    if(\n      !Array.isArray(product.categories)\n    ){\n      return [];\n    }\n\n    const classes = [];\n\n    product.categories.forEach(function(category){\n\n      const slug =\n        String(category.slug || '')\n        .toLowerCase();\n\n      const name =\n        String(category.name || '')\n        .trim()\n        .toLowerCase()\n        .replace(\/\\s+\/g,' ');\n\n\n      \/* BARREL *\/\n      if(\n        slug === 'barrel' ||\n        slug.startsWith('barrel-') ||\n        name === 'barrel'\n      ){\n        classes.push('barrel');\n      }\n\n\n      \/* CABIN *\/\n      if(\n        slug === 'cabin' ||\n        slug.startsWith('cabin-') ||\n        name === 'cabin'\n      ){\n        classes.push('cabin');\n      }\n\n\n      \/* PANORAMIC *\/\n      if(\n        slug === 'panoramic' ||\n        slug.startsWith('panoramic-') ||\n        name === 'panoramic'\n      ){\n        classes.push('panoramic');\n      }\n\n\n      \/* PREMIUM *\/\n      if(\n        slug === 'premium' ||\n        slug.startsWith('premium-') ||\n        name === 'premium'\n      ){\n        classes.push('premium');\n      }\n\n    });\n\n    return [...new Set(classes)];\n  }\n\n\n  \/* SLIM DOWN DATA FOR CACHE *\/\n\n  function simplify(product){\n\n    const image =\n      Array.isArray(product.images) && product.images[0]\n        ? product.images[0]\n        : null;\n\n    return {\n      name: product.name || '',\n      url: product.permalink || '#',\n      description: cleanHTML(product.short_description),\n      price: formatPrice(product),\n      image: image ? image.src : '',\n      srcset: image ? image.srcset || '' : '',\n      series: getSeries(product)\n    };\n  }\n\n\n  function createCard(item, index){\n\n    const name = escapeHTML(item.name);\n    const url = escapeHTML(item.url);\n\n    \/\/ first row loads immediately, the rest lazily\n    const loading =\n      index < 3\n        ? 'loading=\"eager\" fetchpriority=\"high\"'\n        : 'loading=\"lazy\"';\n\n    const hidden =\n      activeFilter !== 'all' && item.series.indexOf(activeFilter) === -1\n        ? ' style=\"display:none\"'\n        : '';\n\n    return `\n      <article class=\"slim-product-card ${item.series.join(' ')}\"${hidden}>\n\n        <a class=\"slim-product-image\" href=\"${url}\" aria-label=\"${name}\">\n          ${\n            item.image\n              ? `<img\n                  src=\"${escapeHTML(item.image)}\"\n                  ${item.srcset ? `srcset=\"${escapeHTML(item.srcset)}\"` : ''}\n                  sizes=\"(max-width:1024px) 50vw, 33vw\"\n                  alt=\"${name}\"\n                  ${loading}\n                  decoding=\"async\"\n                >`\n              : ''\n          }\n        <\/a>\n\n        <div class=\"slim-product-body\">\n\n          <div class=\"slim-product-type\">\n            OUTDOOR SAUNA\n          <\/div>\n\n          <h3 class=\"slim-product-title\">\n            <a href=\"${url}\">${name}<\/a>\n          <\/h3>\n\n          <div class=\"slim-product-description\">\n            ${escapeHTML(item.description)}\n          <\/div>\n\n          <div class=\"slim-product-divider\"><\/div>\n\n          <a class=\"slim-product-footer\" href=\"${url}\">\n\n            <div class=\"slim-product-price\">\n              <span class=\"slim-from\">From<\/span>\n              ${\n                item.price\n                  ? `<span class=\"slim-price-value\">THB ${item.price}<\/span>`\n                  : ''\n              }\n            <\/div>\n\n            <span class=\"slim-arrow\">\u2192<\/span>\n\n          <\/a>\n\n        <\/div>\n\n      <\/article>\n    `;\n  }\n\n\n  function renderProducts(items){\n\n    if(!items.length){\n\n      grid.innerHTML = `\n        <div class=\"slim-no-products\">\n          No products found.\n        <\/div>\n      `;\n\n      return;\n    }\n\n    grid.innerHTML =\n      items.map(createCard).join('');\n  }\n\n\n  function setupFilters(){\n\n    const buttons =\n      document.querySelectorAll(\n        '#slim-outdoor-products .slim-filter-btn'\n      );\n\n    buttons.forEach(function(button){\n\n      button.addEventListener(\n        'click',\n        function(){\n\n          buttons.forEach(function(btn){\n            btn.classList.remove('active');\n          });\n\n          this.classList.add('active');\n\n          activeFilter =\n            this.dataset.filter;\n\n          document\n          .querySelectorAll(\n            '#slim-outdoor-products .slim-product-card'\n          )\n          .forEach(function(card){\n\n            card.style.display =\n              activeFilter === 'all' ||\n              card.classList.contains(activeFilter)\n                ? ''\n                : 'none';\n\n          });\n\n        }\n      );\n\n    });\n  }\n\n\n  \/* INIT\n     1) show cached products instantly (if any)\n     2) fetch fresh data in background\n     3) re-render only if something changed *\/\n\n  async function init(){\n\n    setupFilters();\n\n    const cached = readCache();\n\n    if(Array.isArray(cached) && cached.length){\n      renderProducts(cached);\n    }\n\n    try{\n\n      const products = await getProducts();\n\n      const items = products.map(simplify);\n\n      if(JSON.stringify(items) !== JSON.stringify(cached)){\n        renderProducts(items);\n        writeCache(items);\n      }\n\n    }\n    catch(error){\n\n      console.error(\n        'SLIM Outdoor Sauna:',\n        error\n      );\n\n      if(!cached || !cached.length){\n        grid.innerHTML = `\n          <div class=\"slim-error\">\n            Unable to load products.\n          <\/div>\n        `;\n      }\n    }\n\n  }\n\n  init();\n\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>PRODUCTS \/ OUTDOOR SAUNA. Outdoor Sauna Bring wellness closer to nature. Explore our collection of outdoor sauna designs crafted for relaxation, fresh air and elevated everyday rituals. From timeless barrel saunas to modern cabin designs, our outdoor collection blends natural materials with contemporary craftsmanship \u2014 creating a serene retreat in your own space. ALL BARREL [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1398","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.slimthailand.com\/en\/wp-json\/wp\/v2\/pages\/1398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.slimthailand.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.slimthailand.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.slimthailand.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.slimthailand.com\/en\/wp-json\/wp\/v2\/comments?post=1398"}],"version-history":[{"count":36,"href":"https:\/\/www.slimthailand.com\/en\/wp-json\/wp\/v2\/pages\/1398\/revisions"}],"predecessor-version":[{"id":4077,"href":"https:\/\/www.slimthailand.com\/en\/wp-json\/wp\/v2\/pages\/1398\/revisions\/4077"}],"wp:attachment":[{"href":"https:\/\/www.slimthailand.com\/en\/wp-json\/wp\/v2\/media?parent=1398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}