/* ============================================================================
 * common/base.css — 跨主題共用基底層
 * ============================================================================
 *
 * 用途：
 *   提供 6 個前台主題共用的 reset、typography、utility class、表單基底、
 *   按鈕基底與通用元件樣式；各主題以 themes/{theme}/base.css 覆寫差異。
 *
 * 內容索引：
 *   1. Typography                body / h1~h6 / p / ul / li / hr / label
 *   2. Reset / browser normalize ::selection / button:focus / outline
 *   3. Image / Link transitions  .img / a / .btn focus / hover
 *   4. 文字 / 字體 utility       .uppercase / .capitalize / .g-font-1~2 / .font-w-5~7
 *   5. 浮動與裁切 utility        .f-left / .f-right / .fix
 *   6. 間距 utility              .m-0 / .p-0 / .mt-* / .mr-* / .mb-* / .ml-* /
 *                                 .pt-* / .pr-* / .pb-* / .pl-* / .ptb-* / .mtb-* /
 *                                 .plr-* / .ptblr-* / .p-20 / .p-30 / .mt--50
 *   7. 文字顏色 utility          .text-blue / .text-white / .text-black-1~5 /
 *                                 .text-gray / .text-theme
 *   8. 背景顏色 utility          .theme-bg / .black-bg / .white-bg / .gray-bg /
 *                                 .blue-bg / .default-bg / .transparent-bg
 *   9. 表單基底                  input[type=text/email/password] / select / option /
 *                                 textarea / button / .togglePassword / .submit-btn /
 *                                 .form-group .form-control
 *  10. 按鈕基底                  .btn / a.button.* / a.button-border / a.button-small /
 *                                 .btn-hover-1~2
 *  11. 通用元件                  .breadcrumb / .progress / .section / .container /
 *                                 .panel / .mark / span.tooltip-content / .browserupgrade /
 *                                 .box-shadow / .action-box-button / .share / .separator /
 *                                 #scrollUp
 *  12. 背景透明度 utility        .bg-opacity-black-10~90 / .bg-opacity-white-10~90
 *  13. 圖片背景 utility          .bg-1 ~ .bg-10
 *
 * 使用頁面：前台所有頁面（base 層全站共用）
 * 相依 vendor：無
 *
 * 載入順序（最先到最後，後者覆寫前者）：
 *   widgets.css -> default.css（舊單檔，凍結中）-> common/base.css（本檔）->
 *   themes/default/base.css -> 其他 common/themes 檔 -> custom.css
 *
 * 抽取來源：public/web/css/default.css line 29-1763 + line 1793-2042（line 1765-1791
 *   為 .footer-area 範圍規則，留給 task 5.4 footer 處理）
 *
 * 詳細規格：openspec/specs/web-theme-css/spec.md（Requirement R.FUNC.1 / R.FUNC.8）
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（task 5.1）
 * ============================================================================
 */

body {
  background: #fff;
  font-family: 'Noto Sans TC', 'Raleway', sans-serif;
  font-weight: normal;
  font-style: normal;
  font-size: 14px;
  line-height: 24px;
  background-position: top center;
  background-size: cover;
  background-repeat: no-repeat;
  scroll-behavior: smooth;

}

.img {
  max-width: 100%;
  transition: all 0.3s ease-out 0s;
}

a,
.btn {
  -webkit-transition: all 0.3s ease-out 0s;
  -moz-transition: all 0.3s ease-out 0s;
  -ms-transition: all 0.3s ease-out 0s;
  -o-transition: all 0.3s ease-out 0s;
  transition: all 0.3s ease-out 0s;
}

.btn {
  border-radius: 0px;
  font-size: 14px;
  padding: 0px 15px;
  height: 30px;
  line-height: 30px;
}

a:focus,
.btn:focus {
  text-decoration: none;
  outline: none;
}

a:focus,
a:hover {
  color: #131313;
  text-decoration: none;
}

a,
button,
input {
  outline: medium none;
  color: #666666;
}

.uppercase {
  text-transform: uppercase
}

.capitalize {
  text-transform: capitalize
}

h1,
h2,
h3,
h4,
h5,
h6 {
  margin-bottom: 10px;
}

h1 a,
h2 a,
h3 a,
h4 a,
h5 a,
h6 a {
  color: inherit
}

h1 {
  font-size: 48px;
  line-height: 1;
  font-weight: 600;
}

@media screen and (max-width: 992px) {
  h1 {
    font-size: 30px;
  }
}

@media screen and (max-width: 768px) {
  h1 {
    font-size: 30px;
  }
}

h2 {
  font-size: 36px;
  font-weight: 600;
  line-height: 1;
}

@media screen and (max-width: 992px) {
  h2 {
    font-size: 26px;
  }
}

@media screen and (max-width: 768px) {
  h2 {
    font-size: 26px;
  }
}

h3 {
  font-size: 28px;
  font-weight: 600;
  line-height: 1;
}

@media screen and (max-width: 992px) {
  h3 {
    font-size: 22px;
  }
}

@media screen and (max-width: 768px) {
  h3 {
    font-size: 22px;
  }
}

h4 {
  font-size: 22px;
  font-weight: 600;
  line-height: 1;
}

@media screen and (max-width: 992px) {
  h4 {
    font-size: 18px;
  }
}

@media screen and (max-width: 768px) {
  h4 {
    font-size: 18px;
  }
}

h5 {
  font-size: 18px;
}

@media screen and (max-width: 992px) {
  h5 {
    font-size: 16px;
  }
}

@media screen and (max-width: 768px) {
  h5 {
    font-size: 14px;
  }
}

h6 {
  font-size: 14px;
}

@media screen and (max-width: 992px) {
  h6 {
    font-size: 12px;
  }
}

@media screen and (max-width: 768px) {
  h6 {
    font-size: 12px;
  }
}

p {
  font-size: 18px;
  /* font-weight: normal; */
  line-height: 1.5;
  color: #333333;
}

@media screen and (max-width: 992px) {
  p {
    font-size: 14px;
  }
}

@media screen and (max-width: 768px) {
  p {
    font-size: 14px;
  }
}

ul {
  margin: 0px;
  padding: 0px;
}

li {
  list-style: none;
}

hr {
  border-bottom: 1px solid #999999;
}

hr.style-2 {
  border-bottom: 1px dashed #eceff8;
}

hr.mp-0 {
  margin: 0;
  border-bottom: 1px solid #eceff8;
}

hr.mtb-40 {
  margin: 40px 0;
  border-bottom: 1px solid #eceff8;
  border-top: 0px;
}

label {
  color: #999;
  font-size: 14px;
  font-weight: 400;
}

*::-moz-selection {
  background: #4fc1f0;
  color: #fff;
  text-shadow: none;
}

::-moz-selection {
  background: #4fc1f0;
  color: #fff;
  text-shadow: none;
}

::selection {
  background: #4fc1f0;
  color: #fff;
  text-shadow: none;
}

button:focus {
  outline: none;
}

.mark,
mark {
  background: #131313 none repeat scroll 0 0;
  color: #fff;
}

span.tooltip-content {
  color: #131313;
  cursor: help;
  font-weight: 600;
}

.f-left {
  float: left
}

.f-right {
  float: right
}

.fix {
  overflow: hidden
}

.browserupgrade {
  margin: 0.2em 0;
  background: #ccc;
  color: #000;
  padding: 0.2em 0;
}

.g-font-1 {
  font-family: "Raleway", sans-serif;
}

.g-font-2 {
  font-family: 'Roboto', sans-serif;
}

.font-w-5 {
  font-weight: 500;
}

.font-w-6 {
  font-weight: 600;
}

.font-w-7 {
  font-weight: 700;
}

.panel-group .panel {
  border-radius: 0;
  margin-bottom: 0;
}

.my-account-content .panel-body {
  padding: 0;
}

.panel {
  border-radius: 0;
}

.section {
  float: left;
  width: 100%;
}

@media only screen and (min-width: 992px) {
  .container {
    --bs-gutter-x: 15px;
  }
}

@media only screen and (min-width: 992px) {
  .container .row {
    --bs-gutter-x: 30px;
  }
}

.breadcrumb>li+li:before {
  padding: 0 5px;
  color: #ccc;
  content: "/\00a0";
}

.progress {
  height: 20px;
  line-height: 20px;
  font-size: 14px;
}

input[type="checkbox"] {
  vertical-align: middle;
  margin-right: 5px;
}

a.button::after,
a.button-small::after {
  -webkit-transition: all 0.3s ease-out 0s;
  -moz-transition: all 0.3s ease-out 0s;
  -ms-transition: all 0.3s ease-out 0s;
  -o-transition: all 0.3s ease-out 0s;
  transition: all 0.3s ease-out 0s;
}

