/* ══ 重設瀏覽器對 button 的預設外觀，避免 iOS 疊加系統樣式蓋掉自訂設計 ══ */
button {
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
  font-family: inherit;
}

/* ══ TOKENS — DARK（預設）══ */
:root {
  --bg:     #0b1820;
  --night:  #0b1820;
  --deep:   #0f2030;
  --mid:    #1a3848;
  --tide:   #265870;
  --foam:   #4a8fa0;
  --mist:   #80b8c8;
  --pale:   #c0d8e0;
  --ink:    #e8ece0;
  --ink2:   #98aaa8;
  --ink3:   #607068;
  --sand:   #c8a870;
  --sand-l: #e8cca0;
  --sand-p: #2a2218;
  --coral:  #b86050;
  --coral-l:#d88870;
  --stone:  #303828;
  --fern:   #385840;
  --fern-l: #508858;
  --crisis-text:      #c0dcd4;
  --crisis-accent:    #4a9a7a;
  --crisis-highlight: #80c8b0;
  --rim:    rgba(192,216,224,.1);
  --rim2:   rgba(192,216,224,.18);
  --glow:   rgba(74,143,160,.15);
  --nav-bg: rgba(11,24,32,.88);
  --surface-card: rgba(255,255,255,.03);
  --progress-bg: #0f2030;
}

/* ══ TOKENS — LIGHT ══ */
html[data-theme="light"] {
  --bg:     #f2ede4;
  --night:  #f2ede4;
  --deep:   #e8e0d4;
  --mid:    #d8cfc0;
  --tide:   #3a7890;
  --foam:   #2a6878;
  --mist:   #1e5060;
  --pale:   #0e2830;
  --ink:    #1e2e30;
  --ink2:   #4a6068;
  --ink3:   #7a9098;
  --sand:   #a07840;
  --sand-l: #8a6030;
  --sand-p: #faf4e8;
  --coral:  #a04030;
  --coral-l:#c05840;
  --stone:  #3a4838;
  --fern:   #2a5838;
  --fern-l: #3a7848;
  --crisis-text:      #1e3a30;
  --crisis-accent:    #2d6b52;
  --crisis-highlight: #1f7a5c;
  --rim:    rgba(30,46,48,.12);
  --rim2:   rgba(30,46,48,.2);
  --glow:   rgba(58,120,144,.12);
  --nav-bg: rgba(242,237,228,.92);
  --surface-card: rgba(0,0,0,.03);
  --progress-bg: #e8e0d4;
}

/* ══ THEME TOGGLE BUTTON ══ */
.theme-toggle {
  width: 36px; height: 36px;
  background: var(--surface-card);
  border: 1px solid var(--rim2);
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all .3s;
  clip-path: polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%);
  flex-shrink: 0;
}
.theme-toggle:hover { border-color: var(--foam); }
.theme-toggle svg { transition: transform .4s ease, opacity .3s ease; }
.icon-moon { display: block; }
.icon-sun  { display: none; }
html[data-theme="light"] .icon-moon { display: none; }
html[data-theme="light"] .icon-sun  { display: block; }

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth}

body{
  background:var(--bg);
  color:var(--ink);
  font-family:'Noto Sans TC',sans-serif;
  font-weight:300;
  font-size:17px;
  line-height:1.9;
  overflow-x:hidden;
  transition:background .4s ease, color .4s ease;
}

/* grain */
body::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:0;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 300 300' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.03'/%3E%3C/svg%3E");
  opacity:.7;
}

/* ══ LAYOUT ══ */
.wrap{max-width:720px;margin:0 auto;padding:0 24px;position:relative;z-index:1;}
.wrap-wide{max-width:960px;margin:0 auto;padding:0 24px;position:relative;z-index:1;}

/* ══ NAV ══ */
nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  background:var(--nav-bg);
  backdrop-filter:blur(16px);
  border-bottom:1px solid var(--rim);
  transition:background .4s ease;
}
.nav-inner{
  max-width:960px;margin:0 auto;padding:0 24px;
  height:54px;display:flex;align-items:center;justify-content:space-between;
}
.nav-logo{
  font-family:'Cormorant Garamond',serif;
  font-size:20px;font-style:italic;font-weight:400;
  color:var(--pale);letter-spacing:1px;
}
.nav-links{display:flex;gap:28px;list-style:none;align-items:center;}
.nav-links a{
  font-size:13px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--ink2);text-decoration:none;transition:color .3s;
}
.nav-links a:hover{color:var(--mist);}

