/* ==========================================================================
   KALDRA — 精密量測與工業感測 · 共用樣式
   配色角色變數：白底 + 深藍信任帶 + 靛紫 accent
   字體：Martian Mono(display) / Geist(sans) / Geist Mono(數值)
   ========================================================================== */

:root{
  /* palette 角色（8 角色，元件只綁變數、不寫死 hex） */
  --bg:#ffffff;
  --bg-raised:#f6f9fc;
  --surface:#ffffff;
  --text:#0a2540;            /* 15.54:1 on --bg */
  --text-dim:#425466;        /* 7.80:1 on --bg */
  --border:#e6ebf1;
  --accent:#635bff;          /* 4.70:1 on --bg */
  --accent-dim:rgba(99,91,255,0.12);
  --accent-2:#00d4ff;
  --hero-bg:#0a2540;
  --hero-text:#ffffff;       /* 15.54:1 on --hero-bg */

  /* type */
  --font-display:'Martian Mono','Geist','Noto Sans TC','PingFang TC',ui-monospace,monospace;
  --font-sans:'Geist','Noto Sans TC','PingFang TC','Microsoft JhengHei',system-ui,sans-serif;
  --font-mono:'Geist Mono','JetBrains Mono',ui-monospace,monospace;

  /* 字級階梯：壓扁式（最大 56px，層次靠字重與灰階，不靠字號暴力） */
  --fs-body:15px;      --lh-body:24px;
  --fs-h3-card:24px;   --lh-h3-card:32px;
  --fs-h2:28px;        --lh-h2:36px;
  --fs-h1:56px;        --lh-h1:56px;   --ls-h1:-0.56px;  --maxw-h1:576px;
  --fs-eyebrow:12px;   --lh-eyebrow:16.8px; --ls-eyebrow:0.12em;

  /* 留白節奏：48 → 144 → 96 → 120 */
  --sp-band:48px;
  --sp-section:96px;
  --sp-closing:120px;
  --sp-statement:144px;

  /* 網格 */
  --container:1600px;
  --grid-gap:16px;
  --list-gap:50px;
  --list-num-col:36px;

  /* motion */
  --ease-standard:cubic-bezier(.4,0,.2,1);
  --ease-entrance:cubic-bezier(.16,1,.3,1);
  --dur-micro:150ms;
  --dur-fast:220ms;
  --dur-standard:380ms;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--bg);color:var(--text);
  font-family:var(--font-sans);
  font-size:var(--fs-body);line-height:var(--lh-body);
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}


:where(h1,h2,h3,h4,h5,h6,p,li,td,th,blockquote,figcaption,a,button,label,dt,dd,span,small,strong,em){
  word-break:keep-all;
  overflow-wrap:normal;
  hyphens:none;
}
:where(h1,h2,h3){text-wrap:balance}
:where(p,li,blockquote){text-wrap:pretty}

.wrap{max-width:var(--container);margin:0 auto;padding:0 clamp(20px,4vw,40px)}
/* 內文帶：12 欄底格中佔 10 欄 */
.measure{max-width:751px}

.eyebrow{
  font-family:var(--font-mono);
  font-size:var(--fs-eyebrow);line-height:var(--lh-eyebrow);
  letter-spacing:var(--ls-eyebrow);text-transform:uppercase;
  color:var(--text-dim);
}

h1,h2,h3{font-weight:500;letter-spacing:-0.01em}
.h1{
  font-family:var(--font-display);
  font-size:clamp(30px,4.4vw,var(--fs-h1));
  line-height:1.05;letter-spacing:var(--ls-h1);
  font-weight:500;max-width:var(--maxw-h1);
}
.h2{
  font-family:var(--font-display);
  font-size:clamp(22px,2.6vw,var(--fs-h2));
  line-height:1.28;font-weight:500;
}
.h3{font-size:var(--fs-h3-card);line-height:var(--lh-h3-card);font-weight:500}
/* 與內文同級，只靠字重區分 */
.h3-inline{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:500}
.lede{color:var(--text-dim);max-width:58ch}
/* 同時掛 .measure 時，10 欄內文帶（751px）優先於 lede 的 58ch 上限 */
.lede.measure{max-width:751px}

section{padding:var(--sp-section) 0}
.sec-statement{padding:var(--sp-statement) 0}
.sec-closing{padding:var(--sp-closing) 0}
.sec-band{padding:var(--sp-band) 0}

/* ===== 導覽：sticky、連結 hover 只換色（不動底、不動形） ===== */
.nav{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);
}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;height:64px}
.brand{font-family:var(--font-display);font-weight:700;font-size:16px;letter-spacing:0.02em}
.brand span{color:var(--accent)}
.nav-links{display:flex;gap:26px;align-items:center}
.nav-links a{
  font-size:14px;color:var(--text-dim);
  transition:color var(--dur-micro) var(--ease-standard);
}
@media(hover:hover){.nav-links a:hover{color:var(--text)}}
.nav-links a:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:2px}
.nav-links a[aria-current="page"]{color:var(--text);font-weight:500}
.nav-toggle{display:none;background:none;border:0;color:var(--text);font-family:var(--font-mono);font-size:13px;cursor:pointer;padding:10px 0;min-height:44px}