.share ul,
.share:hover ul {
  transition: all 0.4s ease-in-out;
  -webkit-transition: all 0.4s ease-in-out;
  -ms-transition: all 0.4s ease-in-out;
  -moz-transition: all 0.4s ease-in-out;
  -o-transition: all 0.4s ease-in-out;
}

a.button-border span,
a.button-border-white span,
input,
select,
textarea {
  -webkit-transition: all 0.5s ease-out 0s;
  -moz-transition: all 0.5s ease-out 0s;
  -ms-transition: all 0.5s ease-out 0s;
  -o-transition: all 0.5s ease-out 0s;
  transition: all 0.5s ease-out 0s;
}

a.button {
  background: #ec3b05;
  border: 0 none;
  border-radius: 3px;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03) inset;
  color: rgb(255, 255, 255);
  cursor: pointer;
  display: inline-block;
  font-size: 20px;
  margin-right: 10px;
  overflow: hidden;
  padding: 0;
  position: relative;
}

a.button span {
  display: block;
  float: left;
  position: relative;
  z-index: 2;
  padding: 11px 20px;
  font-size: 15px;
  color: #fff;
  font-weight: normal;
}

a.button::after {
  background: rgba(0, 0, 0, 0.09) none repeat scroll 0 0;
  content: "";
  height: 100%;
  left: 0;
  margin: auto;
  position: absolute;
  right: 0;
  top: 0;
  width: 0;
  z-index: 1;
}

a.button:hover::after {
  width: 100%
}

a.button.button-white {
  border: 0 none;
  border-radius: 3px;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03) inset;
  cursor: pointer;
  display: inline-block;
  margin-right: 10px;
  overflow: hidden;
  padding: 0;
  position: relative;
  background-color: #fff;
  color: #4FC1F0;
  font-size: 15px;
}

a.button.button-white i {
  background: rgba(0, 0, 0, 0.09);
  display: block;
  float: left;
  padding: 14px;
  font-size: 16px;
  color: #4FC1F0;
  font-weight: normal;
  width: 50px;
  text-align: center;
}

a.button.button-white span {
  display: block;
  float: left;
  position: relative;
  z-index: 2;
  padding: 11px 20px;
  font-size: 15px;
  color: #434343;
  font-weight: normal;
}

a.button.button-grey {
  border: 0 none;
  border-radius: 3px;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03) inset;
  cursor: pointer;
  display: inline-block;
  margin-right: 10px;
  overflow: hidden;
  padding: 0;
  position: relative;
  background-color: #eceff7;
  color: #4FC1F0;
  font-size: 15px;
}

a.button.button-grey i {
  background: rgba(0, 0, 0, 0.09);
  display: block;
  float: left;
  padding: 14px;
  font-size: 16px;
  color: #4FC1F0;
  font-weight: normal;
  width: 50px;
  text-align: center;
}

a.button.button-grey span {
  display: block;
  float: left;
  position: relative;
  z-index: 2;
  padding: 11px 20px;
  font-size: 15px;
  color: #4FC1F0;
  font-weight: normal;
}

a.button.button-black {
  border: 0 none;
  border-radius: 3px;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03) inset;
  cursor: pointer;
  display: inline-block;
  margin-right: 10px;
  overflow: hidden;
  padding: 0;
  position: relative;
  background-color: #575757;
  color: #4FC1F0;
  font-size: 15px;
}

a.button.button-black i {
  background: rgba(0, 0, 0, 0.3);
  display: block;
  float: left;
  padding: 14px;
  font-size: 16px;
  color: #fff;
  font-weight: normal;
  width: 50px;
  text-align: center;
}

a.button.button-black span {
  display: block;
  float: left;
  position: relative;
  z-index: 2;
  padding: 11px 20px;
  font-size: 15px;
  color: #fff;
  font-weight: normal;
}

a.button-border span {
  border: 0 none;
  border-radius: 3px;
  cursor: pointer;
  display: inline-block;
  padding: 11px 20px;
  margin-right: 10px;
  overflow: hidden;
  position: relative;
  background-color: transparent;
  color: #4FC1F0;
  font-size: 15px;
  border: 1px solid #4FC1F0;
}

a.button-border span:hover {
  box-shadow: -200px 0 0 #4FC1F0 inset;
  color: #fff;
  border-color: #4FC1F0;
}

a.button-border-white span {
  border: 0 none;
  border-radius: 3px;
  cursor: pointer;
  display: inline-block;
  padding: 11px 20px;
  margin-right: 10px;
  overflow: hidden;
  position: relative;
  background-color: transparent;
  color: #fff;
  font-size: 15px;
  border: 1px solid #fff;
}

a.button-border-white span:hover {
  box-shadow: -200px 0 0 #fff inset;
  color: #4FC1F0;
  border-color: #fff;
}

a.button-small {
  border: 0 none;
  border-radius: 3px;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03) inset;
  cursor: pointer;
  display: inline-block;
  margin-right: 10px;
  overflow: hidden;
  padding: 0;
  position: relative;
  background-color: #4FC1F0;
  color: #fff;
  font-size: 15px;
}

a.button-small i {
  background: rgba(0, 0, 0, 0.09);
  display: block;
  float: left;
  padding: 10px;
  font-size: 13px;
  color: #fff;
  font-weight: normal;
  width: 40px;
  text-align: center;
}

a.button-small span {
  display: block;
  float: left;
  position: relative;
  z-index: 2;
  padding: 8px 10px;
  font-size: 13px;
  color: #fff;
  font-weight: normal;
}

a.button-small:after {
  background: rgba(0, 0, 0, 0.09) none repeat scroll 0 0;
  content: "";
  height: 100%;
  right: 0;
  position: absolute;
  top: 0;
  width: 0;
  z-index: 1;
}

a.button-small:hover::after {
  width: 100%
}

a.button.large {
  margin-right: 0px;
}

a.button.large span {
  padding: 16px 80px;
  font-size: 18px;
}

a.button.large i {
  padding: 20px;
  width: 60px;
  font-size: 18px;
}

a.button.medium span {
  padding: 14px 60px;
  font-size: 16px;
}

a.button.medium i {
  padding: 17px;
  width: 50px;
  font-size: 16px;
}

a.button.small span {
  padding: 12px 40px;
}

a.button.small i {
  padding: 15px;
  width: 45px;
}

a.button.extra-small span {
  padding: 8px 30px;
  font-size: 14px;
}

a.button.extra-small i {
  padding: 11px;
  width: 38px;
  font-size: 13px;
}

.text-blue {
  color: #4FC1F0;
}

.text-white {
  color: #fff;
}

.text-black-1 {
  color: #575757;
}

.text-black-2 {
  color: #737373;
}

.text-black-3 {
  color: #434343;
}

.text-black-4 {
  color: #999;
}

.text-black-5 {
  color: #666;
}

.text-gray {
  color: #666;
}

.text-theme {
  color: #131313;
}

input[type="text"],
input[type="password"],
input[type="email"] {
  background: #fff none repeat scroll 0 0;
  border: 1px solid transparent;
  box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);
  color: #999999;
  font-size: 16px;
  height: 40px;
  margin-bottom: 20px;
  padding-left: 20px;
  padding-right: 20px;
  width: 100%;
}

.form-group .form-control {
  font-size: 16px;
}

button {
  background: rgba(0, 0, 0, 0) none repeat scroll 0 0;
  border: medium none;
  font-family: raleway;
}

select,
select.form-control {
  border: 1px solid #eeeeee;
  color: #999999;
  font-size: 16px;
  height: 40px;
  padding-left: 10px;
}

option {
  background: #ffffff none repeat scroll 0 0;
  border: 0 solid #626262;
  font-size: 16px;
  padding-left: 10px;
}

.togglePassword {
  font-size: 16px;
  padding: 2px 12px;
}

input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus {
  border: 1px solid #FFBF7F;
}

textarea {
  background: #ffffff none repeat scroll 0 0;
  border: 1px solid transparent;
  box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);
  font-size: 16px;
  padding: 10px 10px 10px 20px;
  resize: vertical;
  width: 100%;
}

textarea:focus {
  border-color: #131313;
  outline: none;
}

.height-80 {
  height: 80px;
}

::-moz-placeholder {
  color: #444;
  font-size: 14px;
}

.submit-btn {
  background: rgb(255, 127, 0) none repeat scroll 0 0;
  border: medium none;
  color: rgb(255, 255, 255);
  font-size: 14px;
  font-weight: 700;
  height: 35px;
  padding: 0 20px;
  text-transform: uppercase;
  transition: all 0.3s ease 0s;
}

.btn-hover-1,
.btn-hover-2 {
  position: relative;
}

.btn-hover-1::before,
.btn-hover-2::before {
  background: #434343 none repeat scroll 0 0;
  bottom: 0;
  content: "";
  height: 2px;
  left: 0;
  position: absolute;
  transition: all 0.5s ease 0s;
  width: 0;
  z-index: 9999;
}

.btn-hover-1:hover::before,
.btn-hover-2:hover::before {
  width: 100%;
}