/* ── 深海下拉選單 ── */
.nav-dropdown{ position:relative; }
.nav-dropdown-trigger{ display:flex; align-items:center; gap:4px; }
.nav-dropdown-arrow{ font-size:10px; transition:transform .2s; display:inline-block; }
.nav-dropdown:hover .nav-dropdown-arrow{ transform:rotate(180deg); }
.nav-dropdown-menu{
  position:absolute; top:calc(100% + 14px); left:50%; transform:translateX(-50%);
  background:var(--bg); border:1px solid var(--rim2);
  min-width:150px; padding:8px 0;
  opacity:0; visibility:hidden; transform:translateX(-50%) translateY(-6px);
  transition:opacity .2s ease, transform .2s ease, visibility .2s;
  box-shadow:0 12px 28px rgba(30,46,48,.1);
  z-index:150;
}
.nav-dropdown:hover .nav-dropdown-menu{
  opacity:1; visibility:visible; transform:translateX(-50%) translateY(0);
}
.nav-dropdown-menu a{
  display:block; padding:9px 20px;
  font-size:12px; letter-spacing:1.2px; white-space:nowrap;
  color:var(--ink2); text-decoration:none; transition:background .15s,color .15s;
}
.nav-dropdown-menu a:hover{ background:var(--deep); color:var(--mist); }
.nav-cta{
  font-size:13px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--sand);border:1px solid rgba(200,168,112,.35);
  padding:7px 16px;text-decoration:none;transition:all .3s;
  clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%);
}
.nav-cta:hover{background:rgba(200,168,112,.1);color:var(--sand-l);}

/* 登入 / 註冊按鈕 */
.nav-login{
  font-size:13px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--ink2);text-decoration:none;padding:6px 0;
  transition:color .2s;
}
.nav-login:hover{color:var(--sand);}
.nav-register{
  font-size:13px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--sand);border:1px solid rgba(200,168,112,.4);
  padding:6px 14px;text-decoration:none;transition:all .2s;
}
.nav-register:hover{background:rgba(200,168,112,.08);border-color:var(--sand);}

@media(max-width:600px){
  .hamburger{ display:flex; }
  .nav-desktop-items{ display:none !important; }
  .nav-cta{ display:block; }  /* 留下心事保留 */
  .nav-login,.nav-register{ display:none; }
}

/* ══ 路人招待所 ══ */
.stories-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:24px;
  margin-top:40px;
}
.story-card{
  border:1px solid var(--rim);
  padding:28px 24px;
  display:flex;flex-direction:column;gap:14px;
  transition:border-color .2s;
  background:var(--surface-card);
}
.story-card:hover{ border-color:var(--rim2); }

