@charset "UTF-8";
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100..900&family=Roboto+Flex:opsz,wght@8..144,100..1000&family=Roboto:ital,wght@0,100..900;1,100..900&display=swap");
/* reset.scss — 基本樣式清除與初始設定 */
/* 1. Reset 基本元素的 margin & padding */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  vertical-align: baseline;
  box-sizing: border-box;
}

/* 2. 設定 HTML5 display block */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
  display: block;
}

/* 3. 基礎排版設定 */
body {
  line-height: 1.5;
  font-family: "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  color: #111;
}

/* 4. 文字元素 */
a {
  text-decoration: none;
  color: inherit;
}

strong {
  font-weight: bold;
}

em {
  font-style: italic;
}

/* 5. 表單元素 reset */
input, textarea, select, button {
  font: inherit;
  border: none;
  background: none;
  outline: none;
  box-shadow: none;
  appearance: none;
}

button {
  cursor: pointer;
}

/* 6. 列表元素 */
ul, ol {
  list-style: none;
}

/* 7. table reset */
table {
  border-collapse: collapse;
  border-spacing: 0;
}

/* 8. box-sizing 一致化 */
*, *::before, *::after {
  box-sizing: inherit;
}

/* 9. scroll behavior 平滑 */
html {
  scroll-behavior: smooth;
}

/* 10. input reset  */
input,
select {
  vertical-align: middle;
  margin: 0px;
  border: none;
  outline: none;
}

input[type=text]::placeholder,
input[type=search]::placeholder,
input[type=email]::placeholder,
input[type=password]::placeholder {
  font-weight: 400;
  font-size: 14px;
  color: var(--G500);
}

input[type=search]::-webkit-search-decoration,
input[type=search]::-webkit-search-cancel-button,
input[type=search]::-webkit-search-results-button,
input[type=search]::-webkit-search-results-decoration {
  display: none;
}

button,
button:hover,
button:active,
button:focus {
  outline: none;
  border: none;
  cursor: pointer;
}

:root {
  --G00: #ffffff;
  --G50: #fafafa;
  --G100: #f4f4f4;
  --G300: #e0e0e0;
  --G500: #c4c4c4;
  --G700: #696969;
  --G900: #292929;
  --PB01: #6a92ce;
  --PB02: #8cbbff;
  --PB03: #e7ebf1;
  --SK01: #ae8d4d;
  --SK02: #e3d8c3;
  --CS: #66cb9f;
  --CD: #f16063;
  --TC01: #ffffffb2;
  --TC02: #c3d0e380;
  --H1: 200%; /*32px*/
  --H2: 175%; /*28px*/
  --H3: 125%; /*20px*/
  --H4: 115%; /*18.5*/
  --H5: 100%; /*16px*/
  --P1: 100%; /*16px*/
  --P2: 95%; /*15px*/
  --P3: 90%; /*14px*/
  --P4: 75%; /*12px*/
  --D1: 80%; /*13px*/
  --D2: 75%; /*12px*/
  --D3: 70%; /*11px*/
}

/* WORDS SETTING */
body * {
  color: var(--G700);
  font-size: 16px;
  font-family: "Roboto Flex", "Roboto", "Noto Sans SC", sans-serif;
  font-weight: 400;
  line-height: 1.5;
}

.H1,
.H2,
.H3,
.H4,
.H5 {
  font-weight: 700;
}

.H1 {
  font-size: var(--H1);
}

.H2 {
  font-size: var(--H2);
}

.H3 {
  font-size: var(--H3);
}

.H4 {
  font-size: var(--H4);
}

.H5 {
  font-size: var(--H5);
}

.P1 {
  font-size: var(--P1);
}

.P2 {
  font-size: var(--P2);
}

.P3 {
  font-size: var(--P3);
}

.P4 {
  font-size: var(--P4);
}

.D1 {
  font-size: var(--D1);
}

.D2 {
  font-size: var(--D2);
}

.D3 {
  font-size: var(--D3);
}

/*icon setting*/
.icon-wrap {
  position: relative;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  width: 24px;
  height: 24px;
  transition: ease 0.35s;
}
.icon-wrap strong.num {
  position: absolute;
  top: 0;
  left: 0;
  transform: translate(18px, -4px);
  z-index: 1;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  font-size: var(--P4);
  background-color: var(--SK02);
}
.icon-wrap i {
  display: block;
  width: 24px;
  height: 24px;
  mask-size: 24px;
  mask-position: center;
  mask-repeat: no-repeat;
  -webkit-mask-size: 24px;
  -webkit-mask-position: center;
  -webkit-mask-repeat: no-repeat;
  background-color: var(--G700);
  transition: ease 0.35s;
}
.icon-wrap.arrow-up i {
  -webkit-mask-image: url(../assets/icons/icon_arrow_up_n.png);
  mask-image: url(../assets/icons/icon_arrow_up_n.png);
}
.icon-wrap.library i {
  -webkit-mask-image: url(../assets/icons/icon_library_n.png);
  mask-image: url(../assets/icons/icon_library_n.png);
}
.icon-wrap.menu i {
  -webkit-mask-image: url(../assets/icons/icon_menu_n.png);
  mask-image: url(../assets/icons/icon_menu_n.png);
}
.icon-wrap.member i {
  -webkit-mask-image: url(../assets/icons/icon_member_n.png);
  mask-image: url(../assets/icons/icon_member_n.png);
}
.icon-wrap.close i, .icon-wrap.clear i {
  -webkit-mask-image: url(../assets/icons/icon_close_n.png);
  mask-image: url(../assets/icons/icon_close_n.png);
}
.icon-wrap.return i {
  -webkit-mask-image: url(../assets/icons/icon_return_n.png);
  mask-image: url(../assets/icons/icon_return_n.png);
}
.icon-wrap.search i {
  -webkit-mask-image: url(../assets/icons/icon_search_n.png);
  mask-image: url(../assets/icons/icon_search_n.png);
}
.icon-wrap.delete i {
  -webkit-mask-image: url(../assets/icons/icon_delete_n.png);
  mask-image: url(../assets/icons/icon_delete_n.png);
}
.icon-wrap.previous i {
  -webkit-mask-image: url(../assets/icons/icon_ar_previous_n.png);
  mask-image: url(../assets/icons/icon_ar_previous_n.png);
}
.icon-wrap.next i {
  -webkit-mask-image: url(../assets/icons/icon_ar_next_n.png);
  mask-image: url(../assets/icons/icon_ar_next_n.png);
}
.icon-wrap.favorite i {
  -webkit-mask-image: url(../assets/icons/icon_favorite_n.png);
  mask-image: url(../assets/icons/icon_favorite_n.png);
}
.icon-wrap.favorite.added {
  background-color: var(--PB01);
}
.icon-wrap.favorite.added i {
  -webkit-mask-image: url(../assets/icons/icon_favorite_a.png);
  mask-image: url(../assets/icons/icon_favorite_a.png);
}
.icon-wrap.change i {
  -webkit-mask-image: url(../assets/icons/icon_change_n.png);
  mask-image: url(../assets/icons/icon_change_n.png);
}
.icon-wrap.notify i {
  -webkit-mask-image: url(../assets/icons/icon_notify_n.png);
  mask-image: url(../assets/icons/icon_notify_n.png);
}
.icon-wrap.history i {
  -webkit-mask-image: url(../assets/icons/icon_history_n.png);
  mask-image: url(../assets/icons/icon_history_n.png);
}
.icon-wrap.setting i {
  -webkit-mask-image: url(../assets/icons/icon_setting_n.png);
  mask-image: url(../assets/icons/icon_setting_n.png);
}
.icon-wrap.toggle-horizontal i {
  -webkit-mask-image: url(../assets/icons/icon_toggle_arrow_n.png);
  mask-image: url(../assets/icons/icon_toggle_arrow_n.png);
}
.icon-wrap.toggle-vertical i {
  -webkit-mask-image: url(../assets/icons/icon_toggle_arrow_n.png);
  mask-image: url(../assets/icons/icon_toggle_arrow_n.png);
  transform: rotate(90deg);
}
.icon-wrap.tf-icon i {
  -webkit-mask-image: url(../assets/icons/icon_cover_tf_recommend.png);
  mask-image: url(../assets/icons/icon_cover_tf_recommend.png);
}
.icon-wrap.permission-icon i {
  -webkit-mask-image: url(../assets/icons/icon_cover_lock.png);
  mask-image: url(../assets/icons/icon_cover_lock.png);
}
.icon-wrap.tips i {
  -webkit-mask-image: url(../assets/icons/icon_tips_n.png);
  mask-image: url(../assets/icons/icon_tips_n.png);
}
.icon-wrap.wishlist i {
  -webkit-mask-image: url(../assets/icons/icon_wishlist_n.png);
  mask-image: url(../assets/icons/icon_wishlist_n.png);
}

button:has(> .icon-wrap),
div:has(> .icon-wrap),
label:has(> .icon-wrap) {
  display: flex;
  align-items: center;
  justify-content: center;
  transition: ease 0.35s;
}
button:has(> .icon-wrap):hover .icon-wrap i,
div:has(> .icon-wrap):hover .icon-wrap i,
label:has(> .icon-wrap):hover .icon-wrap i {
  background-color: var(--PB01);
}
button:has(> .icon-wrap.btn-type),
div:has(> .icon-wrap.btn-type),
label:has(> .icon-wrap.btn-type) {
  display: flex;
  align-items: center;
  justify-content: center;
  transition: ease 0.35s;
}
button:has(> .icon-wrap.btn-type):hover .icon-wrap,
div:has(> .icon-wrap.btn-type):hover .icon-wrap,
label:has(> .icon-wrap.btn-type):hover .icon-wrap {
  background-color: var(--PB01);
}
button:has(> .icon-wrap.btn-type):hover .icon-wrap i,
div:has(> .icon-wrap.btn-type):hover .icon-wrap i,
label:has(> .icon-wrap.btn-type):hover .icon-wrap i {
  background-color: var(--G00);
}

/*icon type button*/
.icon-wrap.btn-type {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  border: 1px solid transparent;
}
.icon-wrap.btn-type:hover {
  border: 1px solid var(--PB01);
  background-color: var(--PB01);
}
.icon-wrap.btn-type:hover i {
  background-color: var(--G00);
}

/*button setting*/
.btn-wrap {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  max-width: 160px;
  height: 44px;
  padding: 0 24px;
  border-radius: 32px;
  cursor: pointer;
  transition: ease 0.35s;
}
.btn-wrap a,
.btn-wrap span,
.btn-wrap p,
.btn-wrap strong {
  display: block;
  width: max-content;
  text-align: center;
}
.btn-wrap.type1 {
  background-color: var(--G900);
  border: 1px solid var(--G900);
}
.btn-wrap.type1 a,
.btn-wrap.type1 span,
.btn-wrap.type1 p,
.btn-wrap.type1 strong {
  color: var(--G00);
}
.btn-wrap.type1:hover, .btn-wrap.type1.hover {
  color: var(--G00);
  background-color: var(--PB01);
  border-color: var(--PB01);
}
.btn-wrap.type1.active, .btn-wrap.type1:active {
  color: var(--G00);
  background-color: var(--PB01);
  border-color: var(--PB01);
}
.btn-wrap.type1.disabled, .btn-wrap.type1:disabled, .btn-wrap.type1.disabled:hover, .btn-wrap.type1:disabled:hover {
  color: var(--G500);
  background-color: var(--G300);
  border-color: var(--G300);
  cursor: default;
}
.btn-wrap.type2 {
  background-color: var(--G00);
  border: 1px solid var(--G500);
}
.btn-wrap.type2 a,
.btn-wrap.type2 span,
.btn-wrap.type2 p,
.btn-wrap.type2 strong {
  color: var(--G700);
}
.btn-wrap.type2:hover, .btn-wrap.type2.hover, .btn-wrap.type2.active, .btn-wrap.type2:active {
  background-color: var(--PB01);
  border-color: var(--PB01);
}
.btn-wrap.type2:hover a,
.btn-wrap.type2:hover span,
.btn-wrap.type2:hover p,
.btn-wrap.type2:hover strong, .btn-wrap.type2.hover a,
.btn-wrap.type2.hover span,
.btn-wrap.type2.hover p,
.btn-wrap.type2.hover strong, .btn-wrap.type2.active a,
.btn-wrap.type2.active span,
.btn-wrap.type2.active p,
.btn-wrap.type2.active strong, .btn-wrap.type2:active a,
.btn-wrap.type2:active span,
.btn-wrap.type2:active p,
.btn-wrap.type2:active strong {
  color: var(--G00);
}
.btn-wrap.type2.disabled, .btn-wrap.type2:disabled, .btn-wrap.type2.disabled:hover, .btn-wrap.type2:disabled:hover {
  color: var(--G500);
  background-color: var(--G300);
  border-color: var(--G300);
  cursor: default;
}

/*input setting*/
.input-wrap {
  position: relative;
}
.input-wrap > label {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: max-content;
}
.input-wrap > label input[type=text],
.input-wrap > label input[type=password],
.input-wrap > label input[type=email] {
  display: block;
  width: 100%;
  height: 32px;
  padding: 0 16px;
  line-height: 32px;
  background-color: var(--G00);
  border: 1px solid var(--G700);
  border-radius: 8px;
  transition: ease 0.35s;
}
.input-wrap > label:has(input[type=text]:focus) input[type=text],
.input-wrap > label:has(input[type=text]:focus) input[type=password],
.input-wrap > label:has(input[type=text]:focus) input[type=email], .input-wrap > label:has(input[type=password]:focus) input[type=text],
.input-wrap > label:has(input[type=password]:focus) input[type=password],
.input-wrap > label:has(input[type=password]:focus) input[type=email], .input-wrap > label:has(input[type=email]:focus) input[type=text],
.input-wrap > label:has(input[type=email]:focus) input[type=password],
.input-wrap > label:has(input[type=email]:focus) input[type=email] {
  border-color: var(--PB01);
  outline: 1px solid var(--PB01);
}

