@charset "utf-8";

/*
  飲食系列展 2026 CSS
  ---------------------------------------------------------
  對應目前 HTML 結構：
  #wrapper
  ├─ #left  左側主視覺
  └─ #right 右側展覽清單
      └─ #expo
          └─ .tourCard .tourCardTC / .tourCardKS / .tourCardTN / .tourCardTPE

  修改重點：
  1. 已移除舊版 .info / .eName / .item / .ticketClose / li > em 排版
  2. 展覽卡片改用 .tourCard 新結構
  3. 桌機版左右欄用 grid
  4. 手機版上下排列，卡片內部也用 grid，不使用 float
  5. 日期地點膠囊、索票按鈕會依城市自動換色
*/

@import url("reset.css");
@import url(https://fonts.googleapis.com/css?family=Roboto);


/* =========================================================
   Base 基礎設定
========================================================= */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
  font-family: 'Roboto', '微軟正黑體', sans-serif;
}

body {
  color: #333;
}

a {
  text-decoration: none;
}

p,
h1,
h2,
h3,
h4,
a,
dt {
  line-height: 160%;
}

.align_r {
  text-align: right;
}

.align_c {
  text-align: center;
}

.align_l {
  text-align: left;
}

.clear {
  clear: both;
  height: 0;
  line-height: 0;
}

.bold {
  font-weight: bold;
}

.nowrap {
  width: auto;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

.divider {
  width: auto;
  height: 10px;
}


/* =========================================================
   Animation 動畫
========================================================= */

@keyframes fadein {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes fadeinBtn {
  0%, 75% { opacity: 0; }
  100% { opacity: 1; }
}

#left {
  animation: fadein 1s ease-in;
}

#expo .tourCard:nth-child(1) { animation: fadeinBtn 1.1s ease-in; }
#expo .tourCard:nth-child(2) { animation: fadeinBtn 1.3s ease-in; }
#expo .tourCard:nth-child(3) { animation: fadeinBtn 1.5s ease-in; }
#expo .tourCard:nth-child(4) { animation: fadeinBtn 1.7s ease-in; }

#right p {
  animation: fadeinBtn 2.1s ease-in;
}


/* =========================================================
   共用：展覽清單與新版卡片 tourCard
========================================================= */

#expo {
  display: grid;
  gap: 15px;
  list-style: none;
  margin: 0;
  padding: 0;
}

#expo .tourCard {
  position: relative;
  display: block;
  width: 100%;
  margin: 0;
  padding: 5px 10px 5px 14px;
  border-radius: 5px;
  box-sizing: border-box;
  overflow: visible;
  color: #18213a;
  list-style: none;
}

#expo .tourCardTop {
  display: grid;
  grid-template-columns: 90px minmax(0, 1fr);
  column-gap: 5px;
  align-items: start;
}

#expo .tourCityIcon {
  width: 82px;
  height: 82px;
  display: block;
  background-repeat: no-repeat;
  background-size: contain;
  background-position: center center;
  position: relative;
  z-index: 2;
}

#expo .tourShows {
  min-width: 0;
}

/* 
  每一筆展覽列：
  例如「臺中國際茶、咖啡暨烘焙展 + 立即索票」是一列。
  這裡負責控制展名與按鈕的左右排列、間距、底線。
*/
#expo .tourShowRow {
  /* 
    使用 grid 排版：
    左邊放展名，右邊放索票按鈕。
    比 float 穩定，也能讓父層自動撐高。
  */
  display: grid;

  /*
    grid-template-columns: minmax(0, 1fr) 88px;
    
    左欄：minmax(0, 1fr)
    - 放展名
    - 會自動吃掉剩餘空間
    - minmax(0, 1fr) 可避免長文字把版面撐爆

    右欄：88px
    - 固定寬度給「立即索票」按鈕
    - 如果按鈕要變寬或變窄，要跟 .tourTicket a 的 width 一起改
  */
  grid-template-columns: minmax(0, 1fr) 88px;

  /*
    左右欄之間的距離。
    數字越大，展名和按鈕距離越開。
  */
  gap: 10px;

  /*
    讓展名與按鈕在垂直方向置中對齊。
  */
  align-items: center;

  /*
    每列底部內距。
    這會讓文字和虛線之間有空間。
  */
  padding-bottom: 6px;

  /*
    每列和下一列之間的距離。
  */
  margin-bottom: 6px;

  /*
    每一列下面的虛線分隔線。
    最後一列通常會用 :last-child 拿掉。
  */
  border-bottom: 2px dotted #ADADAD;

  /*
    讓 padding 和 border 算在元素寬度裡，
    避免寬度超出造成跑版。
  */
  box-sizing: border-box;
}