/* ===== 按鈕：直角、1px 邊框、hover 只換底色（無位移、無陰影） ===== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:48px;padding:12px 22px;
  border:1px solid var(--text);border-radius:0;
  background:var(--text);color:var(--bg);
  font-family:var(--font-sans);font-size:15px;font-weight:500;
  cursor:pointer;
  transition:background-color var(--dur-micro) var(--ease-standard),
             color var(--dur-micro) var(--ease-standard),
             border-color var(--dur-micro) var(--ease-standard);
}
@media(hover:hover){.btn:hover{background:var(--accent);border-color:var(--accent);color:var(--bg)}}
.btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.btn-ghost{background:transparent;color:var(--text)}
@media(hover:hover){.btn-ghost:hover{background:var(--text);color:var(--bg);border-color:var(--text)}}
.btn-on-dark{background:var(--hero-text);border-color:var(--hero-text);color:var(--hero-bg)}
@media(hover:hover){.btn-on-dark:hover{background:var(--accent);border-color:var(--accent);color:var(--hero-text)}}
.btn-ghost-on-dark{background:transparent;border-color:rgba(255,255,255,.5);color:var(--hero-text)}
@media(hover:hover){.btn-ghost-on-dark:hover{background:var(--hero-text);color:var(--hero-bg);border-color:var(--hero-text)}}

/* ===== HERO：深藍信任帶 ===== */
.hero{background:var(--hero-bg);color:var(--hero-text);padding:var(--sp-statement) 0 var(--sp-section)}
.hero .eyebrow{color:var(--accent-2)}
.hero .h1{margin:14px 0 18px;color:var(--hero-text)}
.hero .lede{color:rgba(255,255,255,.82);max-width:52ch;margin-bottom:32px}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap}
.hero-figures{
  display:grid;grid-template-columns:repeat(4,1fr);gap:var(--grid-gap);
  margin-top:var(--sp-section);padding-top:32px;
  border-top:1px solid rgba(255,255,255,.16);
}
.hero-figures .fig b{
  display:block;font-family:var(--font-mono);font-size:26px;font-weight:500;
  letter-spacing:-0.01em;margin-bottom:6px;color:var(--hero-text);
}
.hero-figures .fig span{font-size:13px;color:rgba(255,255,255,.68)}

/* ===== 客戶產業帶（logo 帶：48px 節拍） ===== */
.industry-band{background:var(--bg-raised);border-bottom:1px solid var(--border)}
.industry-band .row{display:flex;flex-wrap:wrap;align-items:center;gap:14px 40px}
.industry-band .tag{
  font-family:var(--font-mono);font-size:13px;color:var(--text-dim);
  border:1px solid var(--border);background:var(--surface);padding:8px 14px;
}

/* ===== 產品線：編號窄欄 + 內容寬欄 ===== */
.prodline{border-top:1px solid var(--border)}
.prodline li{list-style:none;border-bottom:1px solid var(--border)}
.prodline .item{
  display:grid;grid-template-columns:var(--list-num-col) minmax(0,1fr);
  gap:var(--list-gap);padding:34px 0;align-items:start;
}
.prodline .num{
  font-family:var(--font-mono);font-size:var(--fs-eyebrow);
  letter-spacing:var(--ls-eyebrow);color:var(--accent);padding-top:6px;
}
.prodline .body h3{margin-bottom:8px}
.prodline .body p{color:var(--text-dim);max-width:64ch;margin-bottom:14px}
.prodline .body .spec-inline{
  display:flex;flex-wrap:wrap;gap:8px 10px;
  font-family:var(--font-mono);font-size:13px;color:var(--text-dim);
}
.prodline .body .spec-inline i{
  font-style:normal;border:1px solid var(--border);background:var(--bg-raised);padding:4px 9px;
}

/* ===== 規格表：數值即內容（等寬數字＝可查證＝信任狀） ===== */
.spec-table{width:100%;border-collapse:collapse;font-size:14px}
.spec-table caption{
  text-align:left;color:var(--text-dim);font-size:13px;
  padding-bottom:12px;font-family:var(--font-mono);
}
.spec-table th,.spec-table td{
  text-align:left;padding:13px 14px;border-bottom:1px solid var(--border);vertical-align:top;
}
.spec-table thead th{
  font-family:var(--font-mono);font-size:var(--fs-eyebrow);
  letter-spacing:var(--ls-eyebrow);text-transform:uppercase;
  color:var(--text-dim);font-weight:400;
  border-bottom:1px solid var(--text);
}
.spec-table tbody th{font-weight:500;white-space:nowrap}
.spec-table td{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text-dim)}
.spec-table tbody tr:nth-child(even){background:var(--bg-raised)}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* ===== 卡片：直角、1px 邊框、無陰影 ===== */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--grid-gap)}
.card{
  border:1px solid var(--border);background:var(--surface);
  padding:28px 24px 30px;display:flex;flex-direction:column;gap:10px;
  transition:border-color var(--dur-fast) var(--ease-standard);
}
@media(hover:hover){.card:hover{border-color:var(--accent)}}
.card .k{font-family:var(--font-mono);font-size:var(--fs-eyebrow);letter-spacing:var(--ls-eyebrow);color:var(--accent)}
.card p{color:var(--text-dim)}