/*checkbox setting*/
.checkbox-wrap {
  position: relative;
  display: flex;
  align-items: center;
  cursor: pointer;
}
.checkbox-wrap input[type=checkbox] {
  display: none;
}
.checkbox-wrap span {
  position: absolute;
  left: 0;
  top: 1px;
  display: block;
  width: 20px;
  height: 20px;
  mask-image: url(../assets/icons/icon_ckbox_arrow.png);
  mask-size: 24px;
  mask-position: center;
  mask-repeat: no-repeat;
  -webkit-mask-size: 24px;
  -webkit-mask-position: center;
  -webkit-mask-repeat: no-repeat;
  background-color: var(--G00);
  transition: ease 0.35s;
}
.checkbox-wrap p {
  display: flex;
  height: 20px;
  line-height: 20px;
  color: var(--G700);
}
.checkbox-wrap p::before {
  content: "";
  display: inline-block;
  line-height: 20px;
  width: 20px;
  height: 20px;
  margin-right: 6px;
  background-color: var(--G00);
  border: 2px solid var(--PB01);
  border-radius: 4px;
  box-sizing: border-box;
}
.checkbox-wrap input[type=checkbox]:checked ~ span {
  opacity: 1;
}
.checkbox-wrap input[type=checkbox]:checked ~ p::before {
  background-color: var(--PB01);
}

/*radio setting*/
.radio-wrap {
  position: relative;
  display: flex;
  align-items: center;
  cursor: pointer;
}
.radio-wrap input[type=radio] {
  display: none;
}
.radio-wrap span {
  position: absolute;
  left: 0;
  top: 0;
  display: block;
  width: 20px;
  height: 20px;
  mask-size: 24px;
  mask-position: center;
  mask-repeat: no-repeat;
  -webkit-mask-size: 24px;
  -webkit-mask-position: center;
  -webkit-mask-repeat: no-repeat;
  background-color: var(--G00);
  transition: ease 0.35s;
}
.radio-wrap p::before {
  line-height: 24px;
  content: "";
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 20px;
  margin-right: 6px;
  background-color: var(--G00);
  border: 2px solid var(--PB01);
  border-radius: 50%;
  box-sizing: border-box;
}
.radio-wrap input[type=radio]:checked ~ span {
  opacity: 1;
}
.radio-wrap input[type=radio]:checked ~ p::before {
  background-color: var(--PB01);
}

/*switch setting*/
.switch-wrap {
  position: relative;
  display: inline-block;
  width: 32px;
  height: 16px;
  padding: 2px;
  border-radius: 8px;
  background-color: var(--G300);
  transition: ease 0.35s;
  cursor: pointer;
}
.switch-wrap input[type=checkbox] {
  position: absolute;
  inset: 0;
  opacity: 0;
  z-index: 1;
  cursor: pointer;
}
.switch-wrap::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 2px;
  transform: translateY(-50%);
  display: block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background-color: var(--G00);
  transition: ease 0.35s;
}
.switch-wrap:has(input[type=checkbox]:checked) {
  background-color: var(--PB01);
}
.switch-wrap:has(input[type=checkbox]:checked)::before {
  left: 18px;
  background-color: var(--G00);
}

/*select setting*/
.select-wrap {
  position: relative;
  display: flex;
  flex-direction: column;
  cursor: pointer;
}
.select-wrap p.tab-value {
  position: relative;
  display: block;
  width: 144px;
  height: 28px;
  padding: 0 24px 0 16px;
  line-height: 28px;
  font-weight: 500;
  color: var(--G900);
  background-color: var(--G00);
  border: 1px solid var(--G300);
  border-radius: 8px;
  transition: ease 0.15s;
}
.select-wrap p.tab-value input[type=checkbox] {
  position: absolute;
  inset: 0;
  opacity: 0;
  z-index: 1;
  cursor: pointer;
}
.select-wrap p.tab-value::before {
  content: "";
  line-height: 24px;
  text-transform: uppercase;
}
.select-wrap p.tab-value::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 8px;
  transform: translateY(-50%);
  display: block;
  width: 24px;
  height: 24px;
  mask-image: url(../assets/icons/icon_select_arrow.png);
  mask-size: 24px;
  mask-position: center;
  mask-repeat: no-repeat;
  -webkit-mask-size: 24px;
  -webkit-mask-position: center;
  -webkit-mask-repeat: no-repeat;
  background-color: var(--G900);
  transition: ease 0.35s;
}
.select-wrap ul {
  position: relative;
  transform: translateY(-1px);
  display: flex;
  flex-direction: column;
  height: max-content;
  padding: 0;
  overflow: hidden;
  background-color: var(--G00);
  border: 0 solid var(--G300);
  border-radius: 0 0 8px 8px;
  transition: ease 0.15s;
}
.select-wrap ul li {
  position: relative;
  display: flex;
  align-items: center;
  height: 0;
  background-color: var(--G00);
  transition: ease 0.35s;
}
.select-wrap ul li label {
  position: relative;
  display: block;
  width: 100%;
  padding: 0 16px;
}
.select-wrap ul li label input[type=checkbox],
.select-wrap ul li label input[type=radio] {
  position: absolute;
  inset: 0;
  opacity: 0;
  z-index: 1;
  cursor: pointer;
}
.select-wrap ul li:hover {
  background-color: var(--PB01);
}
.select-wrap ul li:hover label span {
  color: var(--G00);
}
.select-wrap ul li:has(input[type=checkbox]:checked) label span, .select-wrap ul li:has(input[type=radio]:checked) label span {
  color: var(--G300);
}
.select-wrap ul li:has(input[type=checkbox]:checked):hover, .select-wrap ul li:has(input[type=radio]:checked):hover {
  background-color: transparent;
}
.select-wrap p.tab-value:has(input[type=checkbox]:checked) {
  border: 2px solid var(--PB01);
  border-bottom: 0 solid var(--G300);
  border-radius: 8px 8px 0px 0px;
}
.select-wrap p.tab-value:has(input[type=checkbox]:checked)::after {
  transform: translateY(-50%) rotate(180deg);
}
.select-wrap p.tab-value:has(input[type=checkbox]:checked) ~ ul {
  padding: 4px 0 0;
  border: 2px solid var(--PB01);
  border-top: 0;
}
.select-wrap p.tab-value:has(input[type=checkbox]:checked) ~ ul::before {
  content: "";
  position: absolute;
  width: 100%;
  height: 1px;
  top: 0;
  left: 0;
  background-color: var(--G300);
}
.select-wrap p.tab-value:has(input[type=checkbox]:checked) ~ ul li {
  height: 32px;
}

body {
  max-height: 100dvh;
  margin: 0;
  /*Console-switch*/
  /*ip*/
  /*back to top*/
  /*Content*/
}
body * {
  padding: 0;
  box-sizing: border-box;
}
body .console-switch {
  display: none;
}
body .member-ip {
  position: fixed;
  bottom: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100dvw;
  height: 32px;
  background-color: var(--G300);
  transition: transform ease 0.5s;
}
body .member-ip > span.icon-wrap i {
  background-color: var(--G900) !important;
}
body .member-ip > span.icon-wrap:hover i {
  background-color: var(--G900);
}
body .member-ip p {
  width: max-content;
}
body .member-ip p span {
  color: var(--G900);
}
body .member-ip p span.id {
  display: none;
}
body .member-ip.hide {
  transform: translateY(32px);
}
body .back-to-top {
  position: fixed;
  bottom: 48px;
  right: 5%;
  z-index: -1;
  display: flex;
  width: 40px;
  height: 64px;
  border-radius: 24px;
  border: 1px solid var(--PB01);
  background-color: rgba(255, 255, 255, 0.8);
  opacity: 0;
  transition: background-color ease 0.35s, opacity ease 0.35s;
  cursor: pointer;
}
body .back-to-top .icon-wrap i {
  background-color: var(--PB01);
}
body .back-to-top:hover {
  background-color: var(--PB01);
}
body .back-to-top:hover .icon-wrap i {
  background-color: var(--G00);
}
body .back-to-top.active {
  z-index: 2;
  opacity: 1;
}
body main {
  width: 100dvw;
  min-height: 100dvh;
  overflow: hidden;
  background-color: var(--G00);
}

