:root{
  --primary:#1E3A8A;
  --brand:#1E40AF;
  --brand-light:#DBEAFE;
  --accent:#F59E0B;
  --accent-dark:#D97706;
  --bg:#F8FAFC;
  --surface:#FFFFFF;
  --line:#CBD5E1;
  --text:#0F172A;
  --text-dim:#475569;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--sans);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}

a{color:inherit;}

a:focus-visible,
.btn:focus-visible,
.faq-list summary:focus-visible{
  outline:3px solid var(--brand);
  outline-offset:2px;
  border-radius:4px;
}

.wrap{
  max-width:960px;
  margin:0 auto;
  padding:0 28px;
}

/* ---------- Header ---------- */
header.site{
  position:sticky;
  top:0;
  z-index:100;
  background:var(--surface);
  border-bottom:1px solid var(--line);
  padding:14px 0;
  box-shadow:0 2px 8px rgba(15,23,42,.06);
}
header.site .wrap{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  row-gap:4px;
}
.brand{
  display:flex;
  align-items:center;
  gap:10px;
  text-decoration:none;
}
.brand .icon{
  width:32px;
  height:32px;
  border-radius:8px;
  display:block;
}
.brand .name{
  font-weight:700;
  font-size:19px;
  color:var(--text);
}
nav.site a{
  display:inline-block;
  text-decoration:none;
  font-size:14px;
  font-weight:500;
  color:var(--text-dim);
  margin-left:2px;
  padding:10px 14px;
  border-radius:8px;
  transition:background-color .15s, color .15s;
}
nav.site a:hover{ background:var(--brand-light); color:var(--brand); }

.nav-toggle{
  display:none;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  width:44px;
  height:44px;
  padding:0;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface);
  cursor:pointer;
}
.nav-toggle-bar{
  display:block;
  width:22px;
  height:2px;
  margin:0 auto;
  border-radius:2px;
  background:var(--text);
  transition:transform .2s, opacity .2s;
}
body.nav-open .nav-toggle-bar:nth-child(1){ transform:translateY(7px) rotate(45deg); }
body.nav-open .nav-toggle-bar:nth-child(2){ opacity:0; }
body.nav-open .nav-toggle-bar:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

#features, #faq, #source, #disclaimer{ scroll-margin-top:80px; }

/* ---------- Hero ---------- */
.hero{
  padding:88px 0 64px;
  position:relative;
  overflow:hidden;
}
.hero .wrap{
  display:grid;
  grid-template-columns:1fr 260px;
  gap:48px;
  align-items:center;
}
.hero .eyebrow{
  font-size:13px;
  font-weight:700;
  letter-spacing:.04em;
  color:var(--brand);
  margin:0 0 18px;
}
.hero h1{
  font-weight:800;
  font-size:clamp(34px,5vw,54px);
  line-height:1.28;
  margin:0 0 20px;
  color:var(--text);
}
.hero p.lead{
  font-size:16px;
  color:var(--text-dim);
  max-width:46ch;
  margin:0 0 34px;
}
.cta-row{ display:flex; gap:14px; flex-wrap:wrap; }
.btn{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:14px 26px;
  border-radius:999px;
  font-size:14px;
  font-weight:700;
  text-decoration:none;
  border:1px solid transparent;
  transition:background-color .15s, border-color .15s, color .15s;
}
.btn.primary{
  background:var(--accent);
  border-color:var(--accent);
  color:var(--text);
}
.btn.primary:hover{ background:var(--accent-dark); border-color:var(--accent-dark); }
.btn.ghost{
  color:var(--primary);
  border-color:var(--primary);
}
.btn.ghost:hover{ background:var(--brand-light); }
.btn.soon{ cursor:default; opacity:.6; }
.btn.primary.soon:hover{ background:var(--accent); border-color:var(--accent); }
.btn.ghost.soon:hover{ background:transparent; }
.badge-link{ display:inline-flex; align-items:center; line-height:0; transition:opacity .15s; }
.badge-link:hover{ opacity:.85; }
.store-badge{ height:52px; width:auto; display:block; }

/* ---------- App icon (signature element) ---------- */
.icon-holder{ display:flex; justify-content:center; }
.app-icon{
  width:220px;
  height:220px;
  border-radius:48px;
  background:var(--surface);
  box-shadow:0 20px 40px rgba(15,23,42,.14), 0 4px 12px rgba(15,23,42,.08);
  animation: iconIn .5s ease-out both;
  animation-delay:.1s;
}
@keyframes iconIn{
  0%{ transform:scale(.85); opacity:0; }
  100%{ transform:scale(1); opacity:1; }
}
@media (prefers-reduced-motion: reduce){
  .app-icon{ animation:none; }
}