.btn-hover-2::before {
  background: #131313 none repeat scroll 0 0;
}

.m-0 {
  margin: 0;
}

.p-0 {
  padding: 0;
}

.mt-0 {
  margin-top: 0
}

.mt-1 {
  margin-top: 1px
}

.mt-2 {
  margin-top: 2px
}

.mt-3 {
  margin-top: 3px
}

.mt-4 {
  margin-top: 4px
}

.mt-5 {
  margin-top: 5px
}

.mt-10 {
  margin-top: 10px
}

.mt-15 {
  margin-top: 15px
}

.mt-20 {
  margin-top: 20px
}

.mt-30 {
  margin-top: 30px
}

.mt-35 {
  margin-top: 35px
}

.mt-40 {
  margin-top: 40px
}

.mt-50 {
  margin-top: 50px
}

.mt-60 {
  margin-top: 60px
}

.mt-70 {
  margin-top: 70px
}

.mt-80 {
  margin-top: 80px
}

.mt-90 {
  margin-top: 90px
}

.mt-100 {
  margin-top: 100px
}

.mt-110 {
  margin-top: 110px
}

.mt-120 {
  margin-top: 120px
}

.mt-130 {
  margin-top: 130px
}

.mt-140 {
  margin-top: 140px
}

.mt-150 {
  margin-top: 150px
}

.mr-0 {
  margin-right: 0px
}

.mr-1 {
  margin-right: 1px
}

.mr-2 {
  margin-right: 2px
}

.mr-3 {
  margin-right: 3px
}

.mr-4 {
  margin-right: 4px
}

.mr-5 {
  margin-right: 5px
}

.mr-10 {
  margin-right: 10px
}

.mr-15 {
  margin-right: 15px
}

.mr-20 {
  margin-right: 20px
}

.mr-30 {
  margin-right: 30px
}

.mr-40 {
  margin-right: 40px
}

.mr-50 {
  margin-right: 50px
}

.mr-60 {
  margin-right: 60px
}

.mr-70 {
  margin-right: 70px
}

.mr-80 {
  margin-right: 80px
}

.mr-90 {
  margin-right: 90px
}

.mr-100 {
  margin-right: 100px
}

.mr-110 {
  margin-right: 110px
}

.mr-120 {
  margin-right: 120px
}

.mr-130 {
  margin-right: 130px
}

.mr-140 {
  margin-right: 140px
}

.mr-150 {
  margin-right: 150px
}

.mb-0 {
  margin-bottom: 0
}

.mb-1 {
  margin-bottom: 1px
}

.mb-2 {
  margin-bottom: 2px
}

.mb-3 {
  margin-bottom: 3px
}

.mb-4 {
  margin-bottom: 4px
}

.mb-5 {
  margin-bottom: 5px
}

.mb-10 {
  margin-bottom: 10px
}

.mb-15 {
  margin-bottom: 15px
}

.mb-20 {
  margin-bottom: 20px
}

.mb-25 {
  margin-bottom: 25px
}

.mb-30 {
  margin-bottom: 30px
}

.mb-35 {
  margin-bottom: 35px
}

.mb-40 {
  margin-bottom: 40px
}

.mb-50 {
  margin-bottom: 50px
}

.mb-60 {
  margin-bottom: 60px
}

.mb-70 {
  margin-bottom: 70px
}

.mb-80 {
  margin-bottom: 80px
}

.mb-90 {
  margin-bottom: 90px
}

.mb-100 {
  margin-bottom: 100px
}

.mb-110 {
  margin-bottom: 110px
}

.mb-120 {
  margin-bottom: 120px
}

.mb-130 {
  margin-bottom: 130px
}

.mb-140 {
  margin-bottom: 140px
}

.mb-150 {
  margin-bottom: 150px
}

.ml-0 {
  margin-left: 0
}

.ml-1 {
  margin-left: 1px
}

.ml-2 {
  margin-left: 2px
}

.ml-3 {
  margin-left: 3px
}

.ml-4 {
  margin-left: 4px
}

.ml-5 {
  margin-left: 5px
}

.ml-10 {
  margin-left: 10px
}

.ml-15 {
  margin-left: 15px
}

.ml-20 {
  margin-left: 20px
}

.ml-30 {
  margin-left: 30px
}

.ml-40 {
  margin-left: 40px
}

.ml-50 {
  margin-left: 50px
}

.ml-60 {
  margin-left: 60px
}

.ml-70 {
  margin-left: 70px
}

.ml-80 {
  margin-left: 80px
}

.ml-90 {
  margin-left: 90px
}

.ml-100 {
  margin-left: 100px
}

.ml-110 {
  margin-left: 110px
}

.ml-120 {
  margin-left: 120px
}

.ml-130 {
  margin-left: 130px
}

.ml-140 {
  margin-left: 140px
}

.ml-150 {
  margin-left: 150px
}

.pt-0 {
  padding-top: 0
}

.pt-10 {
  padding-top: 10px
}

.pt-15 {
  padding-top: 15px
}

.pt-20 {
  padding-top: 20px
}

.pt-30 {
  padding-top: 30px
}

.pt-40 {
  padding-top: 40px
}

.pt-50 {
  padding-top: 50px
}

.pt-55 {
  padding-top: 55px
}

.pt-60 {
  padding-top: 60px
}

.pt-70 {
  padding-top: 70px
}

.pt-80 {
  padding-top: 80px
}

.pt-90 {
  padding-top: 90px
}

.pt-100 {
  padding-top: 100px
}

.pt-110 {
  padding-top: 110px
}

.pt-120 {
  padding-top: 120px
}

.pt-130 {
  padding-top: 130px
}

.pt-140 {
  padding-top: 140px
}

.pt-150 {
  padding-top: 150px
}

.pt-160 {
  padding-top: 160px
}

.pr-0 {
  padding-right: 0
}

.pr-10 {
  padding-right: 10px
}

.pr-15 {
  padding-right: 15px
}

.pr-20 {
  padding-right: 20px
}

.pr-30 {
  padding-right: 30px
}

.pr-40 {
  padding-right: 40px
}

.pr-50 {
  padding-right: 50px
}

.pr-60 {
  padding-right: 60px
}

.pr-70 {
  padding-right: 70px
}

.pr-80 {
  padding-right: 80px
}

.pr-90 {
  padding-right: 90px
}

.pr-100 {
  padding-right: 100px
}

.pr-110 {
  padding-right: 110px
}

.pr-120 {
  padding-right: 120px
}

.pr-130 {
  padding-right: 130px
}

.pr-140 {
  padding-right: 140px
}

.pb-0 {
  padding-bottom: 0
}

.pb-10 {
  padding-bottom: 10px
}

.pb-15 {
  padding-bottom: 15px
}

.pb-20 {
  padding-bottom: 20px
}

.pb-25 {
  padding-bottom: 25px
}

.pb-30 {
  padding-bottom: 30px
}

.pb-40 {
  padding-bottom: 40px
}

.pb-50 {
  padding-bottom: 50px
}

.pb-55 {
  padding-bottom: 55px
}

.pb-60 {
  padding-bottom: 60px
}

.pb-70 {
  padding-bottom: 70px
}

.pb-80 {
  padding-bottom: 80px
}

.pb-90 {
  padding-bottom: 90px
}

.pb-100 {
  padding-bottom: 100px
}

.pb-110 {
  padding-bottom: 110px
}

.pb-120 {
  padding-bottom: 120px
}

.pb-130 {
  padding-bottom: 130px
}

.pb-140 {
  padding-bottom: 140px
}

.pb-150 {
  padding-bottom: 150px
}

.pb-160 {
  padding-bottom: 160px
}

.pl-0 {
  padding-left: 0
}

.pl-10 {
  padding-left: 10px
}

.pl-15 {
  padding-left: 15px
}

.pl-20 {
  padding-left: 20px
}

.pl-30 {
  padding-left: 30px
}

.pl-40 {
  padding-left: 40px
}

.pl-50 {
  padding-left: 50px
}

.pl-60 {
  padding-left: 60px
}

.pl-70 {
  padding-left: 70px
}

.pl-80 {
  padding-left: 80px
}

.pl-90 {
  padding-left: 90px
}

.pl-100 {
  padding-left: 100px
}

.pl-110 {
  padding-left: 110px
}

.pl-120 {
  padding-left: 120px
}

.pl-130 {
  padding-left: 130px
}

.pl-140 {
  padding-left: 140px
}

.pl-150 {
  padding-left: 150px
}

.ptb-0 {
  padding: 0
}

.ptb-5 {
  padding: 5px 0
}

.ptb-10 {
  padding: 10px 0
}

.ptb-20 {
  padding: 20px 0
}

.ptb-30 {
  padding: 30px 0
}

.ptb-40 {
  padding: 40px 0
}

.ptb-50 {
  padding: 50px 0
}

