/* ==========================================================================
   Metamax — pages.css (shared by services.html / about.html / work.html)
   Builds only on site.css tokens. No raw colours.
   ========================================================================== */

/* ---------- shared bits ---------- */
.ph{display:inline-block;font-family:var(--fm);font-size:9px;letter-spacing:.14em;text-transform:uppercase;padding:2px 6px;border:1px solid var(--line2);color:var(--ink3);border-radius:2px;vertical-align:middle;margin-left:8px;line-height:1.4}
.sec-h2{font-size:clamp(32px,4.2vw,68px);font-weight:800;letter-spacing:-.04em;line-height:1;margin-bottom:clamp(20px,2.4vw,32px)}
.sec-h2 em{font-style:normal;color:var(--acc)}
.body{color:var(--ink2);font-size:16px;line-height:1.8;max-width:60ch}
.body p{margin:0 0 16px}
.body p:last-child{margin-bottom:0}
.body strong{color:var(--ink);font-weight:500}
.lab{font-family:var(--fm);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink3)}
.cta-sec{padding-top:0}

/* ruled table (deliverables, comparison) */
.rt{border-top:1.5px solid var(--ink);margin-top:clamp(24px,3vw,40px)}
.rt div{display:grid;grid-template-columns:120px 1fr;gap:14px;padding:12px 0;border-bottom:1px solid var(--line);font-size:14px;color:var(--ink);line-height:1.55}
.rt div span:first-child{font-family:var(--fm);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);padding-top:4px}
.rt.c3 div{grid-template-columns:120px 1fr 1fr}
.rt .hd{font-family:var(--fm);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink2);border-bottom:1px solid var(--line2)}
.rt .hd span:last-child{color:var(--acc)}
@media (max-width:640px){
  .rt div{grid-template-columns:1fr;gap:4px}
  .rt.c3 div{grid-template-columns:1fr}
  .rt.c3 div span:nth-child(3){color:var(--acc)}
  .rt.c3 div span:nth-child(3)::before{content:"整合 · ";font-family:var(--fm);font-size:10px;letter-spacing:.14em;color:var(--ink3)}
  .rt.c3 div span:nth-child(2)::before{content:"單點 · ";font-family:var(--fm);font-size:10px;letter-spacing:.14em;color:var(--ink3)}
  .rt.c3 .hd{display:none}
}

/* ========================================================================
   services.html
   ======================================================================== */
.sidx{position:sticky;top:calc(var(--navh) + env(safe-area-inset-top,0px));z-index:20;background:var(--nav-bg);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.sidx .wrap{display:flex;gap:0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
.sidx .wrap::-webkit-scrollbar{display:none}
.sidx a{flex:none;display:flex;align-items:center;gap:10px;height:46px;padding-inline:16px;font-family:var(--fm);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);border-right:1px solid var(--line);position:relative;transition:color .2s;white-space:nowrap}
.sidx a:first-child{padding-left:0}
.sidx a:last-child{border-right:0}
.sidx a b{font-weight:500;color:var(--ink2)}
.sidx a::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--acc);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.sidx a:first-child::after{left:0}
.sidx a:hover{color:var(--ink)}
.sidx a.on{color:var(--acc)}
.sidx a.on b{color:var(--acc)}
.sidx a.on::after{transform:scaleX(1)}