#expo .tourShowRow:last-child {
  border-bottom: none;
  padding-bottom: 0;
  margin-bottom: 0;
}

#expo .tourShowName {
  min-width: 0;
}

#expo .tourShowName h1 {
  margin: 0;
  padding: 0;
  line-height: 1.25;
}

#expo .tourShowName h1 a {
  color: #18213a;
  font-size: 24px;
  font-weight: bold;
  line-height: 1.25;
  text-decoration: none;
}

#expo .tourShowName h1 a:hover {
  color: #bbab77;
}

#expo .tourShowName h1 span {
  font-size: 20px;
}

#expo .tourShowName h2 {
  margin: 2px 0 0;
  padding: 0;
  color: #18213a;
  font-size: 18px;
  line-height: 1.2;
  font-weight: bold;
}


/* =========================================================
   共用：索票按鈕
========================================================= */

#expo .tourTicket a,
#expo .tourTicketClose a {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  width: 88px;
  padding: 8px 0;
  color: #fff;
  font-size: 16px;
  line-height: 1.25;
  text-align: center;
  text-decoration: none;
  border-radius: 5px;
  box-sizing: border-box;
  white-space: nowrap;
}

#expo .tourTicket a span,
#expo .tourTicketClose a span {
  display: inline;
}

#expo .tourTicketClose a {
  background: #a9a9a9;
  color: #efefef;
  pointer-events: none;
}


/* =========================================================
   共用：日期地點膠囊
========================================================= */

#expo .tourMeta {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  width: 100%;
  max-width: 100%;
  margin: 10px 0;
  padding: 6px 20px;
  color: #fff;
  line-height: 1.4;
  border-radius: 999px;
  overflow: hidden;
  box-sizing: border-box;
  text-align: center;
}

#expo .tourDate {
  display: inline-block;
  margin-right: 2px;
  padding-left: 0;
  font-size: 22px;
  line-height: 1;
}

#expo .tourDate i {
  font-size: 12px;
  font-style: normal;
  margin: 0 2px;
}

#expo .tourPlace {
  display: inline-block;
  padding-left: 18px;
  background-image: url(../images/map.svg);
  background-repeat: no-repeat;
  background-size: 16px 16px;
  background-position: left center;
  font-size: 20px;
  line-height: 1.2;
}


/* =========================================================
   城市 icon、按鈕色、日期膠囊色
========================================================= */

/* 台北：深藍 */
#expo .tourCardTPE .tourCityIcon { background-image: url(../images/TPE.svg); }

#expo .tourCardTPE .tourTicket a,
#expo .tourCardTPE .tourMeta {
  background: #18213a;
}

#expo .tourCardTPE .tourTicket a:hover { background: #30385a; }

/* 台中：橄欖綠 */
#expo .tourCardTC .tourCityIcon { background-image: url(../images/TC.svg); }

#expo .tourCardTC .tourTicket a,
#expo .tourCardTC .tourMeta {
  background: #51563D;
}

#expo .tourCardTC .tourTicket a:hover { background: #3f442f; }

/* 高雄：藍灰 */
#expo .tourCardKS .tourCityIcon { background-image: url(../images/KS.svg); }

#expo .tourCardKS .tourTicket a,
#expo .tourCardKS .tourMeta {
  background: #4D6576;
}

#expo .tourCardKS .tourTicket a:hover { background: #3d5261; }

/* 台南：磚紅 */
#expo .tourCardTN .tourCityIcon { background-image: url(../images/TN.svg); }

#expo .tourCardTN .tourTicket a,
#expo .tourCardTN .tourMeta {
  background: #8F3B36;
}

#expo .tourCardTN .tourTicket a:hover { background: #74302c; }


/* =========================================================
   PC 桌機版：801px 以上
========================================================= */

