:root {
  --paper: #fafaf7;
  --ink: #2148b8;
  --accent: #c65f38;
  --line: rgb(33 72 184 / 24%);
  --line-strong: rgb(33 72 184 / 50%);
  --n400: var(--ink);
  --n500: var(--ink);
  --n600: var(--ink);
  --n700: var(--ink);
  --font-display: "Bodoni Moda", Didot, "Songti SC", "STSong", "Noto Serif CJK SC", serif;
  --font-body: "Inter", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --gutter: clamp(28px, 5vw, 72px);
  --ease: cubic-bezier(.2, .7, .2, 1);
  --motion-fast: 180ms;
  --motion-ui: 220ms;
  --motion-art: 400ms;
  --motion-enter: 650ms;
  --motion-distance: 14px;
  --motion-opacity: .35;
}

* { box-sizing: border-box; }
html { scroll-padding-top: calc(var(--bar-height, 76px) + 20px); font-optical-sizing: auto; font-kerning: normal; font-synthesis: none; }
html[lang="zh-TW"] {
  --font-display: "Bodoni Moda", Didot, "Songti TC", "Noto Serif CJK TC", "PMingLiU", serif;
  --font-body: "Inter", "PingFang TC", "Microsoft JhengHei", "Noto Sans CJK TC", -apple-system, BlinkMacSystemFont, sans-serif;
}
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font: 400 16px/1.7 var(--font-body);
  -webkit-font-smoothing: antialiased;
}
::selection { color: var(--paper); background: var(--ink); }
button, a { -webkit-tap-highlight-color: transparent; }
button { font: inherit; color: inherit; }
button, input, textarea, select { max-width: 100%; }
a {
  color: inherit;
  text-decoration-thickness: 1px;
  text-decoration-color: var(--line-strong);
  text-underline-offset: .22em;
  transition: text-decoration-color var(--motion-fast) ease;
}
a:hover { text-decoration-color: currentColor; }
:focus-visible { outline: 2px solid var(--ink); outline-offset: 5px; }
[hidden] { display: none !important; }
.skip-link {
  position: fixed;
  z-index: 100;
  top: -100px;
  left: 16px;
  padding: 12px 18px;
  color: var(--paper);
  background: var(--ink);
}
.skip-link:focus { top: 16px; }
.wrap { max-width: 1440px; margin-inline: auto; }
p { margin: 0 0 18px; }
p:last-child { margin-bottom: 0; }
strong { font-weight: 500; }
.serif { font-family: var(--font-display); }
.body, .sans, .mono { font-family: var(--font-body); }

/* The masthead keeps the proportions of a printed cover. */
.mast {
  position: relative;
  isolation: isolate;
  background: var(--paper);
  min-height: 760px;
  height: clamp(760px, 75vw, 1080px);
  padding: 42px var(--gutter) 0;
}
.mast-meta {
  position: relative;
  z-index: 3;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px 32px;
  font-size: 12px;
  line-height: 1.6;
}
.mast-meta .byline { margin: 0; }
.mast-meta .byline strong { font-weight: 400; }
.mast-location { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px 18px; }
.nameplate {
  position: relative;
  z-index: 3;
  width: 100%;
  margin: 64px 0 0;
  color: var(--ink);
  font: 400 clamp(58px, 16vw, 242px)/1.03 var(--font-display);
  font-style: normal;
  letter-spacing: -.052em;
  white-space: nowrap;
}
.nameplate-text {
  display: inline-block;
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
  white-space: inherit;
}
.paper-position {
  position: absolute;
  z-index: 1;
  right: 8px;
  bottom: 12px;
  width: 76%;
  height: 74%;
  pointer-events: none;
  user-select: none;
  mix-blend-mode: multiply;
}
.paper-motion {
  width: 100%;
  height: 100%;
  transform: translate3d(clamp(-8px, var(--paper-x, 0px), 8px), clamp(-12px, var(--paper-y, 0px), 12px), 0);
  transition: transform 650ms var(--ease);
}
.paper-art {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}
.tagline {
  position: absolute;
  z-index: 3;
  left: var(--gutter);
  bottom: 175px;
  width: 34%;
  max-width: 13em;
  margin: 0;
  font: 400 clamp(29px, 3vw, 43px)/1.24 var(--font-display);
  letter-spacing: -.023em;
  text-wrap: balance;
}
.hero-nav {
  position: absolute;
  z-index: 3;
  bottom: 40px;
  font-size: 12px;
  line-height: 1.5;
}
.hero-nav { left: var(--gutter); right: var(--gutter); display: flex; gap: 30px; align-items: center; padding-top: 12px; border-top: 1px solid var(--line-strong); }
.hero-nav a, .hero-more { display: inline-flex; align-items: center; min-width: 44px; min-height: 44px; }
.hero-more { margin-left: auto; gap: 12px; }
.hero-nav a, .hero-more, .index-nav a, .home-mark { text-decoration: none; }
.hero-nav a, .hero-more, .index-nav a { position: relative; }
.hero-nav a::after, .hero-more::after, .index-nav a::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: 8px;
  left: 0;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--motion-fast) var(--ease);
}
.hero-nav a:hover::after, .hero-nav a:focus-visible::after,
.hero-more:hover::after, .hero-more:focus-visible::after,
.index-nav a:hover::after, .index-nav a:focus-visible::after,
.index-nav a[aria-current]::after { transform: scaleX(1); }