.svc{padding-block:clamp(64px,8vw,120px);border-top:1px solid var(--line);scroll-margin-top:calc(120px + env(safe-area-inset-top,0px))}
.svc:first-of-type{border-top:0}
.svc .g12{row-gap:36px;align-items:start}
.svc .no{font-family:var(--fd);font-weight:800;font-size:clamp(64px,9vw,140px);letter-spacing:-.06em;line-height:.85;color:var(--ink);display:flex;align-items:baseline;gap:.08em;margin-bottom:clamp(22px,3vw,40px)}
.svc .no small{font-family:var(--fm);font-weight:400;font-size:11px;letter-spacing:.16em;color:var(--acc);text-transform:uppercase;transform:translateY(-1.2em)}
.svc h2{font-size:clamp(30px,3.6vw,56px);font-weight:800;letter-spacing:-.04em;line-height:1.02;margin-bottom:18px}
.svc .tags{font-family:var(--fm);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink3);margin-bottom:clamp(22px,2.6vw,36px)}
.svc .fit{margin-top:clamp(24px,3vw,36px);display:grid;grid-template-columns:120px 1fr;gap:14px;padding:16px 0 0;border-top:1.5px solid var(--ink);font-size:15px;color:var(--ink);line-height:1.6}
.svc .fit span:first-child{font-family:var(--fm);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--acc);padding-top:4px}
.svc .aside{grid-column:9/-1;position:sticky;top:calc(140px + env(safe-area-inset-top,0px))}
.svc .aside .mu-card{height:240px;filter:drop-shadow(0 18px 32px rgba(15,17,19,.14))}
.svc .aside .cap{margin-top:12px;display:flex;justify-content:space-between;font-family:var(--fm);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3)}
.svc .aside .cap b{color:var(--acc);font-weight:500}
.svc .txt{grid-column:1/span 7}
@media (max-width:1100px){.svc .txt{grid-column:1/span 7}.svc .aside{grid-column:8/-1}}
@media (max-width:860px){
  .svc .txt,.svc .aside{grid-column:1/-1}
  .svc .aside{position:static;max-width:360px}
  .svc .fit{grid-template-columns:1fr;gap:6px}
  .svc{scroll-margin-top:calc(116px + env(safe-area-inset-top,0px))}
}
@media (max-width:640px){.rt div,.svc .fit{grid-template-columns:1fr}}

/* ========================================================================
   about.html
   ======================================================================== */
.stmt-big{font-family:var(--fd);font-size:clamp(24px,2.6vw,40px);font-weight:600;letter-spacing:-.03em;line-height:1.3;max-width:26em;text-wrap:pretty}
.stmt-big em{font-style:normal;color:var(--acc)}
.hub{position:relative;border:1px solid var(--line);background:var(--surf);padding:clamp(20px,3vw,44px) clamp(16px,2.6vw,40px) 48px;margin-top:clamp(28px,3vw,44px);overflow:hidden}
.hub-grid{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1.1fr 1fr;grid-template-areas:"l1 h r1" "l2 h r2" "l3 h r3";gap:clamp(18px,3vw,40px) clamp(24px,6vw,96px);align-items:center}
.hn{border:1px solid var(--blue);background:var(--bg);padding:12px 14px;display:flex;flex-direction:column;gap:3px;position:relative;max-width:260px}
.hn span{font-family:var(--fm);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--acc)}
.hn b{font-family:var(--fd);font-size:15px;font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.hn small{font-family:var(--fm);font-size:9.5px;letter-spacing:.1em;color:var(--ink3)}
.hn[data-n="1"]{grid-area:l1}.hn[data-n="2"]{grid-area:l2}.hn[data-n="3"]{grid-area:l3}.hn[data-n="4"]{grid-area:r1}.hn[data-n="5"]{grid-area:r2}.hn[data-n="6"]{grid-area:r3}
.hn[data-n="1"],.hn[data-n="2"],.hn[data-n="3"]{justify-self:start}
.hn[data-n="4"],.hn[data-n="5"],.hn[data-n="6"]{justify-self:end;text-align:right;align-items:flex-end}
.hcore{grid-area:h;justify-self:center;width:clamp(128px,14vw,176px);aspect-ratio:1;border-radius:50%;background:var(--acc);color:var(--on-acc);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;position:relative;text-align:center}
.hcore b{font-family:var(--fd);font-weight:800;font-size:clamp(15px,1.6vw,20px);letter-spacing:-.02em;line-height:1}
.hcore span{font-family:var(--fm);font-size:9px;letter-spacing:.14em;text-transform:uppercase;opacity:.85}
.hcore::before{content:"";position:absolute;inset:-12px;border:1px solid var(--acc);border-radius:50%;opacity:.5}
.hub.in .hcore::before{animation:hubPulse 3s ease-in-out infinite}
@keyframes hubPulse{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:.1;transform:scale(1.12)}}
.hub-lines{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;overflow:visible}
.hub-lines line{stroke:var(--blue);stroke-width:1.2;fill:none;stroke-dasharray:100;stroke-dashoffset:100;opacity:.85}
.hub.in .hub-lines line{animation:hubDraw 1.4s cubic-bezier(.2,.8,.2,1) forwards}
.hub.in .hub-lines line:nth-child(2){animation-delay:.1s}.hub.in .hub-lines line:nth-child(3){animation-delay:.2s}.hub.in .hub-lines line:nth-child(4){animation-delay:.3s}.hub.in .hub-lines line:nth-child(5){animation-delay:.4s}.hub.in .hub-lines line:nth-child(6){animation-delay:.5s}
@keyframes hubDraw{to{stroke-dashoffset:0}}
.hub-lines circle{fill:var(--acc);opacity:0}
.hub.in .hub-lines circle{animation:hubDot .6s 1.2s forwards}
@keyframes hubDot{to{opacity:1}}
.hub .cap{position:absolute;left:clamp(16px,2.6vw,40px);right:clamp(16px,2.6vw,40px);bottom:14px;display:flex;justify-content:space-between;font-family:var(--fm);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3)}
.hub .cap b{color:var(--acc);font-weight:500}
@media (max-width:640px){
  .hub-grid{grid-template-columns:1fr 1fr;grid-template-areas:"h h" "l1 r1" "l2 r2" "l3 r3";gap:22px 16px}
  .hcore{margin-bottom:18px}
  .hn{max-width:none;padding:10px 12px}
  .hn b{font-size:14px}
}