body {
  /*user logined*/
  /*------------------------------------------------------------------
              categories view setting begin
  ------------------------------------------------------------------*/
  /*categories view show*/
  /*categories tab-list select*/
  /*categories main list click to show sub list*/
  /*------------------------------------------------------------------
              member view setting begin
  ------------------------------------------------------------------*/
  /*member view show*/
  /*------------------------------------------------------------------
              wishlist setting begin
  ------------------------------------------------------------------*/
  /* user info selector bar click setting */
}
body:is(.logined) .member-ip p span.ip {
  display: none;
}
body:is(.logined) .member-ip p span.id {
  display: block;
}
body:is(.logined) main .books-module .cover span.favorite input {
  z-index: 1;
}
body:has(#catregory_toggle:checked) {
  overflow: hidden;
}
body:has(#catregory_toggle:checked) header .view-wrap,
body:has(#catregory_toggle:checked) header nav {
  transform: translateX(0);
  z-index: 5;
  opacity: 1;
}
body:has(#catregory_toggle:checked) header .view-wrap .categories-wrap,
body:has(#catregory_toggle:checked) header nav .categories-wrap {
  display: block;
}
body:has(#catregory_toggle:checked) header .view-wrap > label[for=catregory_toggle],
body:has(#catregory_toggle:checked) header nav > label[for=catregory_toggle] {
  z-index: 1;
  display: block;
}
body:has(#catregory_toggle:checked) header .header-wrap {
  position: relative;
  z-index: 6;
  background-color: var(--G00);
}
body:has(#catregory_toggle:checked) header .header-wrap .logo a img {
  filter: brightness(0);
}
body:has(#catregory_toggle:checked) header .header-wrap .toolbar ul li.menu label .icon-wrap {
  background-color: transparent;
}
body:has(#catregory_toggle:checked) header .header-wrap .toolbar ul li.menu label .icon-wrap i {
  background-color: var(--G900);
  mask-image: url(../assets/icons/icon_close_n.png);
}
body:has(#catregory_toggle:checked) header .header-wrap .toolbar ul li.menu label:hover {
  background-color: transparent;
}
body:has(#catregory_toggle:checked) header .header-wrap .toolbar ul li.menu label:hover .icon-wrap {
  background-color: transparent;
}
body:has(#catregory_toggle:checked) header .header-wrap .toolbar ul li.menu label:hover .icon-wrap i {
  background-color: var(--PB01);
}
body:has(#catregory_toggle:checked) header .header-wrap .toolbar ul li.member {
  display: none;
}
@media screen and (min-width: 1024px) {
  body:has(#catregory_toggle:checked) {
    overflow-y: auto;
  }
  body:has(#catregory_toggle:checked) header .view-wrap {
    z-index: 7;
    box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.1);
  }
  body:has(#catregory_toggle:checked) header .view-wrap .categories-wrap {
    height: 100dvh;
  }
  body:has(#catregory_toggle:checked) header .view-wrap .categories-wrap .categories .view-title h2 {
    line-height: 48px;
  }
  body:has(#catregory_toggle:checked) header .view-wrap .categories-wrap .categories .view-title .tab-list {
    right: unset;
    left: 108px;
  }
  body:has(#catregory_toggle:checked) header .view-wrap .categories-wrap .categories .view-title label[for=catregory_toggle] {
    display: flex;
  }
  body:has(#catregory_toggle:checked) header .nav-wrap ul li a {
    color: var(--G00);
  }
  body:has(#catregory_toggle:checked) header .header-wrap {
    background-color: transparent;
  }
  body:has(#catregory_toggle:checked) header .header-wrap .logo a img {
    filter: brightness(1);
  }
  body:has(#catregory_toggle:checked) header .header-wrap .toolbar ul li.menu label {
    background-color: transparent;
  }
  body:has(#catregory_toggle:checked) header .header-wrap .toolbar ul li.menu label .icon-wrap i {
    background-color: var(--G900);
  }
  body:has(#catregory_toggle:checked) header.scroll-style .header-wrap .logo a img {
    filter: brightness(0);
  }
  body:has(#catregory_toggle:checked) header.header-hide .view-wrap {
    transform: translate(0, 48px);
  }
}
body:has(header input[data-tab=clc]:checked) header .categories-wrap .categories .view-title .tab-list .tab-value::before {
  content: "CLC";
}
body:has(header input[data-tab=clc]:checked) header .view-wrap .categories-wrap .categories .catgory-list .sub-list .sub-title h3 > span::before {
  content: "CLC /";
}
body:has(header input[data-tab=subjects]:checked) header .categories-wrap .categories .view-title .tab-list .tab-value::before {
  content: "SUBJECTS";
}
body:has(header input[data-tab=subjects]:checked) header .view-wrap .categories-wrap .categories .catgory-list .sub-list .sub-title h3 > span::before {
  content: "SUBJECTS /";
}
body:has(header input[data-tab=basic]:checked) header .categories-wrap .categories .view-title .tab-list .tab-value::before {
  content: "BASIC";
}
body:has(header input[data-tab=basic]:checked) header .view-wrap .categories-wrap .categories .catgory-list .sub-list .sub-title h3 > span::before {
  content: "BASIC /";
}
body:has(header .sub-menu-switch input[type=checkbox]:checked) header .view-wrap .categories-wrap .categories .catgory-list {
  position: relative;
  z-index: 3;
  margin-top: -44px;
}
body:has(header .sub-menu-switch input[type=checkbox]:checked) header .view-wrap .categories-wrap .categories .catgory-list ul {
  transform: translateX(-100%);
}
body:has(#member_toggle:checked) {
  overflow: hidden;
}
body:has(#member_toggle:checked) header .view-wrap {
  transform: translateX(0);
  z-index: 6;
  opacity: 1;
}
body:has(#member_toggle:checked) header .view-wrap .member-wrap {
  display: flex;
}
body:has(#member_toggle:checked) header .view-wrap > label[for=member_toggle] {
  z-index: 1;
  display: block;
}
body:has(#member_toggle:checked) header .header-wrap {
  position: relative;
  z-index: 1;
  background-color: transparent;
}
body:has(#member_toggle:checked) header .header-wrap .logo {
  visibility: hidden;
}
body:has(#member_toggle:checked) header .header-wrap .logo a img {
  visibility: hidden;
  transition: none;
}
body:has(#member_toggle:checked) header .header-wrap .toolbar ul li.menu {
  display: none;
}
body:has(#member_toggle:checked) header .header-wrap .toolbar ul li.member {
  display: none;
}
@media screen and (min-width: 1024px) {
  body:has(#member_toggle:checked) {
    overflow: auto;
  }
  body:has(#member_toggle:checked) header.header-hide .view-wrap {
    transform: translate(0, 48px);
  }
  body:has(#member_toggle:checked) header.header-hide .header-wrap .toolbar ul li.member {
    transform: translateY(48px);
    transition: ease 0.5s;
  }
}
body .wishlist-switch:has(#wishlist_toggle:checked) {
  /* wishlist module show */
}
body .wishlist-switch:has(#wishlist_toggle:checked) ~ .wishlist-module {
  display: flex;
}
body .wishlist-module .wishlist .user-info-form .select-wrap:has(input[data-tab=default]:checked) p.tab-value::before {
  content: "Select an Identity";
}
body .wishlist-module .wishlist .user-info-form .select-wrap:has(input[data-tab=faculty]:checked) p.tab-value::before {
  content: "Faculty & Researchers";
}
body .wishlist-module .wishlist .user-info-form .select-wrap:has(input[data-tab=graduate]:checked) p.tab-value::before {
  content: "Graduate Students";
}
body .wishlist-module .wishlist .user-info-form .select-wrap:has(input[data-tab=undergraduate]:checked) p.tab-value::before {
  content: "College Students";
}
body .wishlist-module .wishlist .user-info-form .select-wrap:has(input[data-tab=other]:checked) p.tab-value::before {
  content: "Other";
}

header {
  position: fixed;
  top: 0;
  transform: translateY(0);
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: center;
  width: 100dvw;
  height: max-content;
  min-height: 48px;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.15);
  background-color: rgba(0, 0, 0, 0.5);
  transition: background-color ease 0.35s, transform ease 0.5s;
  container: header/inline-size;
}
header.scroll-style {
  background-color: rgba(255, 255, 255, 0.9);
}
header.scroll-style .header-wrap .logo a img {
  filter: brightness(0);
}
header.scroll-style .header-wrap .toolbar ul li label {
  border: 1px solid var(--G100);
}
header.scroll-style .header-wrap .toolbar ul li label .icon-wrap i {
  background-color: var(--G900);
}
header.scroll-style .header-wrap .toolbar ul li:has(label:hover) label {
  background-color: transparent;
}
header.scroll-style .header-wrap .toolbar ul li:has(label:hover) label .icon-wrap i {
  background-color: var(--PB01);
}
header.scroll-style .nav-wrap ul li a {
  color: var(--G900) !important;
}
header.header-hide {
  transform: translateY(-100%);
}
header .view-wrap {
  position: fixed;
  top: 0;
  right: 0;
  z-index: -1;
  transform: translateX(100%);
  width: 100dvw;
  min-width: 360px;
  height: 100dvh;
  background-color: transparent;
  opacity: 0;
  transition: transform ease 0.35s;
}
header .view-wrap .categories-wrap {
  position: relative;
  z-index: 2;
  top: 48px;
  display: none;
  width: 100%;
  min-width: 360px;
  height: calc(100dvh - 48px);
  max-height: calc(70dvh - 48px);
  background-color: var(--G00);
  overflow-y: hidden;
}
header .view-wrap .categories-wrap .categories .view-title {
  position: sticky;
  top: 0;
  z-index: 1;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 16px;
  background-color: var(--G100);
}
header .view-wrap .categories-wrap .categories .view-title h2 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  line-height: 44px;
  font-weight: 500;
  color: var(--G700);
}
header .view-wrap .categories-wrap .categories .view-title h2 label {
  display: block;
  width: 32px;
  height: 32px;
  mask-position: center;
  mask-size: 24px;
  mask-image: url("../assets/icons/icon_close_n.png");
  background-color: var(--G700);
  cursor: pointer;
}
header .view-wrap .categories-wrap .categories .view-title h2 label:hover {
  background-color: var(--PB01);
}
header .view-wrap .categories-wrap .categories .view-title .tab-list {
  position: absolute;
  top: 8px;
  right: 16px;
  z-index: 1;
}
header .view-wrap .categories-wrap .categories .view-title label[for=catregory_toggle] {
  display: none;
  cursor: pointer;
}
header .view-wrap .categories-wrap .categories .catgory-list {
  display: flex;
  flex-wrap: nowrap;
  height: max-content;
  max-height: calc(70dvh - 92px);
  overflow-x: hidden;
  overflow-y: auto;
}
header .view-wrap .categories-wrap .categories .catgory-list .sub-menu-switch {
  display: none;
}
header .view-wrap .categories-wrap .categories .catgory-list ul {
  transform: translateX(0);
  flex: 0 0 100%;
  display: flex;
  flex-direction: column;
}
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item {
  display: flex;
  flex-direction: column;
  padding: 0 16px;
  border-bottom: 1px solid var(--G100);
}
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div {
  position: relative;
  display: flex;
  justify-content: start;
  align-items: center;
}
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div h3,
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div h4 {
  display: flex;
  align-items: center;
  max-width: calc(100% - 44px);
  height: 44px;
  line-height: 1.5;
  font-weight: 500;
  color: var(--G900);
}
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div h3 span,
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div h3 a,
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div h4 span,
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div h4 a {
  margin: 0 8px 0 0;
  padding: 0;
  line-height: 1.25;
  font-weight: 500;
  color: var(--G900);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  white-space: normal;
}
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div h3 a,
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div h4 a {
  padding: 0 16px;
}
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div label {
  position: absolute;
  display: flex;
  align-items: center;
  justify-content: end;
  width: 100%;
  height: 100%;
  background-color: transparent;
  overflow: hidden;
  cursor: pointer;
}
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div label .icon-wrap i {
  background-color: var(--G900);
}
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div:hover h3,
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div:hover h4 {
  color: var(--PB01);
}
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div:hover h3 span,
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div:hover h3 a,
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div:hover h4 span,
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div:hover h4 a {
  color: var(--PB01);
}
header .view-wrap .categories-wrap .categories .catgory-list ul li.catgory-item > div:hover label .icon-wrap i {
  background-color: var(--PB01);
}
header .view-wrap .categories-wrap .categories .catgory-list ul.sub-list .sub-title {
  position: sticky;
  top: 0;
  z-index: 1;
  background-color: var(--G100);
  display: flex;
  flex-direction: row-reverse;
  justify-content: start;
  align-items: center;
}
header .view-wrap .categories-wrap .categories .catgory-list ul.sub-list .sub-title h3 {
  width: 100%;
  max-width: calc(100% - 44px);
  line-height: 44px;
  font-weight: 500;
  color: var(--G900);
}
header .view-wrap .categories-wrap .categories .catgory-list ul.sub-list .sub-title label {
  width: 44px;
  height: 44px;
  transform: rotate(180deg);
  cursor: pointer;
}
header .view-wrap .member-wrap {
  position: relative;
  top: 0;
  z-index: 2;
  display: none;
  flex-direction: column;
  width: 100%;
  min-width: 360px;
  height: calc(100dvh - 32px);
  background-color: var(--G00);
  overflow-y: auto;
}
header .view-wrap .member-wrap .view-title {
  position: sticky;
  top: 0;
  z-index: 1;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 16px;
  background-color: var(--G100);
}
header .view-wrap .member-wrap .view-title h2 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  line-height: 44px;
  font-weight: 500;
  color: var(--G700);
}
header .view-wrap .member-wrap .view-title h2 label {
  display: block;
  width: 32px;
  height: 32px;
  mask-position: center;
  mask-size: 24px;
  mask-image: url("../assets/icons/icon_close_n.png");
  background-color: var(--G700);
  cursor: pointer;
}
header .view-wrap .member-wrap .view-title h2 label:hover {
  background-color: var(--PB01);
}
header .view-wrap .member-wrap .view-title .tab-list {
  position: absolute;
  top: 8px;
  right: 16px;
  z-index: 1;
}
header .view-wrap .member-wrap .view-title label[for=catregory_toggle] {
  display: none;
  cursor: pointer;
}
header .view-wrap .member-wrap .member-link {
  display: block;
  width: 100%;
  margin: auto 0 0;
}
header .view-wrap .member-wrap .member-link ul {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  gap: 1px;
  width: 100%;
  height: 100%;
}
header .view-wrap .member-wrap .member-link ul li.member-item {
  display: flex;
  justify-content: start;
  align-items: center;
  width: 100%;
  height: 44px;
}
header .view-wrap .member-wrap .member-link ul li.member-item h3 {
  display: block;
  width: 100%;
  padding: 0 16px;
}
header .view-wrap .member-wrap .member-link ul li.member-item h3 a,
header .view-wrap .member-wrap .member-link ul li.member-item h3 strong {
  display: flex;
  justify-content: start;
  align-items: center;
  gap: 4px;
  width: 100%;
  height: 100%;
  line-height: 48px;
  font-weight: 500;
  color: var(--G900);
}
header .view-wrap .member-wrap .member-link ul li.member-item h3 a span:last-child,
header .view-wrap .member-wrap .member-link ul li.member-item h3 strong span:last-child {
  margin-left: auto;
}
header .view-wrap .member-wrap .member-link ul li.member-item.fast-login {
  flex-direction: column;
  justify-content: start;
  align-items: start;
  height: max-content;
  min-height: 44px;
  margin-bottom: auto;
}
header .view-wrap .member-wrap .member-link ul li.member-item.fast-login iframe {
  width: 100%;
  height: 100%;
  background-color: var(--G100);
}
header .view-wrap .member-wrap .member-link ul li.member-item:has(.disabled) {
  background-color: var(--G300);
}
header .view-wrap .member-wrap .member-link ul li.member-item:has(.disabled) * {
  cursor: default;
}
header .view-wrap .member-wrap .member-link ul li.member-item:has(.disabled) h3 a,
header .view-wrap .member-wrap .member-link ul li.member-item:has(.disabled) h3 strong {
  color: var(--G500);
}
header .view-wrap .member-wrap .member-link ul li.member-item:has(.disabled) h3 a span i,
header .view-wrap .member-wrap .member-link ul li.member-item:has(.disabled) h3 strong span i {
  background-color: var(--G500);
}
header .view-wrap > label {
  position: absolute;
  inset: 0;
  z-index: -1;
  display: none;
}
header .header-wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  height: 100%;
  padding: 0 16px;
}
header .header-wrap .logo h1 {
  position: absolute;
  z-index: -1;
  width: 0;
  height: 0;
  overflow: hidden;
  display: none;
}
header .header-wrap .logo a {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
}
header .header-wrap .logo a img {
  filter: brightness(1);
  transition: ease 0.35s;
}
header .header-wrap .toolbar ul {
  display: flex;
  align-items: center;
  gap: 8px;
}
header .header-wrap .toolbar ul li {
  display: block;
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background-color: transparent;
  overflow: hidden;
  cursor: pointer;
}
header .header-wrap .toolbar ul li label {
  width: 100%;
  height: 100%;
  cursor: pointer;
}
header .header-wrap .toolbar ul li label .icon-wrap i {
  background-color: var(--G00);
}
header .header-wrap .toolbar ul li:hover label {
  background-color: var(--PB01);
}
header .nav-wrap {
  position: fixed;
  top: 70dvh;
  right: 0;
  transform: translateX(100%);
  z-index: -1;
  width: 100dvw;
  min-width: 360px;
  height: 30dvh;
  padding: 0 0 32px;
  background-color: var(--G00);
  opacity: 0;
  transition: ease 0.35s;
}
header .nav-wrap .nav-title {
  display: block;
  width: 100%;
  padding: 0 16px;
  background-color: var(--G100);
  border-top: 1px solid var(--G300);
}
header .nav-wrap .nav-title h2 {
  height: 44px;
  line-height: 44px;
  font-weight: 500;
  color: var(--G700);
}
header .nav-wrap ul {
  display: flex;
  flex-direction: column;
  width: 100%;
}
header .nav-wrap ul li {
  display: flex;
  align-items: center;
  width: 100%;
  height: 44px;
  padding: 0 16px;
  cursor: pointer;
}
header .nav-wrap ul li a {
  display: block;
  width: max-content;
}
@container header (min-width: 480px) {
  header .header-wrap .logo {
    visibility: visible !important;
    z-index: 1;
  }
  header .header-wrap .logo img {
    visibility: visible !important;
  }
}