.story-meta{
  display:flex;flex-wrap:wrap;gap:6px;align-items:center;
  font-size:12px;letter-spacing:2px;text-transform:uppercase;
  color:var(--ink3);
}
.story-dot{
  width:3px;height:3px;border-radius:50%;
  background:var(--rim2);flex-shrink:0;
}
.story-quote{
  font-family:'Cormorant Garamond',serif;
  font-size:18px;font-style:italic;font-weight:300;
  color:var(--ink);line-height:1.6;
  border-left:2px solid var(--sand);
  padding-left:14px;margin:0;
}
.story-preview{
  font-size:14px;color:var(--ink2);line-height:1.8;
  letter-spacing:.3px;flex:1;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.story-read-more{
  font-size:13px;letter-spacing:2px;text-transform:uppercase;
  color:var(--sand);text-decoration:none;
  transition:color .2s;margin-top:4px;
}
.story-read-more:hover{ color:var(--sand-l); }

.stories-more{
  text-align:center;margin-top:48px;
}
.btn-stories-all{
  font-size:13px;letter-spacing:2.5px;text-transform:uppercase;
  color:var(--sand);border:1px solid rgba(200,168,112,.4);
  padding:12px 32px;text-decoration:none;
  display:inline-block;transition:all .2s;
}
.btn-stories-all:hover{
  background:rgba(200,168,112,.06);border-color:var(--sand);
}

/* light mode story quote border */
html[data-theme="light"] .story-quote{ border-left-color:var(--sand); }

@media(max-width:600px){
  .stories-grid{ grid-template-columns:1fr; }
}
.hamburger{
  position:relative;
  display:none;
  background:none;border:none;cursor:pointer;
  padding:4px;color:var(--ink2);
  flex-direction:column;justify-content:center;gap:5px;
}
.hamburger span{
  display:block;width:22px;height:1.5px;
  background:currentColor;
  transition:transform .3s, opacity .3s;
}
.hamburger .hamburger-dot{
  display:none;
  position:absolute; top:-1px; right:-1px;
  width:9px; height:9px; border-radius:50%;
  background:var(--coral); border:1.5px solid var(--bg);
}
.hamburger.open span:nth-child(1){ transform:translateY(6.5px) rotate(45deg); }
.hamburger.open span:nth-child(2){ opacity:0; }
.hamburger.open span:nth-child(3){ transform:translateY(-6.5px) rotate(-45deg); }

/* .hamburger 的預設 display:none 寫在這個規則之後，CSS 疊層順序上會贏過
   前面 @media(max-width:600px) 裡設的 display:flex，所以在這裡（晚於
   預設規則）再宣告一次，手機版才會真的顯示漢堡選單按鈕 */
@media(max-width:600px){
  .hamburger{ display:flex; }
}

/* 全螢幕 overlay */
.nav-overlay{
  position:fixed;inset:0;z-index:99;
  background:var(--nav-bg);
  backdrop-filter:blur(20px);
  display:flex;flex-direction:column;
  justify-content:flex-start;align-items:center;
  gap:32px;
  opacity:0;pointer-events:none;
  transition:opacity .3s ease;
  padding-top:100px;padding-bottom:60px;
  overflow-y:auto;
}
.nav-overlay.open{ opacity:1;pointer-events:all; }

.nav-overlay a,
.nav-overlay button.overlay-link{
  font-family:'Cormorant Garamond',serif;
  font-size:28px;font-style:italic;font-weight:300;
  letter-spacing:2px;color:var(--ink);
  text-decoration:none;background:none;border:none;cursor:pointer;
  transition:color .2s;padding:0;
}
.nav-overlay a:hover,
.nav-overlay button.overlay-link:hover{ color:var(--sand); }

.nav-overlay .overlay-divider{
  width:40px;height:1px;background:var(--rim2);
}
.nav-overlay .overlay-lang{
  display:flex;gap:16px;margin-top:8px;
}
.nav-overlay .overlay-lang button{
  background:none;border:none;cursor:pointer;
  font-size:14px;letter-spacing:2px;text-transform:uppercase;
  color:var(--ink3);transition:color .2s;padding:4px;
}
.nav-overlay .overlay-lang button:hover,
.nav-overlay .overlay-lang button.active{ color:var(--sand); }

.nav-overlay .overlay-cta{
  font-family:'Noto Sans TC',sans-serif !important;
  font-style:normal !important;
  font-size:14px !important;
  letter-spacing:2px;
  color:var(--sand) !important;
  border:1px solid rgba(200,168,112,.4);
  padding:10px 24px !important;
}

/* 會員專區子選單（頭像下拉 + 手機 overlay 共用的展開/收合互動） */
.nav-overlay .overlay-expand-trigger{
  display:flex;align-items:center;gap:8px;
}
.nav-overlay .overlay-expand-arrow{
  font-size:18px;transition:transform .2s;display:inline-block;
}
.nav-overlay .overlay-expand-arrow.open{ transform:rotate(180deg); }
.nav-overlay .overlay-profile-group{
  display:flex;flex-direction:column;align-items:center;gap:20px;
}
.nav-overlay .overlay-submenu{
  display:none;flex-direction:column;align-items:center;gap:20px;
}
.nav-overlay .overlay-submenu.open{ display:flex; }
.nav-overlay .overlay-subitem{
  font-family:'Cormorant Garamond',serif;
  font-size:20px;font-style:italic;font-weight:300;
  letter-spacing:1px;color:var(--ink3);
  text-decoration:none;transition:color .2s;
}
.nav-overlay .overlay-subitem:hover{ color:var(--sand); }

/* ══ HERO ══ */
.hero{
  min-height:100vh;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:100px 24px 80px;
  position:relative;overflow:hidden;text-align:center;
}

/* star field */
.stars{
  position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(1px 1px at 15% 20%, rgba(192,216,224,.6), transparent),
    radial-gradient(1px 1px at 35% 8%, rgba(192,216,224,.4), transparent),
    radial-gradient(1.5px 1.5px at 55% 15%, rgba(192,216,224,.5), transparent),
    radial-gradient(1px 1px at 72% 25%, rgba(192,216,224,.3), transparent),
    radial-gradient(1px 1px at 88% 12%, rgba(192,216,224,.5), transparent),
    radial-gradient(1px 1px at 20% 45%, rgba(192,216,224,.3), transparent),
    radial-gradient(1.5px 1.5px at 80% 40%, rgba(192,216,224,.4), transparent),
    radial-gradient(1px 1px at 60% 55%, rgba(192,216,224,.2), transparent),
    radial-gradient(1px 1px at 10% 70%, rgba(192,216,224,.3), transparent),
    radial-gradient(1px 1px at 45% 80%, rgba(192,216,224,.2), transparent),
    radial-gradient(1.5px 1.5px at 90% 65%, rgba(200,168,112,.4), transparent),
    radial-gradient(1px 1px at 25% 90%, rgba(192,216,224,.2), transparent);
}

/* hero ocean glow */
.hero-glow{
  position:absolute;bottom:-60px;left:50%;transform:translateX(-50%);
  width:120%;height:280px;
  background:radial-gradient(ellipse 80% 60% at 50% 100%, rgba(38,88,112,.4), transparent);
  pointer-events:none;
}

.hero-eyebrow{
  font-size:13px;letter-spacing:4px;text-transform:uppercase;
  color:var(--foam);margin-bottom:20px;
}

.hero-title{
  font-family:'Cormorant Garamond',serif;
  font-size:clamp(40px,8vw,72px);
  font-weight:300;font-style:italic;
  line-height:1.1;color:var(--ink);
  margin-bottom:12px;
}
.hero-title em{color:var(--sand-l);font-style:normal;}

.hero-tagline{
  font-family:'Cormorant Garamond',serif;
  font-size:22px;font-style:italic;
  color:var(--mist);margin-bottom:32px;letter-spacing:.5px;
}

.hero-desc{
  max-width:440px;font-size:16px;color:var(--ink2);
  line-height:1.9;margin-bottom:40px;letter-spacing:.3px;
}

.hero-btns{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;}

.btn-primary{
  padding:14px 32px;
  background:linear-gradient(135deg,var(--tide),var(--mid));
  border:1px solid rgba(74,143,160,.4);
  color:var(--pale);font-size:13px;font-family:'Noto Sans TC',sans-serif;
  font-weight:400;letter-spacing:2px;text-decoration:none;
  cursor:pointer;transition:all .3s;
  clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%);
  display:inline-block;border:none;
}
.btn-primary:hover{background:linear-gradient(135deg,var(--foam),var(--tide));color:var(--night);letter-spacing:3px;}