.roles{border-top:1.5px solid var(--ink);margin-top:clamp(24px,3vw,40px)}
.roles div{display:grid;grid-template-columns:64px 200px 1fr;gap:18px;padding:18px 0;border-bottom:1px solid var(--line);align-items:baseline}
.roles div span:first-child{font-family:var(--fm);font-size:10px;letter-spacing:.16em;color:var(--acc)}
.roles div b{font-family:var(--fd);font-size:clamp(20px,2vw,28px);font-weight:700;letter-spacing:-.03em;color:var(--ink)}
.roles div p{margin:0;color:var(--ink2);font-size:14px;line-height:1.65}
@media (max-width:760px){.roles div{grid-template-columns:48px 1fr}.roles div p{grid-column:2}}

.badges{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(12px,1.6vw,20px);margin-top:clamp(24px,3vw,40px)}
.badge{border:1.5px solid var(--ink);padding:clamp(22px,3vw,40px);display:flex;flex-direction:column;gap:26px;min-height:220px;position:relative;overflow:hidden}
.badge::after{content:"";position:absolute;right:-1px;bottom:-1px;width:44px;height:44px;border-left:1.5px solid var(--ink);border-top:1.5px solid var(--ink);background:var(--bg)}
.badge .k{display:flex;justify-content:space-between;font-family:var(--fm);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink3)}
.badge .t{font-family:var(--fd);font-size:clamp(28px,3.2vw,48px);font-weight:800;letter-spacing:-.045em;line-height:.95}
.badge .t em{font-style:normal;color:var(--acc)}
.badge .d{margin-top:auto;font-size:13px;color:var(--ink2);line-height:1.6;max-width:32ch}
@media (max-width:640px){.badges{grid-template-columns:1fr}}

