@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+TC:wght@200;300;400;500&family=EB+Garamond:ital,wght@0,400;0,500;1,400&display=swap');

:root{
  --paper:#FAF7F1;
  --paper-warm:#F4EDE2;
  --ink:#1C1B18;
  --ink-soft:#5F5B4E;
  --ink-faint:#9A9484;
  --rule:#DCD6C8;
  --rule-soft:#E9E3D5;

  --olive:#5A5A3B;
  --ochre:#B09945;
  --terracotta:#9E6F53;
  --sepia:#6B4A32;
  --slate:#456E91;

  --serif:'Noto Serif TC',"Songti TC","Source Han Serif TC",serif;
  --garamond:'EB Garamond',Georgia,serif;

  --measure:34rem;
  --gutter:clamp(1.25rem,5vw,3rem);
}

*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--serif);
  font-weight:300;
  font-size:16px;
  line-height:2;
  letter-spacing:.04em;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}

.wrap{max-width:64rem;margin:0 auto;padding:0 var(--gutter);}
.narrow{max-width:var(--measure);margin-left:auto;margin-right:auto;}

/* ---------- masthead ---------- */
.masthead{
  border-bottom:.5px solid var(--rule);
  padding:1.6rem 0 1.1rem;
  display:flex;justify-content:space-between;align-items:baseline;gap:1.5rem;flex-wrap:wrap;
}
.brand{display:flex;align-items:baseline;gap:.85rem;}
.brand-name{font-size:1.05rem;font-weight:300;letter-spacing:.4em;}
.brand-alt{font-family:var(--garamond);font-size:.8rem;color:var(--ink-faint);letter-spacing:.18em;}
nav.primary{display:flex;gap:1.45rem;align-items:baseline;flex-wrap:wrap;}
nav.primary a{font-size:.78rem;color:var(--ink-soft);letter-spacing:.18em;padding-bottom:2px;border-bottom:.5px solid transparent;transition:border-color .25s,color .25s;}
nav.primary a:hover,nav.primary a:focus-visible{color:var(--ink);border-bottom-color:var(--ink);}
nav.primary a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--rule);}
.langtoggle{font-family:var(--garamond);font-size:.72rem;letter-spacing:.14em;color:var(--ink-faint);background:none;border:none;cursor:pointer;padding:2px 0;border-bottom:.5px solid var(--rule);font-feature-settings:"lnum";}
.langtoggle:hover{color:var(--ink);border-bottom-color:var(--ink);}

/* ---------- bilingual echo ---------- */
.zh{display:block;}
.en{display:block;font-family:var(--garamond);font-style:italic;color:var(--ink-faint);letter-spacing:.01em;line-height:1.5;}
h1 .en,h2 .en,h3 .en{font-size:.55em;margin-top:.3em;}

/* language modes */
html[data-lang="zh"] .only-en{display:none;}
html[data-lang="en"] .only-zh{display:none;}
html[data-lang="en"] .zh{color:var(--ink-faint);font-size:.85em;order:2;}
html[data-lang="en"] .en{color:inherit;font-style:normal;font-size:1em;order:1;}
html[data-lang="en"] .bi{display:flex;flex-direction:column;}

/* ---------- hero ---------- */
.hero{padding:clamp(3rem,9vw,6rem) 0 clamp(2.5rem,7vw,4.5rem);display:grid;grid-template-columns:1fr auto;gap:clamp(1.5rem,5vw,3.5rem);align-items:start;}
.hero-lede{font-size:clamp(1.3rem,3.2vw,1.75rem);font-weight:200;line-height:1.75;letter-spacing:.05em;margin:0 0 .6rem;}
.hero-lede-en{font-family:var(--garamond);font-style:italic;font-size:clamp(.85rem,1.7vw,1rem);color:var(--ink-faint);margin:0 0 1.8rem;letter-spacing:.02em;line-height:1.6;}
.hero-meta{font-size:.78rem;color:var(--ink-soft);line-height:2.2;letter-spacing:.05em;margin:0;}
.hero-fig{width:clamp(7rem,17vw,10.5rem);}
.hero-fig img{border-radius:1px;}
.hero-fig figcaption{font-size:.62rem;color:var(--ink-faint);letter-spacing:.14em;margin-top:.6rem;line-height:1.7;}