@media screen and (min-width: 801px) {

  html,
  body {
    min-height: 100%;
    font-size: 14px;
    line-height: 160%;
    overflow-x: hidden;
  }

  .NoShowInPC {
    display: none;
  }

  article {
    width: 100%;
    min-height: 100vh;
    background: url(../images/bg.jpg) no-repeat center top / cover;
    padding-bottom: 90px;
  }

  #wrapper {
    width: min(1200px, calc(100% - 48px));
    margin: 0 auto;
    display: grid;
    grid-template-columns: minmax(360px, 48%) minmax(480px, 52%);
    gap: clamp(20px, 3vw, 48px);
    align-items: start;
  }

  #left {
    min-height: clamp(660px, 78vh, 900px);
    background: url("../images/title.png") no-repeat left top / contain;
    color: #fff;
    position: relative;
  }

  #right {
    padding-top: clamp(20px, 3vw, 40px);
  }

  #left h1 {
    color: #18213a;
    font-size: clamp(30px, 3vw, 40px);
    margin: clamp(430px, 48vw, 560px) 0 0;
    text-align: center;
    line-height: 1.1;
    padding: 0;
  }

  #left h2 {
    color: #18213a;
    font-size: clamp(26px, 2.6vw, 35px);
    text-align: center;
    margin: 0;
    line-height: 1.25;
  }

  #left p {
    font-size: clamp(13px, 1.1vw, 15px);
    line-height: 1.8;
    width: min(80%, 430px);
    margin: 20px auto 0;
    color: #727070;
  }

  .media {
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
    align-items: center;
    margin: 10px auto 0;
  }

  .fa-brands {
    color: #18213a;
    font-size: 140%;
    vertical-align: middle;
    padding: 0 3px;
  }

  .fa-brands:hover {
    color: #E57F44;
  }

  .btnFBIG,
  .btnFBIGTC {
    text-align: left;
    padding: 10px 18px;
    border-radius: 50px;
    border: 2px solid #18213a;
    color: #18213a;
    font-size: 18px;
    -webkit-appearance: none;
    margin: 0 2px;
  }

  #warning {
    width: 100%;
    background: #333;
    color: #fff;
    font-size: 39px;
    letter-spacing: 35px;
    text-align: center;
    line-height: 70px;
    position: fixed;
    bottom: 0;
    z-index: 20;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
  }

  #warning img {
    vertical-align: middle;
  }
}


/* =========================================================
   PC 中尺寸：801px～1100px
========================================================= */

@media screen and (min-width: 801px) and (max-width: 1100px) {

  #wrapper {
    width: min(1000px, calc(100% - 32px));
    grid-template-columns: minmax(320px, 42%) minmax(430px, 58%);
    gap: 20px;
  }

  #expo .tourCardTop {
    grid-template-columns: 78px minmax(0, 1fr);
    column-gap: 8px;
  }

  #expo .tourCityIcon {
    width: 70px;
    height: 70px;
  }

  #expo .tourShowRow {
    grid-template-columns: minmax(0, 1fr) 82px;
    gap: 6px;
  }

  #expo .tourTicket a,
  #expo .tourTicketClose a {
    width: 82px;
    font-size: 16px;
  }

  #expo .tourShowName h1 a {
    font-size: 23px;
  }

  #expo .tourShowName h1 span {
    font-size: 18px;
  }
}


/* =========================================================
   Mobile 手機版：800px 以下
========================================================= */