.ptb-60 {
  padding: 60px 0
}

.ptb-70 {
  padding: 70px 0
}

.ptb-80 {
  padding: 80px 0
}

.ptb-90 {
  padding: 90px 0
}

.ptb-100 {
  padding: 100px 0
}

.ptb-110 {
  padding: 110px 0
}

.ptb-120 {
  padding: 120px 0
}

.ptb-130 {
  padding: 130px 0
}

.ptb-140 {
  padding: 140px 0
}

.ptb-150 {
  padding: 150px 0
}

.ptb-160 {
  padding: 160px 0
}

.mtb-0 {
  margin: 0
}

.mtb-5 {
  margin: 5px 0
}

.mtb-10 {
  margin: 10px 0
}

.mtb-15 {
  margin: 15px 0
}

.mtb-20 {
  margin: 20px 0
}

.mtb-30 {
  margin: 30px 0
}

.mtb-35 {
  margin: 35px 0
}

.mtb-40 {
  margin: 40px 0
}

.mtb-50 {
  margin: 50px 0
}

.mtb-60 {
  margin: 60px 0
}

.mtb-70 {
  margin: 70px 0
}

.mtb-80 {
  margin: 80px 0
}

.mtb-90 {
  margin: 90px 0
}

.mtb-100 {
  margin: 100px 0
}

.mtb-110 {
  margin: 110px 0
}

.mtb-120 {
  margin: 120px 0
}

.mtb-130 {
  margin: 130px 0
}

.mtb-140 {
  margin: 140px 0
}

.mtb-150 {
  margin: 150px 0;
}

.mtb-160 {
  margin: 160px 0;
}

.plr-185 {
  padding: 0 185px;
}

.plr-200 {
  padding-left: 200px;
  padding-right: 200px
}

.ptblr-10-30 {
  padding: 10px 30px;
}

.ptblr-20-30 {
  padding: 20px 30px;
}

.p-20 {
  padding: 20px;
}

.p-30 {
  padding: 30px;
}

.mt--50 {
  margin-top: -50px;
}

#scrollUp {
  background: #ccc;
  bottom: 10px;
  color: #ffffff;
  font-size: 20px;
  height: 40px;
  right: 10px;
  text-align: center;
  transition: all 0.3s ease 0s;
  width: 40px;
}

#scrollUp i {
  line-height: 40px;
}

#scrollUp:hover {
  background: #131313 none repeat scroll 0 0;
  color: #ffffff;
}

.action-box-button a.button span {
  font-size: 13px;
  padding: 11px 12px;
}

.box-shadow {
  box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);
}

.theme-bg {
  background: #131313;
}

.black-bg {
  background: #222222;
}

.white-bg {
  background: #fff;
}

.gray-bg {
  background: #f6f6f6;
}

.blue-bg {
  background: #4FC1F0;
}

.default-bg {
  background: #f6f6f6;
}

.transparent-bg {
  background: transparent;
}

/* 註：原 default.css 第 1765~1791 行為 .footer-area 範圍規則，
 * 已留給 task 5.4 footer 處理，本檔跳過。 */

.bg-opacity-black-10,
.bg-opacity-black-20,
.bg-opacity-black-30,
.bg-opacity-black-40,
.bg-opacity-black-50,
.bg-opacity-black-60,
.bg-opacity-black-70,
.bg-opacity-black-80,
.bg-opacity-black-90,
.bg-opacity-white-10,
.bg-opacity-white-20,
.bg-opacity-white-30,
.bg-opacity-white-40,
.bg-opacity-white-50,
.bg-opacity-white-60,
.bg-opacity-white-70,
.bg-opacity-white-80,
.bg-opacity-white-90 {
  z-index: 9;
}

.bg-opacity-black-10:before,
.bg-opacity-black-20:before,
.bg-opacity-black-30:before,
.bg-opacity-black-40:before,
.bg-opacity-black-50:before,
.bg-opacity-black-60:before,
.bg-opacity-black-70:before,
.bg-opacity-black-80:before,
.bg-opacity-black-90:before,
.bg-opacity-white-10:before,
.bg-opacity-white-20:before,
.bg-opacity-white-30:before,
.bg-opacity-white-40:before,
.bg-opacity-white-50:before,
.bg-opacity-white-60:before,
.bg-opacity-white-70:before,
.bg-opacity-white-80:before,
.bg-opacity-white-90:before {
  content: "";
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
  z-index: -1;
}

.bg-opacity-black-10:before {
  background: rgba(0, 0, 0, 0.1);
}

.bg-opacity-black-20:before {
  background: rgba(0, 0, 0, 0.2);
}

.bg-opacity-black-30:before {
  background: rgba(0, 0, 0, 0.3);
}

.bg-opacity-black-40:before {
  background: rgba(0, 0, 0, 0.4);
}

.bg-opacity-black-50:before {
  background: rgba(0, 0, 0, 0.5);
}

.bg-opacity-black-60:before {
  background: rgba(0, 0, 0, 0.6);
}

.bg-opacity-black-70:before {
  background: rgba(0, 0, 0, 0.7);
}

.bg-opacity-black-80:before {
  background: rgba(0, 0, 0, 0.8);
}

.bg-opacity-black-90:before {
  background: rgba(0, 0, 0, 0.9);
}

.bg-opacity-white-10:before {
  background: rgba(255, 255, 255, 0.1);
}

.bg-opacity-white-20:before {
  background: rgba(255, 255, 255, 0.2);
}

.bg-opacity-white-30:before {
  background: rgba(255, 255, 255, 0.3);
}

.bg-opacity-white-40:before {
  background: rgba(255, 255, 255, 0.4);
}

.bg-opacity-white-50:before {
  background: rgba(255, 255, 255, 0.5);
}

.bg-opacity-white-60:before {
  background: rgba(255, 255, 255, 0.6);
}

.bg-opacity-white-70:before {
  background: rgba(255, 255, 255, 0.7);
}

.bg-opacity-white-80:before {
  background: rgba(255, 255, 255, 0.8);
}

.bg-opacity-white-90:before {
  background: rgba(255, 255, 255, 0.9);
}

.bg-1 {
  background: url(../../images/bg/1.jpg);
}

.bg-2 {
  background: url(../../images/bg/2.jpg);
}

.bg-3 {
  background: url(../../images/bg/3.jpg);
}

.bg-4 {
  background: url(../../images/bg/4.jpg);
}

.bg-5 {
  background: url(../../images/bg/5.jpg);
}

.bg-6 {
  background: url(../../images/bg/6.jpg);
}

.bg-7 {
  background: url(../../images/bg/7.jpg);
}

.bg-8 {
  background: url(../../images/bg/8.jpg);
}

.bg-9 {
  background: url(../../images/bg/9.jpg);
}

.bg-10 {
  background: url(../../images/bg/10.jpg);
}

.bg-1,
.bg-2,
.bg-3,
.bg-4,
.bg-5,
.bg-6,
.bg-7,
.bg-8,
.bg-9,
.bg-10 {
  background-attachment: fixed;
  background-clip: initial;
  background-color: rgba(0, 0, 0, 0);
  background-origin: initial;
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  position: relative;
  z-index: 0;
}

.separator {
  position: relative;
  display: inline-block;
  clear: both;
  background: rgba(0, 0, 0, 0.07) none repeat scroll 0 0;
  bottom: 0;
  height: 1px;
  width: 33%;
}

.separator::before {
  background: #4fc1f0 none repeat scroll 0 0;
  content: "";
  display: block;
  height: 1px;
  position: absolute;
  transition: all 0.4s ease 0s;
  width: 100px;
}

.section-title:hover .separator::before {
  width: 75%;
}

.separator i {
  background: #ECEFF7 none repeat scroll 0 0;
  color: #4fc1f0;
  display: block;
  font-size: 20px;
  height: 40px;
  line-height: 40px;
  position: absolute;
  text-align: center;
  top: -20px;
  width: 40px;
}

.separator span {
  background: #ffffff none repeat scroll 0 0;
  border: 1px solid #4fc1f0;
  border-radius: 100%;
  display: block;
  height: 10px;
  position: absolute;
  top: -5px;
  width: 10px;
}

.separator i,
.separator span {
  left: 0;
  transform: none;
}

.text-center .separator::before,
.text-center .separator i,
.text-center .separator span {
  left: 50%;
  transform: translateX(-50%);
}

.text-end .separator::before,
.text-end .separator i,
.text-end .separator span {
  left: auto;
  transform: none;
  right: 0;
}



/* ============================================================================
 * 補充區段：.btnSummit / .btnNormal 系列按鈕
 *   抽取自 default.css line 3391~3482
 *   原因：本檔 line 33 處的 .btn { height: 30px } 透過 common/base.css 再次套用後
 *   會覆寫 default.css 中 .btnNormal { height: fit-content }（後者勝原 cascade）。
 *   因此把 .btnNormal 系列規則同步複製到本檔（且位置在 .btn 之後）以保持
 *   原 cascade 結果：.btnNormal 的 height: fit-content 勝出。
 *   等到舊 default.css 真正廢除時，本區段可移至更適當位置。
 * ============================================================================
 */