/* A quiet, full-width reading rail separates the cover from the article. */
.reading-bar {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 28px;
  min-height: 76px;
  margin-inline: var(--gutter);
  padding-block: 10px;
  background: var(--paper);
  border-block: 1px solid var(--line);
}
.home-mark {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  font: 400 27px/1.2 var(--font-display);
  letter-spacing: -.035em;
}
.index-nav {
  display: flex;
  flex: 1 1 auto;
  align-items: center;
  justify-content: center;
  gap: clamp(16px, 2vw, 28px);
  min-width: 0;
  overflow-x: auto;
  scrollbar-width: thin;
  scrollbar-color: var(--line-strong) transparent;
}
.index-nav a {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 6px;
  min-height: 44px;
  min-width: 44px;
  font-size: 12px;
  white-space: nowrap;
}
.index-nav a:focus-visible { outline-offset: -2px; }
.lang-toggle { display: inline-flex; flex: 0 0 auto; gap: 0; }
.lang-toggle button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  padding: 0 9px;
  border: 0;
  background: none;
  font-size: 11px;
  line-height: 1;
  cursor: pointer;
  text-underline-offset: 5px;
  text-decoration-thickness: 1px;
}
.lang-toggle button.active, .lang-toggle button:hover { text-decoration-line: underline; }

