:root{--ink:#23282E;--body:#2F353C;--paper:#F7F5EF;--paper-d:#EFECE2;
--cinnabar:#8F3325;--cinnabar-deco:#A63A2B;--gold:#6B5F4B;--mist:#454B54;--line:#E2DED2}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;font-size:18px}
@media (min-width:1400px){html{font-size:19px}}
body{font-family:"Noto Serif TC","PingFang TC",serif;background:var(--paper);color:var(--body);line-height:1.95}
a{color:inherit;text-decoration:none;transition:color .25s ease,border-color .25s ease,background .25s ease}
img{max-width:100%}
/* ---- header ---- */
.bar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:.8rem;
  padding:.5rem 1rem;background:rgba(247,245,239,.95);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.bar .brand{display:flex;align-items:center;gap:.6rem;min-height:44px}
.bar .marklogo{width:2.3rem;height:2.3rem;flex:none;display:block}
.bar b{letter-spacing:.14em;font-size:1.02rem;color:var(--ink);white-space:nowrap}
@media (max-width:420px){.bar b{font-size:.95rem;letter-spacing:.06em}.bar{gap:.5rem}}
.tb-sp{flex:1}
.nav-open{display:inline-flex;align-items:center;gap:.45rem;min-height:44px;min-width:44px;
  padding:0 .7rem;cursor:pointer;color:var(--ink);font-size:.95rem;letter-spacing:.12em;
  border:1px solid var(--line);border-radius:.4rem;background:#fff}
.nav-open:hover{border-color:var(--cinnabar);color:var(--cinnabar)}
.nav-open .ic{font-size:1.15rem;line-height:1}
/* ---- full-screen menu ---- */
.nav-t{position:absolute;opacity:0;pointer-events:none}
.menu{position:fixed;inset:0;z-index:60;background:var(--paper);overflow-y:auto;
  transform:translateX(102%);transition:transform .32s ease;visibility:hidden}
.nav-t:checked ~ .menu{transform:none;visibility:visible}
html:has(.nav-t:checked){overflow:hidden}
.menu-head{position:sticky;top:0;display:flex;align-items:center;gap:.8rem;padding:.5rem 1rem;
  background:var(--paper);border-bottom:1px solid var(--line)}
.menu-head img{width:2.3rem;height:2.3rem}
.menu-head b{letter-spacing:.14em;font-size:1.02rem;color:var(--ink)}
.nav-close{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;
  min-width:44px;min-height:44px;cursor:pointer;font-size:1.5rem;color:var(--ink);
  border:1px solid var(--line);border-radius:.4rem;background:#fff}
.nav-close:hover{color:var(--cinnabar);border-color:var(--cinnabar)}
.menu-in{max-width:34rem;margin:0 auto;padding:1.2rem 1.3rem 3rem}
.menu-lang{display:flex;gap:.8rem;font-size:1.05rem;margin-bottom:1.2rem}
.menu-lang a,.menu-lang b{display:inline-flex;align-items:center;min-height:44px;padding:0 1rem;
  border:1px solid var(--line);border-radius:2rem;background:#fff;color:var(--mist);font-weight:400}
.menu-lang b{color:#fff;background:var(--ink);border-color:var(--ink)}
.menu-lang a:hover{color:var(--cinnabar);border-color:var(--cinnabar)}
.menu-list details{border-bottom:1px solid var(--line)}
.menu-list summary{display:flex;align-items:center;min-height:56px;cursor:pointer;list-style:none;
  font-size:1.25rem;font-weight:700;letter-spacing:.15em;color:var(--ink)}
.menu-list summary::-webkit-details-marker{display:none}
.menu-list summary::after{content:"︾";margin-left:auto;font-size:.9rem;color:var(--mist);transition:transform .25s ease}
.menu-list details[open] summary::after{transform:rotate(180deg)}
.menu-list summary:hover{color:var(--cinnabar)}
.menu-list .sub{padding:0 0 .8rem .4rem}
.menu-list .sub a{display:flex;align-items:center;min-height:48px;font-size:1.06rem;color:var(--body);padding:0 .5rem}
.menu-list .sub a:hover{color:var(--cinnabar)}
.menu-list > a.solo{display:flex;align-items:center;min-height:56px;font-size:1.25rem;font-weight:700;
  letter-spacing:.15em;color:var(--ink);border-bottom:1px solid var(--line)}
.menu-list > a.solo:hover{color:var(--cinnabar)}
.menu-list .cur > summary,.menu-list a.solo.cur{color:var(--cinnabar)}
.menu-list .cur > summary::before,.menu-list a.solo.cur::before{content:"●";font-size:.55rem;margin-right:.6rem;color:var(--cinnabar)}
.menu-foot{margin-top:2rem;color:var(--mist);font-size:.92rem;line-height:2.1;text-align:center}
.menu-foot img{width:8rem;display:block;margin:0 auto 1rem;opacity:.95}
.menu-foot a{color:var(--cinnabar)}
/* ---- page scaffold ---- */
.crumb{max-width:44rem;margin:0 auto;padding:1rem 1.3rem 0;font-size:.92rem;color:var(--mist)}
.crumb a{color:var(--mist);display:inline-flex;align-items:center;min-height:44px;padding:0 .1rem}
.crumb a:hover{color:var(--cinnabar)}
main{max-width:44rem;margin:0 auto;padding:1.5rem 1.3rem 4rem}
main.wide{max-width:60rem}
h1.pg{font-size:1.7rem;letter-spacing:.12em;font-weight:700;margin-bottom:.35rem;color:var(--ink);line-height:1.4}
.pgsub{color:var(--mist);font-size:.95rem;letter-spacing:.08em;margin-bottom:1.8rem}
article p{margin:1.25em 0;font-size:1.02rem;color:var(--body)}
article img{border:1px solid var(--line);margin:.6rem 0}
article blockquote{border-left:3px solid var(--cinnabar);padding:.2rem 1.2rem;color:var(--mist);margin:1.2rem 0}
.meta{font-size:.92rem;color:var(--mist);letter-spacing:.05em;border-bottom:1px solid var(--line);padding-bottom:1rem;margin-bottom:1.4rem}
.files{background:#fff;border:1px solid var(--line);padding:1rem 1.3rem;margin:1.4rem 0;font-size:.98rem}
.files b{color:var(--cinnabar);letter-spacing:.12em;font-size:.95rem}
.files a{display:flex;align-items:center;color:var(--cinnabar);padding:.3rem 0;min-height:44px}
.list{list-style:none}
.list li{border-bottom:1px solid var(--line)}
.list li:first-child{border-top:1px solid var(--line)}
.list a:hover .t{color:var(--cinnabar)}
.yearnav{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1.6rem}
.yearnav a{border:1px solid var(--line);background:#fff;padding:.4rem 1rem;font-size:.95rem;min-height:44px;display:inline-flex;align-items:center}
.yearnav a:hover{border-color:var(--cinnabar);color:var(--cinnabar)}
h2.yr{font-size:1.25rem;letter-spacing:.18em;color:var(--cinnabar);margin:2rem 0 .7rem}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(15rem,100%),1fr));gap:1.1rem}
a.card{display:block;background:#fff;border:1px solid var(--line);padding:1.4rem;min-height:44px}
a.card:hover{border-color:var(--cinnabar)}
a.card b{color:var(--cinnabar);letter-spacing:.06em;font-size:1.06rem}
a.card p{font-size:.95rem;color:var(--mist);margin-top:.45rem}
.prevnext{display:flex;justify-content:space-between;gap:1rem;margin-top:2.4rem;font-size:.95rem}
.prevnext a{color:var(--cinnabar);padding:.6rem 0;min-height:44px;display:inline-flex;align-items:center}
footer{background:var(--paper-d);padding:2.4rem 1.3rem;text-align:center;color:var(--mist);
  font-size:.92rem;letter-spacing:.08em;line-height:2.2;margin-top:2rem}
footer b{color:var(--ink);letter-spacing:.2em}
footer a{color:#7E2C20;display:inline-flex;align-items:center;min-height:44px;padding:0 .15rem}
footer .footlogo{width:8.5rem;display:block;margin:0 auto 1rem;opacity:.95}
/* ---- veil ---- */
.veil{position:fixed;inset:0;z-index:99;background:var(--paper);display:flex;align-items:center;justify-content:center;
  pointer-events:none;animation:veilout .38s ease .1s forwards}
.veil img{width:4rem;height:4rem;animation:veilpulse .38s ease}
@keyframes veilout{to{opacity:0;visibility:hidden}}
@keyframes veilpulse{from{transform:scale(.88);opacity:.4}to{transform:scale(1);opacity:1}}
/* ===== v3 GEPA overrides ===== */
:root{--elev-1:0 1px 2px rgba(35,40,46,.04),0 3px 10px rgba(35,40,46,.05);
--elev-2:0 2px 4px rgba(35,40,46,.06),0 10px 28px rgba(35,40,46,.09)}
.nav-open{border:none;background:transparent;border-radius:0;padding:0 .35rem;gap:.45rem;font-size:1rem}
.nav-open:hover{border:none;color:var(--cinnabar)}
.nav-open svg{display:block}
.nav-close{border:none;background:transparent}
.nav-close svg{display:block}
.bar{box-shadow:var(--elev-1)}
.menu{box-shadow:var(--elev-2)}
a.card,.files{box-shadow:var(--elev-1)}
a.card:hover{box-shadow:var(--elev-2)}
.list a{display:grid;grid-template-columns:6.5rem 1fr;column-gap:1.2rem;row-gap:.3rem;align-items:start;padding:1.1rem 0;min-height:48px}
.list time{grid-column:1;padding-top:.16em;color:var(--mist);font-size:.92rem;line-height:1.6;letter-spacing:.04em;font-variant-numeric:tabular-nums;min-width:0}
.list .t{grid-column:2;font-size:1.1rem;line-height:1.6;font-weight:700;color:var(--ink);letter-spacing:.01em}
.list small{grid-column:2;display:block;color:var(--mist);font-size:.92rem;line-height:1.7;font-weight:400;max-width:36rem}
footer .foot-legal{border-top:1px solid var(--line);margin-top:1.4rem;padding-top:1rem;font-size:.9rem;letter-spacing:.05em}
footer{line-height:2;font-size:.95rem}
@media (prefers-reduced-motion: reduce){
  .veil{display:none}
  *{transition:none !important;animation:none !important}
  html{scroll-behavior:auto}
}
/* ===== v4 overrides (REQ-002) ===== */
.en-note{font-size:.92rem;color:var(--mist);border-left:3px solid var(--line);padding:.2rem .8rem;margin:0 0 1.4rem;line-height:1.7}
.en-note a{color:var(--cinnabar)}
.bar .brand,.hero-bar .brand{min-width:0}
.bar b,.hero-bar b{overflow:hidden;text-overflow:ellipsis}
.bshort{display:none}
html[lang="en"] .bar b,html[lang="en"] .hero-bar b{letter-spacing:.02em}
@media (max-width:480px){
  html[lang="en"] .bfull{display:none}
  html[lang="en"] .bshort{display:inline}
  html[lang="en"] .marklogo{width:2.2rem;height:2.2rem}
  html[lang="en"] .nav-open{gap:.35rem}
}
/* ===== v5 typography taste (REQ-003) ===== */
.tel{white-space:nowrap}
.honest p+p,.intl-in p+p{margin-top:1.1rem}
.honest a,.intl-in p a,footer a{color:var(--cinnabar);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.intl li a{text-decoration:none}
/* ===== v7 interaction affordance (REQ-005): 圓角=可按、直角=設計 ===== */
:root{--r-card:.7rem;--elev-btn:0 1px 2px rgba(126,44,32,.18),0 7px 18px rgba(126,44,32,.28);
--elev-btn-dn:0 1px 2px rgba(126,44,32,.22),0 3px 8px rgba(126,44,32,.2)}
.cta,.subbox button,button{border-radius:999px}
.cta,.subbox button{box-shadow:var(--elev-btn);transition:transform .12s ease,box-shadow .12s ease,background .25s ease}
.cta:active,.subbox button:active{transform:translateY(1px);box-shadow:var(--elev-btn-dn)}
.subbox input{border-radius:999px;caret-color:var(--cinnabar);padding-left:1.2rem;padding-right:1.2rem}
.subbox input:focus{outline:2px solid var(--cinnabar);outline-offset:2px}
a.card,a.god,a.rv,.god-en,.files{border-radius:var(--r-card)}
a.card b::after,a.rv b::after{content:" →";color:var(--cinnabar);font-weight:700}
a.god .readmore::after{content:" →"}
a.card:active,a.god:active,a.rv:active,.god-en:active{transform:translateY(1px);box-shadow:var(--elev-1)}
.golink{display:block;margin-top:.7rem;color:var(--cinnabar)}
.golink::after{content:""}
footer .flbl{font-weight:700;color:var(--ink);margin-right:.6rem;letter-spacing:.06em}
/* ===== v8 addendum (REQ-007): 互動連結（mailto/tel）一律底線 ===== */
a[href^="mailto:"],a[href^="tel:"]{color:var(--cinnabar);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.acadband a[href^="mailto:"],.acadband a[href^="tel:"]{color:#E8C9A0}
/* ===== v9 left-edge anchor (REQ-009, P8): 無日期清單標題錨定主左軸 ===== */
.list .t:first-child{grid-column:1/-1}
/* ===== v10 en footer (REQ-010): left-anchored editorial footer ===== */
.nb{white-space:nowrap}
html[lang="en"] footer{text-align:left;letter-spacing:.01em;line-height:1.8}
html[lang="en"] footer .fwrap{max-width:44rem;margin:0 auto}
html[lang="en"] footer .footlogo{margin:0 auto 1.2rem}
html[lang="en"] footer .fbrand b{font-size:1.05rem;letter-spacing:.02em;white-space:nowrap}
html[lang="en"] footer .fmeta{font-size:.9rem;margin:.1rem 0 .9rem}
html[lang="en"] footer .faddr{margin:0 0 .9rem}
html[lang="en"] footer .frow{white-space:nowrap}
html[lang="en"] footer .flbl{display:inline-block;min-width:3.5rem;margin-right:.35rem;letter-spacing:.06em}
html[lang="en"] footer .frow a,html[lang="en"] footer .frow .tel{letter-spacing:0}
html[lang="en"] footer .foot-legal{letter-spacing:.01em;text-align:left}
html[lang="en"] footer .foot-legal p+p{margin-top:.15rem}
@media (max-width:352px){html[lang="en"] footer .frow{font-size:.9rem}}