.btnSummit,
.btnNormal {
  width: 100%;
  max-width: 200px;
  padding: 10px 20px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  margin: 4px auto;
  margin-right: 10px;
  cursor: pointer;
  border-radius: 0rem;
  height: fit-content;
  transition: all 0.3s ease 0s;
}

@media screen and (max-width: 767px) {

  .btnSummit,
  .btnNormal {
    max-width: 100%;
    margin-right: 0;
  }

  .product-item .btnLike {
    background-color: #ffffff;
    border: 1px solid #2c2c2c;
    color: #2c2c2c;
    padding: 15px 15px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 14px;
    margin: 4px;
    cursor: pointer;
    border-radius: 0rem;
    width: auto;
    height: fit-content;
    aspect-ratio: auto;
  }

  .product-item .btnLike i {
    margin-right: 5px;
  }
}

.btnSummit.sm,
.btnNormal.sm {
  width: fit-content;
  padding: 5px 25px;
  font-size: 12px;
  border-radius: 99rem;
  height: fit-content;
}

.btnSummit.gold,
.btnNormal.gold {
  background-color: #313131;
  border: 1px solid #313131;
  color: #ffffff;
}

.btnSummit.gold:hover,
.btnNormal.gold:hover {
  background-color: #1e1e1e;
  color: #ffffff;
}

.gold-sec {
  background-color: #b0b0b0;
  border: 1px solid #b0b0b0;
  color: #ffffff;
}

.gold-sec:hover {
  background-color: #838383;
  color: #ffffff;
}

.btnSummit.red,
.btnNormal.red {
  background-color: #2c2c2c;
  border: 1px solid #2c2c2c;
  color: #ffffff;
}

.btnSummit.red:hover,
.btnNormal.red:hover {
  background-color: #a72808;
  color: #ffffff;
}


/* ============================================================================
 * 補充區段：.message-box input cascade 修復
 *   原因：default.css line 2648 .message-box input { margin-bottom: 10px }
 *   在 cm12 原 cascade 中覆寫 line 751 input[type="text"] { margin-bottom: 20px }
 *   （後者 specificity 相同、後者勝）。
 *
 *   抽到 common/base.css 後，common/base.css 內的 input[type="text"] 規則
 *   載入順序晚於 default.css 的 .message-box input，反向覆寫 → 10px → 20px。
 *
 *   修法：把 .message-box input 規則加到本檔末尾（cascade 順序最末），
 *   確保所有頁面（含 contactUs 等不載入 common/pages/user.css 的路由）
 *   都能還原 cm12 cascade 結果。
 *
 *   抽取自 default.css line 2648~2650。
 * ============================================================================
 */

.message-box input {
  margin-bottom: 10px;
}


/* ============================================================================
 * Phase B Batch 1：default.css 未抽出的 base / utility / layout 規則補完
 * ============================================================================
 *
 * 目的：讓 default.css 最終可廢除時頁面仍能正確顯示。
 *
 * 抽取自 default.css 9 個 gap（與其他既有抽取範圍不重疊）：
 *   - line 3261~3363：.pagination .page-item 系列（含 active / hover）
 *   - line 3483~3531：.btnCanNotBuy / .delete-btn 等按鈕變體
 *   - line 5190~5271：.breadcrumbs-section + .overlay-bg + .breadcrumbs-inner /
 *                      -title / .breadcrumb-list（CRITICAL: 提供 fixed header
 *                      讓位 padding-top: 100px）
 *   - line 5305~5341：.pagination > li 第二處（與 3261 互補）
 *   - line 5907~6143：.wrapper / .text-warp / .text-muted / .badge 等通用 utility
 *   - line 6357~6491：.timelineBox 通用 timeline 元件（含 RWD）
 *   - line 6776~6790：.video-container 通用影片容器
 *   - line 7025~7041：.alertMessage 通用警示框
 *   - line 7063~7089：.banner-link 通用 banner 連結
 *
 * 載入順序：本批次規則在 common/base.css 末尾，cascade 順序最末
 * （勝於同檔內較早規則；其他 common/* 載入後再進一步處理）。
 *
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（Phase B Batch 1）
 * ============================================================================
 */


/* --- Gap 8 (5190~5271)：CRITICAL breadcrumbs section + fixed header 讓位 --- */

.breadcrumbs-section {
  padding-top: 100px;
  background: #ffffff;
  background-position: 50% 18%;
  background-size: cover;
  margin-bottom: 40px;
}

.overlay-bg {
  position: relative;
}

.overlay-bg::before {
  background: linear-gradient(0deg, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%);
  content: "";
  height: 100%;
  left: 0;
  opacity: 0.6;
  position: absolute;
  top: 0;
  transition: all 0.3s ease 0s;
  width: 100%;
}

.breadcrumbs-inner {
  position: relative;
  z-index: 10;
}

.breadcrumbs-title {
  color: #2c2c2c;
  /* line-height: 45px; */
  margin-bottom: 0;
  padding: 55px 0;
  text-align: center;
  text-transform: uppercase;
  /* font-size: 35px; */
  font-display: swap;
}

@media (max-width: 767px) {
  .breadcrumbs-title {
    /* font-size: 28px;
    line-height: 40px; */
    padding: 8px 0;
  }
}

.breadcrumb-list {
  line-height: 1;
  padding-bottom: 20px;
}

.breadcrumb-list>li {
  color: #999999;
  display: inline-block;
  font-size: 13px;
  font-weight: 600;
  margin-right: 15px;
  text-transform: uppercase;
}

.breadcrumb-list>li::before {
  content: "_";
  left: 0;
  color: #666666;
  transition: all 0.3s ease 0s;
}

.breadcrumb-list>li:hover::before {
  color: #131313;
}

.breadcrumb-list>li>a {
  color: #666666;
}

.breadcrumb-list>li:hover>a {
  color: #131313;
}


/* --- Gap 1 (3261~3363)：.pagination .page-item 系列 --- */
.pagination .page-item {
  width: 35px;
  height: 35px;
  background: #ffffff;
  border: 1px solid #ffffff;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-right: -1px;
}

.pagination>.page-item-btn {
  width: fit-content;
  min-width: 100px;
}

.pagination>.page-item-btn>span {
  width: fit-content;
}

.pagination .page-item .page-link:hover {
  background: #575757;
  color: #ffffff
}

.pagination .page-item.active {
  background: #313131;
}

.pagination .page-item .page-link {
  width: 100%;
  height: 100%;
  border: none;
  background: none;
  color: #000;
  display: flex;
  justify-content: center;
  align-items: center;
  font-family: roboto;
  font-size: 13px;
  font-weight: 400;
  line-height: 28px;
  text-align: center;
}

.pagination .page-item.active .page-link {
  color: #ffffff;
}

@media (max-width: 992px) {
  .pagination>.page-item-btn {
    width: fit-content;
    min-width: fit-content;
  }

  .pagination .page-item .page-link {
    width: 45px;
  }
}

.action-button-box {
  width: 100%;
  display: flex;
  justify-content: start;
  align-items: center;
}

@media screen and (max-width: 768px) {
  .action-button-box {
    flex-direction: column;
    align-items: stretch;
  }

  .action-button-box .action-button {
    margin-bottom: 10px;
  }

  .action-button-box .action-button .btnKG-box {
    margin-right: 0;
  }
}

.action-button-box .action-button {
  display: flex;
  align-items: center;
  flex-grow: 1;
}

.action-button-box .action-button .btnKG-box {
  flex-grow: 1;
  margin-right: 10px;
}

.action-button-box .action-button .btnKG {
  flex-grow: 1;
  padding: 10px 15px;
}

.action-button-box .action-button .btnLike {
  padding: 10px 15px;
  margin-right: 0;
}


/* --- Gap 2 (3483~3531)：.btnCanNotBuy / .delete-btn --- */

.btnCanNotBuy {
  width: 100%;
  max-width: 200px;
  padding: 10px 20px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  margin: 4px auto;
  margin-right: 10px;
  cursor: pointer;
  border-radius: 0rem;
  height: fit-content;
  transition: all 0.3s ease 0s;
  background-color: #ff0000;
  border: 1px solid #ff0000;
  color: #ffffff;
}

.btnCanNotBuy:hover {
  background-color: #575757;
  color: #ffffff;
}

.delete-btn {
  border-radius: 20px;
  height: fit-content;
}

.text-primary {
  color: #333333;
}

.shop-section {
  min-height: 50vh;
}

.shopping-cart-box {
  background: #ffffff;
  padding: 20px;
  border-radius: 10px;
}

