
:root{--bg:#E0F0FB;--bg-soft:#F7FBFE;--ink:#232A50;--ink-2:#3A4270;--muted:#516D88;--line:#BAD7EA;--teal:#149A8A;--teal-soft:#DCEEEB;--red:#BE3F2D;--teal-ink:#0C7365;
--serif:"Noto Sans TC","PingFang TC","Microsoft JhengHei","Helvetica Neue",sans-serif;--sans:"Noto Sans TC","PingFang TC","Microsoft JhengHei","Helvetica Neue",sans-serif;--mono:"SF Mono","Cascadia Mono",Menlo,Consolas,"Courier New",monospace}
*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.85;letter-spacing:.02em;-webkit-font-smoothing:antialiased;overflow-x:clip}
::selection{background:var(--teal);color:#fff}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}
header{position:sticky;top:0;z-index:80;border-bottom:1px solid var(--line)}
header::before{content:"";position:absolute;inset:0;z-index:-1;background:rgba(224,240,251,.9);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.nav{max-width:1120px;margin:0 auto;padding:0 32px;height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand-logo{height:44px;width:44px;object-fit:contain;display:block}
.brand-name{font-family:var(--serif);font-weight:700;font-size:1.04rem;color:var(--ink);letter-spacing:.04em;white-space:nowrap}
.nav-right{display:flex;align-items:center;gap:24px}
.nav-link{font-size:.88rem;color:var(--ink-2);border-bottom:1.5px solid transparent;padding:4px 0}
.nav-link:hover{border-color:var(--teal);color:var(--ink)}
.btn{display:inline-flex;align-items:center;gap:8px;border-radius:999px;cursor:pointer;font-family:var(--sans);font-size:.9rem;letter-spacing:.06em;padding:11px 26px;border:1.5px solid var(--ink);background:transparent;color:var(--ink)}
.btn.teal{background:#0C7365;border-color:#0C7365;color:#fff;font-weight:600}
.btn.sm{padding:8px 20px;font-size:.84rem}
@media(max-width:520px){.brand-name{font-size:.94rem}.nav-link{display:none}}
.crumb a{color:var(--ink-2);border-bottom:1px solid var(--line)}
.crumb a:hover{color:var(--teal-ink);border-color:var(--teal)}
footer{border-top:1px solid var(--line);padding:40px 0 54px;background:linear-gradient(180deg,var(--bg) 0%,#D8ECF8 100%);margin-top:40px}
.foot-in img{width:30px;height:30px}
.foot-in .t{font-size:.84rem;color:var(--ink-2)}
.foot-in .t b{display:block;font-family:var(--serif)}
.foot-in .t a{color:inherit;border-bottom:1px solid var(--line)}
.foot-in .t a:hover{color:var(--teal-ink);border-color:var(--teal)}
.foot-legal{width:100%;margin-top:14px;font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;color:var(--muted);display:flex;gap:14px;flex-wrap:wrap}
.foot-legal a{border-bottom:1px solid var(--line)}
.foot-legal a:hover{color:var(--teal-ink);border-color:var(--teal)}
/* 動效：與首頁一致的統一過場，尊重「減少動態」偏好 */
@media(prefers-reduced-motion:no-preference){
.btn,.nav-link,.brand,.crumb a,.pp-share,.author-box,.more a,.post-body figure img{transition:color .22s ease,background-color .22s ease,border-color .22s ease,box-shadow .3s ease,transform .3s cubic-bezier(.22,.7,.3,1)}
}
.brand{display:flex;align-items:center;gap:10px;cursor:pointer}
.btn:hover{background:rgba(35,42,80,.06);transform:translateY(-2px)}
.btn:active{opacity:.8;transform:translateY(0)}
.btn.teal:hover{background:#0A5F53;border-color:#0A5F53;box-shadow:0 12px 24px -12px rgba(12,115,101,.75)}
.post-page{max-width:720px;margin:0 auto;padding:56px 32px 96px}
/* 長文閱讀面：把內文放在淺色紙面上，藍色退成環境色。
   手機維持滿版（窄螢幕上留白比紙面重要），平板以上才浮起來。 */
@media(min-width:600px){
  .post-page{background:var(--bg-soft);border:1px solid var(--line);border-radius:20px;
    box-shadow:0 22px 54px -36px rgba(35,42,80,.5);
    margin-top:36px;margin-bottom:64px;padding:56px 56px 72px}
}
.crumb{font-family:var(--mono);font-size:.72rem;letter-spacing:.05em;color:var(--muted);margin-bottom:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.author-box{display:flex;align-items:center;gap:16px;margin-top:30px;padding:20px 22px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.55);box-shadow:0 2px 12px -6px rgba(35,42,80,.16)}
.author-box:hover{border-color:rgba(20,154,138,.45);box-shadow:0 16px 32px -22px rgba(20,154,138,.5)}
.author-box img{width:52px;height:52px;flex:none;border-radius:50%;background:#fff;object-fit:contain}
.author-box .a-name{font-family:var(--serif);font-weight:700;font-size:1.02rem}
.author-box .a-cred{font-size:.8rem;color:var(--muted);margin:3px 0 6px;line-height:1.7}
.author-box .a-link{font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;color:var(--teal-ink)}
.author-box .a-link:hover{text-decoration:underline}
/* 字距只給拉丁字母與數字：中文字本來就等寬，再加 .16em 會被拆成「肩 膀 痛」 */
.meta{font-family:var(--mono);font-size:.72rem;letter-spacing:normal;color:var(--muted);display:flex;gap:18px;flex-wrap:wrap;align-items:center;margin-bottom:20px}
.meta .date{letter-spacing:.16em}
.meta .cat{color:var(--red)}
.pp-share{margin-left:auto;font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;color:var(--teal-ink);background:none;border:1px solid var(--line);border-radius:999px;padding:5px 14px;cursor:pointer;white-space:nowrap}
.pp-share:hover{border-color:var(--teal);background:var(--teal-soft)}
h1.post-title{font-family:var(--serif);font-size:clamp(1.7rem,4vw,2.5rem);line-height:1.45;margin-bottom:14px}
.lede{font-family:var(--serif);color:var(--muted);font-size:1.02rem;line-height:2;border-bottom:1px solid var(--line);padding-bottom:30px;margin-bottom:38px}
.post-body p{font-family:var(--serif);font-size:1.04rem;line-height:2.1;letter-spacing:.04em;color:var(--ink-2);margin-bottom:1.7em;text-align:justify}
.post-body h2{font-family:var(--serif);font-size:1.3rem;font-weight:700;margin:2.4em 0 1em;display:flex;align-items:center;gap:12px}
.post-body h2::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--red);flex:none}
.post-body blockquote{border-left:2px solid var(--teal);padding:6px 0 6px 22px;margin:0 0 1.7em;font-family:var(--serif);color:var(--teal-ink);font-size:1.04rem;line-height:2}
.post-body strong{color:var(--ink)}
.post-body ul,.post-body ol{font-family:var(--serif);font-size:1.04rem;line-height:2;letter-spacing:.04em;color:var(--ink-2);margin:0 0 1.7em;padding-left:1.5em}
.post-body li{margin-bottom:.55em;padding-left:.25em}
.post-body li::marker{color:var(--teal-ink)}
.post-body li:last-child{margin-bottom:0}
.post-body em{font-style:italic}
.post-body hr{border:none;border-top:1px solid var(--line);margin:2.6em 0}
.post-body figure{margin:2em 0;text-align:center}
.post-body figure img{max-width:100%;border-radius:10px;box-shadow:0 4px 20px rgba(35,42,80,.14);display:inline-block}
.post-body figcaption{margin-top:10px;font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;color:var(--muted)}
.post-body h2{scroll-margin-top:92px}
.post-body h2 .hash{margin-left:6px;font-family:var(--mono);font-size:.78rem;color:var(--line);opacity:0;transition:opacity .15s,color .15s}
.post-body h2:hover .hash,.post-body h2 .hash:focus-visible{opacity:1;color:var(--teal-ink)}
/* 閱讀進度：頁面頂端一條細線，讓長文的位置感更清楚 */
.reading{position:fixed;left:0;top:0;height:3px;width:100%;z-index:90;pointer-events:none;background:transparent}
.reading i{display:block;height:100%;width:0;background:var(--teal)}
/* 目錄：手機為可摺疊區塊，寬螢幕移到右側固定欄 */
.toc{margin:0 0 38px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.55);padding:14px 18px}
.toc>summary{cursor:pointer;font-family:var(--mono);font-size:.7rem;letter-spacing:.18em;color:var(--muted);list-style:none;display:flex;align-items:center;gap:10px}
.toc>summary::-webkit-details-marker{display:none}
.toc>summary::after{content:"＋";margin-left:auto;color:var(--teal-ink);font-size:.85rem}
.toc[open]>summary::after{content:"－"}
.toc ol{list-style:none;margin:10px 0 2px;padding:0;counter-reset:toc;font-family:var(--sans)}
.toc li{counter-increment:toc}
.toc li a{display:block;position:relative;padding:6px 0 6px 28px;font-size:.9rem;line-height:1.7;color:var(--ink-2)}
.toc li a::before{content:counter(toc,decimal-leading-zero);position:absolute;left:0;top:7px;font-family:var(--mono);font-size:.64rem;letter-spacing:.06em;color:var(--muted)}
.toc li a:hover{color:var(--teal-ink)}
.toc li a.on,.toc li a.on::before{color:var(--teal-ink)}
.toc li a.on{font-weight:700}
/* 上一篇 / 下一篇：同分類的鄰近文章，讓系列文章可以一路讀下去 */
.pager{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:44px}
.pager a{display:block;padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.55)}
.pager a:hover{border-color:var(--teal)}
.pager a span{display:block;font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;color:var(--muted);margin-bottom:6px}
.pager a b{font-family:var(--serif);font-size:1rem;font-weight:700;line-height:1.6;display:block}
.pager a:hover b{color:var(--teal-ink)}
.pager .nx{text-align:right}
.post-foot{margin-top:56px;padding-top:26px;border-top:1px solid var(--line);font-size:.8rem;color:var(--muted)}
.more{margin-top:52px;padding-top:30px;border-top:1px solid var(--line)}
.more h3{font-family:var(--mono);font-size:.72rem;letter-spacing:.2em;color:var(--muted);margin-bottom:18px}
.more a{position:relative;display:block;font-family:var(--serif);font-size:1.05rem;color:var(--ink);padding:12px 0 12px 0;border-bottom:1px solid var(--line)}
.more a::before{content:"";position:absolute;left:-14px;top:14px;bottom:14px;width:2px;background:var(--red);border-radius:2px;opacity:0}
.more a:hover{color:var(--teal-ink);transform:translateX(8px)}
.more a:hover::before{opacity:1}
@media(prefers-reduced-motion:no-preference){.more a::before{transition:opacity .3s ease}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.btn:hover,.more a:hover{transform:none}}
.more a span{display:block;font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;color:var(--muted);margin-top:4px}
.foot-in{max-width:1120px;margin:0 auto;padding:0 32px;display:flex;align-items:center;gap:12px}
.foot-in{flex-wrap:wrap}
.nav-link:focus-visible,.back-link:focus-visible,.brand:focus-visible,.btn:focus-visible,.pp-share:focus-visible,.more a:focus-visible{outline:2px solid var(--teal);outline-offset:3px;border-radius:6px}
@media(min-width:1140px){
  .post-page{max-width:1160px;display:grid;grid-template-columns:minmax(0,700px) 252px;column-gap:56px;justify-content:center;padding:60px 64px 76px}
  .post-page>*{grid-column:1;min-width:0}
  .post-page>.toc{grid-column:2;grid-row:1/span 99;align-self:start;position:sticky;top:92px;
    margin:0;padding:2px 0 2px 22px;background:none;border:none;border-left:1px solid var(--line);border-radius:0;
    max-height:calc(100vh - 130px);overflow-y:auto}
  .post-page>.toc>summary{pointer-events:none;margin-bottom:2px}
  .post-page>.toc>summary::after{content:none}
}
@media(max-width:560px){.pager{grid-template-columns:1fr}.pager .nx{text-align:left}}
@media(max-width:480px){
  .post-page{padding:40px 22px 72px}
  .post-body p{text-align:left}
  .meta{gap:12px}
  .toc{padding:12px 15px}
}