/* ---------- Trust badges ---------- */
.trust{
  background:var(--surface);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:32px 0;
}
.trust .wrap{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:24px 40px;
}
.trust-item{
  display:flex;
  align-items:center;
  gap:10px;
  font-size:14px;
  font-weight:600;
  color:var(--text);
}
.trust-item svg{ width:22px; height:22px; color:var(--brand); flex-shrink:0; }

/* ---------- Shared section label ---------- */
.tag{
  display:inline-block;
  font-size:13px;
  font-weight:700;
  letter-spacing:.04em;
  color:var(--brand);
  margin:0 0 4px;
}

/* ---------- Docket / feature board ---------- */
.board{ padding:20px 0 70px; border-top:1px solid var(--line); }
.board .head{ padding:56px 0 30px; }
.board .head h2{
  font-weight:800;
  font-size:28px;
  margin:10px 0 0;
  color:var(--text);
}
.cards{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:20px;
}
.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:12px;
  padding:28px 26px;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  transition:box-shadow .2s;
}
.card:hover{ box-shadow:0 8px 20px rgba(15,23,42,.08); }
.card .icon-badge{
  width:44px;
  height:44px;
  border-radius:12px;
  background:var(--brand-light);
  display:flex;
  align-items:center;
  justify-content:center;
  margin-bottom:16px;
}
.card .icon-badge svg{ width:22px; height:22px; }
.card .tab{
  font-size:12px;
  font-weight:700;
  color:var(--brand);
  letter-spacing:.04em;
  display:block;
  margin-bottom:6px;
}
.card h3{
  font-size:18px;
  font-weight:700;
  margin:0 0 8px;
  color:var(--text);
}
.card p{
  margin:0;
  font-size:14px;
  color:var(--text-dim);
}

/* ---------- Feature highlights ---------- */
.highlights{ padding:20px 0 50px; border-top:1px solid var(--line); }
.highlight{
  display:grid;
  grid-template-columns:220px 1fr;
  gap:48px;
  align-items:center;
  padding:40px 0;
}
.highlight + .highlight{ border-top:1px solid var(--line); }
.highlight-art{
  order:1;
  width:220px;
  display:flex;
  align-items:center;
  justify-content:center;
  filter:drop-shadow(0 24px 40px rgba(15,23,42,.18));
}
.highlight-art img{
  width:100%;
  height:auto;
  display:block;
  border-radius:30px;
  border:6px solid #111827;
  background:#111827;
}
.highlight-copy{ order:2; }
.highlight.reverse{ grid-template-columns:1fr 220px; }
.highlight.reverse .highlight-art{ order:2; }
.highlight.reverse .highlight-copy{ order:1; }
.highlight-copy h3{
  font-size:24px;
  font-weight:800;
  margin:0 0 12px;
  color:var(--text);
}
.highlight-copy p{
  margin:0;
  font-size:15px;
  color:var(--text-dim);
  max-width:50ch;
}