@media (min-width: 769px) {
  header .header-wrap .toolbar {
    display: block;
    width: 160px;
  }
  header .header-wrap .toolbar ul {
    justify-content: end;
  }
  header .view-wrap .categories-wrap {
    max-height: inherit;
  }
  header .nav-wrap {
    position: absolute;
    top: 2px !important;
    right: inherit;
    left: 50%;
    bottom: inherit;
    transform: translateX(-50%) !important;
    z-index: 5 !important;
    opacity: 1 !important;
    max-width: max-content;
    height: max-content;
    padding: 0 16px;
    background-color: transparent;
    transition: none;
  }
  header .nav-wrap .nav-title {
    position: absolute;
    z-index: -1;
    opacity: 0;
  }
  header .nav-wrap ul {
    flex-direction: row;
  }
  header .nav-wrap ul li {
    justify-content: center;
    padding: 0;
  }
  header .nav-wrap ul li a {
    color: var(--G00);
    text-align: center;
  }
}
@media (min-width: 1024px) {
  header .view-wrap {
    left: inherit;
    right: 0;
    display: flex;
    justify-content: end;
    max-width: 360px;
  }
  header .view-wrap .categories-wrap {
    transform: translateY(-48px);
    max-height: unset;
  }
  header .view-wrap .member-wrap {
    max-width: 480px;
  }
  header .view-wrap label[for=catregory_toggle],
  header .view-wrap label[for=member_toggle] {
    display: none;
  }
}
/*Index settings*/
body:has(main.index) header h1 {
  display: block !important;
}
body:has(main.index) header .header-wrap .toolbar ul li.search {
  display: none;
}

footer {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: max-content;
  padding: 16px 16px 40px;
  background-color: var(--G100);
}
footer h2 {
  position: absolute;
  z-index: -1;
  opacity: 0;
}
footer section {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  min-height: 128px;
}
footer section a,
footer section p,
footer section strong {
  color: var(--G900);
  font-weight: bold;
}
footer section a img,
footer section p img,
footer section strong img {
  max-width: 128px;
}
footer section .links-wrap {
  display: flex;
  justify-content: center;
  gap: 24px;
  width: 100%;
  padding: 16px;
  border-bottom: 1px solid var(--G500);
}
footer section .links-wrap a {
  line-height: 32px;
}
footer section .contact-wrap {
  width: 100%;
  padding: 8px 16px;
  border-bottom: 1px solid var(--G500);
}
footer section .contact-wrap a {
  text-align: center;
}

@media screen and (min-width: 769px) {
  footer {
    padding: 16px 32px 40px;
  }
  footer section {
    flex-direction: row;
    justify-content: space-between;
    align-items: start;
    width: 100%;
    min-height: unset;
    border-bottom: 1px solid var(--G500);
  }
  footer section .links-wrap,
  footer section .contact-wrap {
    justify-content: start;
    padding: 0 0 16px;
    border: none;
  }
  footer section .links-wrap p,
  footer section .contact-wrap p {
    text-align: right;
  }
  footer section .contact-wrap {
    width: max-content;
  }
  footer section .contact-wrap a {
    display: block;
    width: max-content;
    text-align: right;
  }
  footer section:nth-last-of-type(1) {
    align-items: center;
    min-height: 48px;
    border: none;
  }
}
@media screen and (min-width: 1024px) {
  footer {
    padding: 16px 10% 40px;
  }
}
.books-module {
  --bookcover-size: 120px;
  width: var(--bookcover-size);
  flex: 0 0 var(--bookcover-size);
  transition: ease 0.25s;
  /*books status*/
}
.books-module .cover {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  aspect-ratio: 1/1.4;
  background-color: var(--G00);
  border: 1px solid var(--G100);
  mix-blend-mode: multiply;
  overflow: hidden;
  cursor: pointer;
}
.books-module .cover span.favorite, .books-module .cover span.permission-icon, .books-module .cover span.tf-icon {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 0;
  background-color: rgba(0, 0, 0, 0.5);
  opacity: 0.5;
  cursor: pointer;
}
.books-module .cover span.favorite input[type=checkbox], .books-module .cover span.permission-icon input[type=checkbox], .books-module .cover span.tf-icon input[type=checkbox] {
  position: absolute;
  inset: 0;
  opacity: 0;
  z-index: 1;
  cursor: pointer;
}
.books-module .cover span.favorite i, .books-module .cover span.permission-icon i, .books-module .cover span.tf-icon i {
  background-color: var(--G00);
}
.books-module .cover span.favorite:hover, .books-module .cover span.permission-icon:hover, .books-module .cover span.tf-icon:hover {
  background-color: var(--PB01);
}
.books-module .cover span.favorite input[type=checkbox] {
  z-index: -1;
}
.books-module .cover span.favorite:has(> input[type=checkbox]:checked) {
  opacity: 1;
}
.books-module .cover span.favorite:has(> input[type=checkbox]:checked) i {
  -webkit-mask-image: url(../assets/icons/icon_favorite_a.png);
  mask-image: url(../assets/icons/icon_favorite_a.png);
  background-color: var(--PB01);
}
.books-module .cover span.favorite:has(> input[type=checkbox]:checked):hover {
  background-color: rgba(0, 0, 0, 0.15);
}
.books-module .cover span.permission-icon {
  right: inherit;
  left: 0;
  z-index: 0;
  display: none;
  background-color: var(--G100);
  opacity: 1;
  cursor: default;
}
.books-module .cover span.permission-icon i {
  background-color: var(--G900);
}
.books-module .cover span.permission-icon strong {
  display: none;
  color: var(--G900);
}
.books-module .cover span.permission-icon:hover {
  background-color: var(--G100);
}
.books-module .cover span.tf-icon {
  top: inherit;
  bottom: 0;
  justify-content: start;
  padding: 0 4px;
  background-color: var(--SK01);
  opacity: 1;
  display: none;
}
.books-module .cover span.tf-icon strong {
  display: block;
  width: max-content;
  max-width: 0;
  white-space: nowrap;
  color: var(--G00);
  overflow: hidden;
  transition: ease 0.25s;
}
.books-module .cover span.tf-icon:hover {
  justify-content: center;
  width: 100%;
  padding: 0 4px;
  background-color: var(--SK01);
}
.books-module .cover span.tf-icon:hover strong {
  max-width: 100%;
}
.books-module .cover img {
  width: 100%;
  height: auto;
  object-fit: cover;
}
.books-module .cover:hover span.favorite {
  opacity: 1;
}
.books-module .info {
  display: flex;
  flex-direction: column;
  gap: 4px;
  width: 100%;
  overflow-x: hidden;
}
.books-module .info p,
.books-module .info h4 {
  line-height: 1.25;
  word-break: break-all;
}
.books-module .info h4 {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  white-space: normal;
}
.books-module .info h4.title_EN {
  -webkit-line-clamp: 3;
}
.books-module .info h4.title_CH {
  -webkit-line-clamp: 2;
  display: none;
}
.books-module .info .simple-info {
  display: flex;
  align-items: center;
}
.books-module .info .simple-info span {
  vertical-align: middle;
  line-height: 24px;
}
.books-module .info .simple-info span::after {
  content: "｜";
  margin: 0 4px;
}
.books-module .info .simple-info span:last-child::after {
  display: none;
}
.books-module.tf-recommend .cover span.tf-icon {
  display: flex;
}
.books-module.no-permission .cover span.permission-icon {
  display: flex;
}
.books-module.no-permission .cover span.permission-icon strong::before {
  content: "Unauthorized";
}
.books-module.preview-only .cover span.permission-icon {
  display: flex;
  background-color: var(--PB01);
}
.books-module.preview-only .cover span.permission-icon i {
  -webkit-mask-image: url(../assets/icons/icob_cover_preview.png);
  mask-image: url(../assets/icons/icob_cover_preview.png);
}
.books-module.preview-only .cover span.permission-icon strong::before {
  content: "Preview only";
}