.btn-ghost{
  padding:14px 32px;
  background:transparent;border:1px solid var(--rim2);
  color:var(--ink2);font-size:13px;font-family:'Noto Sans TC',sans-serif;
  font-weight:400;letter-spacing:2px;text-decoration:none;
  cursor:pointer;transition:all .3s;
  clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%);
  display:inline-block;
}
.btn-ghost:hover{border-color:var(--mist);color:var(--pale);}

/* hero ocean svg */
.hero-ocean{
  position:absolute;bottom:0;left:0;right:0;pointer-events:none;
  overflow:hidden;
}

/* ── 海浪動畫 ── */
.hero-ocean svg {
  width: 200%;
  left: -50%;
  position: relative;
  height: 180px;
}
.wave1 { animation: waveFlow 9s ease-in-out infinite; transform-origin: center bottom; }
.wave2 { animation: waveFlow 13s ease-in-out infinite reverse; transform-origin: center bottom; }
@keyframes waveFlow {
  0%,100% { transform: translateX(0) scaleY(1); }
  30%      { transform: translateX(-6%) scaleY(1.03); }
  60%      { transform: translateX(6%) scaleY(.98); }
}
@media(prefers-reduced-motion:reduce){ .wave1,.wave2{ animation:none; } }

/* scroll indicator */
.scroll-hint{
  position:absolute;bottom:28px;left:50%;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:6px;
  font-size:12px;letter-spacing:2px;text-transform:uppercase;color:var(--ink3);
  animation:fadeInUp 1s ease 2s both;
}
.scroll-dot{
  width:1px;height:28px;
  background:linear-gradient(to bottom,var(--foam),transparent);
  animation:scrollPulse 2s ease-in-out infinite;
}
@keyframes scrollPulse{0%,100%{opacity:.3}50%{opacity:1}}
@keyframes fadeInUp{from{opacity:0;transform:translateX(-50%) translateY(10px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}

/* ══ SECTION BASE ══ */
.section{padding:80px 0;border-top:1px solid var(--rim);}
.section-head{margin-bottom:40px;}

.eyebrow{
  font-size:13px;letter-spacing:3px;text-transform:uppercase;
  color:var(--foam);margin-bottom:10px;
  display:flex;align-items:center;gap:10px;
}
.eyebrow::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,var(--rim2),transparent);}

.sec-title{
  font-family:'Cormorant Garamond',serif;
  font-size:32px;font-weight:300;font-style:italic;
  color:var(--ink);line-height:1.25;margin-bottom:8px;
}

.sec-sub{font-size:15px;color:var(--ink2);letter-spacing:.3px;max-width:520px;}

/* ══ FORM SECTION ══ */
.hollow-card{
  background:var(--surface-card);
  border:1px solid var(--rim2);
  padding:36px;
  clip-path:polygon(0 0,calc(100% - 24px) 0,100% 24px,100% 100%,24px 100%,0 calc(100% - 24px));
  position:relative;
  transition:background .4s ease, border-color .4s ease;
}
.hollow-card::before{
  content:'';position:absolute;top:0;right:0;
  border-top:24px solid var(--rim2);border-left:24px solid transparent;
}

.field-label{
  font-size:14px;letter-spacing:2px;text-transform:uppercase;
  color:var(--ink3);margin-bottom:8px;display:block;
}

.hollow-textarea{
  width:100%;min-height:160px;
  background:rgba(255,255,255,.02);
  border:none;border-bottom:1px solid rgba(74,143,160,.3);
  padding:14px 0;
  color:var(--ink);font-size:16px;
  font-family:'Noto Sans TC',sans-serif;font-weight:300;
  line-height:1.9;resize:none;outline:none;
  letter-spacing:.3px;transition:border-color .3s;
  margin-bottom:24px;
}
.hollow-textarea::placeholder{color:rgba(152,170,168,.6);font-size:14px;}
.hollow-textarea:focus{border-bottom-color:var(--foam);}

.hollow-email{
  width:100%;background:transparent;border:none;
  border-bottom:1px solid var(--rim);
  padding:10px 0;color:var(--ink);font-size:13px;
  font-family:'Noto Sans TC',sans-serif;font-weight:300;
  outline:none;letter-spacing:.5px;transition:border-color .3s;
  margin-bottom:24px;
}
.hollow-email::placeholder{color:rgba(152,170,168,.6);font-size:14px;letter-spacing:.8px;}
.hollow-email:focus{border-bottom-color:var(--foam);}

.consent-checkbox{
  display:flex; align-items:flex-start; gap:10px;
  margin:4px 0 24px; cursor:pointer;
}
.consent-checkbox input[type="checkbox"]{
  margin-top:3px; width:16px; height:16px; flex-shrink:0;
  accent-color:var(--sand); cursor:pointer;
}
.consent-text{
  font-size:13px; color:var(--ink2); line-height:1.6; letter-spacing:.2px;
}