.shopping-cart-box .divider {
  border-bottom: 1.5px solid #ecd6bf;
  padding-bottom: 24px;
}


/* --- Gap 9 (5305~5341)：.pagination > li 第二處 --- */

.pagination {
  padding: 10px;
}

.pagination>li {
  display: inline-block;
  margin-right: 3px;
}

.pagination>li:last-child {
  margin-right: 0;
}

.pagination>li>a {
  border: 1px solid #eee;
  color: #999999;
  display: block;
  font-family: roboto;
  font-size: 13px;
  font-weight: 400;
  height: 30px;
  line-height: 28px;
  text-align: center;
  width: 30px;
}

.pagination>li>a i {
  line-height: 28px;
}

.pagination>li.active a,
.pagination>li:hover a {
  border-color: #131313;
  color: #131313;
}


/* --- Gap 11 (5907~6143)：.wrapper / utility / .badge 等 --- */

.wrapper {
  background: #fff none repeat scroll 0 0;
}

.text-warp {
  word-break: break-all;
  word-wrap: break-word;
}

.text-muted {
  font-size: 16px;
  color: #333333 !important;
}

.badge {
  display: inline-block;
  padding: 0.25em 0.4em;
  font-size: 75%;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: 0.25rem;
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

@media (prefers-reduced-motion: reduce) {
  .badge {
    transition: none;
  }
}

a.badge:hover,
a.badge:focus {
  text-decoration: none;
}

.badge:empty {
  display: none;
}

.btn .badge {
  position: relative;
  top: -1px;
}

.badge-pill {
  padding-right: 0.6em;
  padding-left: 0.6em;
  border-radius: 10rem;
}

.badge-primary {
  color: #fff;
  background-color: #007bff;
}

a.badge-primary:hover,
a.badge-primary:focus {
  color: #fff;
  background-color: #0062cc;
}

a.badge-primary:focus,
a.badge-primary.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}

.badge-secondary {
  color: #fff;
  background-color: #6c757d;
}

a.badge-secondary:hover,
a.badge-secondary:focus {
  color: #fff;
  background-color: #545b62;
}

a.badge-secondary:focus,
a.badge-secondary.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}

.badge-success {
  color: #fff;
  background-color: #28a745;
}

a.badge-success:hover,
a.badge-success:focus {
  color: #fff;
  background-color: #1e7e34;
}

a.badge-success:focus,
a.badge-success.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}

.badge-info {
  color: #fff;
  background-color: #17a2b8;
}

a.badge-info:hover,
a.badge-info:focus {
  color: #fff;
  background-color: #117a8b;
}

a.badge-info:focus,
a.badge-info.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}

.badge-warning {
  color: #1f2d3d;
  background-color: #ffc107;
}

a.badge-warning:hover,
a.badge-warning:focus {
  color: #1f2d3d;
  background-color: #d39e00;
}

a.badge-warning:focus,
a.badge-warning.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}

.badge-danger {
  color: #fff;
  background-color: #dc3545;
}

a.badge-danger:hover,
a.badge-danger:focus {
  color: #fff;
  background-color: #bd2130;
}

a.badge-danger:focus,
a.badge-danger.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}

.badge-light {
  color: #1f2d3d;
  background-color: #f8f9fa;
}

a.badge-light:hover,
a.badge-light:focus {
  color: #1f2d3d;
  background-color: #dae0e5;
}

a.badge-light:focus,
a.badge-light.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}

.badge-dark {
  color: #fff;
  background-color: #343a40;
}

a.badge-dark:hover,
a.badge-dark:focus {
  color: #fff;
  background-color: #1d2124;
}

a.badge-dark:focus,
a.badge-dark.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}

.badge-purple {
  color: #ffffff;
  background-color: #6f42c1;
}

a.badge-purple:hover,
a.badge-purple:focus {
  color: #ffffff;
  background-color: #492788;
}

a.badge-purple:focus,
a.badge-purple.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(145, 44, 185, 0.5);
}

@media screen and (max-width: 480px) {
  .g-recaptcha {
    transform: scale(0.85);
    transform-origin: 0 0;
  }
}

.custom-arrow {
  background: none;
  border: none;
  font-size: 1.4rem;
  color: #888;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
}

.slick-prev {
  left: -20px;
}

.slick-next {
  right: -20px;
}

.custom-arrow:hover {
  color: #007bff;
}


/* --- Gap 13 (6357~6491)：.timelineBox 系列 --- */

.timelineBox .timelineTextBox {
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 99rem;
  padding: 50px;
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: start;
  align-items: center;
}

@media screen and (max-width: 768px) {
  .timelineBox .timelineTextBox {
    padding: 30px 20px 20px;
  }
}

.timelineBox .timelineTextBox::after {
  content: "";
  position: absolute;
  width: 2px;
  height: 20%;
  background: #ffffff;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
}

.timelineBox .timelineTextBox .year {
  font-size: 20px;
  color: #ffffff;
  background: #A06400;
  width: -moz-fit-content;
  width: fit-content;
  padding: 8px 20px;
  border-radius: 99rem;
  font-family: HGPMinchoE;
  font-display: swap;
  margin-bottom: 40px;
}

@media screen and (max-width: 768px) {
  .timelineBox .timelineTextBox .year {
    font-size: 16px;
    margin-bottom: 16px;
  }
}

.timelineBox .timelineTextBox .text {
  font-size: 16px;
  line-height: 32px;
  color: #653F00;
}

@media screen and (max-width: 768px) {
  .timelineBox .timelineTextBox .text {
    font-size: 12px;
  }
}

.secSwiper .swiper-scrollbar-drag {
  background: #A06400;
}

.blockPSpacing {
  padding-top: 60px;
}

.blockTitleBox {
  margin-top: 20px;
  /* padding-top: 120px; */
  padding-top: 20px;
}

.blockTitleBox .blockTitle.orange {
  color: #2c2c2c;
}

.blockTitleBox .blockTitle {
  /* font-size: 35px; */
  /* font-family: HGPMinchoE; */
  font-display: swap;
}

@media screen and (max-width: 768px) {
  .blockTitleBox {
    margin-top: 10px;
    /* padding-top: 120px; */
    padding-top: 20px;
  }

  .blockTitleBox .blockTitle {
    /* font-size: 24px; */
  }
}

.blockLine-wrappe {
  display: flex;
  justify-content: center;
}

.blockLine {
  width: 2px;
  height: 80px;
  background: #2c2c2c;
  margin: 25px auto;
}

.containerText {
  max-width: 800px;
  margin: 0 auto;
}

.containerText p {
  color: #333333;
  /* font-size: 16px;
  line-height: 28px; */
}

.blockLineText {
  /* font-size: 60px; */
  color: #2c2c2c;
  font-family: HGPMinchoE;
  font-display: swap;
}

/* @media screen and (max-width: 768px) {
  .blockLineText {
    font-size: 40px;
  }
} */


/* --- Gap 14 (6776~6790)：.video-container --- */

.video-container {
  position: relative;
  padding-bottom: 56.25%;
  height: 0;
}

.video-container iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}


/* --- Gap 15 (7025~7041)：.alertMessage --- */

.alertMessage {
  position: fixed;
  top: 120px;
  right: 50%;
  transform: translateX(50%);
  width: fit-content;
  border-radius: 99rem;
  overflow: hidden;
  z-index: 3000;
}

.alertMessage .alert {
  margin: 0;
  display: flex;
}


/* --- Gap 16 (7063~7089)：.banner-link --- */

.banner-link {
  display: block;
  position: relative;
  overflow: hidden;
}

.banner-link {
  border-radius: 99rem;
  overflow: hidden;
}

@media screen and (max-width: 992px) {
  .banner-link {
    width: 100%;
    height: auto;
    aspect-ratio: 1;
  }
}

.banner-link img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
  object-fit: cover;
}



/* === Phase B Batch 2: 跨 selector RWD + utility 補完（抽自 default.css 多個 gap）=== */

/* Gap 4 (4063-4166) @media (992-1199) + (768-991) RWD */
@media (min-width: 992px) and (max-width: 1199px) {
  .plr-185 {
    padding: 0 30px;
  }

  .plr-200 {
    padding-left: 0;
    padding-right: 0;
  }

  .blog-desc p {
    margin-bottom: 10px;
  }

  .read-more {
    margin-bottom: 10px;
  }

  .widget-product .product-info {
    padding: 10px 0 0 10px;
  }

  .widget-product .product-title,
  .widget-product .pro-price {
    font-size: 13px;
  }

  .blog-item .blog-desc {
    padding: 20px;
  }

  .blog-item .blog-desc::before,
  .blog-item .blog-desc::after {
    bottom: 10px;
    left: 10px;
    right: 10px;
    top: 10px;
  }

  .blog-item .read-more {
    margin-bottom: 10px;
  }

  .dropdwn-repeat {
    left: 80%;
    width: 210px;
  }
}