body main .search-module {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  min-height: 85dvh;
  margin: 0;
  padding: 0 16px;
  background-position: center;
  background-size: auto;
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-image: url(https://picsum.photos/1920/1280);
}
body main .search-module .search-wrap {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 24px;
  width: 100%;
  max-width: 800px;
  padding: 40px 16px;
  height: max-content;
  background-color: rgba(0, 0, 0, 0.5);
  border-radius: 40px;
}
body main .search-module .search-wrap h2 {
  display: block;
  color: var(--G00);
  text-align: center;
  text-transform: uppercase;
  font-size: 200%;
}
body main .search-module .search-wrap .search-form {
  width: 100%;
  margin: 0 auto;
}
body main .search-module .search-wrap .search-form form {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: end;
  justify-content: center;
  width: 100%;
  max-width: 480px;
  margin: 0 auto;
  /*search-type opction txt setting*/
}
body main .search-module .search-wrap .search-form form .select-menu {
  position: fixed;
  top: 0;
  left: 0;
  transform: translateY(48px);
  z-index: -1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 100dvw;
  height: 100dvh;
  padding: 0 24px;
  background-color: rgba(0, 0, 0, 0.25);
  opacity: 0;
}
body main .search-module .search-wrap .search-form form .select-menu ul {
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
  max-width: 320px;
  padding: 16px;
  border-radius: 8px;
  background-color: var(--G00);
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
}
body main .search-module .search-wrap .search-form form .select-menu ul li {
  display: block;
  width: 100%;
  height: 32px;
  text-align: center;
}
body main .search-module .search-wrap .search-form form .select-menu ul li .radio-wrap input[type=radio] {
  display: none;
}
body main .search-module .search-wrap .search-form form .select-menu ul li .radio-wrap input[type=radio]:checked ~ p {
  color: var(--PB01);
}
body main .search-module .search-wrap .search-form form .select-menu ul li .radio-wrap p {
  line-height: 32px;
}
body main .search-module .search-wrap .search-form form .select-menu ul li .radio-wrap p span {
  display: none;
}
body main .search-module .search-wrap .search-form form .select-menu ul li .radio-wrap p::before {
  display: none;
}
body main .search-module .search-wrap .search-form form .select-menu ul li.menu-title {
  position: relative;
  margin-bottom: 8px;
  text-align: left;
}
body main .search-module .search-wrap .search-form form .select-menu ul li.menu-title label {
  position: absolute;
  top: 50%;
  right: 0;
  transform: translateY(-50%);
}
body main .search-module .search-wrap .search-form form .select-menu ul li.menu-title label span {
  cursor: pointer;
}
body main .search-module .search-wrap .search-form form .select-menu ul li.menu-title p {
  line-height: 32px;
  border-bottom: 1px solid var(--G300);
}
body main .search-module .search-wrap .search-form form .select-menu > label {
  position: fixed;
  inset: 0;
  z-index: -1;
  display: block;
}
body main .search-module .search-wrap .search-form form .search-bar {
  position: relative;
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  height: 40px;
  padding: 0 8px;
  background-color: var(--G00);
  border: 1px solid var(--G300);
  border-radius: 40px;
  overflow: hidden;
}
body main .search-module .search-wrap .search-form form .search-bar .search-type {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 32px;
  background-color: var(--G300);
}
body main .search-module .search-wrap .search-form form .search-bar .search-type > label[for=search_type_toggle] {
  position: relative;
  width: max-content;
  padding: 0 8px;
}
body main .search-module .search-wrap .search-form form .search-bar .search-type > label[for=search_type_toggle] input[type=checkbox] {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: block;
  opacity: 0;
  cursor: pointer;
}
body main .search-module .search-wrap .search-form form .search-bar .search-type > label[for=search_type_toggle] p {
  color: var(--G900);
}
body main .search-module .search-wrap .search-form form .search-bar .search-type > label[for=search_type_toggle] p::before {
  content: " ";
  line-height: 24px;
  text-transform: uppercase;
}
body main .search-module .search-wrap .search-form form .search-bar button[type=reset] {
  position: absolute;
  right: 40px;
  width: max-content;
  height: max-content;
  background-color: transparent;
  display: none;
}
body main .search-module .search-wrap .search-form form .search-bar button[type=reset] .clear:hover i {
  background-color: var(--CD);
}
body main .search-module .search-wrap .search-form form .search-bar input[type=search] {
  width: 100%;
  color: var(--G700);
  line-height: 40px;
}
body main .search-module .search-wrap .search-form form .search-bar input[type=search]::placeholder {
  font-size: var(--D1);
}
body main .search-module .search-wrap .search-form form button[type=submit] {
  position: absolute;
  top: 4px;
  right: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 32px;
  background-color: var(--G900);
  transition: background-color ease 0.35s;
  cursor: pointer;
}
body main .search-module .search-wrap .search-form form button[type=submit] .icon-wrap i {
  background-color: var(--G00);
}
body main .search-module .search-wrap .search-form form button[type=submit]:hover {
  background-color: var(--PB01);
}
body main .search-module .search-wrap .search-form form button[type=submit]:active {
  background-color: var(--PB02);
}
body main .search-module .search-wrap .search-form form .search-history {
  position: relative;
  transform: translateY(-4px);
  z-index: -1;
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 0;
  max-height: 0;
  padding: 0 16px 0;
  background-color: var(--G00);
  border-radius: 0 0 16px 16px;
  overflow-y: hidden;
  opacity: 0;
}
body main .search-module .search-wrap .search-form form .search-history p {
  display: block;
  width: 100%;
  margin: 8px 0;
  text-align: left;
  line-height: 2;
  font-weight: 700;
}
body main .search-module .search-wrap .search-form form .search-history .search-history-list {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: 200px;
  max-height: 300px;
  padding: 0;
  overflow-y: auto;
}
body main .search-module .search-wrap .search-form form .search-history .search-history-list li {
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  height: 40px;
  padding: 0;
  text-align: left;
}
body main .search-module .search-wrap .search-form form .search-history .search-history-list li a {
  display: block;
  width: max-content;
  line-height: 40px;
  transition: color 0.25s ease-in-out;
}
body main .search-module .search-wrap .search-form form .search-history .search-history-list li a:hover {
  color: var(--PB01);
}
body main .search-module .search-wrap .search-form form .search-history .search-history-list li .icon-wrap i {
  mask-size: 16px;
}
body main .search-module .search-wrap .search-form form .search-history .search-history-list li .icon-wrap {
  opacity: 0;
  transition: opacity 0.25s ease-in-out;
  cursor: pointer;
}
body main .search-module .search-wrap .search-form form .search-history .search-history-list li .icon-wrap i {
  mask-size: 16px;
}
body main .search-module .search-wrap .search-form form .search-history .search-history-list li .icon-wrap:hover i {
  background-color: var(--CD);
}
body main .search-module .search-wrap .search-form form .search-history .search-history-list li::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1px;
  border-bottom: 1px dashed var(--G300);
}
body main .search-module .search-wrap .search-form form .search-history .search-history-list li:last-child::after {
  display: none;
}
body main .search-module .search-wrap .search-form form .search-history .search-history-list li:hover .icon-wrap {
  opacity: 1;
}
body main .search-module .search-wrap .search-form form .auto-complete {
  position: relative;
  transform: translateY(-4px);
  z-index: -1;
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 0;
  padding: 0 16px 0;
  background-color: var(--G00);
  border-radius: 0 0 16px 16px;
  overflow-y: hidden;
  opacity: 0;
}
body main .search-module .search-wrap .search-form form .auto-complete .auto-complete-list {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: 0;
  max-height: 0;
  padding: 0;
  overflow-y: hidden;
}
body main .search-module .search-wrap .search-form form .auto-complete .auto-complete-list li {
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  height: 40px;
  padding: 0;
  text-align: left;
}
body main .search-module .search-wrap .search-form form .auto-complete .auto-complete-list li a {
  display: block;
  width: max-content;
  line-height: 40px;
}
body main .search-module .search-wrap .search-form form .auto-complete .auto-complete-list li a:hover {
  color: var(--PB01);
}
body main .search-module .search-wrap .search-form form .auto-complete .autocomplete-switch {
  position: absolute;
  right: 16px;
  bottom: 8px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  height: 32px;
}
body main .search-module .search-wrap .search-form form .auto-complete .autocomplete-switch p {
  width: max-content;
}
body main .search-module .search-wrap .search-form form .select-menu:has(input#search_type_all:checked) ~ .search-bar .search-type > label[for=search_type_toggle] p::before {
  content: "all";
}
body main .search-module .search-wrap .search-form form .select-menu:has(input#search_type_title:checked) ~ .search-bar .search-type > label[for=search_type_toggle] p::before {
  content: "title";
}
body main .search-module .search-wrap .search-form form .select-menu:has(input#search_type_author:checked) ~ .search-bar .search-type > label[for=search_type_toggle] p::before {
  content: "author";
}
body main .search-module .search-wrap .search-form form .select-menu:has(input#search_type_publisher:checked) ~ .search-bar .search-type > label[for=search_type_toggle] p::before {
  content: "publisher";
}
body main .search-module .search-wrap .search-form form .select-menu:has(input#search_type_isbn:checked) ~ .search-bar .search-type > label[for=search_type_toggle] p::before {
  content: "isbn";
}
body main .search-module .search-wrap .search-form form .select-menu:has(input#search_description:checked) ~ .search-bar .search-type > label[for=search_type_toggle] p::before {
  content: "description";
}
body main .search-module .search-wrap .search-fuction {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 24px;
}
body main .search-module .search-wrap .search-fuction .btn-back {
  display: none;
}
body main .search-module .search-wrap .search-fuction .search-mode {
  display: flex;
  justify-content: center;
  gap: 16px;
  width: 100%;
}
body main .search-module .search-wrap .search-fuction .search-mode .checkbox-wrap p {
  color: var(--G00);
}
body main .search-module .search-wrap .search-fuction .btn-advanced {
  display: flex;
  align-items: center;
  gap: 16px;
}
body main .search-module .search-wrap .search-fuction .btn-advanced .divider {
  display: block;
  width: 100%;
  height: 1px;
  background-color: var(--G00);
}
body:has(main.index) main .search-module {
  height: 720px;
  min-height: unset;
}
body:has(main.index) {
  /*search bar show type list*/
  /*search bar show history list*/
  /*search bar show auto complete*/
}
body:has(main.index):has(.search-module .search-type input[type=checkbox]:checked) {
  overflow: hidden;
}
body:has(main.index):has(.search-module .search-type input[type=checkbox]:checked) .search-form form .select-menu {
  transform: translateY(0);
  z-index: 5;
  opacity: 1;
}
body:has(main.index):has(.search-module .search-type input[type=checkbox]:checked) .search-form form .select-menu ul {
  z-index: 2;
}
body:has(main.index):has(.search-module .search-type input[type=checkbox]:checked) .search-form form .select-menu > label {
  z-index: 1;
}
body:has(main.index):has(.search-module input[type=search].focus) .search-wrap .search-form .search-bar {
  border-radius: 16px 16px 0 0;
}
body:has(main.index):has(.search-module input[type=search].focus) .search-wrap .search-form .search-history {
  transform: translateY(0);
  z-index: 1;
  height: 100%;
  max-height: 100%;
  padding: 0 16px 24px;
  opacity: 1;
}
body:has(main.index):has(.search-module input[type=search].is-typing) .search-wrap .search-form .search-bar, body:has(main.index):has(.search-module input[type=search].has-value) .search-wrap .search-form .search-bar {
  border-radius: 16px 16px 0 0;
}
body:has(main.index):has(.search-module input[type=search].is-typing) .search-wrap .search-form .search-bar button[type=reset], body:has(main.index):has(.search-module input[type=search].has-value) .search-wrap .search-form .search-bar button[type=reset] {
  display: flex;
}
body:has(main.index):has(.search-module input[type=search].is-typing) .search-wrap .search-form .search-history, body:has(main.index):has(.search-module input[type=search].has-value) .search-wrap .search-form .search-history {
  display: none !important;
}
body:has(main.index):has(.search-module input[type=search].is-typing) .search-wrap .search-form .auto-complete, body:has(main.index):has(.search-module input[type=search].has-value) .search-wrap .search-form .auto-complete {
  transform: translateY(0);
  z-index: 1;
  max-height: 100%;
  padding: 0 16px 40px;
  opacity: 1;
  overflow-y: auto;
}
body:has(main.index):has(.search-module input[type=search].is-typing) .search-wrap .search-form .auto-complete:has(.autocomplete-switch input[type=checkbox]:checked), body:has(main.index):has(.search-module input[type=search].has-value) .search-wrap .search-form .auto-complete:has(.autocomplete-switch input[type=checkbox]:checked) {
  height: 100%;
}
body:has(main.index):has(.search-module input[type=search].is-typing) .search-wrap .search-form .auto-complete:has(.autocomplete-switch input[type=checkbox]:checked) .auto-complete-list, body:has(main.index):has(.search-module input[type=search].has-value) .search-wrap .search-form .auto-complete:has(.autocomplete-switch input[type=checkbox]:checked) .auto-complete-list {
  min-height: 200px;
  max-height: 300px;
}
body:has(main.index):has(.search-module input[type=search].is-typing) .search-wrap .search-form .search-bar:has(input[type=search]:not(.focus)) ~ .auto-complete .auto-complete-list, body:has(main.index):has(.search-module input[type=search].has-value) .search-wrap .search-form .search-bar:has(input[type=search]:not(.focus)) ~ .auto-complete .auto-complete-list {
  min-height: 0px;
  max-height: 0px;
}
body:not(:has(main.index)) {
  /*search bar show */
  /*search bar show type list*/
  /*search bar show autocomplete & history list*/
}
body:not(:has(main.index)) main .search-module {
  display: none;
  align-items: start;
  min-height: unset;
  height: 100dvh;
  padding: 48px 0;
  background-image: none;
  background-color: var(--G100);
}
body:not(:has(main.index)) main .search-module .search-wrap {
  justify-content: start;
  gap: 16px;
  height: 100%;
  padding: 0;
  border-radius: 0;
  background-color: transparent;
}
body:not(:has(main.index)) main .search-module .search-wrap h2 {
  display: none;
}
body:not(:has(main.index)) main .search-module .search-wrap .search-form {
  height: 100%;
  overflow-y: auto;
}
body:not(:has(main.index)) main .search-module .search-wrap .search-form form .search-bar {
  border-radius: 0;
}
body:not(:has(main.index)) main .search-module .search-wrap .search-form form .auto-complete {
  transform: translateY(0);
  z-index: 1;
  flex-direction: column-reverse;
  height: 100%;
  max-height: 100%;
  padding: 0 16px 0;
  border-radius: 0;
  opacity: 1;
}
body:not(:has(main.index)) main .search-module .search-wrap .search-form form .auto-complete .autocomplete-switch {
  position: relative;
  right: 0;
  bottom: 0;
  padding: 8px 0;
}
body:not(:has(main.index)) main .search-module .search-wrap .search-form form .search-history {
  transform: translateY(0);
  z-index: 1;
  height: 100%;
  max-height: 100%;
  padding: 0 16px 24px;
  opacity: 1;
}
body:not(:has(main.index)) main .search-module .search-wrap .search-fuction {
  flex-direction: column;
  align-items: center;
  gap: 8px;
}
body:not(:has(main.index)) main .search-module .search-wrap .search-fuction .search-mode {
  align-items: center;
}
body:not(:has(main.index)) main .search-module .search-wrap .search-fuction .search-mode .checkbox-wrap p {
  color: var(--G900);
}
body:not(:has(main.index)) main .search-module .search-wrap .search-fuction .btn-advanced .divider {
  display: none;
}
body:not(:has(main.index)) main .search-module .search-wrap .search-fuction .btn-advanced .btn-wrap.type2 {
  border-color: transparent;
  background-color: transparent;
  height: auto;
  line-height: 1.5;
}
body:not(:has(main.index)) main .search-module .search-wrap .search-fuction .btn-advanced .btn-wrap.type2 a {
  color: var(--SK01);
}
@media screen and (max-width: 768px) {
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .search-bar button[type=reset] {
    right: 8px;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form button[type=submit] {
    position: fixed;
    top: unset;
    right: unset;
    bottom: 48px;
    left: 50%;
    transform: translateX(-50%);
    width: 90%;
    max-width: 112px;
    transition: none;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-fuction {
    margin-bottom: 56px;
  }
}
@media screen and (min-width: 769px) {
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form {
    max-width: unset;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .search-bar {
    padding: 0 32px;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .search-bar button[type=reset] {
    right: 72px;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form button[type=submit] {
    right: 32px;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .auto-complete {
    margin-top: -1px;
    padding: 0 32px 0;
    border: 1px solid var(--G300);
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .search-history {
    margin-top: -1px;
    padding: 0 32px 24px;
    border: 1px solid var(--G300);
  }
}
@media screen and (min-width: 1024px) {
  body:not(:has(main.index)) main .search-module {
    position: fixed;
    top: 48px;
    z-index: 2;
    height: max-content;
    padding: 16px 0 16px;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form {
    overflow: visible;
    max-width: 560px;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .select-menu {
    display: none;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .select-menu > label {
    display: none;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .search-bar {
    padding: 0 8px;
    border-radius: 32px;
    transition: ease 0.35s;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .search-bar button[type=reset] {
    right: 40px;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .auto-complete {
    position: absolute;
    top: 39px;
    display: none;
    flex-direction: column;
    border-radius: 0 0 16px 16px;
    border: 1px solid var(--G300);
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .auto-complete .autocomplete-switch {
    height: 40px;
    margin-right: -16px;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form .search-history {
    position: absolute;
    top: 39px;
    display: none;
    border: 1px solid var(--G300);
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-form form button[type=submit] {
    right: 6px;
  }
  body:not(:has(main.index)) main .search-module .search-wrap .search-fuction {
    flex-direction: row;
    gap: 0;
  }
}
body:not(:has(main.index)):has(#search_bar_toggle:checked) {
  overflow: hidden;
}
body:not(:has(main.index)):has(#search_bar_toggle:checked) header .header-wrap .toolbar ul li.search label {
  background-color: var(--PB01);
}
body:not(:has(main.index)):has(#search_bar_toggle:checked) main .search-module {
  display: flex;
}
@media screen and (min-width: 1024px) {
  body:not(:has(main.index)):has(#search_bar_toggle:checked) {
    overflow-y: auto;
  }
}
body:not(:has(main.index)):has(main:not(.index) .search-module .search-type input[type=checkbox]:checked) {
  overflow: hidden;
}
body:not(:has(main.index)):has(main:not(.index) .search-module .search-type input[type=checkbox]:checked) main .search-module .search-wrap .search-form .select-menu {
  display: flex;
}
body:not(:has(main.index)):has(main:not(.index) .search-module .search-type input[type=checkbox]:checked) main .search-module .search-wrap .search-form .select-menu > label {
  display: block;
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].focus) {
  overflow: hidden !important;
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].focus) main .search-module .search-wrap .search-form .search-bar {
  border-radius: 16px 16px 0 0;
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].focus) main .search-module .search-wrap .search-form .auto-complete .auto-complete-list {
  min-height: unset !important;
}
@media screen and (min-width: 769px) {
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].focus) main .search-module .search-wrap .search-form .search-history {
    padding: 0 32px 24px;
  }
}
@media screen and (min-width: 1024px) {
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].focus) {
    overflow-y: auto !important;
    overflow-x: hidden !important;
  }
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].focus) main .search-module .search-wrap .search-form .search-history {
    display: flex !important;
    height: max-content;
    max-height: unset;
  }
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].is-typing) {
  overflow: hidden !important;
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].is-typing) main .search-wrap .search-form .search-bar button[type=reset] {
  display: flex;
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].is-typing) main .search-wrap .search-form .auto-complete:has(.autocomplete-switch input[type=checkbox]:checked) {
  padding: 0 16px 8px;
  border-bottom: 1px solid var(--G300);
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].is-typing) main .search-wrap .search-form .auto-complete:not(:has(.autocomplete-switch input[type=checkbox]:checked)) {
  padding: 0 16px 0;
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].is-typing) main .search-wrap .search-form .search-history {
  display: flex !important;
}
@media screen and (min-width: 769px) {
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].is-typing) main .search-module .search-wrap .search-form form .auto-complete:has(.autocomplete-switch input[type=checkbox]:checked) {
    padding: 0 32px 8px;
  }
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].is-typing) main .search-module .search-wrap .search-form form .auto-complete:not(:has(.autocomplete-switch input[type=checkbox]:checked)) {
    padding: 0 32px 0;
  }
}
@media screen and (min-width: 1024px) {
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].is-typing) {
    overflow-y: auto !important;
    overflow-x: hidden !important;
  }
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].is-typing) main .search-module .search-wrap .search-form form .auto-complete {
    display: flex !important;
    height: max-content;
    max-height: unset;
  }
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].is-typing) main .search-module .search-wrap .search-form form .search-history {
    display: none !important;
  }
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].has-value) main .search-module .search-wrap .search-form .search-bar button[type=reset] {
  display: flex;
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].has-value) main .search-module .search-wrap .search-form .auto-complete:has(.autocomplete-switch input[type=checkbox]:checked) {
  padding: 0 16px 8px;
  border-bottom: 1px solid var(--G300);
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].has-value) main .search-module .search-wrap .search-form .auto-complete:has(.autocomplete-switch input[type=checkbox]:checked) .auto-complete-list {
  min-height: unset !important;
  max-height: unset !important;
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].has-value) main .search-module .search-wrap .search-form .auto-complete:not(:has(.autocomplete-switch input[type=checkbox]:checked)) {
  padding: 0 16px;
}
body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].has-value) main .search-module .search-wrap .search-form .search-history {
  display: flex !important;
}
@media screen and (min-width: 769px) {
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].has-value) main .search-module .search-wrap .search-form form .auto-complete:has(.autocomplete-switch input[type=checkbox]:checked) {
    padding: 0 32px 8px;
  }
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].has-value) main .search-module .search-wrap .search-form form .auto-complete:not(:has(.autocomplete-switch input[type=checkbox]:checked)) {
    padding: 0 32px 0;
  }
}
@media screen and (min-width: 1024px) {
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].has-value) {
    overflow-y: auto !important;
    overflow-x: hidden !important;
  }
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].has-value) main .search-module .search-wrap .search-form .auto-complete {
    display: flex !important;
    height: max-content !important;
    max-height: unset !important;
  }
  body:not(:has(main.index)):has(main:not(.index) .search-module input[type=search].has-value) main .search-module .search-wrap .search-form .search-history {
    display: none !important;
  }
}