.invite-box{
  background:linear-gradient(135deg,rgba(38,88,112,.15),rgba(200,168,112,.06));
  border:1px solid rgba(200,168,112,.18);
  border-left:3px solid var(--sand);
  padding:16px 18px;margin-bottom:28px;
  font-size:15px;line-height:1.9;color:var(--ink2);
}
.invite-box strong{color:var(--sand-l);font-weight:400;}

.submit-btn{
  width:100%;padding:17px;
  background:linear-gradient(135deg,var(--tide),var(--mid));
  border:1px solid rgba(74,143,160,.35);
  color:var(--pale);font-size:14px;
  font-family:'Noto Sans TC',sans-serif;font-weight:400;
  letter-spacing:3px;cursor:pointer;transition:all .35s;font-size:16px;
  clip-path:polygon(12px 0,100% 0,calc(100% - 12px) 100%,0 100%);
}
.submit-btn:hover{
  background:linear-gradient(135deg,var(--foam),var(--tide));
  color:var(--night);transform:translateY(-1px);
  box-shadow:0 8px 32px rgba(74,143,160,.3);
}
.submit-btn:active{transform:translateY(0);}

.hollow-resource-link{
  display:flex;align-items:center;gap:10px;
  margin-top:14px;padding:12px 16px;
  background:rgba(74,143,160,.06);border:1px solid rgba(74,143,160,.2);
  border-radius:4px;text-decoration:none;transition:background .2s,border-color .2s;
}
.hollow-resource-link:hover{background:rgba(74,143,160,.1);border-color:rgba(74,143,160,.35);}
.hollow-resource-icon{font-size:16px;flex-shrink:0;}
.hollow-resource-text{font-size:12.5px;color:var(--foam);line-height:1.5;}
.hollow-resource-text strong{color:var(--mist);font-weight:500;}

/* ══ TOAST ══ */
.toast{
  position:fixed;bottom:32px;right:24px;
  max-width:380px;width:calc(100% - 48px);
  background:var(--deep);
  border:1px solid rgba(74,143,160,.35);
  border-left:3px solid var(--foam);
  padding:24px 24px 18px;
  opacity:0;pointer-events:none;z-index:999;
  transform:translateY(16px);
  transition:opacity .5s ease,transform .5s cubic-bezier(.4,0,.2,1);
  clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,0 100%);
}
.toast::before{
  content:'';position:absolute;top:0;right:0;
  border-top:14px solid rgba(74,143,160,.35);border-left:14px solid transparent;
}
.toast.show{opacity:1;pointer-events:auto;transform:translateY(0);}
.toast-from{
  font-size:12px;letter-spacing:2px;text-transform:uppercase;
  color:var(--foam);margin-bottom:10px;
}
.toast-msg{
  font-family:'Cormorant Garamond',serif;font-style:italic;
  font-size:16px;line-height:1.8;color:var(--pale);
}
.toast-close{
  display:block;margin-top:14px;text-align:right;
  font-size:12px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--ink3);cursor:pointer;transition:color .2s;
}
.toast-close:hover{color:var(--mist);}
.toast-checkin{
  margin-top:16px;padding-top:14px;
  border-top:1px solid rgba(74,143,160,.25);
}
.toast-checkin-q{
  font-size:14px;color:var(--pale);letter-spacing:.3px;margin-bottom:10px;
}
.toast-checkin-btns{display:flex;gap:8px;flex-wrap:wrap;}
.toast-checkin-btn{
  background:rgba(255,255,255,.04);
  border:1px solid rgba(74,143,160,.35);
  border-radius:999px;
  padding:6px 14px;
  font-size:13px;color:var(--foam);
  cursor:pointer;transition:background .2s,border-color .2s;
}
.toast-checkin-btn:hover{background:rgba(255,255,255,.09);border-color:var(--foam);}
.toast-checkin-response{
  font-family:'Cormorant Garamond',serif;font-style:italic;
  font-size:15px;line-height:1.7;color:var(--pale);
}

/* ══ 旅人心事牆 ══ */
.worries-wall{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));
  gap:10px;margin-top:32px;
}
.worry-chip{
  background:rgba(255,255,255,.025);
  border:1px solid var(--rim);
  padding:14px 16px;
  font-size:14px;color:var(--ink2);
  line-height:1.7;letter-spacing:.2px;
  clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%);
  position:relative;transition:background .3s;
}
.worry-chip::before{
  content:'';position:absolute;top:0;right:0;
  border-top:10px solid var(--rim);border-left:10px solid transparent;
}
.worry-chip:hover{background:rgba(255,255,255,.045);}
.worry-from{
  display:block;margin-top:8px;
  font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink3);
}
.worry-footer{
  display:flex;align-items:center;justify-content:space-between;
  gap:8px;margin-top:8px;
}
.worry-footer .worry-from{margin-top:0;}
.resonance-btn{
  display:flex;align-items:center;gap:4px;flex-shrink:0;
  background:rgba(255,255,255,.04);
  border:1px solid var(--rim);
  border-radius:999px;
  padding:4px 10px;
  font-size:12px;color:var(--ink2);
  cursor:pointer;
  transition:background .2s,border-color .2s,transform .15s;
}
.resonance-btn:hover:not(:disabled){background:rgba(255,255,255,.08);border-color:var(--rim2);}
.resonance-btn:active:not(:disabled){transform:scale(.94);}
.resonance-btn.resonated{background:rgba(255,255,255,.08);border-color:var(--rim2);}
.resonance-btn:disabled{cursor:default;}
.resonance-icon{font-size:14px;line-height:1;}
.resonance-count{font-size:12px;font-variant-numeric:tabular-nums;}