@media screen and (max-width: 800px) {

  html {
    width: 100%;
    min-height: 100%;
    margin: 0;
    padding: 0;
    -webkit-text-size-adjust: none;
  }

  body {
    width: 100%;
    min-height: 100%;
    margin: 0;
    padding: 0;
    color: #222;
    line-height: 150%;
    font-size: 16px;
    overflow-x: hidden;
  }

  p,
  h1,
  h2,
  h3,
  h4,
  a,
  dt {
    line-height: 150%;
  }

  .NoShowInMobile {
    display: none;
  }

  .NoShowInPC {
    display: inline;
  }

  article {
    width: 100%;
    min-height: 100vh;
    background-image: url(../images/bg.jpg);
    background-repeat: repeat-y;
    background-size: contain;
    background-position: top center;
    overflow: visible;
  }

  #wrapper {
    width: 100%;
    display: block;
    margin: 0;
    padding: 0;
  }

  #left {
    width: 100%;
    min-height: 560px;
    background: url("../images/title.png") no-repeat center top / 99% auto;
    position: relative;
    padding-top: 380px;
    padding-bottom: 24px;
    box-sizing: border-box;
  }

  #left h1 {
    color: #18213a;
    font-size: clamp(28px, 7.5vw, 34px);
    line-height: 1.15;
    text-align: center;
    margin: 0 20px 4px;
    padding: 0;
  }

  #left h2 {
    color: #18213a;
    font-size: clamp(22px, 6vw, 26px);
    line-height: 1.25;
    text-align: center;
    margin: 0 20px;
    padding: 0;
    font-weight: normal;
  }

  .media {
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
    align-items: center;
    gap: 6px;
    margin: 12px auto 0;
    padding: 0;
  }

  #left p {
    font-size: 15px;
    line-height: 1.6;
    width: min(86%, 360px);
    margin: 12px auto 0;
    color: #727070;
    text-align: left;
  }

  .fa-brands {
    color: #18213a;
    font-size: 200%;
    vertical-align: middle;
    padding: 0 2px;
  }

  .fa-brands:hover {
    color: #fff;
  }

  .btnFBIG,
  .btnFBIGTC {
    text-align: left;
    padding: 5px 12px;
    border-radius: 50px;
    border: 1px solid #18213a;
    color: #18213a;
    font-size: 18px;
    -webkit-appearance: none;
    margin: 0;
  }

  #right {
    width: 100%;
    padding: 0 0 20px;
    clear: both;
  }

  #right p {
    width: 100%;
    text-align: left;
    margin: 0 auto 20px;
  }

  #expo {
    gap: 8px;
    padding: 0 5px 5px;
  }

  #expo .tourCard {
    padding: 12px 5px 14px;
  }

  #expo .tourCardTop {
    grid-template-columns: 53px minmax(0, 1fr);
    column-gap: 6px;
  }

  #expo .tourCityIcon {
    width: 53px;
    height: 53px;
  }

  #expo .tourShowRow {
    grid-template-columns: minmax(0, 1fr) 52px;
    gap: 8px;
    align-items: center;
  }

  #expo .tourShowName h1 a {
    font-size: clamp(20px, 5.6vw, 24px);
    line-height: 1.25;
  }

  #expo .tourShowName h1 span {
    font-size: clamp(17px, 4.8vw, 20px);
  }

  #expo .tourShowName h2 {
    font-size: 16px;
    line-height: 1.2;
  }

  #expo .tourTicket a,
  #expo .tourTicketClose a {
    flex-direction: column;
    width: 50px;
    min-width: 50px;
    height: 50px;
    padding: 0;
    font-size: 17px;
    line-height: 1.15;
    text-align: center;
    border-radius: 5px;
    white-space: normal;
  }

  #expo .tourTicket a span,
  #expo .tourTicketClose a span {
    display: block;
  }

  #expo .tourMeta {
    justify-content: center;
    padding: 10px 14px;
    margin-top: 10px;
    color: #fff;
    text-align: center;
  }

  #expo .tourDate {
    font-size: 18px;
  }

  #expo .tourDate i {
    font-size: 12px;
    margin: 0 0 0 2px;
  }

  #expo .tourPlace {
    padding-left: 18px;
    background-size: 16px 16px;
    font-size: 15px;
  }

  #warning {
    width: 100%;
    background: #333;
    color: #fff;
    font-size: 20px;
    letter-spacing: 2px;
    text-align: center;
    line-height: 60px;
  }

  #warning img {
    vertical-align: middle;
    height: 35px;
  }
}


/* =========================================================
   Extra small mobile：380px 以下
========================================================= */

@media screen and (max-width: 380px) {

  #expo .tourCardTop {
    grid-template-columns: 48px minmax(0, 1fr);
    column-gap: 5px;
  }

  #expo .tourCityIcon {
    width: 48px;
    height: 48px;
  }

  #expo .tourShowRow {
    grid-template-columns: minmax(0, 1fr) 48px;
    gap: 6px;
  }

  #expo .tourTicket a,
  #expo .tourTicketClose a {
    width: 48px;
    min-width: 48px;
    height: 48px;
    font-size: 16px;
  }

  #expo .tourShowName h1 a {
    font-size: 20px;
  }

  #expo .tourShowName h1 span {
    font-size: 17px;
  }

  #expo .tourMeta {
    padding: 9px 10px;
  }

  #expo .tourDate {
    font-size: 16px;
  }

  #expo .tourPlace {
    font-size: 14px;
  }
}


