/* 台灣百和 ESG 案例頁 */

/* 標註點：半透明白圈＋綠點 */
.leadDot{position:absolute;z-index:6;width:27px;height:27px;border-radius:50%;background:rgba(255,255,255,.6);transform:translate(-50%,-50%)}
.leadDot::before{content:"";position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--green)}
.leadDot::after{content:"";position:absolute;inset:0;border-radius:50%;border:1px solid rgba(33,98,4,.55);animation:leadPulse 2.4s var(--ease) infinite}
@keyframes leadPulse{0%{transform:scale(.6);opacity:.9}100%{transform:scale(1.7);opacity:0}}

/* 開場：中央動態生態島＋引導線說明（固定比例舞台，尺寸以 cqw 等比縮放） */
.phIntroArea{--mono:'IBM Plex Mono','Noto Sans TC',monospace;--line:rgba(26,26,26,.1);position:relative;padding:0 2vw;overflow:hidden}
.introStage{position:relative;width:min(100%,calc((100svh - 10px) * 16 / 9));max-width:1800px;aspect-ratio:16/9;margin:0 auto;container-type:inline-size;color:var(--black)}
.introGrid{position:absolute;inset:0;pointer-events:none}
.introGrid .gx,.introGrid .gy{position:absolute;background:var(--line)}
.introGrid .gx{left:var(--x);top:0;bottom:0;width:1px}
.introGrid .gy{top:var(--y);left:0;right:0;height:1px}
.introGrid b{position:absolute;left:var(--x);top:var(--y);width:1.1cqw;height:1.1cqw;transform:translate(-50%,-50%)}
.introGrid b::before,.introGrid b::after{content:"";position:absolute;background:#9a9e97}
.introGrid b::before{left:50%;top:0;bottom:0;width:1px}
.introGrid b::after{top:50%;left:0;right:0;height:1px}

.introLogo{position:absolute;left:0;right:0;top:3%;width:18cqw;margin:0 auto;z-index:5}
.introLogo img{width:100%;height:auto}
.introTime{position:absolute;right:1.5%;top:2.6%;font-family:var(--mono);font-size:max(.85cqw,11px);line-height:1.35;text-align:right;letter-spacing:.06em}
.introTime span{display:block;color:var(--gray2)}

.introTitle{position:absolute;left:1.5%;top:8.5%;font-family:var(--en);font-weight:500;font-size:5.6cqw;line-height:.98;letter-spacing:-.02em;z-index:3}
.introTitle span{display:block;overflow:hidden;padding-bottom:.06em}
.introTitle i{display:block;font-style:normal}

/* 影片白底以 multiply 融入頁面背景 */
.introVisual{position:absolute;left:24%;top:16%;width:52%;aspect-ratio:1100/700;z-index:2;mix-blend-mode:multiply}
.introVideo{display:block;width:100%;height:100%;object-fit:contain}
.introLens{position:absolute;left:0;top:0;width:7.4cqw;height:7.4cqw;margin:-3.7cqw 0 0 -3.7cqw;border:1px solid rgba(26,26,26,.25);backdrop-filter:blur(7px) saturate(.6);-webkit-backdrop-filter:blur(7px) saturate(.6);background:rgba(255,255,255,.12);opacity:0;pointer-events:none;transition:opacity .4s var(--ease)}
.introVisual.is-hover .introLens{opacity:1}

.introLine{position:absolute;inset:0;width:100%;height:100%;z-index:4;overflow:visible;pointer-events:none}
.introLine polyline{fill:none;stroke:var(--black);stroke-width:1}
.introMark{position:absolute;left:var(--x);top:var(--y);z-index:5;width:1.65cqw;height:1.65cqw;transform:translate(-50%,-50%);border:1px solid var(--black);background:#fff}
.introMark::after{content:"";position:absolute;inset:26%;background:var(--black)}
.introNote{position:absolute;left:var(--x);top:var(--y);width:var(--w);z-index:4;font-family:var(--mono);font-size:max(.78cqw,11px);line-height:1.6;letter-spacing:.04em}
.introNote::before{content:attr(data-no);display:block;color:var(--green);font-weight:500}

/* 定義卡：切角外框 */
.introCard{position:absolute;left:80.5%;top:26.5%;width:17.5%;z-index:4;padding:.75cqw .75cqw 1.2cqw;background:#fff;clip-path:polygon(0 0,100% 0,100% 84%,92% 100%,0 100%);font-family:var(--mono);font-size:max(.88cqw,11px);line-height:1.5;letter-spacing:.04em}
.introCard::before{content:"";position:absolute;inset:0;border:1px solid var(--black);clip-path:inherit;pointer-events:none}
.introCard::after{content:"";position:absolute;right:0;bottom:0;width:8%;height:16%;background:linear-gradient(to top left,transparent calc(50% - .7px),var(--black) calc(50% - .7px),var(--black) calc(50% + .7px),transparent calc(50% + .7px))}
.introCard .cardHead{display:flex;justify-content:space-between;align-items:flex-start;padding:.35cqw .55cqw;background:#d9dcd6}
.introCard .cardHead b{font-family:var(--en);font-weight:600;font-size:1.65em;line-height:1.1;letter-spacing:0}
.introCard .cardHead span{font-size:.75em}
.introCard .cardLine{padding:.7cqw 0 0;margin:0 .1cqw}
.introCard .cardLine + .cardLine{margin-top:.6cqw;border-top:1px solid var(--line);color:var(--green)}

.introScope{position:absolute;left:1.5%;top:77.5%;width:14.5%;font-family:var(--mono);font-size:max(.8cqw,11px);letter-spacing:.05em}
.introScope .scopeHead{font-weight:500}
.introScope li{display:flex;gap:.8em;padding:.5cqw 0;border-bottom:1px solid rgba(26,26,26,.25)}
.introScope li span{color:var(--gray2)}

.introBox{position:absolute;left:79.5%;top:75.5%;width:19%;z-index:4;padding:1.9cqw 1.1cqw 1.1cqw;border:1px solid var(--black);background:rgba(255,255,255,.7)}
.introBox .boxTag{position:absolute;left:-1px;top:-1px;padding:.15em .5em;background:var(--black);color:#fff;font-family:var(--mono);font-size:max(.8cqw,11px);letter-spacing:.1em}
.introBox .boxTitle{font-size:max(.92cqw,13px);line-height:1.6;font-weight:500;letter-spacing:.04em}
.introBox .boxText{margin-top:.5cqw;font-size:max(.8cqw,12px);line-height:1.75;letter-spacing:.04em;color:var(--black2)}

/* 平板以下：改為上下排列，隱藏引導線 */
@media(max-width:1024px){
  .phIntroArea{padding:0 30px}
  .introStage{width:100%;aspect-ratio:auto;display:flex;flex-direction:column;padding:24px 0 64px}
  .introStage > *{position:relative !important;left:auto !important;top:auto !important;right:auto !important;width:auto !important;transform:none !important}
  .introGrid,.introLine,.introMark,.introLens{display:none}
  .introLogo{order:1;max-width:240px}
  .introTime{display:none !important}
  .introTitle{order:2;margin-top:28px;font-size:clamp(44px,10vw,88px)}
  .introVisual{order:3;margin:8px -30px 0}
  .introNote{order:4;padding:14px 0;border-top:1px solid var(--line);font-size:13px}
  .introNote br{display:none}
  .introCard{order:5;margin-top:20px;max-width:360px;padding:10px 10px 18px;font-size:13px}
  .introCard .cardHead{padding:6px 8px}
  .introCard .cardLine{padding-top:10px}
  .introBox{order:6;margin-top:28px;padding:34px 18px 18px}
  .introBox .boxTitle{font-size:15px}
  .introBox .boxText{font-size:14px;margin-top:8px}
  .introScope{order:7;margin-top:28px;font-size:13px}
  .introScope li{padding:8px 0}
}
@media(max-width:768px){
  .phIntroArea{padding:0 20px}
  .introVisual{margin:8px -20px 0}
}

/* ① 首頁主視覺 */
.phHeroArea{position:relative;z-index:2}
.heroStage{position:relative;width:100%;max-width:calc((100vh - 140px) * 16 / 9);margin:0 auto;aspect-ratio:16/9;container-type:inline-size;border-radius:var(--radius);box-shadow:0 30px 80px rgba(30,60,20,.12)}
.heroStage .heroShot{width:100%;height:100%;object-fit:cover;border-radius:var(--radius)}
.heroMask{position:absolute;left:0;right:0;background:rgba(8,20,6,.62);opacity:0;pointer-events:none}
.heroMask--nav{top:0;height:12%;border-radius:var(--radius) var(--radius) 0 0}
.heroMask--content{top:12%;bottom:0;border-radius:0 0 var(--radius) var(--radius)}
.heroStage .noteCard{--n:max(calc(100cqw / 1600),.8px);opacity:0}
.noteCard--nav{left:61.5%;top:18.5%}
.noteCard--brand{left:70.5%;top:26.5%}
.leadDot--nav{left:57.5%;top:9%}
.leadDot--brand{left:62%;top:38%}
.heroStage .leadDot{width:max(1.7cqw,20px);height:max(1.7cqw,20px)}
.heroStage .leadLine,.heroStage .leadDot{opacity:0}
@media(max-width:768px){
  .phHeroArea{padding:32px 0 60px}
  .heroStage{max-width:none;aspect-ratio:auto;box-shadow:none}
  .heroStage .heroShot{aspect-ratio:16/9;box-shadow:0 16px 40px rgba(30,60,20,.12)}
  .heroStage .noteCard{--n:1px;position:relative;left:auto;top:auto;width:auto;opacity:1;margin-top:16px}
  .heroStage .leadLine,.heroStage .leadDot,.heroMask{display:none}
}

/* ② 執行成效 */
.phStoryArea{position:relative;padding:160px 0 180px}
.storyStage{position:relative;width:100%;max-width:min(1300px,calc((100vw - 48px) / 1.2784));margin:80px auto 0;aspect-ratio:1300/880;container-type:inline-size}
.storyStage .storyPaper{position:absolute;inset:0;background:#fff;border-radius:var(--radius);box-shadow:0 30px 80px rgba(30,60,20,.08)}
.storyStage .storyShot{position:absolute;left:4%;top:7.3%;width:92%;height:auto}
.storyBlockList{position:absolute;inset:0;pointer-events:none;border-radius:var(--radius);overflow:hidden}
.storyBlock{position:absolute;top:0;height:100%;width:17.4%;background:rgba(33,98,4,.06);mix-blend-mode:multiply;transform-origin:bottom}
.storyBlock:nth-child(1){left:0}
.storyBlock:nth-child(2){left:20.69%}
.storyBlock:nth-child(3){left:41.38%}
.storyBlock:nth-child(4){left:62.08%}
.storyBlock:nth-child(5){left:82.62%}
.storyStage .noteCard{--n:max(calc(100cqw / 1300),.8px);width:calc(301 * var(--n))}
.storyStage .leadDot{width:max(2.08cqw,20px);height:max(2.08cqw,20px)}
.noteCard--left{left:-13.65%;top:56%}
.noteCard--right{left:48%;top:72%}
.leadDot--left{left:25%;top:70%}
.leadDot--right{left:59%;top:58%}
@media(max-width:1180px){
  .storyStage{max-width:none;aspect-ratio:auto;padding-top:calc(67.7% + 24px);display:grid;grid-template-columns:1fr 1fr;gap:16px}
  .storyStage .storyPaper,.storyBlockList{bottom:auto;aspect-ratio:1300/880}
  .storyStage .leadLine,.storyStage .leadDot{display:none}
  .storyStage .noteCard{--n:1px;position:relative;top:auto;left:auto;width:auto}
}
@media(max-width:640px){
  .phStoryArea{padding:100px 0 80px}
  .storyStage{grid-template-columns:1fr;margin-top:48px}
}

/* 數據散佈：中央標題，四周錯落卡片 */
.phScatterArea{position:relative;padding:20px 0 160px}
.scStage{--dark:#16310b;--lime:#d3eda6;--on:#a9dc6c;position:relative;width:100%;aspect-ratio:1470/1060;container-type:inline-size}
.scItem{position:absolute;left:var(--l);top:var(--t);width:var(--w);z-index:2}
.scCenter{position:absolute;left:50%;top:50%;width:46%;transform:translate(-50%,-50%);text-align:center;z-index:1}
.scTag{display:inline-block;padding:.25em .7em;background:var(--lime);color:var(--green);font-family:var(--en);font-weight:600;font-size:max(.85cqw,11px);letter-spacing:.14em}
.scTitle{margin-top:1.3cqw;font-size:max(2.45cqw,24px);line-height:1.35;font-weight:500;letter-spacing:.06em;color:var(--black)}
.scTitle span{display:inline-block}
.scText{margin-top:1.5cqw;font-size:max(1.02cqw,14px);line-height:1.9;letter-spacing:.05em;color:var(--black2)}

.scPhoto{border-radius:max(1cqw,12px);overflow:hidden;box-shadow:0 1.6cqw 3.4cqw rgba(20,50,10,.12)}
.scPhoto img{width:100%;height:auto}
.scData--line{background:#1e3d10;outline:1px solid rgba(169,220,108,.35);outline-offset:-1px}

.scPill{display:flex;align-items:center;gap:.6em;padding:.75em 1.3em;background:#fff;border-radius:max(.7cqw,8px);font-size:max(1cqw,13px);letter-spacing:.08em;color:var(--black);white-space:nowrap;box-shadow:0 1cqw 2.4cqw rgba(20,50,10,.14);z-index:3}
.scCheck{position:relative;flex:none;width:1.5em;height:1.5em;border-radius:50%;background:var(--on)}
.scCheck::after{content:"";position:absolute;left:.52em;top:.33em;width:.32em;height:.6em;border:solid var(--dark);border-width:0 2px 2px 0;transform:rotate(45deg)}

.scData,.scLime{padding:max(1.2cqw,14px) max(1.3cqw,14px) max(1.3cqw,14px);border-radius:max(1cqw,12px);color:#fff;background:var(--dark);box-shadow:0 1.6cqw 3.4cqw rgba(20,50,10,.18);z-index:3}
.scLime{background:var(--lime);color:var(--dark)}
.scLabel{font-size:max(.8cqw,11px);letter-spacing:.08em;opacity:.75;line-height:1.5}
.scLabel span{display:block;margin-top:.2em;font-family:var(--en);font-size:1.4em;font-weight:600;opacity:1;color:#fff}
.scLabel--foot{margin-top:.3em}
.scNum{margin-top:max(1.6cqw,16px);font-family:var(--en);font-size:max(2.5cqw,26px);line-height:1;font-weight:500;letter-spacing:.02em}
.scNum small{margin-left:.25em;font-family:var(--sans);font-size:.36em;letter-spacing:.06em;opacity:.8}
.scLime .scNum{margin-top:max(1.1cqw,12px)}
.scBars{display:flex;align-items:flex-end;gap:max(.22cqw,3px);height:max(2.6cqw,28px)}
.scBars i{width:max(.55cqw,6px);height:var(--h);background:rgba(255,255,255,.16);border-radius:1px;transform-origin:bottom}
.scBars i.is-on{background:var(--on)}
.scBars--wide{margin-top:max(1cqw,10px)}
.scBars + .scNum{margin-top:max(1cqw,12px)}
.scData > .scBars:last-child{position:absolute;right:max(1.3cqw,14px);bottom:max(1.4cqw,14px)}

.scGrey{padding:max(1.2cqw,14px);background:#ebebe7;border-radius:max(1cqw,12px)}
.scGrey img{width:100%;height:auto;mix-blend-mode:multiply}
.scGreyCap{display:flex;justify-content:space-between;margin-top:max(.9cqw,10px);font-size:max(.8cqw,11px);letter-spacing:.08em;color:var(--black2)}
.scGreyCap span{color:var(--green)}

@media(max-width:768px){
  .phScatterArea{padding:0 0 100px}
  .scStage{aspect-ratio:auto;display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:dense;gap:12px}
  .scItem{position:relative;left:auto;top:auto;width:auto}
  .scCenter{position:static;transform:none;width:auto;grid-column:1/-1;margin-bottom:28px}
  .scText{text-align:left}
  .scText br{display:none}
  .scPill{display:none}
  .scPhoto--full,.scGrey{grid-column:1/-1}
  .scPhoto img{height:100%;object-fit:cover}
  .scData > .scBars:last-child{position:static;margin-top:12px}
}

/* ③ ESG 堆疊卡片 */
.phEsgArea{position:relative;padding:40px 0 60px}
.esgPin{position:relative;padding:20px 0}
.esgStage{display:grid;grid-template-columns:220px 1fr;gap:56px;align-items:center;max-width:1400px;margin:70px auto 0}
.esgIndex{display:flex;flex-direction:column;gap:28px;counter-reset:esg}
.esgIndex li{position:relative;padding-left:22px;color:var(--gray2);transition:color .5s var(--ease)}
.esgIndex li::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:2px;background:#dfe3db;transition:background .5s var(--ease)}
.esgIndex b{display:block;font-family:var(--en);font-size:44px;line-height:1;font-weight:600}
.esgIndex span{display:block;margin-top:8px;font-family:var(--en);font-size:14px;letter-spacing:.06em}
.esgIndex em{display:block;margin-top:4px;font-size:15px;letter-spacing:.08em}
.esgIndex li.is-active{color:var(--green)}
.esgIndex li.is-active::before{background:var(--green)}
.esgDeck{position:relative;aspect-ratio:1525/626;margin-bottom:56px;container-type:inline-size}
.esgCard{position:absolute;left:0;top:0;width:100%;border-radius:2.1cqw;overflow:hidden;box-shadow:0 -10px 40px rgba(30,60,20,.10);transform-origin:50% 0}
.esgShade{position:absolute;inset:0;background:#0b1a06;opacity:0;pointer-events:none}
.esgCard img{width:100%;height:auto}
@media(max-width:1024px){
  .esgStage{grid-template-columns:1fr;gap:28px}
  .esgIndex{flex-direction:row;justify-content:space-between;gap:12px}
  .esgIndex li{flex:1;padding-left:14px}
  .esgIndex b{font-size:32px}
  .esgIndex em{display:none}
}
@media(max-width:768px){
  .esgStage{margin-top:44px}
  .esgIndex span{font-size:12px}
  .esgDeck{margin-bottom:40px}
}

/* ④ 細節互動 */
.phFeatureArea{position:relative;padding:120px 0 160px}
.featList{display:grid;grid-template-columns:repeat(2,1fr);gap:80px 28px;max-width:1546px;margin:80px auto 0}
.featCard .cardImg{position:relative;aspect-ratio:16/9;background:#fff;overflow:hidden;border-radius:var(--radius);box-shadow:0 20px 60px rgba(30,60,20,.12)}
.featCard .cardImg img{width:100%;height:100%;object-fit:cover;transform:scale(1.08);transition:transform 1.2s var(--ease)}
.featCard:hover .cardImg img{transform:scale(1.02) !important}
.featCard .cardName{display:flex;align-items:center;gap:14px;margin-top:32px;font-size:17px;letter-spacing:.1em;font-weight:500}
.featCard .cardName::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--green)}
.featCard .cardName::after{content:"";flex:1;height:1px;background:rgba(0,0,0,.12)}
@media(max-width:768px){
  .phFeatureArea{padding:80px 0 100px}
  .featList{grid-template-columns:1fr;gap:48px;margin-top:48px}
  .featCard .cardName{margin-top:20px}
}

/* ⑤ 客製化內頁 */
.phPageArea{position:relative;padding:60px 0 140px}
.pageSwiper{margin-top:80px;padding:20px 0 50px;overflow:visible}
.pageSwiper .pageItem{width:clamp(280px,46vw,759px);aspect-ratio:759/486;user-select:none}
.pageSwiper .pageItem img{width:100%;height:100%;object-fit:cover;object-position:top;background:#fff;border-radius:var(--radius);box-shadow:0 24px 60px rgba(30,60,20,.14);pointer-events:none;transform:scale(.9);transition:transform .8s var(--ease)}
.pageSwiper .swiper-slide-active img{transform:scale(1)}
.pageSwiper.is-grabbing .pageItem img{transform:scale(.86)}
@media(hover:hover) and (pointer:fine){.pageSwiper,.pageSwiper *{cursor:none}}
.pageProgress{max-width:320px;height:2px;margin:10px auto 0;background:rgba(0,0,0,.1);border-radius:2px;overflow:hidden}
.pageProgress i{display:block;height:100%;background:var(--green);transform-origin:left;transform:scaleX(.1667);transition:transform .6s var(--ease)}
@media(max-width:768px){.pageSwiper{margin-top:48px}.pageSwiper .pageItem{width:80vw}}

/* 結尾 */
.caseEndArea{padding:60px 0 140px;text-align:center}
.caseEndArea .logo{margin:0 auto;width:280px;height:auto}
.caseEndArea .text{margin-top:28px;font-size:16px;letter-spacing:.2em;color:var(--black2)}
.caseEndArea .btnBox{display:flex;justify-content:center;gap:16px;margin-top:44px;flex-wrap:wrap}

/* iPhone Safari：改用實際可見高度 svh */
@supports (height:100svh){
  .heroStage{max-width:calc((100svh - 140px) * 16 / 9)}
}
@media(max-width:768px){
  @supports (height:100svh){.heroStage{max-width:none}}
}