/* ══ JOURNAL ══ */
.journal-list{display:flex;flex-direction:column;gap:2px;}

.journal-entry{
  display:grid;grid-template-columns:1fr 1fr;
  gap:0;border:1px solid var(--rim);
  overflow:hidden;
  transition:border-color .3s;
}
.journal-entry:hover{border-color:var(--rim2);}
.journal-entry:nth-child(even){direction:rtl;}
.journal-entry:nth-child(even) > *{direction:ltr;}

.je-visual{
  position:relative;overflow:hidden;
  min-height:280px;background:var(--deep);
}
.je-visual svg{
  position:absolute;inset:0;width:100%;height:100%;
}

.je-content{
  padding:36px 32px;
  display:flex;flex-direction:column;justify-content:space-between;
  background:rgba(255,255,255,.02);
}

.je-meta{
  font-size:12px;letter-spacing:2px;text-transform:uppercase;
  color:var(--foam);margin-bottom:12px;
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;
}
.je-dot{width:3px;height:3px;border-radius:50%;background:var(--sand);flex-shrink:0;}

/* ── 時空切換 ── */
.je-time-switcher{
  display:inline-flex;align-items:center;gap:6px;
  cursor:pointer;user-select:none;
  padding:2px 0;position:relative;
}
.je-time-switcher:hover .je-chevron{ opacity:1; }
.je-chevron{
  font-size:10px;opacity:.4;
  transition:opacity .2s,transform .2s;
  color:var(--foam);
}
.je-time-switcher[aria-expanded="true"] .je-chevron{ transform:rotate(180deg); opacity:.8; }

/* dropdown */
.je-time-dropdown{
  position:absolute;top:calc(100% + 8px);left:0;
  min-width:160px;z-index:100;
  background:var(--deep);
  border:1px solid var(--rim);
  padding:4px 0;
  opacity:0;pointer-events:none;
  transform:translateY(-4px);
  transition:opacity .2s ease, transform .2s ease;
}
.je-time-dropdown.open{
  opacity:1;pointer-events:all;
  transform:translateY(0);
}
.je-time-opt{
  display:block;width:100%;text-align:left;
  padding:8px 14px;background:none;border:none;
  font-size:12px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--ink2);cursor:pointer;
  transition:color .15s,background .15s;
}
.je-time-opt:hover{ color:var(--foam);background:rgba(255,255,255,.04); }
.je-time-opt.active{ color:var(--sand);pointer-events:none; }

/* 卡片內容淡換 */
.je-content-wrap{
  transition:opacity .25s ease;
}
.je-content-wrap.fading{
  opacity:0;
}

.je-title{
  font-family:'Cormorant Garamond',serif;
  font-size:22px;font-weight:400;font-style:italic;
  color:var(--ink);margin-bottom:14px;line-height:1.35;
}

.je-body{font-size:15px;color:var(--ink2);line-height:1.9;letter-spacing:.3px;}

.je-tag{
  display:inline-flex;align-items:center;gap:6px;
  margin-top:20px;font-size:12px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--sand);border:1px solid rgba(200,168,112,.25);
  padding:5px 12px;background:rgba(200,168,112,.04);
  align-self:flex-start;
}

.je-coming{
  display:flex;align-items:center;justify-content:center;
  padding:24px 32px;background:rgba(255,255,255,.015);
  border-top:1px solid var(--rim);
  font-size:14px;letter-spacing:2px;text-transform:uppercase;
  color:var(--ink3);gap:20px;flex-wrap:wrap;text-align:center;
}
.je-coming span{color:var(--ink2);}

/* ══ PROGRESS ══ */
.progress-section{
  padding:80px 0;background:var(--progress-bg);
  border-top:1px solid var(--rim);border-bottom:1px solid var(--rim);
  transition:background .4s ease;
}

.progress-grid{
  display:grid;grid-template-columns:1fr 1fr;
  gap:48px;align-items:center;
}

.prog-left{}
.prog-num{
  font-family:'Cormorant Garamond',serif;
  font-size:72px;font-weight:300;line-height:1;
  color:var(--ink);margin-bottom:8px;
}
.prog-num span{color:var(--sand-l);}
.prog-label{font-size:15px;color:var(--ink2);letter-spacing:.5px;margin-bottom:28px;}

.bar-wrap{
  height:2px;background:rgba(255,255,255,.06);
  position:relative;margin-bottom:8px;
  clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);
}
.bar-fill{
  position:absolute;left:0;top:0;bottom:0;width:0%;
  background:linear-gradient(90deg,var(--tide),var(--sand-l));
  transition:width 2.5s cubic-bezier(.4,0,.2,1);
}
.bar-labels{
  display:flex;justify-content:space-between;
  font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--ink3);
}

