/* tools.knittinghiyori.com — 工具頁共用外框（規範 v2 §8）
   只用 k- 開頭的 class，避免和各工具自己的樣式（例如 .ts）互相干擾 */
:root{
  --paper:#fff;--ink:#16120f;--ink2:#5a524e;--muted:#6f6764;--line:#e4deda;--line2:#cfc6c1;
  --shu:#c8341e;--shu-soft:#fbebe7;--ok:#1d6b45;--ok-soft:#e8f3ec;--wash:#f7f4f2;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang TC","Hiragino Sans","Noto Sans TC","Noto Sans JP","Microsoft JhengHei",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --display:"Instrument Serif",Georgia,serif;
  --ease:cubic-bezier(.2,.8,.2,1);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:72px}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.7 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
.k-wrap{max-width:1120px;margin:0 auto;padding:0 20px}
@media (min-width:900px){.k-wrap{padding:0 32px}}
.k-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:2px solid var(--shu);outline-offset:3px;border-radius:6px}
::selection{background:var(--shu);color:#fff}

/* 頁首 */
.k-top{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.9);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);border-bottom:1px solid var(--line)}
.k-top .k-wrap{display:flex;align-items:center;justify-content:space-between;height:56px}
.k-brand{display:flex;align-items:center;gap:6px;font:500 14px var(--mono);color:var(--ink);text-decoration:none;white-space:nowrap}
.k-brand i{width:10px;height:10px;border-radius:50%;background:var(--shu);margin-right:4px;box-shadow:0 0 0 3px var(--shu-soft)}
.k-brand span{color:var(--muted)}
.k-langs{display:flex;gap:2px;font:500 13px var(--mono)}
.k-langs a{position:relative;display:grid;place-items:center;min-width:40px;height:36px;padding:0 6px;color:var(--muted);text-decoration:none;border-radius:999px}
.k-langs a[aria-current="page"]{color:var(--ink)}
.k-langs a[aria-current="page"]::after{content:"";position:absolute;left:50%;bottom:4px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--shu)}

/* 麵包屑 */
.k-crumb ol{display:flex;flex-wrap:wrap;gap:4px 0;list-style:none;margin:0;padding:14px 0 0;font:500 12px/1.5 var(--mono);letter-spacing:.04em;color:var(--muted)}
.k-crumb li+li::before{content:"/";margin:0 8px;color:var(--line2)}
.k-crumb a{color:var(--muted);text-decoration:none;border-bottom:1px solid var(--line2)}
.k-crumb [aria-current]{color:var(--ink)}
.k-crumb .k-upd{margin-left:auto}

/* 工具本身改用全站色票（工具的 CSS 先載入，這裡覆蓋） */
.ts{--ink:#16120f;--sub:#5a524e;--line:#e4deda;--soft:#f7f4f2;--coral:#c8341e;--coral-l:#fbebe7;--hi:#f6c4b8;--red:#c8341e;--green:#1d6b45;max-width:none!important}
.ts h1{font-size:1.75em;line-height:1.3;margin:.35em 0 .45em;font-weight:800;color:var(--ink);letter-spacing:.01em}
@media (min-width:900px){.ts h1{font-size:2.1em}}
.ts h1 .hl{background:linear-gradient(transparent 60%,var(--hi) 60%);padding:0 2px}

/* 工具下方的導流區 */
.ts .k-more{margin-top:26px}
.ts .k-lbl{font:500 11px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 4px}
.ts .k-h{font-size:1.15em;font-weight:800;margin:0 0 12px;display:block}
.ts .k-cards{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
@media (min-width:640px){.ts .k-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ts .k-card{display:flex;gap:12px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:14px;color:var(--ink)!important;text-decoration:none!important;background:#fff;transition:border-color .2s,transform .2s var(--ease)}
.ts .k-card svg{flex:0 0 40px;height:40px;padding:8px;border-radius:10px;background:var(--wash);fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.ts .k-card b{display:block;font-size:.95em;line-height:1.4}
.ts .k-card small{display:block;font-size:.8em;line-height:1.5;color:var(--ink2);margin-top:2px}
.ts .k-card em{display:inline-block;font-style:normal;font-size:.72em;line-height:1;padding:4px 7px;border-radius:999px;background:var(--wash);color:var(--ink2);margin-top:6px}
.ts .k-card em.ok{background:var(--ok-soft);color:var(--ok)}
@media (hover:hover){.ts .k-card:hover{border-color:var(--ink);transform:translateY(-2px)}}
.ts .k-blog{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.ts .k-blog li{border-bottom:1px solid var(--line)}
.ts .k-blog a{display:flex;justify-content:space-between;gap:12px;padding:12px 2px;color:var(--ink)!important;text-decoration:none!important;font-weight:700;font-size:.95em}
.ts .k-blog a::after{content:"→";color:var(--muted);font-weight:400}
.ts .k-note{font-size:.8em;color:var(--ink2);margin:8px 0 0}
.ts .k-duo{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
@media (min-width:640px){.ts .k-duo{grid-template-columns:1fr 1fr}}
.ts .k-big{position:relative;display:flex;flex-direction:column;gap:4px;padding:20px;border-radius:18px;text-decoration:none!important;overflow:hidden;isolation:isolate;min-height:150px;justify-content:flex-end}
.ts .k-big b{font-size:1.1em;line-height:1.35}
.ts .k-big small{font-size:.85em;line-height:1.5}
.ts .k-big .k-lbl{color:inherit;opacity:.75}
.ts .k-big.hub{background:var(--ink);color:#fff!important}
.ts .k-big.games{background:var(--shu);color:#fff!important}
.ts .k-big svg{position:absolute;right:-24px;top:-24px;width:120px;height:120px;z-index:-1;opacity:.35;fill:none;stroke:currentColor;stroke-width:1.2}
.ts .k-big span.go{margin-top:6px;font-weight:700;font-size:.9em}
@media (hover:hover){.ts .k-big:hover span.go{text-decoration:underline;text-underline-offset:3px}}
.ts .k-keep{margin-top:26px}
.ts .k-keep #ts-install{border:1.5px solid var(--ink)}

/* AdSense（規範 v2 §5） */
.kh-ad-wrap{padding:8px 0}
.kh-ad{width:100%;max-width:728px;margin:0 auto;min-height:120px}
.kh-ad-l{font:500 11px/1 var(--mono);letter-spacing:.14em;color:var(--muted);text-align:center;margin:0 0 8px}
.kh-ad ins.adsbygoogle[data-ad-status="unfilled"]{display:none!important}
.kh-ad-wrap:has(ins[data-ad-status="unfilled"]){display:none}

/* 頁尾 */
.k-foot{margin-top:48px;border-top:1px solid var(--ink);padding:24px 0 30px;font-size:14px;overflow:hidden}
.k-foot nav{display:flex;flex-wrap:wrap;gap:6px 20px}
.k-foot nav a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line2)}
.k-foot .k-copy{font:12px var(--mono);color:var(--muted);margin:14px 0 0}
.kh-legal{font-size:12px;line-height:1.6;color:var(--muted);margin:12px 0 0}
.kh-legal a{margin-left:4px;color:var(--muted);text-decoration:underline;text-underline-offset:2px}
.k-word{font:400 clamp(56px,17vw,220px)/.8 var(--display);letter-spacing:-.045em;margin:28px 0 0;white-space:nowrap;text-align:center;transform:translateY(.1em);user-select:none}
.k-word i{color:var(--shu)}
@media (max-width:899px){.k-foot{padding-bottom:96px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* LINE 綠底白字對比不足（2.3），改用較深的 LINE 綠 */
.ts .btn.line{background:#047a36}
