/* ============================================================
   elematch — brand stylesheet
   Palette derived from logo: ink-teal ring, element nodes,
   bronze wordmark. Display: Noto Serif TC. Body: Noto Sans TC.
   ============================================================ */
:root{
  --ink:#1d2e33;
  --ink-soft:#3d5157;
  --paper:#fbfaf7;
  --card:#ffffff;
  --line:#e6e3da;
  --bronze:#a9762c;
  --bronze-soft:#f4ead8;
  --wood:#2bb58c;
  --fire:#e85566;
  --earth:#f0b429;
  --metal:#8d9aa1;
  --water:#4c5be6;
  --radius:14px;
  --maxw:1080px;
  --serif:"Noto Serif TC",'Songti TC',serif;
  --sans:"Noto Sans TC","Inter",-apple-system,"PingFang TC",sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}
body{
  font-family:var(--sans);
  background:var(--paper);
  color:var(--ink);
  line-height:1.75;
  font-size:16.5px;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--water);text-decoration:none}
a:hover{text-decoration:underline}
a:focus-visible,button:focus-visible{outline:3px solid var(--water);outline-offset:2px;border-radius:4px}
img,svg{max-width:100%;height:auto;display:block}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}

/* ---------- header ---------- */
header.site{
  position:sticky;top:0;z-index:50;
  background:rgba(251,250,247,.92);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.25rem;letter-spacing:.01em;color:var(--ink)}
.logo .mark{width:34px;height:34px;flex:none}
.logo b{color:var(--ink)}
.logo span{color:var(--bronze);font-weight:800}
nav.main{display:flex;gap:26px;align-items:center;font-size:.95rem}
nav.main a{color:var(--ink-soft)}
nav.main a:hover{color:var(--ink);text-decoration:none}
.btn{
  display:inline-block;background:var(--ink);color:#fff;
  padding:12px 26px;border-radius:999px;font-weight:600;font-size:.98rem;
  border:none;cursor:pointer;transition:transform .15s ease, box-shadow .15s ease;
}
.btn:hover{text-decoration:none;transform:translateY(-1px);box-shadow:0 6px 18px rgba(29,46,51,.18)}
.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--ink)}
.btn.small{padding:8px 18px;font-size:.9rem}

/* ---------- type ---------- */
h1,h2,h3{font-family:var(--serif);font-weight:700;line-height:1.35;letter-spacing:.01em}
h1{font-size:clamp(1.9rem,4.6vw,3rem)}
h2{font-size:clamp(1.5rem,3vw,2.05rem);margin-bottom:14px}
h3{font-size:1.18rem;margin-bottom:8px}
.eyebrow{
  font-size:.8rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--bronze);font-weight:700;margin-bottom:14px;
}
.lede{font-size:1.12rem;color:var(--ink-soft);max-width:44em}
section{padding:84px 0}
section.tight{padding:56px 0}

/* ---------- hero ---------- */
.hero{padding:88px 0 72px;overflow:hidden}
.hero .wrap{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}
.hero h1 .zh{display:block}
.hero h1 .en{display:block;font-size:.52em;color:var(--ink-soft);font-weight:600;margin-top:14px;font-family:var(--sans);letter-spacing:.02em}
.hero .lede{margin:22px 0 30px}
.hero .cta-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.hero .fine{font-size:.85rem;color:var(--metal);margin-top:18px}

/* cycle diagram */
.cycle{position:relative;aspect-ratio:1/1;max-width:560px;margin:0 auto;width:100%}
.cycle svg{width:100%;height:100%}
.spin{transform-origin:50% 50%;animation:spin 60s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- cards / grids ---------- */
.grid{display:grid;gap:22px}
.grid.c2{grid-template-columns:repeat(2,1fr)}
.grid.c3{grid-template-columns:repeat(3,1fr)}
.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:28px;
}
.card .dot{width:12px;height:12px;border-radius:50%;display:inline-block;margin-right:8px;vertical-align:baseline}
.card h3 .en{display:block;font-family:var(--sans);font-size:.78rem;color:var(--metal);font-weight:600;letter-spacing:.04em;margin-top:2px}
.card p{color:var(--ink-soft);font-size:.96rem}