@media (min-width: 768px) and (max-width: 991px) {
  .plr-185 {
    padding: 0 30px;
    height: fit-content;
  }

  .plr-200 {
    padding-left: 0;
    padding-right: 0;
  }

  .blog-desc p {
    margin-bottom: 10px;
  }

  .blog-item .read-more {
    margin-bottom: 25px;
  }

  .footer-top {
    background: #f6f6f6 none repeat scroll 0 0;
  }

  .footer-area .plr-185 {
    padding: 0;
  }

  .footer-top-inner {
    padding: 30px 15px;
  }

  .footer-about {
    padding-right: 15px;
  }

  .footer-brief {
    margin-bottom: 25px;
  }

  .pagination {
    margin-bottom: 30px;
  }

  .payment-details {
    margin-top: 30px;
  }

  .widget-search {
    margin-top: 10px;
  }

  .logo {
    padding: 38px 0;
  }
}

/* Gap 5 (4187-4322) @media (max-width: 767) 內含多 selector mobile RWD */
@media (max-width: 767px) {
  .plr-185 {
    padding: 0px;
  }

  .plr-200 {
    padding-left: 0;
    padding-right: 0;
  }

  .mb-80 {
    margin-bottom: 30px;
  }

  .mb-40 {
    margin-bottom: 30px;
  }

  /* .product-title {
    font-size: 13px;
  } */

  .logo {
    padding: 2px 0;
    text-align: center;
  }

  .blog-item .blog-desc {
    padding: 20px;
  }

  .blog-item .blog-desc::before,
  .blog-item .blog-desc::after {
    bottom: 10px;
    left: 10px;
    right: 10px;
    top: 10px;
  }

  .blog-item .blog-desc p {
    margin-bottom: 10px;
  }

  .blog-item .read-more {
    margin-bottom: 5px;
  }

  .footer-area .plr-185 {
    padding: 0;
  }

  .footer-top-inner {
    padding: 30px 15px;
  }

  .footer-about {
    padding-right: 15px;
  }

  .footer-brief {
    margin-bottom: 25px;
  }

  .footer-title {
    margin: 30px 0 10px;
  }

  .footer-menu li a {
    line-height: 24px;
  }

  .footer-menu li a span {
    font-size: 11px;
  }

  .copyright {
    padding: 0 15px;
  }

  .copyright-text p {
    text-align: center;
    line-height: 2.1;
  }

  .breadcrumbs-title {
    /* font-size: 20px; */
    padding: 50px 0 30px;
  }

  .breadcrumb-list {
    text-align: center;
  }

  .breadcrumb-list>li {
    font-size: 10px;
  }

  .pagination {
    margin-bottom: 30px;
  }

  .imgs-zoom-area {
    margin-bottom: 30px;
  }

  .blog-section-title {
    font-size: 16px;
  }

  .checkout-content {
    padding: 30px 15px;
  }

  .billing-details.pr-10 {
    padding-right: 0;
  }

  .billing-details.p-30 {
    padding: 15px;
  }

  .payment-details {
    margin-top: 30px;
    padding: 10px;
  }

  .message-box {
    width: fit-content;
    padding: 20px;
    max-width: 100%;
  }

  .login-account {
    padding: 30px 15px;
  }
}


/* Gap 10 (5513-5593) .saparator / .color-title / .cart-plus-minus 等 */
.saparator {
  margin: auto 5px;
}

.color-title {
  color: #575757;
  line-height: 25px;
  margin-bottom: 0;
  text-transform: uppercase;
  width: 70px;
}

.cart-plus-minus {
  border: 1px solid #cccccc;
  height: 32px;
  text-align: center;
  width: 90px;
  color: #666666;
  border-radius: 3px;
}

.sin-plus-minus p {
  font-size: 16px;
  color: #333333;
}

.qtybutton {
  background: #e6e6e6 none repeat scroll 0 0;
  height: 100%;
  width: 30%;
  line-height: 32px;
  cursor: pointer;
}

.dec.qtybutton {
  float: left;
}

.inc.qtybutton {
  float: right;
}

input.cart-plus-minus-box {
  background: transparent none repeat scroll 0 0;
  box-shadow: none;
  font-family: roboto;
  height: 100%;
  margin-bottom: 0;
  padding: 4px;
  text-align: center;
  width: 40%;
}

.cart-qty {
  align-items: center;
  display: flex;
  border: 1px solid #cccccc;
  border-radius: 10px;
  overflow: hidden;
}

.cart-qty .cart-plus-minus-box {
  height: 40px;
}

.cart-qty .qtybutton {
  height: 40px;
}

.table-content table,
.table-content table th,
.table-content table td {
  border: 1px solid #eee;
  border-collapse: collapse;
}

table {
  width: 100%
}

.payment-details,

/* Gap 12 (6180-6350) .cart-thumbnail-img / .wish-thumbnail-img 等 */

.cart-thumbnail-img {
  float: left;
}

.cart-thumbnail-img img {
  width: 50px;
}

.wish-thumbnail-img {
  float: left;
}

.wish-thumbnail-img img {
  width: 100px;
}

/* ============================================================================
 * 共用 .table-content 表格樣式（orders / wishList / shoppingCart 共用）
 *   原位於 common/pages/shoppingCart.css，但 orders + wishList 不載 shoppingCart.css，
 *   導致表格 thead / tr td padding、字色等樣式缺失。遷移至 base.css（所有頁面皆載入）。
 *   抽自 default.css line 5582~5654
 * ============================================================================
 */

.table-content table thead th {
  color: #666666;
  font-family: raleway;
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  padding: 18px 5px;
  text-transform: uppercase;
}

.table-content table tr td {
  color: #999;
  padding: 18px 5px;
}

.table-content table tr td>a {
  color: #2c2c2c;
  text-align: center;
}

.table-content .table-notice {
  margin: 30px;
  font-weight: 700;
}

@media screen and (max-width: 768px) {

  .table-content table,
  .table-content table th,
  .table-content table td {
    min-width: 130px;
    width: fit-content;
  }

  .table-content table td[colspan="3"] {
    min-width: 250px;
    width: fit-content;
  }

  .table-content table {
    width: 100%;
  }
}

.page-wrapper {
  margin-top: 94px;
}

.swiperPaginationBox {
  padding: 30px 0;
  margin-bottom: 10px;
}

.blockTitleBox .blockTitle.gold {
  color: #D2AD4B;
}

.blockTitleBox .blockTitle {
  font-size: 35px;
  /* font-family: HGPMinchoE; */
  font-display: swap;
}

@media screen and (max-width: 768px) {
  .blockTitleBox .blockTitle {
    font-size: 24px;
  }
}

.blockTitleBox .blockTitleBgBox .blockTitleBg {
  color: rgba(112, 112, 112, 0.0901960784);
  font-size: 150px;
  /* font-family: Sitka; */
  margin-top: -60px;
}

@media screen and (max-width: 992px) {
  .blockTitleBox .blockTitleBgBox {
    margin-top: -40px;
  }
}

@media screen and (max-width: 768px) {
  .blockTitleBox .blockTitleBgBox {
    margin-top: -30px;
  }
}

@media screen and (max-width: 992px) {
  .blockTitleBox .blockTitleBgBox .blockTitleBg {
    font-size: 80px;
  }
}

@media screen and (max-width: 768px) {
  .blockTitleBox .blockTitleBgBox .blockTitleBg {
    font-size: 40px;
  }
}

.blockTitleBgHtml {
  font-size: 115px;
  margin-top: -40px;
}

@media screen and (max-width: 992px) {
  .page-wrapper {
    margin-top: 89px;
  }
}

@media screen and (max-width: 768px) {
  .blockTitleBox {
    margin-top: 20px;
    padding-top: 50px;
  }
}

p {
  margin-top: 0;
  margin-bottom: 1rem;
}

.blockMSpacing {
  margin-top: 60px;
}

.sgsBox {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}