body {
  /*Result Filter Popup*/
}
body main .tf-recommend-view {
  position: absolute;
  transform: translateY(24px);
  display: flex;
  z-index: 10;
  justify-content: center;
  align-items: center;
  width: 100dvw;
  height: max-content;
  padding: 16px;
  background-color: transparent;
  display: none;
}
body main .tf-recommend-view.active {
  display: flex;
}
body main .tf-recommend-view .content {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 100%;
  max-width: 480px;
  height: max-content;
  padding: 0;
  border-radius: 1px;
  background-color: var(--G100);
  box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.3);
  overflow: hidden;
}
body main .tf-recommend-view .content .tips-view {
  position: absolute;
  bottom: 64px;
  z-index: -1;
  width: calc(100% - 32px);
  height: max-content;
  padding: 16px;
  background-color: var(--G700);
  border-radius: 8px;
  opacity: 0;
  transition: 0.3s ease-in-out;
}
body main .tf-recommend-view .content .tips-view p {
  height: 100%;
  max-height: 0;
  color: var(--G00);
  opacity: 0;
  transition: height 0.3s ease-in-out;
}
body main .tf-recommend-view .content .view-title {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 4px;
  width: 100%;
  height: 40px;
  padding: 0 16px;
}
body main .tf-recommend-view .content .view-title h5 {
  display: flex;
  align-items: center;
  width: 100%;
  border-right: 1px solid var(--G500);
  color: var(--SK01);
}
body main .tf-recommend-view .content .view-title h5 .icon-wrap i {
  background-color: var(--SK01);
}
body main .tf-recommend-view .content .view-title h5 .icon-wrap:hover i {
  background-color: var(--SK01);
}
body main .tf-recommend-view .content .view-title > .icon-wrap {
  width: 32px;
  height: 32px;
  cursor: pointer;
}
body main .tf-recommend-view .content .data-opction {
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
  padding: 16px 0;
}
body main .tf-recommend-view .content .data-opction h6 {
  position: relative;
  display: flex;
  justify-self: start;
  align-items: center;
  width: 100%;
  margin: 0 16px;
  padding-left: 32px;
  color: var(--G900);
}
body main .tf-recommend-view .content .data-opction h6::before {
  content: "";
  position: absolute;
  left: 0;
  display: block;
  width: 32px;
  height: 32px;
  mask-position: center;
  mask-size: 24px;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  -webkit-mask-size: 24px;
  -webkit-mask-repeat: no-repeat;
  background-color: var(--G900);
}
body main .tf-recommend-view .content .data-opction ul {
  height: max-content;
  max-height: 112px;
  margin: 0 16px;
  padding: 0 16px;
  background-color: var(--G00);
  border-radius: 4px;
  overflow-y: auto;
  overscroll-behavior: contain;
}
body main .tf-recommend-view .content .data-opction ul li a {
  display: block;
  width: max-content;
  line-height: 32px;
}
body main .tf-recommend-view .content .data-opction.TF_university h6::before {
  mask-image: url(../assets/icons/icon_tf_university.png);
  -webkit-mask-image: url(../assets/icons/icon_tf_university.png);
}
body main .tf-recommend-view .content .data-opction.TF_award h6::before {
  mask-image: url(../assets/icons/icon_tf_award.png);
  -webkit-mask-image: url(../assets/icons/icon_tf_award.png);
}
body main .tf-recommend-view .content .data-opction.TF_publications h6::before {
  mask-image: url(../assets/icons/icon_tf_publications.png);
  -webkit-mask-image: url(../assets/icons/icon_tf_publications.png);
}
body main .tf-recommend-view .content .data-opction.TF_citation {
  flex-direction: row;
  justify-content: start;
  gap: 4px;
  padding: 16px;
}
body main .tf-recommend-view .content .data-opction.TF_citation * {
  color: var(--SK01);
}
body main .tf-recommend-view .content .data-opction.TF_citation ul {
  border: 1px solid var(--SK01);
}
body main .tf-recommend-view .content .data-opction.TF_citation h6 {
  width: max-content;
  margin: 0;
}
body main .tf-recommend-view .content .data-opction.TF_citation h6::before {
  mask-image: url(../assets/icons/icon_tf_cnci.png);
  -webkit-mask-image: url(../assets/icons/icon_tf_cnci.png);
  mask-size: 24px;
  -webkit-mask-size: 24px;
  mask-position: center;
  -webkit-mask-position: center;
  mask-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
  background-color: var(--SK01);
}
body main .tf-recommend-view .content .data-opction.TF_citation ul {
  display: flex;
  flex-direction: row;
  gap: 8px;
  width: max-content;
  margin: 0;
  padding: 0 8px 0 0;
}
body main .tf-recommend-view .content .data-opction.TF_citation ul li a,
body main .tf-recommend-view .content .data-opction.TF_citation ul li span {
  display: inline-block;
  vertical-align: middle;
  line-height: 32px;
}
body main .tf-recommend-view .content .data-opction.TF_citation .icon-wrap input {
  position: absolute;
  inset: 0;
  z-index: 1;
  opacity: 0;
  cursor: pointer;
}
body main .tf-recommend-view .content .data-opction.TF_citation .icon-wrap i {
  background-color: var(--G700);
}
body main .tf-recommend-view .content .data-opction.TF_citation .icon-wrap:hover i {
  background-color: var(--G700);
}
body main .tf-recommend-view .content:has(.data-opction.TF_citation .tips:hover) .tips-view {
  z-index: 1;
  opacity: 1;
}
body main .tf-recommend-view .content:has(.data-opction.TF_citation .tips:hover) .tips-view p {
  max-height: 100%;
  opacity: 1;
}
@media screen and (min-width: 769px) {
  body main .tf-recommend-view {
    transform: translate(168px, -388px);
    width: max-content;
    padding: 0;
  }
  body main .tf-recommend-view.left {
    transform: translate(-344px, -388px);
  }
}
.bookcase-module {
  width: 100%;
  max-width: 100dvw;
  margin: 24px 0;
  padding: 24px 0 40px;
  overflow-x: hidden;
  container: bookcase-module/inline-size;
}
.bookcase-module .area-title {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: start;
  justify-content: center;
  width: 100%;
  height: 64px;
  padding: 0 16px;
  margin: 16px 0 0;
  text-align: center;
}
.bookcase-module .area-title h2 {
  text-align: left;
}
.bookcase-module .area-title span.notes {
  position: relative;
  z-index: 1;
  display: block;
  width: max-content;
  margin: 0 0 0 -16px;
  padding: 0 16px;
  line-height: 24px;
  color: var(--SK01);
  background-color: var(--G00);
}
.bookcase-module .area-title::after {
  content: "";
  position: absolute;
  bottom: 8px;
  left: 0;
  z-index: 0;
  display: block;
  width: 100%;
  height: 1px;
  background-color: var(--G300);
}
.bookcase-module .bookcase-list {
  position: relative;
  width: 100%;
  max-width: 100dvw;
  scrollbar-width: thin;
}
.bookcase-module .bookcase-list .swiper {
  width: calc(100% - 16px);
  height: 112px;
  border-radius: 8px;
}
.bookcase-module .bookcase-list .swiper .swiper-wrapper .swiper-slide .banner-img img {
  width: 100%;
  height: auto;
  object-fit: cover;
}
.bookcase-module .bookcase-list .bookcase-tab {
  padding: 16px 0;
}
.bookcase-module .bookcase-list .bookcase-tab ul {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 0 8px;
}
.bookcase-module .bookcase-list .bookcase-tab ul li {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 8px;
  cursor: pointer;
}
.bookcase-module .bookcase-list .bookcase-tab ul li label {
  position: relative;
}
.bookcase-module .bookcase-list .bookcase-tab ul li label input {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  opacity: 0;
  cursor: pointer;
}
.bookcase-module .bookcase-list .bookcase-tab ul li label p {
  padding-left: 40px;
}
.bookcase-module .bookcase-list .bookcase-tab ul li label p::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  transform: translateY(-50%);
  z-index: 0;
  display: block;
  width: 32px;
  height: 32px;
  mask-size: 24px;
  mask-position: center;
  mask-repeat: no-repeat;
  -webkit-mask-size: 24px;
  -webkit-mask-position: center;
  -webkit-mask-repeat: no-repeat;
  background-color: var(--G500);
}
.bookcase-module .bookcase-list .bookcase-tab ul li:hover label p, .bookcase-module .bookcase-list .bookcase-tab ul li.active label p {
  color: var(--PB01);
}
.bookcase-module .bookcase-list .bookcase-tab ul li:hover label p::before, .bookcase-module .bookcase-list .bookcase-tab ul li.active label p::before {
  background-color: var(--PB01);
}
.bookcase-module .bookcase-list .bookcase-tab ul li:focus {
  outline: 2px solid var(--PB01) !important;
  outline-style: auto !important;
}
.bookcase-module .bookcase-list .bookcase-tab ul li.TF-university label p::before {
  mask-image: url(../assets/icons/icon_tf_university.png);
}
.bookcase-module .bookcase-list .bookcase-tab ul li.TF-award label p::before {
  mask-image: url(../assets/icons/icon_tf_award.png);
}
.bookcase-module .bookcase-list .bookcase-tab ul li.TF-publications label p::before {
  mask-image: url(../assets/icons/icon_tf_publications.png);
}
.bookcase-module .bookcase-list .bookcase-tab ul li.TF-cnci label p::before {
  mask-image: url(../assets/icons/icon_tf_cnci.png);
}
.bookcase-module .bookcase-list > ul {
  display: flex;
  flex-wrap: nowrap;
  gap: 24px;
  min-width: 100dvw;
  max-width: 100dvw;
  height: 100%;
  padding: 16px 16px 32px;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  -ms-overflow-style: none;
}
.bookcase-module .bookcase-list > ul::-webkit-scrollbar {
  display: none;
}
.bookcase-module .bookcase-list > ul li.books-item {
  position: relative;
  z-index: 1;
  display: flex;
}
.bookcase-module .bookcase-list .slider-btn-wrap {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100dvw;
  pointer-events: visible;
  transition: ease 0.35s;
  display: none;
}
.bookcase-module .bookcase-list .slider-btn-wrap button {
  display: flex;
  align-items: center;
  width: 40px;
  height: 40px;
  border-radius: 2px;
  background-color: rgba(255, 255, 255, 0.8);
  cursor: pointer;
}
.bookcase-module .bookcase-list .slider-btn-wrap button .icon-wrap i {
  background-color: var(--G900);
  mask-size: 32px;
  -webkit-mask-size: 32px;
}
.bookcase-module .bookcase-list .slider-btn-wrap button.btn-disabled {
  pointer-events: none;
  opacity: 0.15;
  filter: grayscale(0);
  cursor: not-allowed;
}
.bookcase-module .bookcase-list .tool-btn-wrap {
  justify-content: center;
  display: none;
}
.bookcase-module .bookcase-list .tool-btn-wrap .btn-change {
  position: absolute;
  top: 0;
  right: 16px;
  transform: translateY(-24px);
  width: max-content;
  height: 28px;
  padding: 0 8px 0 4px;
  border-radius: 4px;
  display: none;
}
.bookcase-module .bookcase-list .tool-btn-wrap .btn-change.btn-wrap.type2 {
  border-color: var(--SK01);
  outline: 6px solid var(--G00);
}
.bookcase-module .bookcase-list .tool-btn-wrap .btn-change.btn-wrap.type2 .icon-wrap i {
  background-color: var(--SK01);
}
.bookcase-module .bookcase-list .tool-btn-wrap .btn-change.btn-wrap.type2 b {
  color: var(--SK01);
}
.bookcase-module .bookcase-list .tool-btn-wrap .btn-change.btn-wrap.type2:hover {
  background-color: var(--SK02);
}
.bookcase-module .bookcase-list .tool-btn-wrap .btn-more {
  display: none;
}
.bookcase-module.change-on .bookcase-list .tool-btn-wrap {
  display: flex;
}
.bookcase-module.change-on .bookcase-list .tool-btn-wrap .btn-change {
  display: flex;
}
.bookcase-module.expand-on .bookcase-list .slider-btn-wrap {
  top: calc(50% - 38px);
}
.bookcase-module.expand-on .bookcase-list .tool-btn-wrap {
  display: flex;
}
.bookcase-module.expand-on .bookcase-list .tool-btn-wrap .btn-more {
  display: flex;
}
.bookcase-module.tool-all-on .bookcase-list .slider-btn-wrap {
  top: calc(50% - 38px);
}
.bookcase-module.tool-all-on .bookcase-list .tool-btn-wrap {
  display: flex;
}
.bookcase-module.tool-all-on .bookcase-list .tool-btn-wrap .btn-change {
  display: flex;
}
.bookcase-module.tool-all-on .bookcase-list .tool-btn-wrap .btn-more {
  display: flex;
}
@container bookcase-module (width > 480px) {
  .bookcase-module .bookcase-list ul li.books-item .books-module {
    --bookcover-size: 144px;
  }
  .bookcase-module .bookcase-list ul li.books-item .books-module .cover span.permission-icon {
    gap: 8px;
    width: 100%;
    padding: 0 32px 0 8px;
  }
  .bookcase-module .bookcase-list ul li.books-item .books-module .cover span.permission-icon strong {
    display: flex;
    width: auto;
  }
}
@container bookcase-module (width > 769px) {
  .bookcase-module .bookcase-list ul li.books-item .books-module {
    --bookcover-size: 160px;
  }
}