.prog-right{
  display:grid;grid-template-columns:1fr 1fr;gap:16px;
}
.stat-item{
  background:rgba(255,255,255,.03);border:1px solid var(--rim);
  padding:20px;
  clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px));
  position:relative;
}
.stat-item::before{
  content:'';position:absolute;top:0;right:0;
  border-top:10px solid var(--rim);border-left:10px solid transparent;
}
.stat-num{
  font-family:'Cormorant Garamond',serif;
  font-size:32px;font-weight:300;color:var(--pale);
  display:block;margin-bottom:4px;
}
.stat-lbl{font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink3);}

/* milestone timeline */
.milestones{margin-top:40px;}
.ms-item{
  display:flex;gap:16px;align-items:flex-start;
  padding:14px 0;border-top:1px solid var(--rim);
}
.ms-item:last-child{border-bottom:1px solid var(--rim);}
.ms-dot{
  width:10px;height:10px;border-radius:50%;flex-shrink:0;margin-top:5px;
  background:var(--rim2);border:2px solid var(--foam);
}
.ms-dot.done{background:var(--foam);}
.ms-dot.active{background:var(--sand);border-color:var(--sand-l);
  box-shadow:0 0 8px rgba(200,168,112,.4);}
.ms-text{font-size:15px;color:var(--ink2);letter-spacing:.3px;}
.ms-text strong{color:var(--ink);font-weight:400;}

/* ══ FOOTER ══ */
footer{
  padding:48px 0;
  border-top:1px solid var(--rim);
}
.footer-inner{
  display:flex;justify-content:space-between;align-items:center;
  flex-wrap:wrap;gap:20px;
}
.footer-brand{
  font-family:'Cormorant Garamond',serif;
  font-size:18px;font-style:italic;color:var(--mist);
}
.footer-brand p{
  font-size:14px;font-family:'Noto Sans TC',sans-serif;
  font-style:normal;color:var(--ink3);margin-top:4px;letter-spacing:.5px;
}
.footer-links{
  display:flex;gap:24px;list-style:none;
}
.footer-links a{
  font-size:14px;letter-spacing:1px;color:var(--ink3);
  text-decoration:none;transition:color .2s;
}
.footer-links a:hover{color:var(--mist);}
.footer-note{font-size:13px;color:var(--ink3);letter-spacing:.5px;}

/* ══ REVEAL ══ */
.reveal{opacity:0;transform:translateY(20px);transition:opacity .7s ease,transform .7s ease;}
.reveal.vis{opacity:1;transform:translateY(0);}

/* ══ MOBILE ══ */
@media(max-width:680px){
  .journal-entry{grid-template-columns:1fr;}
  .journal-entry:nth-child(even){direction:ltr;}
  .je-visual{min-height:200px;}
  .je-content{padding:24px 20px;}
  .progress-grid{grid-template-columns:1fr;}
  .prog-num{font-size:52px;}
  .hollow-card{padding:22px;}
  .worries-wall{grid-template-columns:1fr 1fr;}
}
@media(max-width:400px){
  .worries-wall{grid-template-columns:1fr;}
}

/* ══ GLOBAL TRANSITIONS for theme switch ══ */
body, nav, .hollow-card, .toast, .worry-chip, .journal-card,
.journal-entry, .je-content, .progress-section, .stat-item,
.section, footer, .je-visual, .invite-box, .hollow-textarea,
.hollow-email, .submit-btn, .ms-item, .bar-wrap, .btn-ghost {
  transition: background .4s ease, background-color .4s ease,
              border-color .4s ease, color .4s ease;
}

/* ══ LIGHT MODE OVERRIDES ══ */
html[data-theme="light"] body { background: var(--bg); color: var(--ink); }

html[data-theme="light"] nav {
  background: rgba(242,237,228,.92);
  border-bottom-color: rgba(30,46,48,.1);
}

html[data-theme="light"] .hollow-card,
html[data-theme="light"] .stat-item,
html[data-theme="light"] .journal-card,
html[data-theme="light"] .worry-chip {
  background: rgba(0,0,0,.03);
}

html[data-theme="light"] .resonance-btn {
  background: rgba(0,0,0,.03);
}
html[data-theme="light"] .resonance-btn.resonated,
html[data-theme="light"] .resonance-btn:hover:not(:disabled) {
  background: rgba(0,0,0,.06);
}

html[data-theme="light"] .hollow-textarea,
html[data-theme="light"] .hollow-email {
  background: rgba(0,0,0,.02);
  color: var(--ink);
}

html[data-theme="light"] .invite-box {
  background: linear-gradient(135deg,rgba(58,120,144,.1),rgba(160,120,64,.06));
  border-color: rgba(160,120,64,.2);
}

html[data-theme="light"] .toast {
  background: var(--deep);
  border-color: rgba(58,120,144,.3);
}

html[data-theme="light"] .toast-msg { color: var(--pale); }

html[data-theme="light"] .progress-section { background: var(--deep); }
html[data-theme="light"] .prog-num { color: var(--ink); }

html[data-theme="light"] .je-content { background: rgba(0,0,0,.025); }