/* ---------- section blocks ---------- */
.block{padding:clamp(2.2rem,5vw,3.2rem) 0;border-top:.5px solid var(--rule);}
.block[data-accent="olive"]{border-top:2px solid var(--olive);}
.block[data-accent="terracotta"]{border-top:2px solid var(--terracotta);}
.block[data-accent="sepia"]{border-top:2px solid var(--sepia);}
.block[data-accent="slate"]{border-top:2px solid var(--slate);}
.block[data-accent="ochre"]{border-top:2px solid var(--ochre);}

.eyebrow{font-size:.62rem;letter-spacing:.42em;color:var(--ink-faint);margin:0 0 1.4rem;text-transform:none;}
.eyebrow em{font-family:var(--garamond);font-style:normal;letter-spacing:.3em;}
[data-accent="olive"] .eyebrow{color:var(--olive);}
[data-accent="terracotta"] .eyebrow{color:var(--terracotta);}
[data-accent="sepia"] .eyebrow{color:var(--sepia);}
[data-accent="slate"] .eyebrow{color:var(--slate);}
[data-accent="ochre"] .eyebrow{color:#8A7729;}

.title-lg{font-size:clamp(1.5rem,3.4vw,2rem);font-weight:200;letter-spacing:.08em;margin:0 0 .8rem;line-height:1.5;}
.title-md{font-size:1.05rem;font-weight:300;letter-spacing:.08em;margin:0;}
.dek{font-size:.85rem;color:var(--ink-soft);line-height:2.1;margin:0;}

/* ---------- index grid ---------- */
.pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:clamp(1.4rem,4vw,2.6rem);}
.card{border-right:.5px solid var(--rule-soft);padding-right:clamp(1.2rem,3vw,2rem);}
.card:last-child{border-right:none;padding-right:0;}
.card .title-md{margin-bottom:.15rem;}
.card .excerpt{font-size:.8rem;color:var(--ink-soft);line-height:2;margin:.7rem 0 0;}