@media screen and (min-width: 769px) {
  .bookcase-module .swiper {
    width: calc(100% - 24px);
    max-width: 980px;
    height: 220px;
  }
  .bookcase-module .area-title {
    max-width: 1200px;
    margin: 16px auto 0;
  }
  .bookcase-module .bookcase-list {
    position: relative;
    max-width: 1200px;
    margin: 0 auto;
  }
  .bookcase-module .bookcase-list > ul:has(.tf-icon.active)::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
  }
  .bookcase-module .bookcase-list > ul:has(.tf-icon.active) li.books-item {
    z-index: 0;
  }
  .bookcase-module .bookcase-list > ul:has(.tf-icon.active) li.books-item:has(.tf-icon.active) {
    z-index: 2;
  }
  .bookcase-module .bookcase-list .slider-btn-wrap {
    top: calc(50% - 16px);
    display: flex;
    width: 100%;
    height: 0;
  }
}
@media screen and (min-width: 1024px) {
  .bookcase-module .swiper {
    width: calc(100% - 32px);
    max-width: 1200px;
    height: 360px;
  }
  .bookcase-module .area-title {
    max-width: 1200px;
    margin: 16px auto 0;
  }
  .bookcase-module .bookcase-list {
    max-width: 1200px;
    margin: 0 auto;
  }
  .bookcase-module .bookcase-list > ul {
    min-width: unset;
  }
}
/*---- bookcase module + recommend module 書牆書櫃(推薦)模組----*/
.bookcase-module.recommend {
  margin: 0;
  padding: 0;
}
.bookcase-module.recommend .swiper,
.bookcase-module.recommend .area-title {
  display: none;
}
.bookcase-module.recommend .bookcase-list .tool-btn-wrap {
  display: none;
}
.bookcase-module.recommend .bookcase-list .bookcase-tab ul {
  justify-content: center;
  gap: 32px;
}
.bookcase-module.recommend .bookcase-list .bookcase-tab ul li label p {
  position: relative;
  padding: 0;
}
.bookcase-module.recommend .bookcase-list .bookcase-tab ul li label p::before {
  content: "";
  display: none;
}
.bookcase-module.recommend .bookcase-list .bookcase-tab ul li label p::after {
  content: "";
  position: absolute;
  left: 50%;
  transform: translate(-50%, 4px);
  bottom: 0;
  width: 100%;
  height: 4px;
  background-color: var(--G300);
}
.bookcase-module.recommend .bookcase-list .bookcase-tab ul li.active label p {
  color: var(--PB01);
}
.bookcase-module.recommend .bookcase-list .bookcase-tab ul li.active label p::after {
  background-color: var(--PB01);
}