/* ===== 宣言段：1.5 倍留白當層級訊號 ===== */
.statement{background:var(--bg-raised);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.statement .h2{max-width:20ch;margin-bottom:16px}
.statement p{color:var(--text-dim);max-width:56ch}

/* ===== 詢價表單（介面設計；此示範不接後端） ===== */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px var(--grid-gap)}
.field{display:flex;flex-direction:column;gap:7px}
.field.full{grid-column:1/-1}
.field label{font-size:13px;font-weight:500}
.field .hint{font-size:12px;color:var(--text-dim)}
.field input,.field select,.field textarea{
  font-family:var(--font-sans);font-size:15px;color:var(--text);
  background:var(--surface);border:1px solid var(--border);border-radius:0;
  padding:12px 14px;min-height:48px;width:100%;
  transition:border-color var(--dur-micro) var(--ease-standard);
}
.field textarea{min-height:120px;resize:vertical;line-height:1.55}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent);
}
.field input::placeholder,.field textarea::placeholder{color:var(--text-dim);opacity:.75}
.form-note{
  font-family:var(--font-mono);font-size:12px;color:var(--text-dim);
  border-left:2px solid var(--accent);padding:10px 0 10px 12px;margin-top:6px;
}

/* ===== footer ===== */
footer{background:var(--hero-bg);color:var(--hero-text);padding:var(--sp-section) 0 40px}
.foot{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:32px var(--grid-gap)}
.foot p{color:rgba(255,255,255,.68);max-width:34ch;margin-top:12px}
.foot h5{
  font-family:var(--font-mono);font-size:var(--fs-eyebrow);
  letter-spacing:var(--ls-eyebrow);text-transform:uppercase;
  color:rgba(255,255,255,.56);margin-bottom:14px;font-weight:400;
}
.foot a{display:block;margin-bottom:9px;color:rgba(255,255,255,.82);font-size:14px;
  transition:color var(--dur-micro) var(--ease-standard)}
@media(hover:hover){.foot a:hover{color:var(--hero-text)}}
.foot a:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}
.copy{
  margin-top:var(--sp-band);padding-top:20px;border-top:1px solid rgba(255,255,255,.16);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;
  font-family:var(--font-mono);font-size:12px;color:rgba(255,255,255,.56);
}

/* ===== 進場：IntersectionObserver 單次 ===== */
.reveal{
  opacity:0;transform:translate3d(0,24px,0);
  transition:opacity var(--dur-standard) var(--ease-entrance),
             transform var(--dur-standard) var(--ease-entrance);
}
.reveal.is-visible{opacity:1;transform:translate3d(0,0,0)}
.reveal.d1{transition-delay:70ms}
.reveal.d2{transition-delay:140ms}

/* ===== responsive ===== */
@media(max-width:900px){
  .cards{grid-template-columns:1fr}
  .foot{grid-template-columns:1fr 1fr}
  .hero-figures{grid-template-columns:repeat(2,1fr);gap:24px var(--grid-gap)}
  .form-grid{grid-template-columns:1fr}
}
@media(max-width:620px){
  :root{--sp-section:64px;--sp-statement:96px;--sp-closing:80px;--list-gap:20px;--list-num-col:28px}
  .nav-links{
    display:none;position:absolute;top:64px;left:0;right:0;
    background:var(--bg);border-bottom:1px solid var(--border);
    flex-direction:column;align-items:flex-start;gap:0;padding:8px 20px 16px;
  }
  .nav-links.open{display:flex}
  .nav-links a{padding:12px 0;min-height:44px;display:flex;align-items:center;width:100%}
  .nav-toggle{display:inline-flex;align-items:center}
  .foot{grid-template-columns:1fr}
  .btn{width:100%}
  .hero-actions{flex-direction:column;align-items:stretch}
  /* 斷行規則配套：窄寬度改為編號在上、內文在下，內文欄拿回整個寬度。
     28px 編號欄容不下四位數年份，且內文欄僅 287px 時長句無斷點會溢出。 */
  .prodline .item{grid-template-columns:minmax(0,1fr);gap:8px}
  .prodline .num{padding-top:0}
}

/* ===== reduced-motion 全域 ===== */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important;
  }
  .reveal{opacity:1!important;transform:none!important}
}