.article { padding: 0 var(--gutter) 100px; }
.lede {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  padding: 72px 0 80px;
}
.lede .dek { margin: 0; max-width: 51ch; font-size: 17px; line-height: 1.85; }
.lede-invitation {
  max-width: 27ch;
  margin: 0;
  font: 400 clamp(27px, 2.7vw, 37px)/1.35 var(--font-display);
  letter-spacing: -.025em;
}
.dropcap { float: none; margin: 0; color: inherit; font: inherit; }
.article > section[id] {
  display: grid;
  grid-template-columns: 192px minmax(0, 1fr);
  gap: 48px;
  margin-top: 64px;
  padding-top: 38px;
  border-top: 1px solid var(--line);
}
.article > .lede + section[id] { margin-top: 0; }
.section-h { min-width: 0; }
.section-h .label { display: block; margin: 0 0 10px; font-size: 10px; line-height: 1.5; letter-spacing: .08em; }
.section-h h2 { margin: 0; font: 400 32px/1.1 var(--font-display); letter-spacing: -.025em; }
.section-h .rule { display: none; }
.section-body { min-width: 0; }
#cities .section-body > p { max-width: 42ch; font-size: 20px; line-height: 1.75; }
.tri { list-style: none; padding: 0; margin: 0; }
.tri li { padding: 17px 0; border-bottom: 1px solid var(--line); font: 400 28px/1.4 var(--font-display); letter-spacing: -.015em; }
.tri li:first-child { padding-top: 0; }
.aside { max-width: 65ch; margin: 24px 0 0; font-size: 13px; line-height: 1.8; font-style: normal; }
.firm-block + .firm-block { margin-top: 50px; }
.firm-head { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 10px 24px; margin-bottom: 24px; }
.firm-name { font: 400 30px/1.2 var(--font-display); letter-spacing: -.025em; }
.firm-meta { max-width: 43ch; font-size: 11px; line-height: 1.7; }
.tier-label { display: flex; align-items: center; gap: 16px; margin: 26px 0 8px; font-size: 11px; line-height: 1.6; }
.tier-label::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.pgrid { display: grid; gap: 0 24px; }
.pgrid.lead { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pgrid.exec { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.plate { min-width: 0; padding: 26px 0; border-bottom: 1px solid var(--line); }
.ico { display: flex; align-items: center; width: 30px; height: 30px; margin-bottom: 18px; color: var(--ink); }
.ico svg { display: block; width: 28px; height: 28px; overflow: visible; }
.ico .stroke { fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.ico .fill { fill: currentColor; }
.ico .acc { stroke: currentColor; }
.plate .nm { margin: 0 0 9px; font: 500 17px/1.4 var(--font-body); letter-spacing: -.025em; overflow-wrap: anywhere; }
.plate .nm .and { margin: 0 3px; font-weight: 400; }
.plate .desc { margin: 0; font-size: 13px; line-height: 1.7; overflow-wrap: anywhere; }
.plate:only-child { grid-column: 1 / -1; display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 6px 18px; }
.plate:only-child .ico { grid-column: 1; grid-row: 1 / 3; margin: 0; }
.plate:only-child .nm, .plate:only-child .desc { grid-column: 2; margin: 0; }
#desk .section-body > p:first-child { max-width: 65ch; font-size: 15px; font-style: normal !important; }
.tool { display: grid; grid-template-columns: minmax(0, 1fr) 28px; column-gap: 24px; row-gap: 12px; padding: 28px 0; border-bottom: 1px solid var(--line); }
.tool::after { content: "↗"; grid-column: 2; grid-row: 1; font-size: 22px; line-height: 1.3; }
.tool .name { grid-column: 1; grid-row: 1; font: 400 32px/1.2 var(--font-display); letter-spacing: -.025em; }
.tool .name a { display: inline-flex; align-items: center; min-height: 44px; }
.tool .desc { grid-column: 1; grid-row: 2; max-width: 67ch; font-size: 14px; line-height: 1.8; }
.tool .url { grid-column: 1; grid-row: 3; font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
.tool .url a { display: inline-flex; align-items: center; min-height: 44px; max-width: 100%; }

.foot-wrap { margin-inline: var(--gutter); padding: 56px 0 30px; border-top: 1px solid var(--line); }
.foot-wrap .credo { max-width: 28ch; margin: 0 0 34px; font: 400 clamp(30px, 3.5vw, 46px)/1.25 var(--font-display); letter-spacing: -.025em; text-wrap: balance; }
.foot-wrap .links { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 30px; font-size: 13px; line-height: 1.7; }
.foot-wrap .links a { display: inline-flex; align-items: center; min-width: 44px; min-height: 44px; }
.colophon { display: block; width: 100%; min-height: 44px; margin: 42px 0 0; padding: 16px 0 0; border: 0; border-top: 1px solid var(--line); background: none; text-align: left; font-size: 11px; line-height: 1.8; cursor: pointer; }
.colophon:hover, .colophon:focus-visible { text-decoration: underline; text-underline-offset: 4px; }
.edition-strip { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 20px; padding-top: 12px; font-size: 10px; line-height: 1.7; font-variant-numeric: tabular-nums; }
.live-dot { display: inline-block; width: 4px; height: 4px; margin-right: 8px; background: var(--accent); vertical-align: 2px; }
.editors-note { max-width: 48ch; margin: 26px 0 8px; }
.editors-note-orn { display: none; }
.editors-note-body { font: 400 25px/1.4 var(--font-display); }
.editors-note-body .attr { display: inline-block; padding-top: 10px; font: 400 11px/1.7 var(--font-body); }

/* Finite opening gestures; article text never waits for an observer. */
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
  .nameplate { animation: title-arrive 450ms var(--ease) both; }
  .paper-art { animation: paper-arrive 850ms var(--ease) both; }
}
@keyframes title-arrive { from { opacity: 0; } to { opacity: 1; } }
@keyframes paper-arrive { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .paper-motion, .paper-art { transform: none !important; }
}
@media (hover: none), (pointer: coarse) { .paper-motion { transform: none; } }

@media (max-width: 1200px) {
  .mast { min-height: 700px; height: clamp(700px, 78vw, 930px); }
  .nameplate { margin-top: 62px; }
  .paper-position { width: 76%; height: 74%; }
  .tagline { bottom: 172px; }
  .reading-bar { gap: 20px; }
  .home-mark { font-size: 24px; }
  .index-nav { justify-content: flex-start; gap: 20px; }
  .article > section[id] { grid-template-columns: 170px minmax(0, 1fr); gap: 40px; }
  .pgrid.exec { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .firm-head { display: block; }
  .firm-meta { display: block; margin-top: 8px; }
}
@media (max-width: 900px) {
  .mast { min-height: 700px; height: 84vw; padding-top: 30px; }
  .nameplate { margin-top: 65px; }
  .mast-meta { font-size: 11px; }
  .mast-location { gap: 6px 12px; }
  .paper-position { width: 76%; height: 74%; }
  .tagline { bottom: 190px; width: 32%; font-size: 31px; }
  .reading-bar { display: grid; grid-template-columns: 1fr auto; gap: 0 20px; padding-block: 4px; }
  .home-mark { grid-column: 1; grid-row: 1; }
  .lang-toggle { grid-column: 2; grid-row: 1; }
  .index-nav { grid-column: 1 / -1; grid-row: 2; gap: 28px; }
  .lede { gap: 40px; padding-block: 56px 64px; }
  .lede .dek { font-size: 16px; }
  .lede-invitation { font-size: 30px; }
  .article > section[id] { grid-template-columns: 1fr; gap: 28px; margin-top: 56px; padding-top: 30px; }
  .section-h { display: flex; align-items: baseline; gap: 20px; }
  .section-h .label { margin: 0; flex: 0 0 auto; }
  .section-h h2 { font-size: 34px; }
  .section-h .rule { display: block; flex: 1; min-width: 20px; height: 1px; background: var(--line); }
  .tri li { font-size: 27px; }
  .firm-head { display: flex; }
  .firm-meta { margin: 0; }
}
@media (max-width: 600px) {
  :root { --gutter: 24px; }
  .mast { height: auto; min-height: 790px; padding-top: 24px; }
  .mast-meta { align-items: flex-start; gap: 16px; font-size: 10px; }
  .mast-meta .byline { max-width: 55%; }
  .mast-location { display: block; max-width: 42%; text-align: right; }
  .mast-location > * { display: block; }
  .nameplate { margin-top: 50px; font-size: clamp(48px, 16vw, 96px); letter-spacing: -.052em; line-height: 1.1; }
  .tagline { position: relative; top: auto; bottom: auto; left: auto; width: 100%; max-width: 17em; margin: 30px 0 0; font-size: 30px; line-height: 1.2; }
  .paper-position { right: 0; bottom: 95px; width: 91%; height: 44%; }
  .hero-nav { bottom: 28px; font-size: 11px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 44px; gap: 12px; }
  .hero-more { justify-content: flex-end; font-size: 18px; }
  .hero-more span:first-child { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .reading-bar { gap: 0 12px; margin-inline: 0; padding: 4px var(--gutter); }
  .home-mark { font-size: 25px; }
  .lang-toggle button { padding-inline: 8px; font-size: 11px; }
  .index-nav { gap: 26px; margin-right: calc(-1 * var(--gutter)); padding-right: var(--gutter); }
  .index-nav a { font-size: 12px; }
  .article { padding-bottom: 62px; }
  .lede { grid-template-columns: 1fr; gap: 30px; padding: 42px 0 52px; }
  .lede .dek { font-size: 15px; line-height: 1.85; }
  .lede-invitation { max-width: 29ch; font-size: 29px; line-height: 1.4; }
  .article > section[id] { gap: 25px; margin-top: 45px; padding-top: 28px; }
  .section-h { gap: 14px; flex-wrap: wrap; }
  .section-h .label { font-size: 9px; }
  .section-h h2 { font-size: 30px; }
  .section-h .rule { display: none; }
  #cities .section-body > p { font-size: 17px; }
  .tri li { padding-block: 18px; font-size: 25px; line-height: 1.45; }
  .aside { font-size: 13px; }
  .firm-block + .firm-block { margin-top: 40px; }
  .firm-head { display: block; margin-bottom: 20px; }
  .firm-name { font-size: 29px; }
  .firm-meta { display: block; margin-top: 7px; max-width: 36ch; font-size: 11px; }
  .tier-label { margin-top: 24px; }
  .pgrid.lead, .pgrid.exec { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 22px; }
  .plate { padding-block: 23px; }
  .ico { margin-bottom: 16px; }
  .plate .nm { font-size: 16px; line-height: 1.45; }
  .plate .desc { font-size: 12px; line-height: 1.8; }
  #desk .section-body > p:first-child { font-size: 14px; }
  .tool { column-gap: 14px; row-gap: 10px; padding-block: 22px; }
  .tool .name { font-size: 29px; }
  .tool .desc { font-size: 13px; }
  .tool .url { font-size: 11px; }
  .foot-wrap { padding-top: 40px; }
  .foot-wrap .credo { font-size: 32px; }
  .foot-wrap .links { gap: 4px 24px; font-size: 12px; }
  .foot-wrap .links > span { flex-basis: 100%; margin-top: 6px; }
  .colophon { margin-top: 32px; font-size: 10px; }
  .edition-strip { font-size: 9px; }
}
@media (max-width: 380px) {
  :root { --gutter: 20px; }
  .mast { min-height: 735px; }
  .mast-meta { font-size: 9px; }
  .nameplate { margin-top: 42px; }
  .tagline { margin-top: 25px; font-size: 27px; }
  .paper-position { width: 96%; height: 43%; bottom: 91px; }
  .hero-nav { gap: 10px; }
  .home-mark { font-size: 20px; }
  .lang-toggle button { padding-inline: 7px; }
  .index-nav { gap: 24px; }
  .section-h { display: block; }
  .section-h .label { margin-bottom: 8px; }
  .pgrid.lead, .pgrid.exec { grid-template-columns: 1fr; }
  .plate { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 6px 16px; padding-block: 22px; }
  .plate .ico { grid-column: 1; grid-row: 1 / 3; margin: 0; }
  .plate .nm, .plate .desc { grid-column: 2; margin: 0; }
  .plate .desc { font-size: 13px; }
}

@media print {
  @page { margin: 15mm; }
  *, *::before, *::after { animation: none !important; transition: none !important; transform: none !important; }
  body { background: #fff; font-size: 10pt; }
  .wrap { max-width: none; }
  .skip-link, .reading-bar, .hero-nav, .hero-more, .paper-position, .editors-note, .edition-strip { display: none !important; }
  .mast { height: auto; min-height: 0; padding: 0 0 24px; }
  .mast-meta { font-size: 9pt; }
  .nameplate { margin-top: 22px; font-size: 62pt !important; }
  .nameplate-text { font: inherit !important; }
  .tagline { position: static; max-width: none; width: auto; margin: 18px 0 0; font-size: 21pt; }
  .article { padding: 0; }
  .lede { display: block; padding: 20px 0 26px; }
  .lede .dek { max-width: none; font-size: 10pt; }
  .lede-invitation { max-width: none; margin-top: 16px; font-size: 17pt; }
  .article > section[id] { display: block; margin-top: 24px; padding-top: 20px; }
  .section-h { display: flex; align-items: baseline; gap: 14px; margin-bottom: 18px; }
  .section-h .label { font-size: 8pt; }
  .section-h h2 { font-size: 23pt; }
  #cities .section-body > p { font-size: 11pt; }
  .tri li { padding-block: 10px; font-size: 16pt; }
  .aside, .firm-meta, .tier-label { font-size: 8pt; }
  .firm-block + .firm-block { margin-top: 28px; }
  .firm-head { display: block; margin-bottom: 14px; }
  .firm-name { font-size: 20pt; }
  .firm-meta { display: block; margin-top: 5px; }
  .pgrid.lead, .pgrid.exec { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 18px; }
  .plate { display: block; padding: 15px 0; break-inside: avoid; }
  .ico { display: none; }
  .plate .nm { margin-bottom: 6px; font-size: 10pt; }
  .plate .desc { font-size: 8pt; }
  .plate:only-child { display: block; }
  .tool { padding-block: 16px; row-gap: 6px; break-inside: avoid; }
  .tool .name { font-size: 19pt; }
  .tool .name a, .tool .url a { min-height: 0; }
  .tool .desc { font-size: 9pt; }
  .tool .url { font-size: 8pt; }
  .foot-wrap { margin: 30px 0 0; padding-top: 24px; }
  .foot-wrap .credo { font-size: 21pt; }
  .foot-wrap .links { font-size: 9pt; }
  .foot-wrap .links a { min-height: 0; }
  .colophon { margin-top: 22px; font-size: 8pt; }
}