.arrow{font-size:.72rem;letter-spacing:.2em;border-bottom:.5px solid currentColor;padding-bottom:2px;display:inline-block;margin-top:1rem;transition:opacity .2s;}
.arrow:hover{opacity:.6;}
[data-accent="olive"] .arrow{color:var(--olive);}
[data-accent="terracotta"] .arrow{color:var(--terracotta);}
[data-accent="sepia"] .arrow{color:var(--sepia);}
[data-accent="slate"] .arrow{color:var(--slate);}
[data-accent="ochre"] .arrow{color:#8A7729;}

/* ---------- table of contents ---------- */
.toc{list-style:none;padding:0;margin:0;}
.toc li{border-bottom:.5px solid var(--rule-soft);}
.toc a{display:flex;justify-content:space-between;align-items:baseline;gap:1.5rem;padding:.85rem 0;transition:padding-left .3s,color .25s;}
.toc a:hover{padding-left:.6rem;color:var(--olive);}
.toc .t{font-size:.95rem;font-weight:300;letter-spacing:.06em;}
.toc .t-en{font-family:var(--garamond);font-style:italic;font-size:.78rem;color:var(--ink-faint);margin-left:.7rem;}
.toc .n{font-family:var(--garamond);font-size:.72rem;color:var(--ink-faint);letter-spacing:.1em;flex-shrink:0;}

/* ---------- reading ---------- */
.piece{padding:clamp(2.5rem,6vw,4rem) 0;border-top:.5px solid var(--rule-soft);}
.piece:first-of-type{border-top:none;}
.piece h2{font-size:1.35rem;font-weight:300;letter-spacing:.1em;margin:0 0 .3rem;}
.piece h2 .en-echo{display:block;font-family:var(--garamond);font-style:italic;font-size:.78rem;color:var(--ink-faint);letter-spacing:.02em;margin-top:.35rem;}
.piece .body{margin-top:1.9rem;}
.piece .body p{margin:0 0 1.35rem;line-height:2.15;letter-spacing:.045em;font-size:.95rem;}
.piece .body p:last-child{margin-bottom:0;}

.plate{margin:clamp(2.5rem,7vw,4.5rem) 0;}
.plate img{border-radius:1px;}
.plate figcaption{font-size:.62rem;color:var(--ink-faint);letter-spacing:.16em;margin-top:.7rem;}

/* vertical 輯 marker */
.rubric{writing-mode:vertical-rl;font-size:.8rem;letter-spacing:.55em;color:var(--ink-faint);font-weight:200;}

/* ---------- illustrated ---------- */
.illus{display:grid;grid-template-columns:minmax(0,7rem) 1fr;gap:clamp(1.1rem,3vw,1.8rem);align-items:start;}
.illus .frame{background:var(--terracotta);aspect-ratio:3/4;border-radius:1px;display:flex;align-items:flex-end;padding:.5rem;}
.illus .frame span{font-size:.56rem;color:#F0DFD3;letter-spacing:.2em;}
.credit{display:flex;align-items:center;gap:.9rem;margin-top:1.4rem;padding-top:1.1rem;border-top:.5px solid var(--rule-soft);flex-wrap:wrap;}
.credit .av{width:2.1rem;height:2.1rem;border-radius:50%;background:#EBDCCF;flex-shrink:0;}
.credit p{font-size:.72rem;color:#7A6A5C;margin:0;line-height:1.9;flex:1;min-width:12rem;}
.btn{font-size:.68rem;color:var(--paper);background:var(--sepia);padding:.55rem 1.15rem;border-radius:1px;letter-spacing:.16em;display:inline-block;border:none;cursor:pointer;font-family:var(--serif);transition:opacity .2s;}
.btn:hover{opacity:.85;}
.btn--terracotta{background:var(--terracotta);}

/* ---------- dekami ---------- */
.dekami{background:var(--paper-warm);}
.dekami .block{border-top-color:var(--sepia);}
.seal{width:3.2rem;height:3.2rem;border:.75px solid var(--sepia);border-radius:50%;display:flex;align-items:center;justify-content:center;transform:rotate(-8deg);flex-shrink:0;}
.seal span{font-size:.62rem;color:var(--sepia);font-weight:200;}
.letterform{display:flex;flex-direction:column;align-items:center;gap:1rem;margin-top:1.6rem;}
.letterform input{width:100%;max-width:22rem;text-align:center;background:transparent;border:none;border-bottom:.5px solid var(--sepia);padding:.6rem .2rem;font-family:var(--serif);font-size:.85rem;color:var(--ink);letter-spacing:.05em;}
.letterform input:focus{outline:none;border-bottom-width:1px;}
.letterform input::placeholder{color:#A99175;}

/* ---------- empty state ---------- */
.empty{border:.5px dashed var(--rule);padding:clamp(1.8rem,5vw,2.6rem);text-align:center;}
.empty p{font-size:.82rem;color:var(--ink-faint);margin:0;line-height:2;}

/* ---------- footer ---------- */
footer{border-top:.5px solid var(--rule);margin-top:clamp(3rem,8vw,5rem);padding:2.6rem 0 3.4rem;}
.foot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:1.8rem;}
.foot-grid h3{font-size:.62rem;letter-spacing:.34em;color:var(--ink-faint);font-weight:300;margin:0 0 .9rem;}
.foot-grid a,.foot-grid p{font-size:.78rem;color:var(--ink-soft);line-height:2.1;margin:0;display:block;}
.foot-grid a:hover{color:var(--ink);}
.colophon{margin-top:2.4rem;padding-top:1.2rem;border-top:.5px solid var(--rule-soft);font-size:.62rem;color:var(--ink-faint);letter-spacing:.1em;line-height:2;}
.care{font-size:.62rem;color:var(--ink-faint);letter-spacing:.06em;line-height:1.9;margin-top:.8rem;}
.care a{border-bottom:.5px solid var(--rule);}

@media(max-width:640px){
  .hero{grid-template-columns:1fr;}
  .hero-fig{width:8rem;}
  .card{border-right:none;padding-right:0;border-bottom:.5px solid var(--rule-soft);padding-bottom:1.4rem;}
  .card:last-child{border-bottom:none;padding-bottom:0;}
  .illus{grid-template-columns:1fr;}
  .illus .frame{max-width:8rem;}
  .masthead{flex-direction:column;align-items:flex-start;gap:1rem;}
}
@media(prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important;}
}
:focus-visible{outline:1.5px solid var(--olive);outline-offset:3px;}

/* verse */
.piece .body p.verse{line-height:2.5;letter-spacing:.1em;font-size:1rem;}


/* ================= Medium-style full-bleed grid =================
   Text stays in a narrow measure; images are free to break out.   */
.flow{
  display:grid;
  grid-template-columns:
    [full-start] minmax(var(--gutter),1fr)
    [wide-start] minmax(0,8rem)
    [text-start] min(41rem,100% - (var(--gutter) * 2)) [text-end]
    minmax(0,8rem) [wide-end]
    minmax(var(--gutter),1fr) [full-end];
}
.flow > *{grid-column:text;}
.flow > .wide{grid-column:wide;}
.flow > .full{grid-column:full;}

/* ---- lead image ---- */
.lead{margin:0 0 clamp(2rem,5vw,3.5rem);}
.lead img{
  width:100%;
  height:clamp(19rem,64vh,34rem);
  object-fit:cover;
  border-radius:1px;
}
.lead figcaption,
.figure-note{
  font-size:.62rem;color:var(--ink-faint);letter-spacing:.16em;
  margin-top:.7rem;padding:0 var(--gutter);
}
.flow > .lead figcaption{padding:0;}

/* ---- plates in the reading flow ---- */
.plate-full{margin:clamp(3rem,8vw,5.5rem) 0;}
.plate-full img{width:100%;height:clamp(17rem,58vh,30rem);object-fit:cover;border-radius:1px;}
.plate-wide{margin:clamp(2.5rem,6vw,4rem) 0;}
.plate-wide img{width:100%;border-radius:1px;}
.plate-pair{
  margin:clamp(2.5rem,6vw,4rem) 0;
  display:grid;grid-template-columns:1fr 1fr;gap:clamp(.6rem,1.6vw,1.1rem);
}
.plate-pair img{width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:1px;}

/* ---- magazine mosaic ---- */
.mosaic{
  display:grid;
  grid-template-columns:repeat(12,1fr);
  gap:clamp(.7rem,1.8vw,1.4rem);
  margin:clamp(2rem,5vw,3rem) 0 0;
}
.mosaic .tile{width:100%;}
.tile{position:relative;display:block;overflow:hidden;border-radius:1px;background:var(--ink);}
.tile img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .9s cubic-bezier(.2,.6,.2,1),opacity .5s;
  opacity:.88;
}
.tile:hover img,.tile:focus-visible img{transform:scale(1.035);opacity:1;}
.tile figcaption{
  position:absolute;left:0;right:0;bottom:0;
  padding:clamp(1rem,2.4vw,1.8rem);
  background:linear-gradient(to top,rgba(16,15,13,.78) 0%,rgba(16,15,13,.34) 55%,transparent 100%);
  color:#FAF7F1;
}
.tile .t-zh{display:block;font-size:clamp(1rem,1.9vw,1.3rem);font-weight:300;letter-spacing:.1em;}
.tile .t-en{display:block;font-family:var(--garamond);font-style:italic;font-size:.76rem;opacity:.72;margin-top:.25rem;letter-spacing:.02em;}
.tile .t-dek{display:block;font-size:.7rem;opacity:.68;margin-top:.6rem;line-height:1.8;letter-spacing:.04em;}

/* 交錯排法：12 欄制，寬卡（7 欄）左右交替，這是錯落感的來源。
   各門卡比例仍對齊原圖，所以四張圖幾乎不裁、也不留白：
     a 正方形原圖 → 1/1；b 書封 985:1400 → 原比例（裁到就會切掉「艾居文」字樣）
     c 移動城堡 1078:1325 → 原比例
     d 極短篇照片 → 唯一刻意裁的一張，裁掉左右各 12% 換取與 c 齊高，
       原圖是天際線，裁兩側不損失內容 */
.tile--a{grid-column:span 7;aspect-ratio:1/1;}        /* 禮拜四專欄 */
.tile--b{grid-column:span 5;aspect-ratio:985/1400;}   /* 艾居文：書封 */
.tile--c{grid-column:span 5;aspect-ratio:1078/1325;}  /* DEKAMI：移動城堡 */
.tile--d{grid-column:span 7;aspect-ratio:255/224;}    /* 極短篇 */

/* ---- section rule ---- */
.rule{
  grid-column:text;
  display:flex;justify-content:space-between;align-items:baseline;
  border-top:.5px solid var(--rule);padding-top:1rem;margin-top:clamp(3rem,7vw,4.5rem);
}
.rule[data-accent="olive"]{border-top:2px solid var(--olive);}
.rule[data-accent="terracotta"]{border-top:2px solid var(--terracotta);}
.rule[data-accent="sepia"]{border-top:2px solid var(--sepia);}
.rule[data-accent="ochre"]{border-top:2px solid var(--ochre);}
.rule .eyebrow{margin:0;}

@media(max-width:720px){
  .tile--a,.tile--b,.tile--c,.tile--d{grid-column:span 12;aspect-ratio:3/2;}
  .tile--wide{aspect-ratio:3/2;}
  .plate-pair{grid-template-columns:1fr;}
}

/* ================= illustrated column ================= */
.dir{font-family:var(--garamond);font-size:.66rem;letter-spacing:.22em;color:var(--ink-faint);white-space:nowrap;}
.dir--rev{color:var(--terracotta);}
.meta-row{display:flex;gap:1.1rem;align-items:baseline;flex-wrap:wrap;font-size:.66rem;color:var(--ink-faint);letter-spacing:.14em;margin:.7rem 0 0;}
.meta-row .sep{opacity:.45;}

.card-illus{display:block;}
.card-illus .shot{overflow:hidden;border-radius:1px;background:#EFE9DE;}
.card-illus .shot img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.6,.2,1);}
.card-illus:hover .shot img{transform:scale(1.035);}
.card-illus h3{font-size:1rem;font-weight:300;letter-spacing:.08em;margin:.9rem 0 .1rem;}
.card-illus .e{font-family:var(--garamond);font-style:italic;font-size:.74rem;color:var(--ink-faint);margin:0;}

.grid-illus{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:clamp(1.2rem,3vw,2.2rem);margin-top:1.6rem;}
.grid-illus .shot{aspect-ratio:4/5;}
.grid-illus .feature{grid-column:span 2;}
.grid-illus .feature .shot{aspect-ratio:16/10;}

/* reversed piece — the postcard */
.postcard{
  background:linear-gradient(180deg,#F2EAE0 0%,#EDE3D6 100%);
  padding:clamp(1.2rem,3vw,2rem);
  border-radius:2px;
  box-shadow:0 1px 0 rgba(107,74,50,.14), 0 14px 34px -18px rgba(107,74,50,.5);
  transform:rotate(-.6deg);
}
.postcard img{border-radius:1px;box-shadow:0 1px 3px rgba(28,27,24,.18);}
.postcard figcaption{
  font-size:.62rem;color:var(--sepia);letter-spacing:.18em;margin-top:.9rem;
  display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;
}
.reverse-note{
  border-left:2px solid var(--terracotta);
  padding:.2rem 0 .2rem 1.1rem;
  margin:clamp(2rem,5vw,3rem) 0;
}
.reverse-note p{font-size:.85rem;color:var(--ink-soft);line-height:2.1;margin:0 0 .8rem;}
.reverse-note p:last-child{margin-bottom:0;}
.reverse-note .k{color:var(--terracotta);font-size:.66rem;letter-spacing:.3em;display:block;margin-bottom:.7rem;}

.afternote{background:var(--paper-warm);padding:clamp(1.4rem,3.5vw,2.2rem);border-radius:2px;margin:clamp(2.5rem,6vw,4rem) 0 0;}
.afternote .k{font-size:.62rem;letter-spacing:.34em;color:var(--sepia);margin:0 0 1rem;}
.afternote p{font-size:.85rem;line-height:2.15;margin:0 0 1rem;}
.afternote p{color:#5B4636;}
.afternote p:last-child{margin-bottom:0;}

.next-prev{display:flex;justify-content:space-between;gap:1rem;border-top:.5px solid var(--rule);margin-top:clamp(3rem,7vw,4.5rem);padding-top:1.2rem;font-size:.72rem;}
.next-prev a{color:var(--ink-soft);letter-spacing:.12em;}
.next-prev a:hover{color:var(--terracotta);}

@media(max-width:640px){ .grid-illus .feature{grid-column:span 1;} .grid-illus .feature .shot{aspect-ratio:4/5;} }


/* ============ v3: contained column, no full-bleed ============ */
.pagewrap{max-width:72rem;margin:0 auto;padding:0 8%;}
.banner{margin:clamp(2rem,5vw,3rem) -2% 0;background:var(--paper-warm);
  display:flex;justify-content:center;align-items:center;}
.banner img{display:block;width:auto;max-width:100%;max-height:min(52vh,24rem);object-fit:contain;border-radius:1px;}
.banner figcaption{font-size:.6rem;color:var(--ink-faint);letter-spacing:.16em;margin-top:.6rem;}

.yearbar{
  border-top:2px solid var(--terracotta);padding-top:.9rem;
  margin-top:clamp(2.4rem,5vw,3.4rem);
  display:flex;justify-content:space-between;align-items:baseline;
}
.yearbar .y{font-family:var(--garamond);font-size:1.15rem;letter-spacing:.3em;color:var(--terracotta);}
.yearbar .n{font-size:.6rem;color:var(--ink-faint);letter-spacing:.2em;}

.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1.1rem,2.6vw,1.8rem);margin-top:1.5rem;}
.grid3 .ci .shot{aspect-ratio:4/5;overflow:hidden;border-radius:1px;background:#EFE9DE;}
.grid3 .ci .shot img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.6,.2,1);}
.grid3 .ci:hover .shot img{transform:scale(1.03);}
.grid3 h3{font-size:.92rem;font-weight:300;letter-spacing:.06em;margin:.75rem 0 .1rem;color:var(--ink);}
.grid3 .e{font-family:var(--garamond);font-style:italic;font-size:.7rem;color:var(--ink-faint);margin:0;}
.grid3 .m{font-size:.58rem;color:var(--ink-faint);letter-spacing:.12em;margin:.4rem 0 0;}
.grid3 .m .rev{color:var(--terracotta);}
.grid3 .blue .shot{background:#DDE6EE;}

/* christmas standalone band */
.band{
  background:var(--paper-warm);
  border-top:2px solid var(--sepia);border-bottom:.5px solid #E0D4C0;
  margin:clamp(2.4rem,5vw,3.4rem) -8% 0;
  padding:clamp(1.6rem,3.5vw,2.2rem) 8%;
}
.band-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:1.3rem;flex-wrap:wrap;gap:.6rem;}
.band-head .k{font-size:.58rem;letter-spacing:.4em;color:var(--sepia);}
.band-head .d{font-family:var(--garamond);font-size:.85rem;letter-spacing:.25em;color:var(--terracotta);}
.band-grid{display:grid;grid-template-columns:minmax(0,1.15fr) 1fr;gap:clamp(1.4rem,3vw,2.2rem);align-items:center;}
.band-grid .postcard{transform:rotate(-.8deg);padding:.9rem;}
.band-grid .postcard img{width:100%;display:block;}
@media(max-width:720px){
  .grid3{grid-template-columns:1fr;}
  .band-grid{grid-template-columns:1fr;}
  .pagewrap{padding:0 6%;}
}