/* steps */
.steps{counter-reset:step}
.step{position:relative}
.step .num{
  font-family:var(--serif);font-size:2rem;color:var(--bronze);font-weight:700;
  display:block;margin-bottom:6px;
}

/* ---------- redlines (trust) ---------- */
.redlines{background:var(--ink);color:#f2efe8;border-radius:24px}
.redlines .inner{padding:64px 48px}
.redlines h2{color:#fff}
.redlines .eyebrow{color:var(--earth)}
.redlines .grid{margin-top:30px}
.redlines .card{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14)}
.redlines .card h3{color:#fff}
.redlines .card p{color:#cfd8d6}
.redlines .foot{margin-top:26px;font-size:.9rem;color:#aebbb8}

/* ---------- pricing ---------- */
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;align-items:stretch}
.plan{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:30px;display:flex;flex-direction:column}
.plan.featured{border:2px solid var(--ink);box-shadow:0 10px 30px rgba(29,46,51,.08)}
.plan .name{font-weight:800;font-size:1.05rem}
.plan .price{font-family:var(--serif);font-size:2.1rem;font-weight:700;margin:10px 0 2px}
.plan .price small{font-size:.9rem;color:var(--metal);font-family:var(--sans);font-weight:500}
.plan ul{list-style:none;margin:18px 0 26px;flex:1}
.plan li{padding:7px 0;border-bottom:1px dashed var(--line);font-size:.95rem;color:var(--ink-soft)}
.plan li:last-child{border-bottom:none}
.plan .btn{text-align:center}
.badge{display:inline-block;background:var(--bronze-soft);color:var(--bronze);font-size:.75rem;font-weight:700;padding:3px 12px;border-radius:999px;margin-left:8px;vertical-align:middle}
.credits{margin-top:26px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:24px 28px;font-size:.95rem;color:var(--ink-soft)}
.pricing-fine{font-size:.85rem;color:var(--metal);margin-top:18px}

/* ---------- FAQ ---------- */
details{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:20px 26px;margin-bottom:12px;
}
details summary{cursor:pointer;font-weight:700;font-size:1.02rem;list-style:none;display:flex;justify-content:space-between;align-items:center}
details summary::after{content:"+";font-family:var(--serif);font-size:1.4rem;color:var(--bronze)}
details[open] summary::after{content:"−"}
details p{margin-top:12px;color:var(--ink-soft);font-size:.96rem}

/* ---------- blog ---------- */
.post-card{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:28px;color:var(--ink);transition:box-shadow .15s ease}
.post-card:hover{text-decoration:none;box-shadow:0 8px 24px rgba(29,46,51,.08)}
.post-card .meta{font-size:.8rem;color:var(--metal);margin-bottom:8px}
.post-card h3{margin-bottom:8px}
.post-card p{color:var(--ink-soft);font-size:.94rem}
article.post{max-width:760px;margin:0 auto;padding:64px 24px}
article.post h1{margin-bottom:10px}
article.post .meta{color:var(--metal);font-size:.88rem;margin-bottom:34px}
article.post h2{margin-top:44px}
article.post p,article.post li{color:#2c3f45;margin-bottom:16px}
article.post ul,article.post ol{padding-left:26px;margin-bottom:16px}
article.post blockquote{border-left:3px solid var(--bronze);padding:6px 0 6px 20px;color:var(--ink-soft);margin:24px 0;font-family:var(--serif)}
.disclaimer-box{
  background:var(--bronze-soft);border:1px solid #e8d9bc;border-radius:var(--radius);
  padding:18px 22px;font-size:.88rem;color:#6b5322;margin:34px 0 0;
}

/* ---------- legal pages ---------- */
main.legal{max-width:820px;margin:0 auto;padding:64px 24px}
main.legal h1{margin-bottom:6px}
main.legal .updated{color:var(--metal);font-size:.88rem;margin-bottom:36px}
main.legal h2{font-size:1.3rem;margin:40px 0 12px}
main.legal h3{font-size:1.05rem;margin:24px 0 8px}
main.legal p,main.legal li{color:#2c3f45;font-size:.97rem;margin-bottom:12px}
main.legal ul,main.legal ol{padding-left:26px;margin-bottom:14px}
main.legal .en{color:var(--metal);font-size:.88em}
main.legal table{width:100%;border-collapse:collapse;margin:16px 0;font-size:.92rem}
main.legal th,main.legal td{border:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top}
main.legal th{background:#f3f1ea;font-weight:700}

/* ---------- footer ---------- */
footer.site{border-top:1px solid var(--line);padding:52px 0 40px;margin-top:40px;font-size:.9rem;color:var(--ink-soft)}
footer.site .cols{display:grid;grid-template-columns:2fr 1fr 1fr;gap:32px}
footer.site h4{font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;color:var(--metal);margin-bottom:12px}
footer.site a{color:var(--ink-soft);display:block;padding:3px 0}
footer.site .legalline{margin-top:36px;padding-top:20px;border-top:1px solid var(--line);font-size:.8rem;color:var(--metal)}

/* ---------- responsive ---------- */
@media (max-width:920px){
  .hero .wrap{grid-template-columns:1fr;gap:40px}
  .cycle{max-width:420px}
  .grid.c3,.plans{grid-template-columns:1fr}
  .grid.c2{grid-template-columns:1fr}
  footer.site .cols{grid-template-columns:1fr}
  nav.main{display:none}
  .redlines .inner{padding:44px 26px}
}

/* bilingual H2 subline */
h2 .en{display:block;font-family:var(--sans);font-size:.58em;font-weight:600;color:var(--metal);letter-spacing:.03em;margin-top:6px}
.redlines h2 .en{color:#aebbb8}
.card .bi{display:block;font-size:.82rem;color:var(--metal);margin-top:2px}

/* product split cards */
.prod{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.prod .card{padding:34px}
.prod .tagper{font-size:.8rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--bronze);margin-bottom:10px;display:block}
.prod ul{list-style:none;margin:16px 0 22px}
.prod li{padding:6px 0 6px 22px;position:relative;color:var(--ink-soft);font-size:.95rem}
.prod li::before{content:"·";position:absolute;left:6px;color:var(--bronze);font-weight:700}
/* use cases */
.uc .card{padding:22px 24px}
.uc h3{font-size:1.04rem}
/* page hero (subpages) */
.pagehero{padding:72px 0 40px}
.pagehero h1 .en{display:block;font-size:.5em;color:var(--ink-soft);font-weight:600;margin-top:12px;font-family:var(--sans)}
@media (max-width:920px){.prod{grid-template-columns:1fr}}

.logo img.lockup{height:46px;width:auto;display:inline-block}
.sample-fig{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:26px;margin-top:28px}
.sample-fig .cap{font-size:.8rem;color:var(--metal);margin-top:12px;text-align:right}

.pack{display:flex;align-items:center;gap:28px;background:var(--bronze-soft);border:1px solid #e8d9bc;border-radius:var(--radius);padding:28px 32px;margin-top:22px;flex-wrap:wrap}
.pack .body{flex:1;min-width:280px}
.pack .price{font-family:var(--serif);font-size:1.9rem;font-weight:700;white-space:nowrap}
.pack .price small{font-size:.85rem;color:var(--metal);font-family:var(--sans);font-weight:500;display:block}

/* ---------- mobile nav ---------- */
.nav-toggle{display:none;background:none;border:0;cursor:pointer;padding:10px 4px 10px 12px}
.nav-toggle span{display:block;width:22px;height:2px;background:var(--ink);margin:5px 0;border-radius:2px}
@media (max-width:920px){
  .nav-toggle{display:block}
  header.site .wrap{justify-content:flex-start}
  header.site .logo{margin-right:auto}
  nav.main{display:none;position:absolute;top:64px;left:0;right:0;background:rgba(251,250,247,.98);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);flex-direction:column;align-items:flex-start;gap:0;padding:8px 22px 18px}
  nav.main a{padding:11px 0}
  nav.main a[aria-label="Switch language"]{margin:10px 0 0;padding:6px 14px}
  header.site.nav-open nav.main{display:flex}
}