.sgsBox .sgsBoxTitle {
  width: -moz-fit-content;
  width: fit-content;
  background: #F8F8F8;
  padding: 10px 20px;
  border-radius: 99rem;
  margin-bottom: 20px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.sgsBox .sgsBoxTitle .triangle-down {
  width: 0;
  height: 0;
  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
  border-top: 10px solid #DD8C06;
}

.sgsBox .sgsBoxTitle .sgsTitle {
  font-size: 16px;
  color: #A06400;
  font-family: HGPMinchoE;
  font-display: swap;
  margin-bottom: 0px;
  margin-left: 10px;
  margin-right: 10px;
}

.blockMSpacingXL {
  margin-top: 100px;
}

.secSwiper .swiper-wrapper {
  margin-bottom: 60px;
}

.secSwiper .swiper-scrollbar {
  margin-top: 50px;
}

.timelineBox {
  width: 100%;
  height: 100%;
  background: antiquewhite;
  aspect-ratio: 1/1;
  border-radius: 99rem;
}

.timelineBox .timelineImgBox {
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 99rem;
}

.timelineBox .timelineImgBox .timelineImg {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
  object-fit: cover;
}


/* === Phase B Batch 3: RWD visibility utility + swiper baseline === */

/* .desktop / .mobile / .desktopImg / .mobileImg + @media 991px
 * 抽自 default.css line 2514-2546
 * 作用：viewport 切換顯示對應版本元素（桌面/行動 header logo + nav） */
.desktop {
  display: block;
}

.mobile {
  display: none;
}

.desktopImg {
  display: block;
}

.mobileImg {
  display: none;
}

@media (max-width: 991px) {
  .desktop {
    display: none;
  }

  .mobile {
    display: block;
  }

  .desktopImg {
    display: none;
  }

  .mobileImg {
    display: block;
  }
}

/* .swiper baseline，抽自 default.css line 6757-6760 */
.swiper {
  width: 100%;
  height: 100%;
}

/* @media (max-width: 479) .plus-minus-pro-action 抽自 default.css 4325-4330 */
@media only screen and (max-width: 479px) {
  .plus-minus-pro-action .sin-pro-action {
    float: left;
    margin-top: 20px;
  }
}


/* ============================================================================
 * 補抽：.strong 工具類（抽自 default.css line 7889~7891；原誤置於 common/sidebar.css 末尾被截斷）
 * ============================================================================
 */

.strong {
  font-weight: 700;
}


/* ============================================================================
 * 共用 .message-box / .message-box-section / .custom-textarea
 *   原 default.css 中 .message-box 同時被 product.css（.single-product-area, .message-box）
 *   與 user.css（.message-box padding override）兩處規則合成；
 *   contactUs / login / register 等頁面亦使用 .message-box，但各自只載 single page CSS，
 *   無法跨檔合成。遷至 base.css（所有頁面皆載入）統一處理。
 *   抽自 default.css line 2599~2650 / line 5770
 * ============================================================================
 */

.message-box-section {
  position: relative;
}

@media screen and (max-width: 768px) {
  .message-box-section {
    padding: 10px;
  }
}

.message-box {
  background: #ffffff;
  border-radius: 10px;
  padding: 40px 60px;
  height: fit-content;
  min-height: 400px;
}

@media screen and (max-width: 768px) {
  .message-box {
    padding: 5px;
    margin-bottom: 30px;
  }
}

.custom-textarea {
  height: 250px;
}


/* ============================================================================
 * .single-product-area — 跨頁表格 / 內容白卡 wrapper
 *   使用頁面：product（商品詳情）/ shoppingCarts（購物車）/ orders（訂單列表）/ wishList
 *   原僅存在於 common/pages/product.css（含完整白卡）與 common/pages/shoppingCart.css
 *   （僅 width/overflow），orders 路由 route_page_map 只載 order.css，兩者皆不載入，
 *   導致訂單列表的 .single-product-area 元素缺白底 / padding / border-radius 卡片樣式
 *   （DOM 有此層但無視覺 wrapper）。比照 .message-box 遷至 base.css 統一跨頁 cascade。
 *   抽自 kgtwbeef.css line 2339（白卡）+ line 4196（width/overflow，表格橫向捲動）
 * ============================================================================
 */
.single-product-area {
  background: #ffffff;
  border-radius: 10px;
  padding: 20px 20px;
  height: fit-content;
  min-height: 400px;
  width: 100%;
  overflow-x: auto;
}

@media screen and (max-width: 768px) {
  .single-product-area {
    padding: 5px;
    margin-bottom: 30px;
  }
}


/* ============================================================================
 * 共用商品縮圖列項目（.product-thumbnail / .pro-thumbnail-* / .product-title-2
 *   / .product-remove / .product-stock / .product-add-cart）
 *   原位於 common/pages/shoppingCart.css，但 wishList 頁面亦使用相同 class
 *   呈現追蹤清單表格列，load 的是 user.css，缺這些規則 → 商品名稱不截斷、
 *   描述顯示全文（cm12 為 ellipsis 單行）、移除按鈕字大小不對等。
 *   遷至 base.css（所有頁面皆載入）以還原 cm12 共用 cascade。
 *   抽自 default.css line 5655~5736
 * ============================================================================
 */

.product-thumbnail {
  width: 420px;
}

.pro-thumbnail-img {
  float: left;
  width: 20%;
}

.pro-thumbnail-img img {
  width: 100%;
}

.pro-thumbnail-info {
  float: left;
  padding-left: 20px;
  width: 72%;
  max-width: 300px;
}

.product-title-2 {
  color: #666666;
  font-weight: 500;
  margin-top: 15px;
  overflow: hidden;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
}

.pro-thumbnail-info>p {
  margin-bottom: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.product-remove a {
  color: #999;
  display: block;
  font-size: 18px;
  height: 20px;
  line-height: 20px;
  transition: all 0.3s ease 0s;
  width: 20px;
}

.product-remove a:hover {
  color: #131313;
}

.product-stock {
  font-weight: 600;
  text-transform: uppercase;
}

.product-add-cart a {
  color: #999;
  font-size: 25px;
}

.product-add-cart a:hover {
  color: #131313;
}


/* ============================================================================
 * .blog-section-title（contactUs 表單副標題、post.show 等共用）
 *   原位於 common/pages/post.css，但 contactUs.blade 的 h4.blog-section-title
 *   亦使用此 class（顏色 #575757 / font-weight 700）；contactUs 不載 post.css
 *   → 顏色 fallback 至 body color (#aebcb9) 看不見。遷至 base.css 跨頁共用。
 *   抽自 default.css line 5900~5906
 * ============================================================================
 */

.blog-section-title {
  color: #575757;
  font-weight: 700;
  text-transform: uppercase;
}


/* ============================================================================
 * 補充區段：.breadcrumbs-title 手機版 cascade 修復
 * ============================================================================
 *
 * 原因：
 *   舊 default.css 內 cascade（同 specificity 規則由線性掃描順序決勝）：
 *     - line 4271 @media (max-width:767px) .breadcrumbs-title { padding: 50px 0 30px }（先）
 *     - line 5232 @media (max-width:767px) .breadcrumbs-title { padding: 8px 0 }（後勝）
 *   最終手機版 padding = 8px 0（標題緊貼上方）
 *
 *   抽到 common/base.css 後 cascade 順序反轉：
 *     - line 2236-2242 padding: 8px 0（抽自舊 5232，被先載入）
 *     - line 3108-3111 padding: 50px 0 30px（抽自舊 4271，後載勝）
 *   最終手機版 padding = 50px 0 30px（banner 變高、標題位置偏下）
 *
 *   影響範圍：所有 breadcrumbs 頁面手機版，含 products / products.show /
 *   posts / posts.show / shoppingCarts / checkout / orders / login / register /
 *   profile / shipping / member / privacy / terms / payReturn / contactUs。
 *
 * 修法：
 *   本檔末段（cascade 順序最末）再次宣告 @media (max-width: 767px)
 *   .breadcrumbs-title padding: 8px 0，還原舊 default.css 線性掃描結果。
 *   仿 line 2162 .message-box input 補丁同模式。
 *
 * 抽取自：default.css line 5231-5237
 * ============================================================================
 */

@media (max-width: 767px) {
  .breadcrumbs-title {
    padding: 8px 0;
  }
}


/* ============================================================================
 * 補充區段：.blockTitleBox 手機版 cascade 修復
 * ============================================================================
 *
 * 原因：
 *   舊 default.css 內 @media screen and (max-width: 768px) .blockTitleBox 規則
 *   出現兩次（同 specificity，後者勝）：
 *     - line 6264-6268 .blockTitleBox { margin-top: 20px; padding-top: 50px }（先）
 *     - line 6445-6449 .blockTitleBox { margin-top: 10px; padding-top: 20px }（後勝）
 *   最終手機版：margin-top: 10px / padding-top: 20px
 *
 *   新 common/base.css 抽取時只抽到第一條（line 3382-3386 = margin-top: 20px /
 *   padding-top: 50px），第二條漏抽，導致新拆檔最終手機版顯示為 20px / 50px。
 *
 *   影響範圍：所有頁面含 .blockTitleBox 標題區塊的手機版視覺（margin/padding 偏大）。
 *
 * 修法：
 *   本檔末段（cascade 順序最末）補回舊 default.css line 6445-6449 規則。
 *   仿 line 2162 .message-box input 補丁同模式。
 *
 * 抽取自：default.css line 6445-6449
 * ============================================================================
 */

@media screen and (max-width: 768px) {
  .blockTitleBox {
    margin-top: 10px;
    /* padding-top: 120px; */
    padding-top: 20px;
  }
}

/* Fancybox lightbox 需高於 fixed #header (z-index: 3000)（issue480 由舊單檔遷入 base 全域層） */
.fancybox__container {
  z-index: 9999 !important;
}