/* ---- Mian 介紹（置頁首，置中） ---- */
.mian-intro{
  display:flex; align-items:center; gap:1.2rem;
  width:fit-content; max-width:100%; margin:1.8rem auto 0;
}
/* 米色底改由上方 .banner 橫幅承擔（襯在插畫後面、橫跨版面），
   小麵介紹本身不再是卡片，整組置中直接落在紙白上。 */
.banner + .mian-intro{
  margin:1.6rem auto 0;
}
.mian-portrait{
  width:4.6rem; height:4.6rem; border-radius:50%; object-fit:cover;
  flex-shrink:0; box-shadow:0 2px 8px rgba(28,27,24,.12);
}
.mian-text{min-width:0;}
.mian-text .dek{margin:0 0 .5rem;}
@media(max-width:560px){
  .mian-intro{gap:.9rem;}
  .mian-portrait{width:3.8rem;height:3.8rem;}
}

/* 艾居文門卡：書封比例與門卡比例不同，靠 cover 裁切填滿、不留白 */
.tile img[src*="aiju/cover"]{object-fit:cover;}

/* 卡片標題作為超連結時，加上可辨識的底線 */
.title-md a{
  color:inherit;
  border-bottom:1px solid var(--ochre);
  padding-bottom:2px;
  transition:border-color .25s,color .25s;
}
.title-md a:hover,.title-md a:focus-visible{
  color:var(--ochre);
  border-bottom-color:var(--ink);
}

