/* =========================================================================
   E.DITING04 · Eason — 極簡電影感 / 美式質感
   ========================================================================= */

:root{
  --bg:        #0A0A0B;
  --bg-soft:   #131316;
  --bg-card:   #161619;
  --fg:        #ECE8E1;   /* 暖白 */
  --fg-dim:    #9A968D;   /* 次要灰 */
  --fg-faint:  #5E5B55;
  --line:      rgba(236,232,225,0.12);
  --line-soft: rgba(236,232,225,0.06);
  --accent:    #C2A878;   /* 暖砂金，少量點綴 */

  --serif:    "Cormorant Garamond", "Noto Serif TC", Georgia, serif;
  --serif-tc: "Noto Serif TC", "Cormorant Garamond", serif;
  --sans:     "Noto Sans TC", system-ui, -apple-system, "Helvetica Neue", sans-serif;

  --pad: clamp(20px, 6vw, 120px);
  --maxw: 1320px;
}

*{ box-sizing:border-box; margin:0; padding:0; }

html{ scroll-behavior:smooth; }

body{
  background:var(--bg);
  color:var(--fg);
  font-family:var(--sans);
  font-weight:300;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}

a{ color:inherit; text-decoration:none; }

::selection{ background:var(--accent); color:#0A0A0B; }

/* ---------- 共用 ---------- */
.section__head{
  display:flex; align-items:center; gap:16px;
  padding:0 var(--pad);
  margin-bottom:28px;
}
.section__index{
  font-family:var(--serif); font-size:18px; color:var(--accent);
  letter-spacing:.04em;
}
.section__label{
  font-size:11px; letter-spacing:.32em; color:var(--fg-dim);
  font-weight:500;
}
.section__head::after{
  content:""; flex:1; height:1px; background:var(--line);
}

.btn{
  display:inline-flex; align-items:baseline; gap:10px;
  font-size:14px; letter-spacing:.06em;
  padding:14px 26px; border-radius:2px;
  transition:.35s cubic-bezier(.2,.7,.2,1);
  white-space:nowrap;
}
.btn span{ font-size:10px; letter-spacing:.24em; color:inherit; opacity:.55; }
.btn--solid{ background:var(--fg); color:#0A0A0B; }
.btn--solid:hover{ background:var(--accent); transform:translateY(-2px); }
.btn--ghost{ border:1px solid var(--line); color:var(--fg); }
.btn--ghost:hover{ border-color:var(--fg); transform:translateY(-2px); }

/* ===================== 導覽列 ===================== */
.nav{
  position:fixed; inset:0 0 auto 0; z-index:50;
  display:flex; align-items:center; justify-content:space-between;
  padding:20px var(--pad);
  transition:background .4s ease, padding .4s ease, border-color .4s ease;
  border-bottom:1px solid transparent;
}
.nav.is-scrolled{
  background:rgba(10,10,11,.78);
  backdrop-filter:saturate(140%) blur(14px);
  -webkit-backdrop-filter:saturate(140%) blur(14px);
  padding:14px var(--pad);
  border-bottom:1px solid var(--line-soft);
}
.nav__brand{ display:flex; align-items:baseline; gap:7px; }
.nav__mark{ font-size:16px; letter-spacing:.18em; font-weight:500; }
.nav__sub{ font-size:10px; letter-spacing:.32em; color:var(--fg-dim); }
.nav__links{ display:flex; align-items:center; gap:34px; }
.nav__links a{
  font-size:14px; letter-spacing:.04em; color:var(--fg); position:relative;
}
.nav__links a span{ font-size:9px; letter-spacing:.22em; color:var(--fg-faint); margin-left:4px; }
.nav__links a:not(.nav__ig)::after{
  content:""; position:absolute; left:0; bottom:-6px; width:0; height:1px;
  background:var(--accent); transition:width .35s ease;
}
.nav__links a:not(.nav__ig):hover::after{ width:100%; }
.nav__ig{ color:var(--fg-dim) !important; }
.nav__ig:hover{ color:var(--fg) !important; }
.nav__toggle{
  display:none; flex-direction:column; gap:6px; background:none; border:0;
  cursor:pointer; padding:6px;
}
.nav__toggle span{ width:26px; height:1.5px; background:var(--fg); transition:.3s; }

/* ===================== Hero ===================== */
.hero{
  position:relative; min-height:100svh;
  display:flex; flex-direction:column; justify-content:center;
  padding:0 var(--pad);
  overflow:hidden;
}
.hero__bg{
  position:absolute; inset:0;
  background:
    radial-gradient(120% 90% at 78% 8%, rgba(194,168,120,.10), transparent 55%),
    radial-gradient(100% 80% at 12% 100%, rgba(70,80,110,.14), transparent 60%),
    linear-gradient(180deg, #0d0d10, #0A0A0B 60%);
}
/* 主視覺背景：換圖就換 images/hero.jpg，其他都不用動。
   上面那層黑色漸層是「壓字用」的，不能拿掉——
   這張夕陽照中間帶亮度 157–222，白色的 EASON 直接壓上去會糊掉。
   壓到 78% 之後底色剩 35–50，跟暖白字的對比約 10:1。
   下緣故意只壓 42%，讓剪影那段看得清楚（那裡本來就暗）。 */
.hero__bg::after{
  content:""; position:absolute; inset:0;
  background:
    linear-gradient(180deg,
      rgba(10,10,11,.66) 0%,
      rgba(10,10,11,.80) 30%,
      rgba(10,10,11,.78) 64%,
      rgba(10,10,11,.42) 100%),
    url("images/hero.jpg") center/cover no-repeat;
  filter:saturate(.6);
}
.hero__grain{
  position:absolute; inset:0; pointer-events:none; opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.hero__inner{ position:relative; max-width:var(--maxw); }
.hero__kicker{
  font-size:11px; letter-spacing:.34em; color:var(--accent);
  margin-bottom:26px; font-weight:500;
}
.hero__title{ line-height:.92; margin-bottom:22px; }
.hero__name{
  font-family:var(--serif); font-weight:600;
  font-size:clamp(72px, 17vw, 240px);
  letter-spacing:.02em; display:block;
}
.hero__tagline{
  font-family:var(--serif-tc); font-weight:500;
  font-size:clamp(18px, 2.6vw, 30px); color:var(--fg);
  margin-bottom:18px; letter-spacing:.02em;
}
.hero__desc{ color:var(--fg-dim); font-size:clamp(14px,1.4vw,16px); margin-bottom:40px; }
.hero__cta{ display:flex; gap:14px; flex-wrap:wrap; }

.hero__scroll{
  position:absolute; left:var(--pad); bottom:34px;
  display:flex; align-items:center; gap:12px; color:var(--fg-dim);
}
.hero__scroll span{
  width:1px; height:38px; background:var(--line); position:relative; overflow:hidden;
}
.hero__scroll span::after{
  content:""; position:absolute; inset:0; background:var(--accent);
  animation:scrollLine 2.2s ease-in-out infinite;
}
.hero__scroll small{ font-size:10px; letter-spacing:.3em; }
@keyframes scrollLine{
  0%{ transform:translateY(-100%); } 50%{ transform:translateY(0); } 100%{ transform:translateY(100%); }
}

/* ===================== 關於 ===================== */
.about{ padding:clamp(80px,12vh,160px) 0; }
.about__grid{
  display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,6vw,90px);
  padding:0 var(--pad); align-items:start;
}
.about__heading{
  font-family:var(--serif-tc); font-weight:600;
  font-size:clamp(28px,4vw,52px); line-height:1.28; letter-spacing:.01em;
}
.about__intro{ font-size:clamp(15px,1.5vw,18px); color:var(--fg-dim); margin-bottom:44px; max-width:46ch; }
.about__list{ list-style:none; display:flex; flex-direction:column; }
.about__list li{
  display:flex; gap:22px; padding:22px 0; border-top:1px solid var(--line);
}
.about__list li:last-child{ border-bottom:1px solid var(--line); }
.about__num{ font-family:var(--serif); color:var(--accent); font-size:16px; padding-top:4px; }
.about__list h3{ font-size:13px; letter-spacing:.06em; font-weight:500; margin-bottom:4px; }
.about__list p{ color:var(--fg-dim); font-size:15px; }

/* ===================== 服務 =====================
   刻意極簡：名稱、一句話、價格。條款細節在 Notion，
   搬進來這個網站就會變成字牆。 */
.svc{ padding:clamp(40px,6vh,80px) 0; }
.svc__heading{
  font-family:var(--serif-tc); font-weight:600;
  font-size:clamp(30px,5vw,64px); padding:0 var(--pad); margin-bottom:40px;
}
.svc__grid{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:clamp(14px,1.6vw,22px); padding:0 var(--pad);
}
.svc__card{
  display:flex; flex-direction:column; gap:14px;
  padding:32px 28px 30px;
  border:1px solid var(--line); border-radius:4px;
  background:linear-gradient(180deg, rgba(236,232,225,.02), transparent);
  transition:border-color .4s ease, transform .4s cubic-bezier(.2,.7,.2,1);
}
.svc__card:hover{ border-color:var(--fg-dim); transform:translateY(-3px); }
/* 主推的那張。只用邊框和一條頂線區分，不加底色——底色會太搶 */
.svc__card.is-accent{ border-color:rgba(194,168,120,.45); }
.svc__card.is-accent::before{
  content:""; height:2px; background:var(--accent);
  margin:-32px -28px 6px; border-radius:4px 4px 0 0;
}
.svc__no{ font-family:var(--serif); font-size:15px; color:var(--accent); }
.svc__name{ font-family:var(--serif-tc); font-weight:600; font-size:clamp(19px,2vw,24px); }
.svc__line{ color:var(--fg-dim); font-size:14px; line-height:1.8; flex:1; }
/* 目前沒有用到——價格暫時從網站上拿掉了。樣式留著，之後要加回來不用重寫。 */
.svc__price{
  font-size:15px; letter-spacing:.04em; color:var(--fg);
  padding-top:16px; border-top:1px solid var(--line-soft);
}
.svc__note{
  display:inline-block; margin:26px var(--pad) 0;
  font-size:13px; letter-spacing:.04em; color:var(--fg-dim);
  border-bottom:1px solid var(--line); padding-bottom:3px;
  transition:color .35s ease, border-color .35s ease;
}
.svc__note:hover{ color:var(--fg); border-color:var(--accent); }

/* ===================== 流程 ===================== */
.flow{ padding:clamp(60px,10vh,120px) 0 clamp(40px,6vh,70px); }
.flow__list{
  list-style:none; display:grid; grid-template-columns:repeat(4,1fr);
  gap:clamp(14px,2vw,30px); padding:0 var(--pad);
}
.flow__item{ display:flex; gap:14px; border-top:1px solid var(--line); padding-top:18px; }
.flow__no{ font-family:var(--serif); color:var(--accent); font-size:15px; }
.flow__name{ font-size:14px; letter-spacing:.05em; font-weight:500; margin-bottom:6px; }
.flow__line{ color:var(--fg-dim); font-size:13px; line-height:1.8; }

/* ===================== 作品 ===================== */
.work{ padding:clamp(40px,6vh,80px) 0 clamp(80px,12vh,160px); }
.work__heading{
  font-family:var(--serif-tc); font-weight:600;
  font-size:clamp(30px,5vw,64px); padding:0 var(--pad); margin-bottom:36px;
}
.work__heading--2{ margin-top:96px; }
.work__lead{
  padding:0 var(--pad); margin:-18px 0 40px; max-width:56ch;
  color:var(--fg-dim); line-height:1.9;
}

/* ===== 前後對照 =====
   直式 9:16，所以縮圖比一般卡片高。三欄在桌機剛好，手機收成一欄。 */
.ba__grid{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:clamp(16px,2vw,30px); padding:0 var(--pad); margin-bottom:24px;
}
.ba{
  cursor:pointer; opacity:0; transform:translateY(26px);
  transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1);
}
.ba.in{ opacity:1; transform:none; }
.ba__thumb{
  position:relative; overflow:hidden; border-radius:4px;
  aspect-ratio:9/12;                 /* 不用滿版 9:16，太瘦會壓縮下面的文字 */
  background:var(--bg-card); border:1px solid var(--line-soft);
}
.ba__thumb img{
  width:100%; height:100%; object-fit:cover; display:block;
  transition:transform .8s cubic-bezier(.2,.7,.2,1), filter .6s ease;
  filter:grayscale(.3) saturate(.6) brightness(.72) contrast(1.03);
}
.ba:hover .ba__thumb img{
  transform:scale(1.05);
  filter:grayscale(0) saturate(1) brightness(1) contrast(1);
}
.ba__title{
  font-family:var(--serif-tc); font-weight:600; font-size:19px;
  margin:16px 0 7px;
}
.ba__desc{ font-size:13px; line-height:1.85; color:var(--fg-dim); }

.work__filters{ display:flex; gap:10px; flex-wrap:wrap; padding:0 var(--pad); margin-bottom:42px; }
.filter{
  background:none; border:1px solid var(--line); color:var(--fg-dim);
  font-family:var(--sans); font-size:13px; letter-spacing:.04em;
  padding:9px 20px; border-radius:100px; cursor:pointer; transition:.3s;
}
.filter:hover{ color:var(--fg); border-color:var(--fg-dim); }
.filter.is-active{ background:var(--fg); color:#0A0A0B; border-color:var(--fg); }

.work__grid{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:clamp(14px,1.6vw,24px); padding:0 var(--pad);
}

.card{
  position:relative; cursor:pointer;
  opacity:0; transform:translateY(26px);
  transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1);
}
.card.in{ opacity:1; transform:none; }
.card.is-featured{ grid-column:span 2; }

/* 縮圖（乾淨，不疊任何文字） */
.card__thumb{
  position:relative; overflow:hidden; border-radius:4px;
  aspect-ratio:16/10; background:var(--bg-card); border:1px solid var(--line-soft);
}
.card.is-featured .card__thumb{ aspect-ratio:16/9; }
.card__media{ position:absolute; inset:0; }
.card__media img{
  width:100%; height:100%; object-fit:cover; display:block;
  transition:transform .8s cubic-bezier(.2,.7,.2,1), filter .6s ease;
  /* 預設：壓暗＋降飽和，整個網格更統一；滑過才回到彩色 */
  filter:grayscale(.3) saturate(.6) brightness(.72) contrast(1.03);
}
.card:hover .card__media img{
  transform:scale(1.05);
  filter:grayscale(0) saturate(1) brightness(1) contrast(1);
}
.card__media--ph{ width:100%; height:100%; }     /* 漸層佔位 */

/* 文字資訊（放在圖片下方） */
.card__info{ padding:16px 2px 0; }
.card__cat{
  display:block; font-size:10px; letter-spacing:.22em; color:var(--accent);
  text-transform:uppercase; margin-bottom:9px;
}
/* 客戶名。訪客看不到「這是接案做的」就會當成自主練習，所以一定要標出來 */
.card__client{
  font-style:normal; color:var(--fg-dim); letter-spacing:.14em;
}
.card__client::before{ content:"　·　"; color:var(--fg-faint); }
.card__title{
  font-family:var(--serif-tc); font-weight:600;
  font-size:clamp(16px,1.5vw,21px); line-height:1.35; margin-bottom:5px;
  transition:color .3s ease;
}
.card:hover .card__title{ color:var(--accent); }
.card__role{ font-size:12px; color:var(--fg-dim); letter-spacing:.03em; }

.card__play{
  position:absolute; top:16px; right:16px; z-index:3;
  width:40px; height:40px; border-radius:50%;
  border:1px solid rgba(236,232,225,.55); color:var(--fg);
  display:grid; place-items:center; font-size:12px;
  background:rgba(10,10,11,.25); backdrop-filter:blur(4px); transition:.35s;
  opacity:0; transform:scale(.85);
}
.card:hover .card__play{ opacity:1; transform:scale(1); }
.card__play.is-soon{ font-size:9px; letter-spacing:.1em; width:auto; height:auto; padding:6px 12px; border-radius:100px; }

/* ===================== 合作 ===================== */
.contact{ padding:clamp(80px,14vh,180px) 0; text-align:center; }
.contact .section__head{ justify-content:center; }
.contact .section__head::after{ display:none; }
.contact .section__head::before{ content:""; flex:none; }
.contact__heading{
  font-family:var(--serif-tc); font-weight:600;
  font-size:clamp(34px,6vw,76px); line-height:1.18; margin-bottom:18px;
}
.contact__sub{ color:var(--fg-dim); font-size:clamp(15px,1.6vw,19px); margin-bottom:54px; }
.contact__links{
  display:flex; justify-content:center; gap:0; flex-wrap:wrap;
  max-width:880px; margin:0 auto 50px; padding:0 var(--pad);
}
.contact__item{
  flex:1 1 240px; padding:26px 20px; border:1px solid var(--line-soft);
  margin:-0.5px; display:flex; flex-direction:column; gap:8px; transition:.3s;
}
a.contact__item:hover{ background:var(--bg-soft); }
.contact__k{ font-size:11px; letter-spacing:.24em; color:var(--fg-faint); text-transform:uppercase; }
.contact__v{ font-size:16px; color:var(--fg); }
.contact__cta{ margin-top:6px; }

/* ===================== 頁尾 ===================== */
.footer{
  display:flex; justify-content:space-between; align-items:center;
  padding:30px var(--pad); border-top:1px solid var(--line-soft);
  font-size:12px; color:var(--fg-dim); letter-spacing:.04em;
}
.footer__brand{ letter-spacing:.22em; }

/* ===================== 影片燈箱 ===================== */
.lightbox{
  position:fixed; inset:0; z-index:100; display:none;
  align-items:center; justify-content:center; padding:5vw;
  background:rgba(6,6,8,.92); backdrop-filter:blur(6px);
}
.lightbox.is-open{ display:flex; }
.lightbox__frame{ width:min(1000px,100%); aspect-ratio:16/9; }
.lightbox__frame iframe{ width:100%; height:100%; border:0; border-radius:4px; }
/* 自架影片是直式 9:16，套 16/9 會上下留一大片黑邊。
   放影片時改成讓影片自己決定尺寸，用高度上限收住。 */
.lightbox__frame.is-video{ width:auto; aspect-ratio:auto; }
/* max-width 放到 1000，讓橫式影片也放得下。
   直式不會因此變寬——它先被 max-height 卡住（1080x1920 在 86vh 時只有約 435px 寬）。 */
.lightbox__frame.is-video video{
  display:block; max-height:86vh; max-width:min(1000px,92vw);
  border-radius:4px; background:#000;
}
.lightbox__close{
  position:absolute; top:24px; right:30px; background:none; border:0;
  color:var(--fg); font-size:22px; cursor:pointer; opacity:.8;
}
.lightbox__close:hover{ opacity:1; }

/* ===================== 動態進場 ===================== */
.reveal{ opacity:0; transform:translateY(24px); transition:opacity .9s ease, transform .9s cubic-bezier(.2,.7,.2,1); }
.reveal.in{ opacity:1; transform:none; }

/* ===================== 響應式 ===================== */
@media (max-width:900px){
  .nav__links{
    position:fixed; inset:0 0 0 auto; width:min(78vw,340px);
    flex-direction:column; align-items:flex-start; justify-content:center;
    gap:28px; padding:0 40px; background:var(--bg-soft);
    border-left:1px solid var(--line);
    transform:translateX(100%); transition:transform .4s cubic-bezier(.2,.7,.2,1);
  }
  .nav__links.is-open{ transform:none; }
  .nav__links a{ font-size:22px; font-family:var(--serif-tc); }
  .nav__links a span{ display:block; margin:4px 0 0; }
  .nav__toggle{ display:flex; z-index:60; }
  .nav__toggle.is-open span:first-child{ transform:translateY(3.7px) rotate(45deg); }
  .nav__toggle.is-open span:last-child{ transform:translateY(-3.7px) rotate(-45deg); }

  .about__grid{ grid-template-columns:1fr; gap:40px; }
  .work__grid{ grid-template-columns:repeat(2,1fr); }
  .card.is-featured{ grid-column:span 2; }
  .ba__grid{ grid-template-columns:repeat(3,1fr); gap:14px; }
  .ba__desc{ font-size:12px; }
  .svc__grid{ grid-template-columns:1fr; }
  .svc__card{ padding:26px 24px; }
  .svc__card.is-accent::before{ margin:-26px -24px 4px; }
  .flow__list{ grid-template-columns:repeat(2,1fr); row-gap:26px; }
}
@media (max-width:560px){
  .work__grid{ grid-template-columns:1fr; }
  .card, .card.is-featured{ grid-column:span 1; }
  .card__thumb, .card.is-featured .card__thumb{ aspect-ratio:16/9; }
  /* 手機一欄。直式縮圖佔整個寬度會太高，收成 9:11 */
  .ba__grid{ grid-template-columns:1fr; }
  .ba__thumb{ aspect-ratio:9/11; }
  .work__heading--2{ margin-top:64px; }
  .flow__list{ grid-template-columns:1fr; row-gap:22px; }
  .contact__cta{ flex-direction:column; align-items:flex-start; }
  .footer{ flex-direction:column; gap:10px; }
  .hero__scroll{ display:none; }
}

@media (prefers-reduced-motion:reduce){
  *{ animation:none !important; transition:none !important; }
  .card,.reveal{ opacity:1; transform:none; }
}