.banner-module {
  position: relative;
  width: 100%;
  container: banner-module/inline-size;
}
.banner-module .bookcase {
  /*.swiper*/
  width: 100dvw;
  max-width: 480px;
  margin: 0 auto;
}
.banner-module .bookcase .swiper-wrapper {
  max-height: 640px;
  background-color: var(--SK02);
}
.banner-module .bookcase .swiper-wrapper .swiper-slide {
  position: relative;
  display: flex;
  flex-direction: column-reverse;
  justify-content: start;
  align-items: center;
  aspect-ratio: 1/1.75;
  padding: 16px;
  background-color: var(--SK02);
}
.banner-module .bookcase .swiper-wrapper .swiper-slide .banner-text {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.banner-module .bookcase .swiper-wrapper .swiper-slide .banner-text .slogan {
  color: var(--G900);
  line-height: 1.25;
}
.banner-module .bookcase .swiper-wrapper .swiper-slide .banner-text .description {
  color: var(--G900);
}
.banner-module .bookcase .swiper-wrapper .swiper-slide .mask {
  display: none;
}
.banner-module .bookcase .swiper-wrapper .swiper-slide.simple-type .banner-img-wrap img {
  max-height: 240px;
}
.banner-module .bookcase .swiper-wrapper .swiper-slide.full-type {
  padding: 0;
}
.banner-module .bookcase .swiper-wrapper .swiper-slide.full-type .banner-text {
  position: absolute;
  left: 50%;
  bottom: 80px;
  transform: translateX(-50%);
  width: calc(100% - 64px);
}
.banner-module .bookcase .swiper-wrapper .swiper-slide.full-type .banner-img-wrap img {
  width: 100%;
  height: fit-content;
  object-fit: contain;
  aspect-ratio: 1/1.75;
}
.banner-module .bookcase .swiper-wrapper .swiper-slide.full-type .mask {
  position: absolute;
  bottom: 0;
  display: block;
  width: 100%;
  height: 64px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.4) 25%, rgba(255, 255, 255, 0.7) 50%, rgb(255, 255, 255) 75%);
}
.banner-module .bookcase .swiper-wrapper .swiper-slide.text-hide .banner-text {
  opacity: 0;
}
.banner-module .bookcase .swiper-pagination {
  position: absolute;
  bottom: 20px;
  display: flex;
  justify-content: center;
}
.banner-module .bookcase .swiper-pagination .swiper-pagination-bullet {
  width: 40px;
  height: 6px;
  border-radius: 2px;
  background-color: var(--G500);
  opacity: 1;
}
.banner-module .bookcase .swiper-pagination .swiper-pagination-bullet.swiper-pagination-bullet-active {
  background-color: var(--G900);
}
.banner-module .bookcase .swiper-button-prev,
.banner-module .bookcase .swiper-button-next {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  background-color: var(--G00);
  opacity: 0;
  transition: ease 0.35s;
}
.banner-module .bookcase .swiper-button-prev::after,
.banner-module .bookcase .swiper-button-next::after {
  content: "";
}
.banner-module .bookcase .swiper-button-prev:hover,
.banner-module .bookcase .swiper-button-next:hover {
  background-color: var(--G900);
}
.banner-module .bookcase .swiper-button-prev:hover .icon-wrap i,
.banner-module .bookcase .swiper-button-next:hover .icon-wrap i {
  background-color: var(--G00);
}
.banner-module .bookcase .swiper-button-prev {
  left: 0;
}
.banner-module .bookcase .swiper-button-next {
  right: 0;
}
.banner-module .bookcase:hover .swiper-button-prev,
.banner-module .bookcase:hover .swiper-button-next {
  opacity: 1;
}
@container banner-module (min-width: 560px) {
  .banner-module .bookcase {
    /*.swiper*/
    max-width: 1200px;
  }
  .banner-module .bookcase .swiper-wrapper {
    align-items: center;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide {
    aspect-ratio: 16/9;
    max-height: 440px;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide .banner-text {
    max-width: 440px;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.simple-type {
    flex-direction: row;
    justify-content: center;
    align-items: center;
    gap: 16px;
    margin: 0;
    padding: 0 48px;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.simple-type .banner-text {
    max-width: 65%;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.simple-type .banner-img-wrap {
    margin: 0;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.simple-type .banner-img-wrap img {
    max-width: 160px;
    max-height: unset;
    aspect-ratio: unset;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.full-type .banner-text {
    top: 50%;
    bottom: inherit;
    left: 5%;
    transform: translateY(-50%);
    width: 70%;
    max-width: 440px;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.full-type .banner-img-wrap img {
    aspect-ratio: unset;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.right-type.simple-type {
    flex-direction: row-reverse;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.right-type.full-type .banner-text {
    left: inherit;
    right: 5%;
  }
}
@container banner-module (min-width: 980px) {
  .banner-module .bookcase {
    /*.swiper*/
  }
  .banner-module .bookcase .swiper-wrapper {
    align-items: center;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide {
    aspect-ratio: 14/5;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.simple-type .banner-img-wrap img {
    max-width: 280px;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.full-type .banner-text {
    top: 50%;
    bottom: inherit;
    left: 15%;
    transform: translateY(-50%);
    width: 70%;
    max-width: 560px;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.full-type .banner-img-wrap img {
    aspect-ratio: unset;
  }
  .banner-module .bookcase .swiper-wrapper .swiper-slide.right-type.full-type .banner-text {
    left: inherit;
    right: 15%;
  }
}

/* Pomption Banner 輪播 */
.banner-module.promption {
  margin: 24px 0 40px;
}

/* Wishlist settings */
.wishlist-switch {
  position: fixed;
  z-index: 9;
  right: 16px;
  bottom: 56px;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 40px;
  height: 40px;
  cursor: pointer;
}
.wishlist-switch label {
  position: relative;
  display: flex;
  width: 100%;
  height: 100%;
  border: 1px solid var(--SK01);
  background-color: var(--SK02);
  border-radius: 8px;
  cursor: pointer;
}
.wishlist-switch label .icon-wrap i {
  background-color: var(--SK01);
}
.wishlist-switch label:hover .icon-wrap i {
  background-color: var(--SK01);
}

.wishlist-module {
  position: fixed;
  inset: 0;
  z-index: 10;
  display: none;
  justify-content: center;
  align-items: center;
  padding: 48px 0 0;
  background-color: rgba(0, 0, 0, 0.35);
  container: wishlist/inline-size;
}
.wishlist-module div.wishlist {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  height: 100%;
  padding: 0 0 8px;
  border: 1px solid var(--G300);
  background-color: var(--G00);
  overflow-y: auto;
}
.wishlist-module div.wishlist .area-title {
  justify-content: space-between;
  align-items: center;
  width: 100%;
  height: 40px;
  padding: 0 16px;
  border-bottom: 1px solid var(--G500);
}
.wishlist-module div.wishlist .area-title .icon-wrap.wishlist {
  cursor: auto;
}
.wishlist-module div.wishlist .area-title .icon-wrap.wishlist i {
  background-color: var(--SK01);
}
.wishlist-module div.wishlist .area-title .icon-wrap.wishlist :hover i {
  background-color: var(--SK01);
}
.wishlist-module div.wishlist .area-title h2 {
  margin: 0 auto 0 0;
  color: var(--SK01);
}
.wishlist-module div.wishlist .area-title > label {
  display: flex;
  width: max-content;
  cursor: pointer;
}
.wishlist-module div.wishlist .area-title > label:hover .icon-wrap i {
  background-color: var(--PB01) !important;
}
.wishlist-module div.wishlist .area-title:hover > label .icon-wrap i {
  background-color: var(--G700);
}
.wishlist-module div.wishlist .list-wrap {
  flex: 1;
  width: 100%;
  height: 100%;
  max-height: calc(100% - 108px);
  margin: 8px 0 0;
  overflow-y: auto;
}
.wishlist-module div.wishlist .list-wrap ul {
  display: flex;
  flex-direction: column;
  height: max-content;
  overscroll-behavior: contain;
}
.wishlist-module div.wishlist .list-wrap ul li {
  position: relative;
  display: flex;
  align-items: start;
  width: 100%;
  min-height: 96px;
  padding: 8px 16px;
  border-bottom: 1px solid var(--G300);
}
.wishlist-module div.wishlist .list-wrap ul li > label p {
  height: 20px;
  line-height: 20px;
}
.wishlist-module div.wishlist .list-wrap ul li a {
  display: flex;
  gap: 8px;
  flex: 1;
  height: 100%;
}
.wishlist-module div.wishlist .list-wrap ul li a .cover {
  display: block;
  width: 64px;
  aspect-ratio: 1/1.4;
  background-color: var(--G100);
  border: 1px solid var(--G500);
}
.wishlist-module div.wishlist .list-wrap ul li a .cover img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  font-size: var(--P4);
  text-align: center;
}
.wishlist-module div.wishlist .list-wrap ul li a .book-title,
.wishlist-module div.wishlist .list-wrap ul li a .group-title {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: calc(100% - 64px);
}
.wishlist-module div.wishlist .list-wrap ul li a .book-title h3,
.wishlist-module div.wishlist .list-wrap ul li a .book-title h4,
.wishlist-module div.wishlist .list-wrap ul li a .group-title h3,
.wishlist-module div.wishlist .list-wrap ul li a .group-title h4 {
  margin: 0;
  color: var(--G900);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  white-space: normal;
}
.wishlist-module div.wishlist .list-wrap ul li a .book-title h3.ai-translate,
.wishlist-module div.wishlist .list-wrap ul li a .book-title h4.ai-translate,
.wishlist-module div.wishlist .list-wrap ul li a .group-title h3.ai-translate,
.wishlist-module div.wishlist .list-wrap ul li a .group-title h4.ai-translate {
  color: var(--G700);
  -webkit-line-clamp: 1;
}
.wishlist-module div.wishlist .list-wrap ul li a .book-title h3.ai-translate::after,
.wishlist-module div.wishlist .list-wrap ul li a .book-title h4.ai-translate::after,
.wishlist-module div.wishlist .list-wrap ul li a .group-title h3.ai-translate::after,
.wishlist-module div.wishlist .list-wrap ul li a .group-title h4.ai-translate::after {
  content: "(translate by AI)";
}
.wishlist-module div.wishlist .list-wrap ul li a .book-title h4,
.wishlist-module div.wishlist .list-wrap ul li a .group-title h4 {
  margin: 0 0 auto;
}
.wishlist-module div.wishlist .list-wrap ul li button.btn-delete {
  width: max-content;
  height: max-content;
}
.wishlist-module div.wishlist .list-wrap ul li:hover {
  background-color: var(--G100);
}
.wishlist-module div.wishlist .user-info-wrap {
  display: none;
  flex-direction: column;
  align-items: center;
  width: 100%;
  height: 100%;
  max-height: calc(100% - 108px);
  padding: 16px;
  background-color: var(--G200);
  overflow-y: auto;
}
.wishlist-module div.wishlist .user-info-wrap .alert-text p,
.wishlist-module div.wishlist .user-info-wrap .alert-text h3 {
  margin: 0;
  color: var(--G900);
}
.wishlist-module div.wishlist .user-info-wrap .alert-text p span,
.wishlist-module div.wishlist .user-info-wrap .alert-text h3 span {
  color: var(--SK01);
}
.wishlist-module div.wishlist .user-info-wrap .user-info-form {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: start;
  gap: 8px;
  width: 100%;
  margin: 16px 0 auto;
}
.wishlist-module div.wishlist .user-info-wrap .user-info-form .input-wrap {
  display: block;
  width: 100%;
}
.wishlist-module div.wishlist .user-info-wrap .user-info-form .input-wrap > i {
  display: block;
  font-style: normal;
}
.wishlist-module div.wishlist .user-info-wrap .user-info-form .select-wrap {
  width: 100%;
}
.wishlist-module div.wishlist .user-info-wrap .user-info-form .select-wrap p.tab-value {
  width: 100%;
  height: 32px;
  line-height: 32px;
  border-color: var(--G900);
}
.wishlist-module div.wishlist .user-info-wrap .user-info-form .select-wrap p.tab-value:before {
  content: "Select an Identity";
  color: var(--G700);
  line-height: 32px;
  text-transform: capitalize;
}
.wishlist-module div.wishlist .user-info-wrap .user-info-form .select-wrap p.tab-value:has(input:checked) {
  border-color: var(--PB01);
  border-bottom-color: transparent;
}
.wishlist-module div.wishlist .user-info-wrap .user-info-form .select-wrap ul li:has([data-tab=default]) {
  display: none;
}
.wishlist-module div.wishlist .wishlist-count {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  height: 40px;
  padding: 0 32px;
  border-top: 1px solid var(--G500);
}
.wishlist-module div.wishlist .wishlist-count div span.count {
  margin: 0 4px;
  font-weight: bold;
  color: var(--SK01);
}
.wishlist-module div.wishlist .control-wrap {
  position: sticky;
  bottom: 0;
  display: flex;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 8px 16px 0;
  background-color: var(--G00);
}
.wishlist-module div.wishlist .control-wrap button {
  position: relative;
  border: 1px solid transparent;
  transition: border-color 0.3s ease;
  cursor: pointer;
}
.wishlist-module div.wishlist .control-wrap button > label {
  position: absolute;
  inset: 0;
  z-index: 1;
  cursor: pointer;
}
.wishlist-module div.wishlist .control-wrap button.btn-cancel {
  width: 100%;
  max-width: 112px;
}
.wishlist-module div.wishlist .control-wrap button.btn-cancel:has(:hover) {
  border-color: var(--SK01);
}
.wishlist-module div.wishlist .control-wrap button.btn-cancel:has(:hover) span {
  color: var(--SK01);
}
.wishlist-module div.wishlist .control-wrap button.btn-send {
  width: 100%;
  max-width: 360px;
}
.wishlist-module div.wishlist .control-wrap button.btn-explore, .wishlist-module div.wishlist .control-wrap button.btn-back, .wishlist-module div.wishlist .control-wrap button.btn-submit {
  display: none;
}
.wishlist-module > label {
  position: absolute;
  inset: 0;
  opacity: 0;
  z-index: 1;
  cursor: pointer;
}
.wishlist-module.empty div.wishlist .list-wrap {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  background-color: var(--G100);
}
.wishlist-module.empty div.wishlist .list-wrap::before {
  content: "List is empty, just add some books to your wishlist.";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 75;
  height: max-content;
  color: var(--G900);
  font-size: var(--H4);
  text-align: center;
}
.wishlist-module.empty div.wishlist .list-wrap ul {
  display: none;
}
.wishlist-module.empty div.wishlist .wishlist-count {
  display: none;
}
.wishlist-module.empty div.wishlist .control-wrap button.btn-cancel, .wishlist-module.empty div.wishlist .control-wrap button.btn-send {
  display: none;
}
.wishlist-module.empty div.wishlist .control-wrap button.btn-explore {
  width: 100%;
  max-width: 320px;
}
.wishlist-module.sended div.wishlist .list-wrap,
.wishlist-module.sended div.wishlist .wishlist-count {
  display: none;
}
.wishlist-module.sended div.wishlist .user-info-wrap {
  display: flex;
}
.wishlist-module.sended div.wishlist .control-wrap button.btn-cancel, .wishlist-module.sended div.wishlist .control-wrap button.btn-send, .wishlist-module.sended div.wishlist .control-wrap button.btn-explore {
  display: none;
}
.wishlist-module.sended div.wishlist .control-wrap button.btn-back {
  display: flex;
  width: 100%;
  max-width: 112px;
}
.wishlist-module.sended div.wishlist .control-wrap button.btn-back:has(:hover) {
  border-color: var(--SK01);
}
.wishlist-module.sended div.wishlist .control-wrap button.btn-back:has(:hover) span {
  color: var(--SK01);
}
.wishlist-module.sended div.wishlist .control-wrap button.btn-submit {
  display: flex;
  width: 100%;
  max-width: 320px;
}

@media screen and (min-width: 1024px) {
  .wishlist-module {
    inset: unset;
    right: 0;
    top: 0;
    width: 400px;
    height: 100%;
    padding: 0 0 0 2px;
    background-color: rgba(255, 255, 255, 0.8);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  }
  .wishlist-module div.wishlist {
    padding: 0 0 16px;
  }
  .wishlist-module div.wishlist .area-title {
    height: 48px;
  }
  .wishlist-module div.wishlist .list-wrap ul li {
    padding: 8px 16px 8px 24px;
  }
}
body main .subject-module {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 8px 16px;
  background-color: var(--SK02);
  container: subject-module/inline-size;
}
body main .subject-module .banner-module {
  min-height: 96px;
}
body main .subject-module .banner-module .banner {
  position: relative;
  height: 96px;
  border-radius: 0;
  background-color: var(--G500);
  overflow: hidden;
}
body main .subject-module .banner-module .banner .text-wrap {
  position: absolute;
  top: 50%;
  right: 0;
  transform: translateX(24px) translateY(-50%);
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: start;
  width: 100%;
  height: 100%;
  gap: 8px;
}
body main .subject-module .banner-module .banner .text-wrap h2,
body main .subject-module .banner-module .banner .text-wrap P {
  display: block;
  width: 100%;
  line-height: 1.25;
  text-align: center;
  word-break: break-all;
  color: var(--G00);
}
body main .subject-module .banner-module .banner .text-wrap p {
  position: relative;
  line-height: 24px;
}
body main .subject-module .banner-module .banner .text-wrap p::after {
  content: "Go to learn more";
  width: max-content;
  padding: 0 16px;
  line-height: 24px;
  color: var(--G00);
  background-color: var(--G900);
  border-radius: 16px;
}
body main .subject-module .banner-module .banner img {
  width: 100%;
  object-fit: cover;
}
body main .subject-module .subject-list {
  width: 100%;
}
body main .subject-module .subject-list ul {
  display: grid;
  grid-template: repeat(1, 1fr)/repeat(2, 1fr);
  gap: 16px;
  justify-items: center; /* align-items: center; */
  width: 100%;
  padding: 24px 0;
}
body main .subject-module .subject-list ul li {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: end;
  width: 100%;
  max-width: 240px;
  background-color: var(--G00);
  border: 1px solid var(--PB01);
  border-radius: 12px;
  overflow: hidden;
}
body main .subject-module .subject-list ul li a {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 16px;
  width: 100%;
  height: 100%;
  padding: 16px;
}
body main .subject-module .subject-list ul li a .cover {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  padding: 16px;
  text-align: center;
  overflow: visible;
  background-color: var(--G300);
}
body main .subject-module .subject-list ul li a .cover img {
  width: 128px;
  object-fit: cover;
}
body main .subject-module .subject-list ul li a .subject-text {
  position: relative;
  z-index: 1;
  width: 100%;
  margin-top: 128px;
}
body main .subject-module .subject-list ul li a .subject-text h3 {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 60px;
  color: var(--G900);
  line-height: 1;
  text-align: center;
}
body main .subject-module .subject-list ul li a .subject-text p.tag-list {
  display: -webkit-box;
  height: 56px;
  overflow: ellipsis;
  text-overflow: ellipsis;
  text-align: left;
  line-height: 18px;
  white-space: nowrap;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  white-space: normal;
  overflow: hidden;
}
body main .subject-module .subject-list ul li a .subject-text p.tag-list span {
  display: inline-block;
  margin: 0 4px 0 0;
  line-height: 16px;
  white-space: nowrap;
  font-size: var(--P4);
}
body main .subject-module .subject-list ul li a .subject-text p.tag-list span::before {
  content: "#";
}
body main .subject-module .subject-list ul li:hover, body main .subject-module .subject-list ul li:focus {
  outline: 1px solid var(--PB01);
}
@container subject-module (width > 640px) {
  body main .subject-module .subject-list ul {
    grid-template: repeat(2, 1fr)/repeat(3, 1fr);
  }
}
@container subject-module (width > 980px) {
  body main .subject-module .subject-list ul {
    grid-template: repeat(2, 1fr)/repeat(4, 1fr);
  }
  body main .subject-module .subject-list ul li {
    width: 100%;
    max-width: 240px;
  }
  body main .subject-module .subject-list ul li a .subject-text {
    margin-top: 128px;
  }
}
@container subject-module (width > 1200px) {
  body main .subject-module .subject-list ul {
    grid-template: repeat(2, 1fr)/repeat(5, 1fr);
  }
}

body main.result {
  position: relative;
  /*Result settings*/
}
body main.result .result-content {
  min-height: 80dvh;
  padding: 48px 16px 0;
}