html[data-theme="light"] .submit-btn {
  background: linear-gradient(135deg,var(--tide),#1e4860);
  color: #f0ece0;
}
html[data-theme="light"] .submit-btn:hover {
  background: linear-gradient(135deg,var(--foam),var(--tide));
  color: #f0ece0;
}

html[data-theme="light"] .btn-ghost {
  border-color: rgba(30,46,48,.2);
}
html[data-theme="light"] .btn-ghost:hover {
  border-color: var(--foam);
  color: var(--ink);
}

html[data-theme="light"] .hero { background: var(--bg); }
html[data-theme="light"] .stars { opacity: 0; }
html[data-theme="light"] .hero-glow {
  background: radial-gradient(ellipse 80% 60% at 50% 100%, rgba(58,120,144,.2), transparent);
}

/* light mode — hero ocean colour */
html[data-theme="light"] .hero-ocean .wave1 { fill: #c8dce4; }
html[data-theme="light"] .hero-ocean .wave2 { fill: #e0ecf0; }

/* theme toggle */
.theme-toggle {
  width: 36px; height: 36px;
  background: transparent;
  border: 1px solid var(--rim2);
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  clip-path: polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%);
  transition: all .3s;
  flex-shrink: 0;
}
.theme-toggle:hover { border-color: var(--foam); }
.icon-moon { display: block; }
.icon-sun  { display: none; }
html[data-theme="light"] .icon-moon { display: none; }
html[data-theme="light"] .icon-sun  { display: block; }

/* ══ AUDIO PLAYER ══ */
.audio-player {
  margin-top: 20px;
  background: rgba(255,255,255,.03);
  border: 1px solid var(--rim2);
  padding: 14px 16px;
  clip-path: polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%);
  position: relative;
}
.audio-player::before {
  content:'';position:absolute;top:0;right:0;
  border-top:10px solid var(--rim2);border-left:10px solid transparent;
}
.ap-label {
  font-size: 12px;letter-spacing: 2px;text-transform: uppercase;
  color: var(--sand);margin-bottom: 10px;
  display: flex;align-items: center;gap: 8px;
}
.ap-label::after { content:'';flex:1;height:1px;background:var(--rim); }
.ap-controls {
  display: flex;align-items: center;gap: 12px;
}
.ap-play {
  width: 36px;height: 36px;flex-shrink: 0;border-radius: 50%;
  background: var(--deep);
  border: 1px solid var(--rim2);
  cursor: pointer;color: var(--ink2);font-size: 13px;
  display: flex;align-items: center;justify-content: center;
  transition: all .2s;
}
.ap-play:hover { border-color: var(--sand); color: var(--sand); }
.ap-bar-wrap {
  flex: 1;height: 3px;background: var(--rim);
  cursor: pointer;position: relative;
}
.ap-bar-fill {
  position: absolute;left:0;top:0;bottom:0;width:0%;
  background: linear-gradient(90deg,var(--foam),var(--sand-l));
  transition: width .1s linear;pointer-events: none;
}
.ap-time {
  font-size: 12px;color: var(--ink3);letter-spacing: 1px;
  white-space: nowrap;min-width: 36px;text-align: right;
}

/* ══ 聲音採集日誌卡片（field_recordings，動態載入）══ */
.rec-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:20px;
}
.rec-card{
  background:var(--surface-card);
  border:1px solid var(--rim2);
  padding:24px;
  clip-path:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,16px 100%,0 calc(100% - 16px));
  position:relative;
}
.rec-card::before{
  content:'';position:absolute;top:0;right:0;
  border-top:16px solid var(--rim2);border-left:16px solid transparent;
}
.rec-card-location{
  font-size:12px;letter-spacing:2px;text-transform:uppercase;
  color:var(--sand);margin-bottom:10px;
}
.rec-card-title{
  font-family:'Cormorant Garamond',serif;font-style:italic;
  font-size:20px;color:var(--ink);margin-bottom:10px;line-height:1.4;
}
.rec-card-tag{
  font-size:13px;color:var(--ink2);margin-bottom:16px;
}
/* audio_label 長度不固定，容易換行，換行時裝飾線會貼到第二行文字，
   這裡改用純文字 + 底部留白，不用 ::after 那條線 */
.rec-card .ap-label{ display:block; }
.rec-card .ap-label::after{ content:none; }
.rec-loading{
  grid-column:1/-1;text-align:center;padding:40px 20px;
  color:var(--ink3);font-size:14px;letter-spacing:.3px;
}
.journal-more{ text-align:center; margin-top:48px; margin-bottom:28px; }
@media(max-width:600px){
  .rec-grid{grid-template-columns:1fr;}
}


/* ══ LANG DROPDOWN ══ */
.lang-select {
  appearance: none; -webkit-appearance: none;
  background: transparent;
  border: 1px solid var(--rim2);
  color: var(--ink2);
  font-size: 14px; font-family: 'Noto Sans TC', sans-serif;
  padding: 5px 28px 5px 10px;
  cursor: pointer;
  clip-path: polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2380b8c8' stroke-width='1.2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 8px center;
  transition: border-color .2s, color .2s;
  outline: none;
}
.lang-select:hover { border-color: var(--foam); color: var(--pale); }
.lang-select option { background: #0e1c28; color: #e8ece0; }
html[data-theme="light"] .lang-select option { background: #f2ede4; color: #1e2e30; }