.tl{border-top:1.5px solid var(--ink);margin-top:clamp(24px,3vw,40px);display:grid;grid-template-columns:repeat(6,minmax(0,1fr))}
.tl div{padding:20px 16px 26px 0;border-right:1px solid var(--line);position:relative}
.tl div+div{padding-left:16px}
.tl div:last-child{border-right:0}
.tl div::before{content:"";position:absolute;top:-1px;left:0;width:10px;height:1.5px;background:var(--acc)}
.tl .y{font-family:var(--fd);font-weight:800;font-size:clamp(28px,2.6vw,40px);letter-spacing:-.05em;line-height:1;font-variant-numeric:tabular-nums}
.tl .y.now{color:var(--acc)}
.tl p{margin:12px 0 0;font-size:13px;color:var(--ink2);line-height:1.6}
@media (max-width:960px){.tl{grid-template-columns:repeat(3,1fr)}.tl div:nth-child(3){border-right:0}.tl div:nth-child(4){padding-left:0;border-top:1px solid var(--line)}.tl div:nth-child(n+4){border-top:1px solid var(--line)}}
@media (max-width:560px){.tl{grid-template-columns:1fr 1fr}.tl div{border-right:0!important;padding-left:0!important;border-top:1px solid var(--line)}.tl div:nth-child(-n+2){border-top:0}.tl div:nth-child(odd){border-right:1px solid var(--line)!important;padding-right:12px}.tl div:nth-child(even){padding-left:12px!important}}

/* ========================================================================
   work.html
   ======================================================================== */
.fbar{display:flex;flex-wrap:wrap;gap:0;border-top:1.5px solid var(--ink);border-bottom:1px solid var(--line);margin-bottom:clamp(28px,3vw,44px)}
.fbar button{appearance:none;background:transparent;border:0;border-right:1px solid var(--line);color:var(--ink3);font-family:var(--fm);font-size:11px;letter-spacing:.14em;text-transform:uppercase;height:46px;padding-inline:18px;cursor:pointer;position:relative;transition:color .2s;display:flex;align-items:center;gap:8px}
.fbar button:first-child{padding-left:0}
.fbar button:last-child{border-right:0}
.fbar button i{font-style:normal;font-size:9px;color:var(--ink3);opacity:.7}
.fbar button::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--acc);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.fbar button:hover{color:var(--ink)}
.fbar button[aria-pressed="true"]{color:var(--acc)}
.fbar button[aria-pressed="true"]::after{transform:scaleX(1)}
.fbar .cnt{margin-left:auto;font-family:var(--fm);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);display:flex;align-items:center;padding-inline:0}
@media (max-width:640px){.fbar{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}.fbar::-webkit-scrollbar{display:none}.fbar button{flex:none;height:42px;padding-inline:14px}.fbar .cnt{display:none}}

.cgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(10px,1.6vw,20px)}
.case{border:1px solid var(--line2);background:var(--bg);text-align:left;padding:0;color:var(--ink);font-family:var(--fb);cursor:pointer;display:flex;flex-direction:column;transition:border-color .25s,transform .35s cubic-bezier(.2,.8,.2,1),opacity .35s;position:relative}
.case:hover{border-color:var(--ink)}
.case.hide{display:none}
.case[aria-expanded="true"]{border-color:var(--acc)}
.case .ch{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);font-family:var(--fm);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3)}
.case .ch b{color:var(--acc);font-weight:500}
.case .cb2{padding:20px 16px 18px;flex:1;display:flex;flex-direction:column;gap:14px}
.case .cl{font-size:14px;color:var(--ink);font-weight:500;display:flex;align-items:center;flex-wrap:wrap}
.case .mt{font-family:var(--fd);font-weight:800;font-size:clamp(48px,4.6vw,76px);letter-spacing:-.05em;line-height:.9;color:var(--acc);font-variant-numeric:tabular-nums}
.case .mt small{display:block;font-family:var(--fm);font-size:10px;letter-spacing:.14em;color:var(--ink3);margin-top:8px;font-weight:400;text-transform:uppercase}
.case .sm{font-size:14px;color:var(--ink2);line-height:1.6;margin:0}
.case .viz{margin-top:auto;height:56px;position:relative;border-top:1px solid var(--line);padding-top:12px}
.case .ch span{display:inline-flex;align-items:center;gap:10px}
.case .plus{width:20px;height:20px;font-style:normal;border:1px solid var(--line2);display:grid;place-items:center;font-family:var(--fm);font-size:13px;color:var(--ink2);transition:transform .35s,border-color .25s,color .25s}
.case:hover .plus{border-color:var(--acc);color:var(--acc)}
.case[aria-expanded="true"] .plus{transform:rotate(45deg);border-color:var(--acc);color:var(--acc)}
/* css mini visuals */
.viz.bars{display:flex;align-items:flex-end;gap:5px}
.viz.bars i{flex:1;background:var(--line);border-radius:1px;transform-origin:bottom;animation:pvGrow .8s cubic-bezier(.2,.8,.2,1) both}
.viz.bars i:last-child{background:var(--acc)}
.viz.bars i:nth-child(2){animation-delay:.05s}.viz.bars i:nth-child(3){animation-delay:.1s}.viz.bars i:nth-child(4){animation-delay:.15s}.viz.bars i:nth-child(5){animation-delay:.2s}.viz.bars i:nth-child(6){animation-delay:.25s}.viz.bars i:nth-child(7){animation-delay:.3s}.viz.bars i:nth-child(8){animation-delay:.35s}
.viz.line svg{width:100%;height:100%;display:block;overflow:visible}
.viz.line polyline{fill:none;stroke:var(--blue);stroke-width:1.5;stroke-linejoin:round;stroke-dasharray:300;stroke-dashoffset:300;animation:pvDraw 1.4s .2s cubic-bezier(.2,.8,.2,1) both}
.viz.line polyline.a{stroke:var(--acc)}
.viz.line circle{fill:var(--acc)}
.viz.ring{display:flex;align-items:center;gap:14px}
.viz.ring .rg{width:44px;height:44px;border-radius:50%;flex:none;background:conic-gradient(var(--acc) calc(var(--p,60)*1%),var(--line) 0);position:relative}
.viz.ring .rg::after{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--bg)}
.viz.ring .rl{font-family:var(--fm);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink3);line-height:1.6}
.viz.ring .rl b{display:block;color:var(--ink);font-weight:500}
.viz.dots{display:flex;flex-wrap:wrap;gap:4px;align-content:flex-start}
.viz.dots i{width:9px;height:9px;border-radius:50%;background:var(--line)}
.viz.dots i.on{background:var(--acc)}
/* expanded detail */
.cdet{grid-column:1/-1;border:1px solid var(--acc);padding:clamp(20px,3vw,40px);display:none;position:relative;background:var(--surf)}
.cdet.open{display:block}
.cdet .ct{display:flex;justify-content:space-between;align-items:center;gap:16px;font-family:var(--fm);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);margin-bottom:22px}
.cdet .ct b{color:var(--acc);font-weight:500}
.cdet h3{font-size:clamp(24px,2.6vw,40px);font-weight:800;letter-spacing:-.04em;margin-bottom:22px}
.cdet .cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2.4vw,36px);border-top:1.5px solid var(--ink);padding-top:22px}
.cdet .cols div span{display:block;font-family:var(--fm);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--acc);margin-bottom:10px}
.cdet .cols p{margin:0;font-size:14px;color:var(--ink2);line-height:1.7}
.cdet .x{appearance:none;background:transparent;border:1px solid var(--ink);color:var(--ink);width:38px;height:38px;cursor:pointer;display:grid;place-items:center;font-family:var(--fm);font-size:16px;transition:border-color .25s,color .25s}
.cdet .x:hover{border-color:var(--acc);color:var(--acc)}
@media (max-width:960px){.cgrid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.cgrid{grid-template-columns:1fr}.cdet .cols{grid-template-columns:1fr}}