/* 攝影頁：滿版圖真正貼齊視窗邊緣，不留 gutter */
.photo-page .flow > .full{
  grid-column:1 / -1;
  width:100vw;
  margin-left:50%;
  transform:translateX(-50vw);
  max-width:100vw;
}

/* Mian 介紹：縮小自介與連結之間的間距 */
.mian-text .dek:last-of-type{margin-bottom:0;}
.mian-text .arrow{margin-top:.45rem;}

/* 內文行內連結：可辨識的底線 */
.empty a{
  color:var(--ink);
  border-bottom:1px solid #8A7729;
  padding-bottom:1px;
  transition:color .25s,border-color .25s;
}
.empty a:hover,.empty a:focus-visible{color:#8A7729;border-bottom-color:var(--ink);}

/* 攝影頁：同組同比例並排，按原比例顯示不裁切 */
.photo-row{
  display:grid;
  gap:clamp(.6rem,1.6vw,1.1rem);
  margin:clamp(2rem,5vw,3rem) 0;
}
/* 同列等高、寬度依原圖比例分配：無裁切、無十字空白 */
.photo-row img{width:100%;height:100%;display:block;border-radius:1px;object-fit:cover;}
@media(max-width:760px){
  .photo-row{grid-template-columns:1fr !important;}
  .photo-row img{height:auto;}
}

/* 單篇放大展示：原圖不裁切，約為一般縮圖的兩倍 */
.feature-piece{margin:clamp(1.5rem,4vw,2.4rem) 0;}
.ci--feature{display:block;max-width:min(100%,34rem);margin:0 auto;}
.ci--feature .shot--full{
  overflow:hidden;border-radius:1px;background:#EFE9DE;aspect-ratio:auto;
}
.ci--feature .shot--full img{
  width:100%;height:auto;display:block;object-fit:contain;
  transition:transform .9s cubic-bezier(.2,.6,.2,1);
}
.ci--feature:hover .shot--full img{transform:scale(1.02);}
.ci--feature h3{font-size:1.05rem;font-weight:300;letter-spacing:.06em;margin:.85rem 0 .1rem;color:var(--ink);}
.ci--feature .e{font-family:var(--garamond);font-style:italic;font-size:.76rem;color:var(--ink-faint);margin:0;}
.ci--feature .m{font-size:.62rem;color:var(--ink-faint);letter-spacing:.12em;margin:.45rem 0 0;}