/* ---------- FAQ ---------- */
.faq{ padding:20px 0 70px; border-top:1px solid var(--line); }
.faq .head{ padding:56px 0 30px; }
.faq-list{ display:flex; flex-direction:column; gap:12px; }
.faq-list details{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:12px;
  padding:0 20px;
}
.faq-list summary{
  cursor:pointer;
  list-style:none;
  padding:16px 0;
  font-weight:700;
  color:var(--text);
  font-size:15px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.faq-list summary::-webkit-details-marker{ display:none; }
.faq-list summary::after{
  content:"+";
  font-size:20px;
  font-weight:400;
  color:var(--brand);
  flex-shrink:0;
  transition:transform .2s;
}
.faq-list details[open] summary::after{ transform:rotate(45deg); }
.faq-list details p{
  margin:0 0 18px;
  color:var(--text-dim);
  font-size:14px;
}

/* ---------- Final CTA band ---------- */
.cta-band{
  padding:64px 0;
  text-align:center;
  background:var(--primary);
}
.cta-band h2{
  font-size:28px;
  font-weight:800;
  margin:0 0 12px;
  color:#fff;
}
.cta-band p{
  font-size:15px;
  color:rgba(255,255,255,.8);
  margin:0 0 28px;
}
.cta-row.center{ justify-content:center; }
.cta-band .btn.ghost{ color:#fff; border-color:rgba(255,255,255,.55); }
.cta-band .btn.ghost:hover{ background:rgba(255,255,255,.12); }
.cta-band .btn.ghost.soon:hover{ background:transparent; }

/* ---------- Data source & disclosures ---------- */
.disclosure{ padding:20px 0 70px; border-top:1px solid var(--line); }
.disclosure .head{ padding:56px 0 30px; }
.disclosure-cards{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.disclosure-cards .card-head{
  display:flex;
  align-items:center;
  gap:12px;
  margin-bottom:12px;
}
.disclosure-cards .icon-badge{ margin-bottom:0; flex-shrink:0; }
.disclosure-cards .card-head h3{ margin:0; }
.disclosure-cards .card-link{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin-top:5px;
  padding:11px 0;
  font-size:13px;
  font-weight:700;
  color:var(--brand);
  text-decoration:none;
}
.disclosure-cards .card-link:hover{ text-decoration:underline; text-underline-offset:3px; }
.disclosure-cards .card-link svg{ width:14px; height:14px; }

/* ---------- Footer ---------- */
footer.site{ padding:48px 0 0; border-top:1px solid var(--line); }
footer.site .wrap{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  flex-wrap:wrap;
  gap:32px;
  padding-bottom:28px;
}
.footer-brand{ max-width:320px; }
.footer-brand .brand{ margin-bottom:10px; }
.footer-brand p{ margin:0; font-size:13px; color:var(--text-dim); }
.footer-links{
  display:flex;
  flex-wrap:wrap;
  gap:8px 24px;
  font-size:13px;
}
footer.site a{
  display:inline-block;
  padding:12px 4px;
  margin:-12px -4px;
  color:var(--text-dim);
  text-decoration:none;
}
footer.site a:hover{ color:var(--brand); text-decoration:underline; text-underline-offset:3px; }
.footer-copy{
  border-top:1px solid var(--line);
  padding-top:18px;
  font-size:12px;
  color:var(--text-dim);
}

/* ---------- Privacy page ---------- */
.legal{ padding:64px 0 90px; }
.legal .kicker{
  font-size:13px;
  font-weight:700;
  letter-spacing:.04em;
  color:var(--brand);
  margin:0 0 14px;
}
.legal h1{
  font-weight:800;
  font-size:clamp(28px,4vw,38px);
  margin:0 0 8px;
  color:var(--text);
}
.legal .eff{
  font-size:13px;
  color:var(--text-dim);
  margin:0 0 40px;
}
.legal section{
  border-top:1px solid var(--line);
  padding:26px 0;
}
.legal section h2{
  font-size:18px;
  margin:0 0 10px;
  color:var(--text);
  display:flex;
  gap:12px;
  align-items:center;
}
.legal section h2 .no{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:26px;
  height:26px;
  border-radius:8px;
  background:var(--brand-light);
  color:var(--primary);
  font-size:12px;
  font-weight:700;
  flex-shrink:0;
}
.legal section p{
  margin:0;
  font-size:15px;
  color:var(--text-dim);
  max-width:66ch;
}
.legal section a{ color:var(--brand); border-bottom:1px solid var(--brand-light); text-decoration:none; }
.legal section a:hover{ border-color:var(--brand); }

@media (max-width:720px){
  header.site .wrap{ flex-wrap:nowrap; }
  .nav-toggle{ display:flex; }
  nav.site{
    display:none;
    position:absolute;
    left:0;
    right:0;
    top:100%;
    flex-direction:column;
    padding:8px 20px 12px;
    background:var(--surface);
    border-bottom:1px solid var(--line);
    box-shadow:0 8px 16px rgba(15,23,42,.08);
  }
  body.nav-open nav.site{ display:flex; }
  nav.site a{ margin:0; padding:12px 14px; font-size:15px; }
  .hero .wrap{ grid-template-columns:1fr; }
  .icon-holder{ order:-1; }
  .app-icon{ width:160px; height:160px; border-radius:36px; }
  .cards{ grid-template-columns:1fr; }
  .disclosure-cards{ grid-template-columns:1fr; }
  .trust .wrap{ justify-content:flex-start; gap:16px 28px; }
  .highlight, .highlight.reverse{ grid-template-columns:1fr; gap:24px; padding:32px 0; }
  .highlight-art, .highlight.reverse .highlight-art{ order:0; width:150px; margin:0 auto; }
  .highlight-copy, .highlight.reverse .highlight-copy{ order:1; text-align:left; }
  .cta-band h2{ font-size:24px; }
}
